From ca07b143efca82885e2c2c09c67d4d2111c6a9be Mon Sep 17 00:00:00 2001 From: Peng Xiao Date: Wed, 22 Nov 2023 18:29:34 +0000 Subject: [PATCH] fix(core): should not reset page preset on rerender (#5034) Should not reset editor preset when re-render. See https://github.com/toeverything/blocksuite/blob/ce7ac88fc750fb465a6b4227b8f93eafe8e894fc/packages/editor/src/components/editor-container.ts#L197. If these props changes, it will trigger some unexpected side effects. --- .../component/src/components/block-suite-editor/index.tsx | 8 +++----- .../component/src/components/block-suite-editor/preset.ts | 4 +++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/frontend/component/src/components/block-suite-editor/index.tsx b/packages/frontend/component/src/components/block-suite-editor/index.tsx index 5a97dddbd0..450a73382d 100644 --- a/packages/frontend/component/src/components/block-suite-editor/index.tsx +++ b/packages/frontend/component/src/components/block-suite-editor/index.tsx @@ -21,7 +21,7 @@ import { blockSuiteEditorHeaderStyle, blockSuiteEditorStyle, } from './index.css'; -import { getPresets } from './preset'; +import { editorPresets } from './preset'; interface BlockElement extends Element { path: string[]; @@ -104,12 +104,10 @@ const BlockSuiteEditorImpl = ({ if (editor.page !== page) { editor.page = page; + editor.pagePreset = editorPresets.pageModePreset; + editor.edgelessPreset = editorPresets.edgelessModePreset; } - const presets = getPresets(); - editor.pagePreset = presets.pageModePreset; - editor.edgelessPreset = presets.edgelessModePreset; - useLayoutEffect(() => { if (editor) { const disposes: (() => void)[] = []; diff --git a/packages/frontend/component/src/components/block-suite-editor/preset.ts b/packages/frontend/component/src/components/block-suite-editor/preset.ts index 4da074e566..14184ab5c0 100644 --- a/packages/frontend/component/src/components/block-suite-editor/preset.ts +++ b/packages/frontend/component/src/components/block-suite-editor/preset.ts @@ -17,7 +17,7 @@ class CustomAttachmentService extends AttachmentService { } } -export function getPresets() { +function getPresets() { const pageModePreset = PagePreset.map(preset => { if (preset.schema.model.flavour === 'affine:attachment') { return { @@ -42,3 +42,5 @@ export function getPresets() { edgelessModePreset, }; } + +export const editorPresets = getPresets();