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
+11
View File
@@ -0,0 +1,11 @@
export function createEnumMap<T extends Record<string, string | number>>(
EnumObject: T
) {
return Object.entries(EnumObject).reduce(
(acc, [key, value]) => {
acc[value as T[keyof T]] = key as keyof T;
return acc;
},
{} as Record<T[keyof T], keyof T>
);
}
@@ -0,0 +1,49 @@
import type {
GfxBlockElementModel,
GfxGroupLikeElementModel,
GfxLocalElementModel,
GfxModel,
GfxPrimitiveElementModel,
} from '@blocksuite/block-std/gfx';
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {}
type EdgelessBlockModelKeyType = keyof EdgelessBlockModelMap;
type EdgelessBlockModelType =
| EdgelessBlockModelMap[EdgelessBlockModelKeyType]
| GfxBlockElementModel;
type EdgelessModel = GfxModel;
interface EdgelessTextModelMap {}
type EdgelessTextModelKeyType = keyof EdgelessTextModelMap;
type EdgelessTextModelType = EdgelessTextModelMap[EdgelessTextModelKeyType];
interface SurfaceElementModelMap {}
type SurfaceElementModelKeys = keyof SurfaceElementModelMap;
type SurfaceElementModel =
| SurfaceElementModelMap[SurfaceElementModelKeys]
| GfxPrimitiveElementModel;
interface SurfaceGroupLikeModelMap {}
type SurfaceGroupLikeModelKeys = keyof SurfaceGroupLikeModelMap;
type SurfaceGroupLikeModel =
| SurfaceGroupLikeModelMap[SurfaceGroupLikeModelKeys]
| GfxGroupLikeElementModel;
interface SurfaceLocalModelMap {}
type SurfaceLocalModelKeys = keyof SurfaceLocalModelMap;
type SurfaceLocalModel =
| SurfaceLocalModelMap[SurfaceLocalModelKeys]
| GfxLocalElementModel;
// not include local model
type SurfaceModel = SurfaceElementModel | SurfaceGroupLikeModel;
type SurfaceModelKeyType =
| SurfaceElementModelKeys
| SurfaceGroupLikeModelKeys;
type EdgelessModelKeys = EdgelessBlockModelKeyType | SurfaceModelKeyType;
}
}
@@ -0,0 +1,63 @@
import type { GfxCompatibleProps } from '@blocksuite/block-std/gfx';
import { GfxCompatible } from '@blocksuite/block-std/gfx';
import type { Constructor } from '@blocksuite/global/utils';
import {
type BaseBlockTransformer,
type BlockModel,
defineBlockSchema,
type InternalPrimitives,
} from '@blocksuite/store';
export function defineEmbedModel<
Props extends object,
T extends Constructor<BlockModel<Props>> = Constructor<BlockModel<Props>>,
>(BlockModelSuperClass: T) {
return GfxCompatible<Props & GfxCompatibleProps>(
BlockModelSuperClass as Constructor<BlockModel<Props & GfxCompatibleProps>>
);
}
export type EmbedProps<Props = object> = Props & GfxCompatibleProps;
export type EmbedBlockModel<Props = object> = BlockModel<EmbedProps<Props>>;
export function createEmbedBlockSchema<
Props extends object,
Model extends EmbedBlockModel<Props>,
Transformer extends BaseBlockTransformer<
EmbedProps<Props>
> = BaseBlockTransformer<EmbedProps<Props>>,
>({
name,
version,
toModel,
props,
transformer,
}: {
name: string;
version: number;
toModel: () => Model;
props?: (internalPrimitives: InternalPrimitives) => Props;
transformer?: () => Transformer;
}) {
return defineBlockSchema({
flavour: `affine:embed-${name}`,
props: internalPrimitives => {
const userProps = props?.(internalPrimitives);
return {
index: 'a0',
xywh: '[0,0,0,0]',
lockedBySelf: false,
rotate: 0,
...userProps,
} as unknown as EmbedProps<Props>;
},
metadata: {
version,
role: 'content',
},
toModel,
transformer,
});
}
@@ -0,0 +1,4 @@
export * from './enum.js';
export * from './global.js';
export * from './helper.js';
export * from './types.js';
@@ -0,0 +1,19 @@
export type EmbedCardStyle =
| 'horizontal'
| 'horizontalThin'
| 'list'
| 'vertical'
| 'cube'
| 'cubeThick'
| 'video'
| 'figma'
| 'html'
| 'syncedDoc'
| 'pdf';
export type LinkPreviewData = {
description: string | null;
icon: string | null;
image: string | null;
title: string | null;
};