From 2f1f09e25fde1e85e6cb3e3a40a01196800c2547 Mon Sep 17 00:00:00 2001 From: L-Sun Date: Mon, 31 Mar 2025 10:53:02 +0000 Subject: [PATCH] fix(editor): extract store spec register from effects (#11268) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Close [BS-2802](https://linear.app/affine-design/issue/BS-2802/移動端缺少bseffects導致文檔創建錯誤) --- .../affine/all/src/__tests__/utils/get-provider.ts | 8 ++++++-- blocksuite/affine/all/src/effects.ts | 5 ++--- blocksuite/affine/all/src/extensions/index.ts | 9 +++++---- blocksuite/affine/all/src/extensions/register.ts | 5 ++++- .../integration-test/src/__tests__/utils/setup.ts | 12 +++++++----- blocksuite/playground/apps/starter/main.ts | 2 ++ packages/frontend/apps/android/src/setup.ts | 1 + .../frontend/apps/electron-renderer/src/app/setup.ts | 1 + packages/frontend/apps/ios/src/setup.ts | 1 + packages/frontend/apps/mobile/src/setup.ts | 1 + packages/frontend/apps/web/src/setup.ts | 1 + packages/frontend/core/src/bootstrap/blocksuite.ts | 3 +++ 12 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 packages/frontend/core/src/bootstrap/blocksuite.ts diff --git a/blocksuite/affine/all/src/__tests__/utils/get-provider.ts b/blocksuite/affine/all/src/__tests__/utils/get-provider.ts index dc93ff368..eb2d906f8 100644 --- a/blocksuite/affine/all/src/__tests__/utils/get-provider.ts +++ b/blocksuite/affine/all/src/__tests__/utils/get-provider.ts @@ -1,9 +1,13 @@ import { SpecProvider } from '@blocksuite/affine-shared/utils'; import { Container } from '@blocksuite/global/di'; -import { registerSpecs } from '../../extensions/register'; +import { + registerBlockSpecs, + registerStoreSpecs, +} from '../../extensions/register'; -registerSpecs(); +registerStoreSpecs(); +registerBlockSpecs(); export function getProvider() { const container = new Container(); diff --git a/blocksuite/affine/all/src/effects.ts b/blocksuite/affine/all/src/effects.ts index b43683af7..44ccb7e37 100644 --- a/blocksuite/affine/all/src/effects.ts +++ b/blocksuite/affine/all/src/effects.ts @@ -62,7 +62,7 @@ import { effects as widgetToolbarEffects } from '@blocksuite/affine-widget-toolb import { effects as dataViewEffects } from '@blocksuite/data-view/effects'; import { effects as stdEffects } from '@blocksuite/std/effects'; -import { registerSpecs } from './extensions/register.js'; +import { registerBlockSpecs } from './extensions'; export declare const _GLOBAL_: | typeof stdEffects @@ -112,8 +112,7 @@ export declare const _GLOBAL_: | typeof fragmentOutlineEffects; export function effects() { - registerSpecs(); - + registerBlockSpecs(); stdEffects(); dataViewEffects(); diff --git a/blocksuite/affine/all/src/extensions/index.ts b/blocksuite/affine/all/src/extensions/index.ts index 5c2111a0d..611599b9f 100644 --- a/blocksuite/affine/all/src/extensions/index.ts +++ b/blocksuite/affine/all/src/extensions/index.ts @@ -1,4 +1,5 @@ -export * from './common.js'; -export * from './editor-specs.js'; -export * from './preview-specs.js'; -export * from './store.js'; +export * from './common'; +export * from './editor-specs'; +export * from './preview-specs'; +export * from './register'; +export * from './store'; diff --git a/blocksuite/affine/all/src/extensions/register.ts b/blocksuite/affine/all/src/extensions/register.ts index fe8c14a91..a8f723766 100644 --- a/blocksuite/affine/all/src/extensions/register.ts +++ b/blocksuite/affine/all/src/extensions/register.ts @@ -10,8 +10,11 @@ import { } from './preview-specs.js'; import { StoreExtensions } from './store.js'; -export function registerSpecs() { +export function registerStoreSpecs() { SpecProvider._.addSpec('store', StoreExtensions); +} + +export function registerBlockSpecs() { SpecProvider._.addSpec('page', PageEditorBlockSpecs); SpecProvider._.addSpec('edgeless', EdgelessEditorBlockSpecs); SpecProvider._.addSpec('preview:page', PreviewPageEditorBlockSpecs); diff --git a/blocksuite/integration-test/src/__tests__/utils/setup.ts b/blocksuite/integration-test/src/__tests__/utils/setup.ts index 5508f3040..660f2b30a 100644 --- a/blocksuite/integration-test/src/__tests__/utils/setup.ts +++ b/blocksuite/integration-test/src/__tests__/utils/setup.ts @@ -2,18 +2,20 @@ import '@toeverything/theme/style.css'; import '@toeverything/theme/fonts.css'; import { effects as blocksEffects } from '@blocksuite/affine/effects'; +import { + EdgelessEditorBlockSpecs, + PageEditorBlockSpecs, + registerStoreSpecs, + StoreExtensions, +} from '@blocksuite/affine/extensions'; import type { ExtensionType, Store, Transformer } from '@blocksuite/store'; import { effects } from '../../effects.js'; +registerStoreSpecs(); blocksEffects(); effects(); -import { - EdgelessEditorBlockSpecs, - PageEditorBlockSpecs, - StoreExtensions, -} from '@blocksuite/affine/extensions'; import type { DocMode } from '@blocksuite/affine/model'; import { AffineSchemas } from '@blocksuite/affine/schemas'; import { diff --git a/blocksuite/playground/apps/starter/main.ts b/blocksuite/playground/apps/starter/main.ts index dc50ec264..92885168c 100644 --- a/blocksuite/playground/apps/starter/main.ts +++ b/blocksuite/playground/apps/starter/main.ts @@ -3,6 +3,7 @@ import '../../style.css'; import * as databaseBlocks from '@blocksuite/affine/blocks/database'; import * as noteBlocks from '@blocksuite/affine/blocks/note'; import { effects as blocksEffects } from '@blocksuite/affine/effects'; +import { registerStoreSpecs } from '@blocksuite/affine/extensions'; import * as globalUtils from '@blocksuite/affine/global/utils'; import * as services from '@blocksuite/affine/shared/services'; import * as blockStd from '@blocksuite/affine/std'; @@ -19,6 +20,7 @@ import { import { mountDefaultDocEditor } from './utils/setup-playground'; import { prepareTestApp } from './utils/test'; +registerStoreSpecs(); blocksEffects(); presetsEffects(); commentEffects(); diff --git a/packages/frontend/apps/android/src/setup.ts b/packages/frontend/apps/android/src/setup.ts index 27bd3f467..64569a71e 100644 --- a/packages/frontend/apps/android/src/setup.ts +++ b/packages/frontend/apps/android/src/setup.ts @@ -1,3 +1,4 @@ import '@affine/core/bootstrap/browser'; +import '@affine/core/bootstrap/blocksuite'; import '@affine/component/theme'; import '@affine/core/mobile/styles/mobile.css'; diff --git a/packages/frontend/apps/electron-renderer/src/app/setup.ts b/packages/frontend/apps/electron-renderer/src/app/setup.ts index 931f198f8..99d145d29 100644 --- a/packages/frontend/apps/electron-renderer/src/app/setup.ts +++ b/packages/frontend/apps/electron-renderer/src/app/setup.ts @@ -1,4 +1,5 @@ import '@affine/core/bootstrap/electron'; +import '@affine/core/bootstrap/blocksuite'; import '@affine/component/theme'; import './global.css'; diff --git a/packages/frontend/apps/ios/src/setup.ts b/packages/frontend/apps/ios/src/setup.ts index baefae9fa..cc5cf55ba 100644 --- a/packages/frontend/apps/ios/src/setup.ts +++ b/packages/frontend/apps/ios/src/setup.ts @@ -1,2 +1,3 @@ import '@affine/core/bootstrap/browser'; +import '@affine/core/bootstrap/blocksuite'; import './proxy'; diff --git a/packages/frontend/apps/mobile/src/setup.ts b/packages/frontend/apps/mobile/src/setup.ts index 27bd3f467..64569a71e 100644 --- a/packages/frontend/apps/mobile/src/setup.ts +++ b/packages/frontend/apps/mobile/src/setup.ts @@ -1,3 +1,4 @@ import '@affine/core/bootstrap/browser'; +import '@affine/core/bootstrap/blocksuite'; import '@affine/component/theme'; import '@affine/core/mobile/styles/mobile.css'; diff --git a/packages/frontend/apps/web/src/setup.ts b/packages/frontend/apps/web/src/setup.ts index d7348bf50..76e266011 100644 --- a/packages/frontend/apps/web/src/setup.ts +++ b/packages/frontend/apps/web/src/setup.ts @@ -1,2 +1,3 @@ import '@affine/core/bootstrap/browser'; +import '@affine/core/bootstrap/blocksuite'; import '@affine/component/theme'; diff --git a/packages/frontend/core/src/bootstrap/blocksuite.ts b/packages/frontend/core/src/bootstrap/blocksuite.ts new file mode 100644 index 000000000..ad5d5ec3a --- /dev/null +++ b/packages/frontend/core/src/bootstrap/blocksuite.ts @@ -0,0 +1,3 @@ +import { registerStoreSpecs } from '@blocksuite/affine/extensions'; + +registerStoreSpecs();