/** Legacy entry used for AFFiNE ESM module compat */ /// // Import models only, the bundled file should not include anything else. import type { BlockSchema } from '@blockeditor/store'; import type { z } from 'zod'; import { type AttachmentBlockModel, AttachmentBlockSchema, } from './attachment-block/attachment-model.js'; import type { BookmarkBlockModel } from './bookmark-block/bookmark-model.js'; import { BookmarkBlockSchema } from './bookmark-block/bookmark-model.js'; import { type CodeBlockModel, CodeBlockSchema, } from './code-block/code-model.js'; import type { DataViewBlockModel } from './data-view-block/data-view-model.js'; import { DataViewBlockSchema } from './data-view-block/data-view-model.js'; import type { DatabaseBlockModel } from './database-block/database-model.js'; import { DatabaseBlockSchema } from './database-block/database-model.js'; import type { DividerBlockModel } from './divider-block/divider-model.js'; import { DividerBlockSchema } from './divider-block/divider-model.js'; import { EmbedFigmaBlockSpec } from './embed-figma-block/embed-figma-spec.js'; import { EmbedGithubBlockSpec } from './embed-github-block/index.js'; import { EmbedHtmlBlockSpec } from './embed-html-block/embed-html-spec.js'; import { EmbedLinkedDocBlockSpec } from './embed-linked-doc-block/index.js'; import { EmbedYoutubeBlockSpec } from './embed-youtube-block/index.js'; import type { FrameBlockModel } from './frame-block/frame-model.js'; import { FrameBlockSchema } from './frame-block/frame-model.js'; import type { ImageBlockModel } from './image-block/image-model.js'; import { ImageBlockSchema } from './image-block/image-model.js'; import type { ListBlockModel } from './list-block/list-model.js'; import { ListBlockSchema } from './list-block/list-model.js'; import type { NoteBlockModel } from './note-block/note-model.js'; import { NoteBlockSchema } from './note-block/note-model.js'; import type { PageBlockModel } from './page-block/page-model.js'; import { PageBlockSchema } from './page-block/page-model.js'; import type { ParagraphBlockModel } from './paragraph-block/paragraph-model.js'; import { ParagraphBlockSchema } from './paragraph-block/paragraph-model.js'; import type { SurfaceBlockModel } from './surface-block/surface-model.js'; import { SurfaceBlockSchema } from './surface-block/surface-model.js'; import type { SurfaceRefBlockModel } from './surface-ref-block/surface-ref-model.js'; import { SurfaceRefBlockSchema } from './surface-ref-block/surface-ref-model.js'; export type { AttachmentBlockModel, BookmarkBlockModel, CodeBlockModel, DatabaseBlockModel, DataViewBlockModel, DividerBlockModel, FrameBlockModel, ImageBlockModel, ListBlockModel, NoteBlockModel, PageBlockModel, ParagraphBlockModel, SurfaceBlockModel, }; /** Built-in first party block models built for affine */ export const AffineSchemas: z.infer[] = [ CodeBlockSchema, ParagraphBlockSchema, PageBlockSchema, ListBlockSchema, NoteBlockSchema, DividerBlockSchema, ImageBlockSchema, SurfaceBlockSchema, BookmarkBlockSchema, FrameBlockSchema, DatabaseBlockSchema, SurfaceRefBlockSchema, ]; export const __unstableSchemas = [ DataViewBlockSchema, AttachmentBlockSchema, EmbedYoutubeBlockSpec.schema, EmbedFigmaBlockSpec.schema, EmbedGithubBlockSpec.schema, EmbedHtmlBlockSpec.schema, EmbedLinkedDocBlockSpec.schema, ] satisfies z.infer[]; // TODO support dynamic register export type BlockSchemas = { 'affine:code': CodeBlockModel; 'affine:paragraph': ParagraphBlockModel; 'affine:page': PageBlockModel; 'affine:list': ListBlockModel; 'affine:note': NoteBlockModel; 'affine:divider': DividerBlockModel; 'affine:image': ImageBlockModel; 'affine:surface': SurfaceBlockModel; 'affine:frame': FrameBlockModel; 'affine:database': DatabaseBlockModel; 'affine:data-view': DataViewBlockModel; 'affine:bookmark': BookmarkBlockModel; 'affine:attachment': AttachmentBlockModel; 'affine:surface-ref': SurfaceRefBlockModel; }; export type Flavour = keyof BlockSchemas;