From eed00e0b2696754a339fa4889b0203894705053a Mon Sep 17 00:00:00 2001 From: doouding Date: Mon, 17 Feb 2025 12:45:20 +0000 Subject: [PATCH] fix: mindmap ai preview (#10222) --- .../block-std/src/gfx/view/view-manager.ts | 31 ++++++++++--------- .../store/src/model/block/sync-controller.ts | 3 ++ .../presets/ai/mini-mindmap/surface-block.ts | 10 ++++-- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/blocksuite/framework/block-std/src/gfx/view/view-manager.ts b/blocksuite/framework/block-std/src/gfx/view/view-manager.ts index 2ce38dd956..1fe83f045a 100644 --- a/blocksuite/framework/block-std/src/gfx/view/view-manager.ts +++ b/blocksuite/framework/block-std/src/gfx/view/view-manager.ts @@ -5,6 +5,7 @@ import type { GfxController } from '../controller.js'; import { GfxExtension, GfxExtensionIdentifier } from '../extension.js'; import { GfxBlockElementModel } from '../model/gfx-block-model.js'; import type { GfxModel } from '../model/model.js'; +import type { GfxPrimitiveElementModel } from '../model/surface/element-model.js'; import type { GfxLocalElementModel } from '../model/surface/local-element-model.js'; import type { SurfaceBlockModel } from '../model/surface/surface-model.js'; import { @@ -57,15 +58,21 @@ export class ViewManager extends GfxExtension { }); const updateViewOnElementChange = (surface: SurfaceBlockModel) => { + const createView = ( + model: GfxPrimitiveElementModel | GfxLocalElementModel + ) => { + const ViewCtor = + this._viewCtorMap.get(model.type) ?? GfxElementModelView; + const view = new ViewCtor(model, this.gfx); + + this._viewMap.set(model.id, view); + view.onCreated(); + }; + this._disposable.add( surface.elementAdded.on(payload => { const model = surface.getElementById(payload.id)!; - const ViewCtor = - this._viewCtorMap.get(model.type) ?? GfxElementModelView; - const view = new ViewCtor(model, this.gfx); - - this._viewMap.set(model.id, view); - view.onCreated(); + createView(model); }) ); @@ -79,9 +86,7 @@ export class ViewManager extends GfxExtension { this._disposable.add( surface.localElementAdded.on(model => { - const View = this._viewCtorMap.get(model.type) ?? GfxElementModelView; - - this._viewMap.set(model.id, new View(model, this.gfx)); + createView(model); }) ); @@ -94,15 +99,11 @@ export class ViewManager extends GfxExtension { ); surface.localElementModels.forEach(model => { - const View = this._viewCtorMap.get(model.type) ?? GfxElementModelView; - - this._viewMap.set(model.id, new View(model, this.gfx)); + createView(model); }); surface.elementModels.forEach(model => { - const View = this._viewCtorMap.get(model.type) ?? GfxElementModelView; - - this._viewMap.set(model.id, new View(model, this.gfx)); + createView(model); }); }; diff --git a/blocksuite/framework/store/src/model/block/sync-controller.ts b/blocksuite/framework/store/src/model/block/sync-controller.ts index c8aad4f7fe..c77f792a01 100644 --- a/blocksuite/framework/store/src/model/block/sync-controller.ts +++ b/blocksuite/framework/store/src/model/block/sync-controller.ts @@ -180,6 +180,9 @@ export class SyncController { } const yValue = native2Y(value); + if (this.yBlock.get(`prop:${p}`) === yValue) { + return Reflect.set(target, p, value, receiver); + } this.yBlock.set(`prop:${p}`, yValue); const proxy = this._getPropsProxy(p, yValue); setValue(target, p, value); diff --git a/packages/frontend/core/src/blocksuite/presets/ai/mini-mindmap/surface-block.ts b/packages/frontend/core/src/blocksuite/presets/ai/mini-mindmap/surface-block.ts index b16fcb48d6..15a94a191b 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/mini-mindmap/surface-block.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/mini-mindmap/surface-block.ts @@ -22,11 +22,11 @@ export class MindmapSurfaceBlock extends BlockComponent { renderer?: CanvasRenderer; private get _grid() { - return this.std.get(GfxControllerIdentifier).grid; + return this.gfx.grid; } private get _layer() { - return this.std.get(GfxControllerIdentifier).layer; + return this.gfx.layer; } get mindmapService() { @@ -34,7 +34,11 @@ export class MindmapSurfaceBlock extends BlockComponent { } get viewport() { - return this.std.get(GfxControllerIdentifier).viewport; + return this.gfx.viewport; + } + + get gfx() { + return this.std.get(GfxControllerIdentifier); } constructor() {