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:
45 files changed
+126
-329
No files matched your search
@@ -1,3 +1,4 @@
|
||||
import type { SurfaceElementModelMap } from '@blocksuite/affine-model';
|
||||
import { EditPropsStore } from '@blocksuite/affine-shared/services';
|
||||
import { type BlockStdScope, StdIdentifier } from '@blocksuite/block-std';
|
||||
import {
|
||||
@@ -62,13 +63,13 @@ export class EdgelessCRUDExtension extends Extension {
|
||||
};
|
||||
|
||||
addBlock = (
|
||||
flavour: BlockSuite.EdgelessModelKeys | string,
|
||||
flavour: string,
|
||||
props: Record<string, unknown>,
|
||||
parentId?: string | BlockModel,
|
||||
parentIndex?: number
|
||||
) => {
|
||||
const gfx = this.std.get(GfxControllerIdentifier);
|
||||
const key = getLastPropsKey(flavour as BlockSuite.EdgelessModelKeys, props);
|
||||
const key = getLastPropsKey(flavour, props);
|
||||
if (key) {
|
||||
props = this.std.get(EditPropsStore).applyLastProps(key, props);
|
||||
}
|
||||
@@ -94,7 +95,7 @@ export class EdgelessCRUDExtension extends Extension {
|
||||
}
|
||||
|
||||
const gfx = this.std.get(GfxControllerIdentifier);
|
||||
const key = getLastPropsKey(type as BlockSuite.EdgelessModelKeys, props);
|
||||
const key = getLastPropsKey(type, props);
|
||||
if (key) {
|
||||
props = this.std.get(EditPropsStore).applyLastProps(key, props) as T;
|
||||
}
|
||||
@@ -117,10 +118,10 @@ export class EdgelessCRUDExtension extends Extension {
|
||||
|
||||
const element = this._surface.getElementById(id);
|
||||
if (element) {
|
||||
const key = getLastPropsKey(
|
||||
element.type as BlockSuite.EdgelessModelKeys,
|
||||
{ ...element.yMap.toJSON(), ...props }
|
||||
);
|
||||
const key = getLastPropsKey(element.type, {
|
||||
...element.yMap.toJSON(),
|
||||
...props,
|
||||
});
|
||||
key && this.std.get(EditPropsStore).recordLastProps(key, props);
|
||||
this._surface.updateElement(id, props);
|
||||
return;
|
||||
@@ -128,10 +129,10 @@ export class EdgelessCRUDExtension extends Extension {
|
||||
|
||||
const block = this.std.store.getBlockById(id);
|
||||
if (block) {
|
||||
const key = getLastPropsKey(
|
||||
block.flavour as BlockSuite.EdgelessModelKeys,
|
||||
{ ...block.yBlock.toJSON(), ...props }
|
||||
);
|
||||
const key = getLastPropsKey(block.flavour, {
|
||||
...block.yBlock.toJSON(),
|
||||
...props,
|
||||
});
|
||||
key && this.std.get(EditPropsStore).recordLastProps(key, props);
|
||||
this.std.store.updateBlock(block, props);
|
||||
}
|
||||
@@ -142,17 +143,13 @@ export class EdgelessCRUDExtension extends Extension {
|
||||
if (!surface) {
|
||||
return null;
|
||||
}
|
||||
const el =
|
||||
surface.getElementById(id) ??
|
||||
(this.std.store.getBlockById(
|
||||
id
|
||||
) as BlockSuite.EdgelessBlockModelType | null);
|
||||
return el;
|
||||
const el = surface.getElementById(id) ?? this.std.store.getBlockById(id);
|
||||
return el as GfxModel | null;
|
||||
}
|
||||
|
||||
getElementsByType<K extends keyof BlockSuite.SurfaceElementModelMap>(
|
||||
getElementsByType<K extends keyof SurfaceElementModelMap>(
|
||||
type: K
|
||||
): BlockSuite.SurfaceElementModelMap[K][] {
|
||||
): SurfaceElementModelMap[K][] {
|
||||
if (!this._surface) {
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -7,7 +7,11 @@ import {
|
||||
type LocalConnectorElementModel,
|
||||
} from '@blocksuite/affine-model';
|
||||
import { ThemeProvider } from '@blocksuite/affine-shared/services';
|
||||
import type { GfxController, GfxModel } from '@blocksuite/block-std/gfx';
|
||||
import type {
|
||||
GfxController,
|
||||
GfxLocalElementModel,
|
||||
GfxModel,
|
||||
} from '@blocksuite/block-std/gfx';
|
||||
import type { IBound, IVec, IVec3 } from '@blocksuite/global/utils';
|
||||
import {
|
||||
almostEqual,
|
||||
@@ -70,9 +74,7 @@ export const ConnectorEndpointLocationsOnTriangle: IVec[] = [
|
||||
[0.25, 0.5],
|
||||
];
|
||||
|
||||
export function isConnectorWithLabel(
|
||||
model: GfxModel | BlockSuite.SurfaceLocalModel
|
||||
) {
|
||||
export function isConnectorWithLabel(model: GfxModel | GfxLocalElementModel) {
|
||||
return model instanceof ConnectorElementModel && model.hasLabel();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { GfxPrimitiveElementModel } from '@blocksuite/block-std/gfx';
|
||||
import type { IBound } from '@blocksuite/global/utils';
|
||||
|
||||
import type { RoughCanvas, SurfaceElementModel } from '../../index.js';
|
||||
import type { RoughCanvas } from '../../index.js';
|
||||
import type { CanvasRenderer } from '../canvas-renderer.js';
|
||||
import { brush } from './brush/index.js';
|
||||
import { connector } from './connector/index.js';
|
||||
@@ -11,7 +12,7 @@ import { text } from './text/index.js';
|
||||
export { normalizeShapeBound } from './shape/utils.js';
|
||||
|
||||
export type ElementRenderer<
|
||||
T extends BlockSuite.SurfaceElementModel = SurfaceElementModel,
|
||||
T extends GfxPrimitiveElementModel = GfxPrimitiveElementModel,
|
||||
> = (
|
||||
model: T,
|
||||
ctx: CanvasRenderingContext2D,
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import type { ConnectorElementModel } from '@blocksuite/affine-model';
|
||||
import type {
|
||||
ConnectorElementModel,
|
||||
SurfaceElementModelMap,
|
||||
} from '@blocksuite/affine-model';
|
||||
import type { SurfaceBlockProps } from '@blocksuite/block-std/gfx';
|
||||
import { SurfaceBlockModel as BaseSurfaceModel } from '@blocksuite/block-std/gfx';
|
||||
import { DisposableGroup } from '@blocksuite/global/utils';
|
||||
@@ -55,11 +58,9 @@ export class SurfaceBlockModel extends BaseSurfaceModel {
|
||||
);
|
||||
}
|
||||
|
||||
override getElementsByType<K extends keyof BlockSuite.SurfaceElementModelMap>(
|
||||
override getElementsByType<K extends keyof SurfaceElementModelMap>(
|
||||
type: K
|
||||
): BlockSuite.SurfaceElementModelMap[K][] {
|
||||
return super.getElementsByType(
|
||||
type
|
||||
) as BlockSuite.SurfaceElementModelMap[K][];
|
||||
): SurfaceElementModelMap[K][] {
|
||||
return super.getElementsByType(type) as SurfaceElementModelMap[K][];
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,10 @@ import { TelemetryProvider } from '@blocksuite/affine-shared/services';
|
||||
import type { NoteChildrenFlavour } from '@blocksuite/affine-shared/types';
|
||||
import { handleNativeRangeAtPoint } from '@blocksuite/affine-shared/utils';
|
||||
import type { BlockStdScope } from '@blocksuite/block-std';
|
||||
import { GfxControllerIdentifier } from '@blocksuite/block-std/gfx';
|
||||
import {
|
||||
type GfxBlockElementModel,
|
||||
GfxControllerIdentifier,
|
||||
} from '@blocksuite/block-std/gfx';
|
||||
import {
|
||||
type IPoint,
|
||||
type Point,
|
||||
@@ -117,7 +120,7 @@ export function addNote(
|
||||
const blocks =
|
||||
(doc.root?.children.filter(
|
||||
child => child.flavour === 'affine:note'
|
||||
) as BlockSuite.EdgelessBlockModelType[]) ?? [];
|
||||
) as GfxBlockElementModel[]) ?? [];
|
||||
const element = blocks.find(b => b.id === noteId);
|
||||
if (element) {
|
||||
gfx.selection.set({
|
||||
|
||||
@@ -8,7 +8,7 @@ import { NodePropsSchema } from '@blocksuite/affine-shared/utils';
|
||||
const LastPropsSchema = NodePropsSchema;
|
||||
|
||||
export function getLastPropsKey(
|
||||
modelType: BlockSuite.EdgelessModelKeys,
|
||||
modelType: string,
|
||||
modelProps: Partial<LastProps[LastPropsKey]>
|
||||
): LastPropsKey | null {
|
||||
if (modelType === 'shape') {
|
||||
|
||||
@@ -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';
|
||||
Reference in new issue
Block a user