chore: merge blocksuite source code (#9213)

This commit is contained in:
Mirone
2024-12-20 15:38:06 +08:00
committed by GitHub
parent 2c9ef916f4
commit 30200ff86d
2031 changed files with 238888 additions and 229 deletions
@@ -0,0 +1,55 @@
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 {}
declare global {
namespace BlockSuite {
interface BlockModels {
'affine:image': ImageBlockModel;
}
interface EdgelessBlockModelMap {
'affine:image': ImageBlockModel;
}
}
}
@@ -0,0 +1,17 @@
import type { FromSnapshotPayload, SnapshotNode } from '@blocksuite/store';
import { BaseBlockTransformer } from '@blocksuite/store';
import type { ImageBlockProps } from './image-model.js';
export class ImageBlockTransformer extends BaseBlockTransformer<ImageBlockProps> {
override async fromSnapshot(
payload: FromSnapshotPayload
): Promise<SnapshotNode<ImageBlockProps>> {
const snapshotRet = await super.fromSnapshot(payload);
const sourceId = snapshotRet.props.sourceId;
if (!payload.assets.isEmpty() && sourceId && !sourceId.startsWith('/'))
await payload.assets.writeToBlob(sourceId);
return snapshotRet;
}
}
@@ -0,0 +1,2 @@
export * from './image-model.js';
export * from './image-transformer.js';