import type { GfxCommonBlockProps, GfxElementGeometry, } from '@blocksuite/std/gfx'; import { GfxCompatible } from '@blocksuite/std/gfx'; import { BlockModel, BlockSchemaExtension, defineBlockSchema, } from '@blocksuite/store'; import type { BlockMeta } from '../../utils/types.js'; import { ImageBlockTransformer } from './image-transformer.js'; export type ImageBlockProps = { caption?: string; sourceId?: string; width?: number; height?: number; rotate: number; size?: number; } & Omit & BlockMeta; const defaultImageProps: ImageBlockProps = { caption: '', sourceId: '', width: 0, height: 0, index: 'a0', xywh: '[0,0,0,0]', lockedBySelf: false, rotate: 0, size: -1, 'meta:createdAt': undefined, 'meta:createdBy': undefined, 'meta:updatedAt': undefined, 'meta:updatedBy': undefined, }; export const ImageBlockSchema = defineBlockSchema({ flavour: 'affine:image', props: () => defaultImageProps, metadata: { version: 1, role: 'content', }, transformer: transformerConfigs => new ImageBlockTransformer(transformerConfigs), toModel: () => new ImageBlockModel(), }); export const ImageBlockSchemaExtension = BlockSchemaExtension(ImageBlockSchema); export class ImageBlockModel extends GfxCompatible(BlockModel) implements GfxElementGeometry {}