From c775b2e264ce8c6896f34155a0f11561ec51697a Mon Sep 17 00:00:00 2001 From: pengx17 Date: Mon, 23 Dec 2024 04:19:06 +0000 Subject: [PATCH] fix(core): text-renderer should be readonly (#9244) fix AF-2010, AF-2009 --- .../blocksuite/presets/_common/components/text-renderer.ts | 7 +++++++ .../src/blocksuite/presets/_common/utils/markdown-utils.ts | 1 - .../core/src/blocksuite/presets/ai/utils/editor-actions.ts | 2 ++ .../block-suite-editor/bi-directional-link-panel.css.ts | 5 +++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/frontend/core/src/blocksuite/presets/_common/components/text-renderer.ts b/packages/frontend/core/src/blocksuite/presets/_common/components/text-renderer.ts index e3204dff57..6c5c798be3 100644 --- a/packages/frontend/core/src/blocksuite/presets/_common/components/text-renderer.ts +++ b/packages/frontend/core/src/blocksuite/presets/_common/components/text-renderer.ts @@ -195,6 +195,7 @@ export class TextRenderer extends WithDisposable(ShadowlessElement) { if (latestAnswer && schema) { markDownToDoc(schema, latestAnswer, this.options.additionalMiddlewares) .then(doc => { + this.disposeDoc(); this._doc = doc.blockCollection.getDoc({ query: this._query, }); @@ -232,9 +233,15 @@ export class TextRenderer extends WithDisposable(ShadowlessElement) { } } + private disposeDoc() { + this._doc?.dispose(); + this._doc?.collection.dispose(); + } + override disconnectedCallback() { super.disconnectedCallback(); this._clearTimer(); + this.disposeDoc(); } override render() { diff --git a/packages/frontend/core/src/blocksuite/presets/_common/utils/markdown-utils.ts b/packages/frontend/core/src/blocksuite/presets/_common/utils/markdown-utils.ts index 3892190d33..b67975588b 100644 --- a/packages/frontend/core/src/blocksuite/presets/_common/utils/markdown-utils.ts +++ b/packages/frontend/core/src/blocksuite/presets/_common/utils/markdown-utils.ts @@ -194,7 +194,6 @@ export async function markDownToDoc( const collection = new DocCollection({ schema, }); - collection.awarenessStore.awareness.destroy(); collection.meta.initialize(); const middlewares = [defaultImageProxyMiddleware]; if (additionalMiddlewares) { diff --git a/packages/frontend/core/src/blocksuite/presets/ai/utils/editor-actions.ts b/packages/frontend/core/src/blocksuite/presets/ai/utils/editor-actions.ts index 8f4e84ee93..811cbca063 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/utils/editor-actions.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/utils/editor-actions.ts @@ -150,5 +150,7 @@ export const copyText = async (host: EditorHost, text: string) => { .flatMap(model => model.children); const slice = Slice.fromModels(previewDoc, models); await host.std.clipboard.copySlice(slice); + previewDoc.dispose(); + previewDoc.collection.dispose(); return true; }; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.css.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.css.ts index 330ce6336a..a610329879 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.css.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/bi-directional-link-panel.css.ts @@ -98,6 +98,7 @@ export const linkPreviewContainer = style({ }); export const linkPreview = style({ + cursor: 'default', border: `0.5px solid ${cssVarV2('backlinks/blockBorder')}`, borderRadius: '8px', padding: '8px', @@ -111,6 +112,10 @@ export const linkPreview = style({ }, }); +globalStyle(`${linkPreview} *`, { + cursor: 'default', +}); + export const linkPreviewRenderer = style({ cursor: 'pointer', });