From 0553ae72b5402d8296c661f6ce3c02726303cc4e Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Tue, 4 Feb 2025 12:56:40 +0000 Subject: [PATCH] refactor(editor): remove deprecated editor slot (#9908) --- blocksuite/blocks/src/_common/types.ts | 8 ------- .../playground/apps/starter/utils/editor.ts | 3 --- .../presets/src/editors/editor-container.ts | 22 +----------------- .../blocksuite-editor-container.tsx | 23 +------------------ 4 files changed, 2 insertions(+), 54 deletions(-) diff --git a/blocksuite/blocks/src/_common/types.ts b/blocksuite/blocks/src/_common/types.ts index 846a40ce6..e21ea4253 100644 --- a/blocksuite/blocks/src/_common/types.ts +++ b/blocksuite/blocks/src/_common/types.ts @@ -4,19 +4,11 @@ import type { DocMode, GroupElementModel, } from '@blocksuite/affine-model'; -import type { Slot } from '@blocksuite/global/utils'; import type { Store } from '@blocksuite/store'; -/** Common context interface definition for block models. */ - -type EditorSlots = { - docUpdated: Slot<{ newDocId: string }>; -}; - export type AbstractEditor = { doc: Store; mode: DocMode; - readonly slots: EditorSlots; } & HTMLElement; export type Connectable = Exclude< diff --git a/blocksuite/playground/apps/starter/utils/editor.ts b/blocksuite/playground/apps/starter/utils/editor.ts index fa134ac2f..537f6bb79 100644 --- a/blocksuite/playground/apps/starter/utils/editor.ts +++ b/blocksuite/playground/apps/starter/utils/editor.ts @@ -118,9 +118,6 @@ export async function mountDefaultDocEditor(collection: Workspace) { const modeService = editor.std.provider.get(DocModeProvider); editor.mode = modeService.getPrimaryMode(doc.id); setDocModeFromUrlParams(modeService, url.searchParams, doc.id); - editor.slots.docUpdated.on(({ newDocId }) => { - editor.mode = modeService.getPrimaryMode(newDocId); - }); const outlinePanel = new CustomOutlinePanel(); outlinePanel.editor = editor; diff --git a/blocksuite/presets/src/editors/editor-container.ts b/blocksuite/presets/src/editors/editor-container.ts index c71da6ec1..e12d5b733 100644 --- a/blocksuite/presets/src/editors/editor-container.ts +++ b/blocksuite/presets/src/editors/editor-container.ts @@ -6,7 +6,7 @@ import { PageEditorBlockSpecs, ThemeProvider, } from '@blocksuite/blocks'; -import { SignalWatcher, Slot, WithDisposable } from '@blocksuite/global/utils'; +import { SignalWatcher, WithDisposable } from '@blocksuite/global/utils'; import { type BlockModel, type ExtensionType, @@ -115,13 +115,6 @@ export class AffineEditorContainer return this._std.value.render(); }); - /** - * @deprecated need to refactor - */ - slots: AbstractEditor['slots'] = { - docUpdated: new Slot(), - }; - get doc() { return this._doc.value as Store; } @@ -228,19 +221,6 @@ export class AffineEditorContainer this._mode.value = mode; } - /** - * @deprecated need to refactor - */ - override updated(changedProperties: Map) { - if (changedProperties.has('doc')) { - this.slots.docUpdated.emit({ newDocId: this.doc.id }); - } - - if (!changedProperties.has('doc') && !changedProperties.has('mode')) { - return; - } - } - @property({ attribute: false }) override accessor autofocus = false; } diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx index 4d34aeeea..fd0612e48 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx @@ -5,7 +5,6 @@ import { focusBlockEnd, getLastNoteBlock, } from '@blocksuite/affine/blocks'; -import { Slot } from '@blocksuite/affine/global/utils'; import type { AffineEditorContainer, DocTitle, @@ -20,7 +19,6 @@ import { forwardRef, useCallback, useImperativeHandle, - useLayoutEffect, useMemo, useRef, } from 'react'; @@ -38,13 +36,6 @@ interface BlocksuiteEditorContainerProps { style?: React.CSSProperties; } -// mimic the interface of the webcomponent and expose slots & host -type BlocksuiteEditorContainerRef = Pick< - (typeof AffineEditorContainer)['prototype'], - 'mode' | 'doc' | 'slots' | 'host' -> & - HTMLDivElement; - export const BlocksuiteEditorContainer = forwardRef< AffineEditorContainer, BlocksuiteEditorContainerProps @@ -59,23 +50,11 @@ export const BlocksuiteEditorContainer = forwardRef< const featureFlags = useService(FeatureFlagService).flags; const enableEditorRTL = useLiveData(featureFlags.enable_editor_rtl.$); - const slots: BlocksuiteEditorContainerRef['slots'] = useMemo(() => { - return { - editorModeSwitched: new Slot(), - docUpdated: new Slot(), - }; - }, []); - - useLayoutEffect(() => { - slots.docUpdated.emit({ newDocId: page.id }); - }, [page, slots.docUpdated]); - /** * mimic an AffineEditorContainer using proxy */ const affineEditorContainerProxy = useMemo(() => { const api = { - slots, get page() { return page; }, @@ -133,7 +112,7 @@ export const BlocksuiteEditorContainer = forwardRef< }) as unknown as AffineEditorContainer & { origin: HTMLDivElement }; return proxy; - }, [mode, page, slots]); + }, [mode, page]); useImperativeHandle(ref, () => affineEditorContainerProxy, [ affineEditorContainerProxy,