From 99fdfe821ac9815bdaac49f0bec2e4a93b517e8c Mon Sep 17 00:00:00 2001 From: fundon Date: Fri, 14 Mar 2025 10:38:16 +0000 Subject: [PATCH] fix(editor): improve type declaration definition (#10866) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: [BS-2809](https://linear.app/affine-design/issue/BS-2809/改进继承自抽象类的类型后-createidentifier-类型定义) ### What's Changed! * Improved type declaration definition --- .../blocks/block-frame/src/frame-manager.ts | 7 ++++--- .../components/rects/edgeless-selected-rect.ts | 7 ++----- .../src/edgeless/edgeless-root-service.ts | 7 ++----- .../src/edgeless/gfx-tool/default-tool.ts | 7 ++----- .../src/edgeless/gfx-tool/frame-tool.ts | 16 +++++----------- .../element-toolbar/change-frame-button.ts | 7 +++---- blocksuite/framework/global/src/di/identifier.ts | 7 ++++--- 7 files changed, 22 insertions(+), 36 deletions(-) diff --git a/blocksuite/affine/blocks/block-frame/src/frame-manager.ts b/blocksuite/affine/blocks/block-frame/src/frame-manager.ts index 63c0579cde..7710fe4c07 100644 --- a/blocksuite/affine/blocks/block-frame/src/frame-manager.ts +++ b/blocksuite/affine/blocks/block-frame/src/frame-manager.ts @@ -40,9 +40,7 @@ export class FrameOverlay extends Overlay { private readonly _prevXYWH: SerializedXYWH | null = null; private get _frameManager() { - return this.gfx.std.get( - GfxExtensionIdentifier('frame-manager') - ) as EdgelessFrameManager; + return this.gfx.std.get(EdgelessFrameManagerIdentifier); } constructor(gfx: GfxController) { @@ -130,6 +128,9 @@ export class FrameOverlay extends Overlay { } } +export const EdgelessFrameManagerIdentifier = + GfxExtensionIdentifier('frame-manager'); + export class EdgelessFrameManager extends GfxExtension { static override key = 'frame-manager'; diff --git a/blocksuite/affine/blocks/block-root/src/edgeless/components/rects/edgeless-selected-rect.ts b/blocksuite/affine/blocks/block-root/src/edgeless/components/rects/edgeless-selected-rect.ts index 1a59871229..1e125f7159 100644 --- a/blocksuite/affine/blocks/block-root/src/edgeless/components/rects/edgeless-selected-rect.ts +++ b/blocksuite/affine/blocks/block-root/src/edgeless/components/rects/edgeless-selected-rect.ts @@ -7,7 +7,7 @@ import { SYNCED_MIN_WIDTH, } from '@blocksuite/affine-block-embed'; import { - type EdgelessFrameManager, + EdgelessFrameManagerIdentifier, type FrameOverlay, isFrameBlock, } from '@blocksuite/affine-block-frame'; @@ -45,7 +45,6 @@ import { type CursorType, getTopElements, GfxControllerIdentifier, - GfxExtensionIdentifier, type GfxModel, type GfxPrimitiveElementModel, } from '@blocksuite/block-std/gfx'; @@ -1096,9 +1095,7 @@ export class EdgelessSelectedRectWidget extends WidgetComponent< } #adjustFrame(frame: FrameBlockModel, bound: Bound) { - const frameManager = this.std.get( - GfxExtensionIdentifier('frame-manager') - ) as EdgelessFrameManager; + const frameManager = this.std.get(EdgelessFrameManagerIdentifier); const oldChildren = frameManager.getChildElementsInFrame(frame); diff --git a/blocksuite/affine/blocks/block-root/src/edgeless/edgeless-root-service.ts b/blocksuite/affine/blocks/block-root/src/edgeless/edgeless-root-service.ts index d7c62225a4..d41c109536 100644 --- a/blocksuite/affine/blocks/block-root/src/edgeless/edgeless-root-service.ts +++ b/blocksuite/affine/blocks/block-root/src/edgeless/edgeless-root-service.ts @@ -1,4 +1,4 @@ -import type { EdgelessFrameManager } from '@blocksuite/affine-block-frame'; +import { EdgelessFrameManagerIdentifier } from '@blocksuite/affine-block-frame'; import { EdgelessCRUDIdentifier, EdgelessLegacySlotIdentifier, @@ -25,7 +25,6 @@ import type { import { GfxBlockElementModel, GfxControllerIdentifier, - GfxExtensionIdentifier, isGfxGroupCompatibleModel, ZOOM_MAX, ZOOM_MIN, @@ -76,9 +75,7 @@ export class EdgelessRootService extends RootService implements SurfaceContext { } get frame() { - return this.std.get( - GfxExtensionIdentifier('frame-manager') - ) as EdgelessFrameManager; + return this.std.get(EdgelessFrameManagerIdentifier); } /** diff --git a/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/default-tool.ts b/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/default-tool.ts index 4c78c67ca7..4789a52ebc 100644 --- a/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/default-tool.ts +++ b/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/default-tool.ts @@ -1,6 +1,6 @@ import { insertEdgelessTextCommand } from '@blocksuite/affine-block-edgeless-text'; import { - type EdgelessFrameManager, + EdgelessFrameManagerIdentifier, type FrameOverlay, isFrameBlock, } from '@blocksuite/affine-block-frame'; @@ -36,7 +36,6 @@ import { BaseTool, getTopElements, type GfxBlockElementModel, - GfxExtensionIdentifier, type GfxModel, type GfxPrimitiveElementModel, isGfxGroupCompatibleModel, @@ -233,9 +232,7 @@ export class DefaultTool extends BaseTool { } private get _frameMgr() { - return this.std.get( - GfxExtensionIdentifier('frame-manager') - ) as EdgelessFrameManager; + return this.std.get(EdgelessFrameManagerIdentifier); } private get _supportedExts() { diff --git a/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/frame-tool.ts b/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/frame-tool.ts index 0e3782cb76..3bc9428825 100644 --- a/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/frame-tool.ts +++ b/blocksuite/affine/blocks/block-root/src/edgeless/gfx-tool/frame-tool.ts @@ -1,6 +1,6 @@ -import type { - EdgelessFrameManager, - FrameOverlay, +import { + EdgelessFrameManagerIdentifier, + type FrameOverlay, } from '@blocksuite/affine-block-frame'; import { OverlayIdentifier } from '@blocksuite/affine-block-surface'; import type { FrameBlockModel } from '@blocksuite/affine-model'; @@ -9,11 +9,7 @@ import { TelemetryProvider, } from '@blocksuite/affine-shared/services'; import type { PointerEventState } from '@blocksuite/block-std'; -import { - BaseTool, - getTopElements, - GfxExtensionIdentifier, -} from '@blocksuite/block-std/gfx'; +import { BaseTool, getTopElements } from '@blocksuite/block-std/gfx'; import type { IPoint, IVec } from '@blocksuite/global/gfx'; import { Bound, Vec } from '@blocksuite/global/gfx'; import { Text } from '@blocksuite/store'; @@ -27,9 +23,7 @@ export class FrameTool extends BaseTool { private _startPoint: IVec | null = null; get frameManager() { - return this.std.get( - GfxExtensionIdentifier('frame-manager') - ) as EdgelessFrameManager; + return this.std.get(EdgelessFrameManagerIdentifier); } get frameOverlay() { diff --git a/blocksuite/affine/blocks/block-root/src/widgets/element-toolbar/change-frame-button.ts b/blocksuite/affine/blocks/block-root/src/widgets/element-toolbar/change-frame-button.ts index 79d1984c4b..514741f4a3 100644 --- a/blocksuite/affine/blocks/block-root/src/widgets/element-toolbar/change-frame-button.ts +++ b/blocksuite/affine/blocks/block-root/src/widgets/element-toolbar/change-frame-button.ts @@ -1,4 +1,4 @@ -import type { EdgelessFrameManager } from '@blocksuite/affine-block-frame'; +import { EdgelessFrameManagerIdentifier } from '@blocksuite/affine-block-frame'; import { EdgelessCRUDIdentifier } from '@blocksuite/affine-block-surface'; import type { EdgelessColorPickerButton, @@ -17,7 +17,6 @@ import { } from '@blocksuite/affine-model'; import { FeatureFlagService } from '@blocksuite/affine-shared/services'; import { matchModels } from '@blocksuite/affine-shared/utils'; -import { GfxExtensionIdentifier } from '@blocksuite/block-std/gfx'; import { deserializeXYWH, serializeXYWH } from '@blocksuite/global/gfx'; import { WithDisposable } from '@blocksuite/global/lit'; import { EditIcon, PageIcon, UngroupIcon } from '@blocksuite/icons/lit'; @@ -159,8 +158,8 @@ export class EdgelessChangeFrameButton extends WithDisposable(LitElement) { @click=${() => { this.edgeless.doc.captureSync(); const frameMgr = this.edgeless.std.get( - GfxExtensionIdentifier('frame-manager') - ) as EdgelessFrameManager; + EdgelessFrameManagerIdentifier + ); frames.forEach(frame => frameMgr.removeAllChildrenFromFrame(frame) ); diff --git a/blocksuite/framework/global/src/di/identifier.ts b/blocksuite/framework/global/src/di/identifier.ts index 872913f301..9ab49c229f 100644 --- a/blocksuite/framework/global/src/di/identifier.ts +++ b/blocksuite/framework/global/src/di/identifier.ts @@ -78,10 +78,11 @@ import type { export function createIdentifier( name: string, variant: ServiceVariant = DEFAULT_SERVICE_VARIANT -): ServiceIdentifier & ((variant: ServiceVariant) => ServiceIdentifier) { +): ServiceIdentifier & + ((variant: ServiceVariant) => ServiceIdentifier) { return Object.assign( - (variant: ServiceVariant) => { - return createIdentifier(name, variant); + (variant: ServiceVariant) => { + return createIdentifier(name, variant); }, { identifierName: name,