refactor(editor): remove global types in edgeless (#10092)

Closes: [BS-2553](https://linear.app/affine-design/issue/BS-2553/remove-global-types-in-edgeless)
This commit is contained in:
Saul-Mirone
2025-02-11 12:09:44 +00:00
parent 3062bd0771
commit dbf0f9dc20
45 changed files with 126 additions and 329 deletions
@@ -88,11 +88,3 @@ export const AttachmentBlockSchema = defineBlockSchema({
export class AttachmentBlockModel
extends GfxCompatible<AttachmentBlockProps>(BlockModel)
implements GfxElementGeometry {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:attachment': AttachmentBlockModel;
}
}
}
@@ -57,11 +57,3 @@ export const BookmarkBlockSchema = defineBlockSchema({
export class BookmarkBlockModel
extends GfxCompatible<BookmarkBlockProps>(BlockModel)
implements GfxElementGeometry {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:bookmark': BookmarkBlockModel;
}
}
}
@@ -79,15 +79,3 @@ export const EdgelessTextBlockSchema = defineBlockSchema({
export class EdgelessTextBlockModel
extends GfxCompatible<EdgelessTextProps>(BlockModel)
implements GfxElementGeometry {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:edgeless-text': EdgelessTextBlockModel;
}
interface EdgelessTextModelMap {
'edgeless-text': EdgelessTextBlockModel;
}
}
}
@@ -19,11 +19,3 @@ export type EmbedFigmaBlockProps = {
export class EmbedFigmaModel extends defineEmbedModel<EmbedFigmaBlockProps>(
BlockModel
) {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:embed-figma': EmbedFigmaModel;
}
}
}
@@ -33,11 +33,3 @@ export type EmbedGithubBlockProps = {
export class EmbedGithubModel extends defineEmbedModel<EmbedGithubBlockProps>(
BlockModel
) {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:embed-github': EmbedGithubModel;
}
}
}
@@ -15,11 +15,3 @@ export type EmbedHtmlBlockProps = {
export class EmbedHtmlModel extends defineEmbedModel<EmbedHtmlBlockProps>(
BlockModel
) {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:embed-html': EmbedHtmlModel;
}
}
}
@@ -20,11 +20,3 @@ export type EmbedLinkedDocBlockProps = {
export class EmbedLinkedDocModel extends defineEmbedModel<EmbedLinkedDocBlockProps>(
BlockModel
) {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:embed-linked-doc': EmbedLinkedDocModel;
}
}
}
@@ -21,11 +21,3 @@ export type EmbedLoomBlockProps = {
export class EmbedLoomModel extends defineEmbedModel<EmbedLoomBlockProps>(
BlockModel
) {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:embed-loom': EmbedLoomModel;
}
}
}
@@ -15,11 +15,3 @@ export type EmbedSyncedDocBlockProps = {
export class EmbedSyncedDocModel extends defineEmbedModel<EmbedSyncedDocBlockProps>(
BlockModel
) {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:embed-synced-doc': EmbedSyncedDocModel;
}
}
}
@@ -24,11 +24,3 @@ export type EmbedYoutubeBlockProps = {
export class EmbedYoutubeModel extends defineEmbedModel<EmbedYoutubeBlockProps>(
BlockModel
) {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:embed-youtube': EmbedYoutubeModel;
}
}
}
@@ -144,11 +144,3 @@ export class FrameBlockModel
});
}
}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:frame': FrameBlockModel;
}
}
}
@@ -42,11 +42,3 @@ export const ImageBlockSchema = defineBlockSchema({
export class ImageBlockModel
extends GfxCompatible<ImageBlockProps>(BlockModel)
implements GfxElementGeometry {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:image': ImageBlockModel;
}
}
}
@@ -37,11 +37,3 @@ export const LatexBlockSchema = defineBlockSchema({
export class LatexBlockModel
extends GfxCompatible<LatexProps>(BlockModel)
implements GfxElementGeometry {}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:latex': LatexBlockModel;
}
}
}
@@ -155,11 +155,3 @@ export class NoteBlockModel
return false;
}
}
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {
'affine:note': NoteBlockModel;
}
}
}
@@ -224,11 +224,3 @@ export class BrushElementModel extends GfxPrimitiveElementModel<BrushProps> {
}
type Instance = GfxPrimitiveElementModel<BrushProps> & BrushProps;
declare global {
namespace BlockSuite {
interface SurfaceElementModelMap {
brush: BrushElementModel;
}
}
}
@@ -508,14 +508,3 @@ export class ConnectorElementModel extends GfxPrimitiveElementModel<ConnectorEle
@local()
accessor xywh: SerializedXYWH = '[0,0,0,0]';
}
declare global {
namespace BlockSuite {
interface SurfaceElementModelMap {
connector: ConnectorElementModel;
}
interface EdgelessTextModelMap {
connector: ConnectorElementModel;
}
}
}
@@ -56,11 +56,3 @@ export class LocalConnectorElementModel extends GfxLocalElementModel {
return 'connector';
}
}
declare global {
namespace BlockSuite {
interface SurfaceLocalModelMap {
connector: LocalConnectorElementModel;
}
}
}
@@ -119,15 +119,3 @@ export class GroupElementModel extends GfxGroupLikeElementModel<GroupElementProp
@field()
accessor title: Y.Text = new Y.Text();
}
declare global {
namespace BlockSuite {
interface SurfaceGroupLikeModelMap {
group: GroupElementModel;
}
interface SurfaceElementModelMap {
group: GroupElementModel;
}
}
}
@@ -1,6 +1,32 @@
import type { EdgelessTextBlockModel } from '../blocks/edgeless-text/edgeless-text-model.js';
import type { BrushElementModel } from './brush/index.js';
import type { ConnectorElementModel } from './connector/index.js';
import type { GroupElementModel } from './group/index.js';
import type { MindmapElementModel } from './mindmap/index.js';
import type { ShapeElementModel } from './shape/index.js';
import type { TextElementModel } from './text/index.js';
export * from './brush/index.js';
export * from './connector/index.js';
export * from './group/index.js';
export * from './mindmap/index.js';
export * from './shape/index.js';
export * from './text/index.js';
export type SurfaceElementModelMap = {
brush: BrushElementModel;
connector: ConnectorElementModel;
group: GroupElementModel;
mindmap: MindmapElementModel;
shape: ShapeElementModel;
text: TextElementModel;
};
export type SurfaceTextModelMap = {
text: TextElementModel;
connector: ConnectorElementModel;
shape: ShapeElementModel;
'edgeless-text': EdgelessTextBlockModel;
};
export type SurfaceTextModel = SurfaceTextModelMap[keyof SurfaceTextModelMap];
@@ -1,6 +1,7 @@
import type {
BaseElementProps,
GfxModel,
GfxPrimitiveElementModel,
PointTestOptions,
SerializedElement,
} from '@blocksuite/block-std/gfx';
@@ -44,7 +45,7 @@ export type MindmapNode = {
id: string;
detail: NodeDetail;
element: BlockSuite.SurfaceElementModel;
element: GfxPrimitiveElementModel;
children: MindmapNode[];
parent: MindmapNode | null;
@@ -836,7 +837,7 @@ export class MindmapElementModel extends GfxGroupLikeElementModel<MindmapElement
return;
}
const stashed = new Set<BlockSuite.SurfaceElementModel>();
const stashed = new Set<GfxPrimitiveElementModel>();
const traverse = (node: MindmapNode) => {
node.element.stash('xywh');
stashed.add(node.element);
@@ -975,11 +976,3 @@ export class MindmapElementModel extends GfxGroupLikeElementModel<MindmapElement
@field()
accessor style: MindmapStyle = MindmapStyle.ONE;
}
declare global {
namespace BlockSuite {
interface SurfaceGroupLikeModelMap {
mindmap: MindmapElementModel;
}
}
}
@@ -261,15 +261,3 @@ export class LocalShapeElementModel extends GfxLocalElementModel {
@prop()
accessor textVerticalAlign: TextVerticalAlign = TextVerticalAlign.Center;
}
declare global {
namespace BlockSuite {
interface SurfaceElementModelMap {
shape: ShapeElementModel;
}
interface EdgelessTextModelMap {
shape: ShapeElementModel;
}
}
}
@@ -90,15 +90,3 @@ export class TextElementModel extends GfxPrimitiveElementModel<TextElementProps>
@field()
accessor xywh: SerializedXYWH = '[0,0,16,16]';
}
declare global {
namespace BlockSuite {
interface SurfaceElementModelMap {
text: TextElementModel;
}
interface EdgelessTextModelMap {
text: TextElementModel;
}
}
}
@@ -1,46 +0,0 @@
import type {
GfxBlockElementModel,
GfxGroupLikeElementModel,
GfxLocalElementModel,
GfxPrimitiveElementModel,
} from '@blocksuite/block-std/gfx';
declare global {
namespace BlockSuite {
interface EdgelessBlockModelMap {}
type EdgelessBlockModelKeyType = keyof EdgelessBlockModelMap;
type EdgelessBlockModelType =
| EdgelessBlockModelMap[EdgelessBlockModelKeyType]
| GfxBlockElementModel;
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;
}
}
@@ -1,4 +1,3 @@
export * from './enum.js';
export * from './global.js';
export * from './helper.js';
export * from './types.js';