mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-14 00:26:51 +08:00
846410cdb6
Closes: BS-3200 Closes: BS-3201
37 lines
922 B
TypeScript
37 lines
922 B
TypeScript
import {
|
|
type StoreExtensionContext,
|
|
StoreExtensionProvider,
|
|
} from '@blocksuite/affine-ext-loader';
|
|
import { NoteBlockSchemaExtension } from '@blocksuite/affine-model';
|
|
import { z } from 'zod';
|
|
|
|
import {
|
|
DocNoteBlockAdapterExtensions,
|
|
EdgelessNoteBlockAdapterExtensions,
|
|
} from './adapters';
|
|
|
|
const optionsSchema = z.object({
|
|
mode: z.enum(['doc', 'edgeless']).optional(),
|
|
});
|
|
|
|
export class NoteStoreExtension extends StoreExtensionProvider<
|
|
z.infer<typeof optionsSchema>
|
|
> {
|
|
override name = 'affine-note-block';
|
|
|
|
override schema = optionsSchema;
|
|
|
|
override setup(
|
|
context: StoreExtensionContext,
|
|
options?: z.infer<typeof optionsSchema>
|
|
) {
|
|
super.setup(context);
|
|
context.register(NoteBlockSchemaExtension);
|
|
if (options?.mode === 'edgeless') {
|
|
context.register(EdgelessNoteBlockAdapterExtensions);
|
|
} else {
|
|
context.register(DocNoteBlockAdapterExtensions);
|
|
}
|
|
}
|
|
}
|