Closes: [BS-2553](https://linear.app/affine-design/issue/BS-2553/remove-global-types-in-edgeless)
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
import type {
|
|
GfxCommonBlockProps,
|
|
GfxElementGeometry,
|
|
} from '@blocksuite/block-std/gfx';
|
|
import { GfxCompatible } from '@blocksuite/block-std/gfx';
|
|
import { BlockModel, defineBlockSchema } from '@blocksuite/store';
|
|
|
|
import { ImageBlockTransformer } from './image-transformer.js';
|
|
|
|
export type ImageBlockProps = {
|
|
caption?: string;
|
|
sourceId?: string;
|
|
width?: number;
|
|
height?: number;
|
|
rotate: number;
|
|
size?: number;
|
|
} & Omit<GfxCommonBlockProps, 'scale'>;
|
|
|
|
const defaultImageProps: ImageBlockProps = {
|
|
caption: '',
|
|
sourceId: '',
|
|
width: 0,
|
|
height: 0,
|
|
index: 'a0',
|
|
xywh: '[0,0,0,0]',
|
|
lockedBySelf: false,
|
|
rotate: 0,
|
|
size: -1,
|
|
};
|
|
|
|
export const ImageBlockSchema = defineBlockSchema({
|
|
flavour: 'affine:image',
|
|
props: () => defaultImageProps,
|
|
metadata: {
|
|
version: 1,
|
|
role: 'content',
|
|
},
|
|
transformer: () => new ImageBlockTransformer(),
|
|
toModel: () => new ImageBlockModel(),
|
|
});
|
|
|
|
export class ImageBlockModel
|
|
extends GfxCompatible<ImageBlockProps>(BlockModel)
|
|
implements GfxElementGeometry {}
|