diff --git a/blocksuite/affine/all/src/__tests__/utils/get-provider.ts b/blocksuite/affine/all/src/__tests__/utils/get-provider.ts index 6a2f7deabb..00257f7f28 100644 --- a/blocksuite/affine/all/src/__tests__/utils/get-provider.ts +++ b/blocksuite/affine/all/src/__tests__/utils/get-provider.ts @@ -1,14 +1,7 @@ import { Container } from '@blocksuite/global/di'; -import { - registerBlockSpecs, - registerStoreSpecs, -} from '../../extensions/register'; import { testStoreExtensions } from './store'; -registerStoreSpecs(); -registerBlockSpecs(); - export function getProvider() { const container = new Container(); const exts = testStoreExtensions; diff --git a/blocksuite/affine/all/src/effects.ts b/blocksuite/affine/all/src/effects.ts index 1b25997c31..5c0a6d2603 100644 --- a/blocksuite/affine/all/src/effects.ts +++ b/blocksuite/affine/all/src/effects.ts @@ -63,8 +63,6 @@ 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 { registerBlockSpecs } from './extensions'; - export declare const _GLOBAL_: | typeof stdEffects | typeof dataViewEffects @@ -113,7 +111,6 @@ export declare const _GLOBAL_: | typeof fragmentOutlineEffects; export function effects() { - registerBlockSpecs(); stdEffects(); dataViewEffects(); diff --git a/blocksuite/affine/all/src/extensions/index.ts b/blocksuite/affine/all/src/extensions/index.ts index a53d7a0a9b..6a51891a73 100644 --- a/blocksuite/affine/all/src/extensions/index.ts +++ b/blocksuite/affine/all/src/extensions/index.ts @@ -2,4 +2,3 @@ export * from './common'; export * from './editor-specs'; export * from './legacy-store'; export * from './preview-specs'; -export * from './register'; diff --git a/blocksuite/affine/all/src/extensions/register.ts b/blocksuite/affine/all/src/extensions/register.ts deleted file mode 100644 index bcb2336c46..0000000000 --- a/blocksuite/affine/all/src/extensions/register.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { SpecProvider } from '@blocksuite/affine-shared/utils'; - -import { - EdgelessEditorBlockSpecs, - PageEditorBlockSpecs, -} from './editor-specs.js'; -import { StoreExtensions } from './legacy-store.js'; -import { - PreviewEdgelessEditorBlockSpecs, - PreviewPageEditorBlockSpecs, -} from './preview-specs.js'; - -export function registerStoreSpecs() { - SpecProvider._.addSpec('store', StoreExtensions); -} - -export function registerBlockSpecs() { - SpecProvider._.addSpec('page', PageEditorBlockSpecs); - SpecProvider._.addSpec('edgeless', EdgelessEditorBlockSpecs); - SpecProvider._.addSpec('preview:page', PreviewPageEditorBlockSpecs); - SpecProvider._.addSpec('preview:edgeless', PreviewEdgelessEditorBlockSpecs); -} diff --git a/blocksuite/affine/shared/src/utils/index.ts b/blocksuite/affine/shared/src/utils/index.ts index f09d95f8e3..0339924963 100644 --- a/blocksuite/affine/shared/src/utils/index.ts +++ b/blocksuite/affine/shared/src/utils/index.ts @@ -20,7 +20,6 @@ export * from './print-to-pdf'; export * from './reference'; export * from './reordering'; export * from './signal'; -export * from './spec'; export * from './string'; export * from './title'; export * from './url'; diff --git a/blocksuite/affine/shared/src/utils/spec/index.ts b/blocksuite/affine/shared/src/utils/spec/index.ts deleted file mode 100644 index 38bfcb6f95..0000000000 --- a/blocksuite/affine/shared/src/utils/spec/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './spec-builder.js'; -export * from './spec-provider.js'; diff --git a/blocksuite/affine/shared/src/utils/spec/spec-builder.ts b/blocksuite/affine/shared/src/utils/spec/spec-builder.ts deleted file mode 100644 index 4dd277341e..0000000000 --- a/blocksuite/affine/shared/src/utils/spec/spec-builder.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { ExtensionType } from '@blocksuite/store'; - -export class SpecBuilder { - private _value: ExtensionType[]; - - get value() { - return this._value; - } - - constructor(spec: ExtensionType[]) { - this._value = [...spec]; - } - - extend(extensions: ExtensionType[]) { - this._value = [...this._value, ...extensions]; - return this; - } - - omit(target: ExtensionType) { - this._value = this._value.filter(extension => extension !== target); - return this; - } - - hasAll(target: ExtensionType[]) { - return target.every(t => this._value.includes(t)); - } - - hasOneOf(target: ExtensionType[]) { - return target.some(t => this._value.includes(t)); - } - - replace(target: ExtensionType[], newExtension: ExtensionType[]) { - this._value = [ - ...this._value.filter(extension => !target.includes(extension)), - ...newExtension, - ]; - return this; - } -} diff --git a/blocksuite/affine/shared/src/utils/spec/spec-provider.ts b/blocksuite/affine/shared/src/utils/spec/spec-provider.ts deleted file mode 100644 index 0fdcfe16ae..0000000000 --- a/blocksuite/affine/shared/src/utils/spec/spec-provider.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { BlockSuiteError } from '@blocksuite/global/exceptions'; -import type { ExtensionType } from '@blocksuite/store'; - -import { SpecBuilder } from './spec-builder.js'; - -type SpecId = - | 'store' - | 'page' - | 'edgeless' - | 'preview:page' - | 'preview:edgeless'; - -export class SpecProvider { - static instance: SpecProvider; - - private readonly specMap = new Map(); - - private constructor() {} - - static get _() { - if (!SpecProvider.instance) { - SpecProvider.instance = new SpecProvider(); - } - return SpecProvider.instance; - } - - addSpec(id: SpecId, spec: ExtensionType[]) { - if (!this.specMap.has(id)) { - this.specMap.set(id, spec); - } - } - - clearSpec(id: SpecId) { - this.specMap.delete(id); - } - - extendSpec(id: SpecId, newSpec: ExtensionType[]) { - const existingSpec = this.specMap.get(id); - if (!existingSpec) { - console.error(`Spec not found for ${id}`); - return; - } - this.specMap.set(id, [...existingSpec, ...newSpec]); - } - - getSpec(id: SpecId) { - const spec = this.specMap.get(id); - if (!spec) { - throw new BlockSuiteError( - BlockSuiteError.ErrorCode.ValueNotExists, - `Spec not found for ${id}` - ); - } - return new SpecBuilder(spec); - } - - hasSpec(id: SpecId) { - return this.specMap.has(id); - } - - omitSpec(id: SpecId, targetSpec: ExtensionType) { - const existingSpec = this.specMap.get(id); - if (!existingSpec) { - console.error(`Spec not found for ${id}`); - return; - } - - this.specMap.set( - id, - existingSpec.filter(spec => spec !== targetSpec) - ); - } - - replaceSpec(id: SpecId, targetSpec: ExtensionType, newSpec: ExtensionType) { - const existingSpec = this.specMap.get(id); - if (!existingSpec) { - console.error(`Spec not found for ${id}`); - return; - } - - this.specMap.set( - id, - existingSpec.map(spec => (spec === targetSpec ? newSpec : spec)) - ); - } -} diff --git a/blocksuite/integration-test/src/__tests__/utils/setup.ts b/blocksuite/integration-test/src/__tests__/utils/setup.ts index af06acd4df..992a8c0c4a 100644 --- a/blocksuite/integration-test/src/__tests__/utils/setup.ts +++ b/blocksuite/integration-test/src/__tests__/utils/setup.ts @@ -1,7 +1,6 @@ import '@toeverything/theme/style.css'; import '@toeverything/theme/fonts.css'; -import { registerStoreSpecs } from '@blocksuite/affine/extensions'; import type { DocMode } from '@blocksuite/affine/model'; import { AffineSchemas } from '@blocksuite/affine/schemas'; import { @@ -24,8 +23,6 @@ import { TestAffineEditorContainer } from '../../index.js'; import { getTestStoreManager } from '../../store.js'; import { getTestViewManager } from '../../view.js'; -// FIXME: used for test import/export -registerStoreSpecs(); const storeManager = getTestStoreManager(); const viewManager = getTestViewManager(); effects(); diff --git a/blocksuite/playground/apps/starter/main.ts b/blocksuite/playground/apps/starter/main.ts index b59c2fad0e..d23f877f57 100644 --- a/blocksuite/playground/apps/starter/main.ts +++ b/blocksuite/playground/apps/starter/main.ts @@ -2,7 +2,6 @@ import '../../style.css'; import * as databaseBlocks from '@blocksuite/affine/blocks/database'; import * as noteBlocks from '@blocksuite/affine/blocks/note'; -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'; @@ -21,7 +20,6 @@ import { import { mountDefaultDocEditor } from './utils/setup-playground'; import { prepareTestApp } from './utils/test'; -registerStoreSpecs(); itEffects(); const storeManager = getTestStoreManager(); commentEffects(); diff --git a/packages/frontend/apps/android/src/setup.ts b/packages/frontend/apps/android/src/setup.ts index 7032e81feb..36544281fb 100644 --- a/packages/frontend/apps/android/src/setup.ts +++ b/packages/frontend/apps/android/src/setup.ts @@ -1,5 +1,4 @@ import '@affine/core/bootstrap/browser'; -import '@affine/core/bootstrap/blocksuite'; import '@affine/component/theme'; import '@affine/core/mobile/styles/mobile.css'; import './proxy'; diff --git a/packages/frontend/apps/electron-renderer/src/app/setup.ts b/packages/frontend/apps/electron-renderer/src/app/setup.ts index 8c0efdd221..78fb623056 100644 --- a/packages/frontend/apps/electron-renderer/src/app/setup.ts +++ b/packages/frontend/apps/electron-renderer/src/app/setup.ts @@ -1,5 +1,4 @@ import '@affine/core/bootstrap/electron'; -import '@affine/core/bootstrap/blocksuite'; import '@affine/core/bootstrap/cleanup'; 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 037cf5c436..868df4f032 100644 --- a/packages/frontend/apps/ios/src/setup.ts +++ b/packages/frontend/apps/ios/src/setup.ts @@ -1,4 +1,3 @@ import '@affine/core/bootstrap/browser'; -import '@affine/core/bootstrap/blocksuite'; import '@affine/core/bootstrap/cleanup'; import './proxy'; diff --git a/packages/frontend/apps/mobile/src/setup.ts b/packages/frontend/apps/mobile/src/setup.ts index 91115ee8c5..f2367090f7 100644 --- a/packages/frontend/apps/mobile/src/setup.ts +++ b/packages/frontend/apps/mobile/src/setup.ts @@ -1,5 +1,4 @@ import '@affine/core/bootstrap/browser'; -import '@affine/core/bootstrap/blocksuite'; import '@affine/core/bootstrap/cleanup'; 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 765f04e23d..41dd0c6d4c 100644 --- a/packages/frontend/apps/web/src/setup.ts +++ b/packages/frontend/apps/web/src/setup.ts @@ -1,4 +1,3 @@ import '@affine/core/bootstrap/browser'; -import '@affine/core/bootstrap/blocksuite'; import '@affine/core/bootstrap/cleanup'; import '@affine/component/theme'; diff --git a/packages/frontend/core/src/blocksuite/ai/effects.ts b/packages/frontend/core/src/blocksuite/ai/effects.ts index f4bcd9298b..34ba44bc3d 100644 --- a/packages/frontend/core/src/blocksuite/ai/effects.ts +++ b/packages/frontend/core/src/blocksuite/ai/effects.ts @@ -1,5 +1,3 @@ -import { SpecProvider } from '@blocksuite/affine/shared/utils'; - import { AIChatBlockComponent } from './blocks/ai-chat-block/ai-chat-block'; import { EdgelessAIChatBlockComponent } from './blocks/ai-chat-block/ai-chat-edgeless-block'; import { LitTranscriptionBlock } from './blocks/ai-chat-block/ai-transcription-block'; @@ -13,7 +11,6 @@ import { } from './blocks/ai-chat-block/components/chat-images'; import { ImagePlaceholder } from './blocks/ai-chat-block/components/image-placeholder'; import { UserInfo } from './blocks/ai-chat-block/components/user-info'; -import { AIChatBlockSchemaExtension } from './blocks/ai-chat-block/model'; import { ChatPanel } from './chat-panel'; import { ActionWrapper } from './chat-panel/actions/action-wrapper'; import { ActionImage } from './chat-panel/actions/image'; @@ -158,6 +155,4 @@ export function registerAIEffects() { ); customElements.define('transcription-block', LitTranscriptionBlock); - - SpecProvider._.extendSpec('store', [AIChatBlockSchemaExtension]); } diff --git a/packages/frontend/core/src/blocksuite/ai/extensions/enable-ai.ts b/packages/frontend/core/src/blocksuite/ai/extensions/enable-ai.ts deleted file mode 100644 index 0d1314c583..0000000000 --- a/packages/frontend/core/src/blocksuite/ai/extensions/enable-ai.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { CodeBlockSpec } from '@blocksuite/affine/blocks/code'; -import { ImageBlockSpec } from '@blocksuite/affine/blocks/image'; -import { ParagraphBlockSpec } from '@blocksuite/affine/blocks/paragraph'; -import { - EdgelessRootBlockSpec, - PageRootBlockSpec, -} from '@blocksuite/affine/blocks/root'; -import type { SpecBuilder } from '@blocksuite/affine/shared/utils'; -import type { FrameworkProvider } from '@toeverything/infra'; - -import { AIChatBlockSpec } from '../blocks'; -import { AITranscriptionBlockSpec } from '../blocks/ai-chat-block/ai-transcription-block'; -import { AICodeBlockSpec } from './ai-code'; -import { createAIEdgelessRootBlockSpec } from './ai-edgeless-root'; -import { AIImageBlockSpec } from './ai-image'; -import { createAIPageRootBlockSpec } from './ai-page-root'; -import { AIParagraphBlockSpec } from './ai-paragraph'; - -export function enableAIExtension( - specBuilder: SpecBuilder, - framework: FrameworkProvider, - enableAI: boolean -) { - if (!enableAI) return; - - specBuilder.replace(CodeBlockSpec, AICodeBlockSpec); - specBuilder.replace(ImageBlockSpec, AIImageBlockSpec); - specBuilder.replace(ParagraphBlockSpec, AIParagraphBlockSpec); - - if (specBuilder.hasAll(EdgelessRootBlockSpec)) { - const aiEdgeless = createAIEdgelessRootBlockSpec(framework); - specBuilder.replace(EdgelessRootBlockSpec, aiEdgeless); - } - - if (specBuilder.hasAll(PageRootBlockSpec)) { - const aiPage = createAIPageRootBlockSpec(framework); - specBuilder.replace(PageRootBlockSpec, aiPage); - } - - specBuilder.extend(AIChatBlockSpec); - specBuilder.extend(AITranscriptionBlockSpec); -} diff --git a/packages/frontend/core/src/blocksuite/ai/extensions/index.ts b/packages/frontend/core/src/blocksuite/ai/extensions/index.ts deleted file mode 100644 index 566868dc50..0000000000 --- a/packages/frontend/core/src/blocksuite/ai/extensions/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './enable-ai'; diff --git a/packages/frontend/core/src/blocksuite/ai/index.ts b/packages/frontend/core/src/blocksuite/ai/index.ts index 44cedbe710..5e42d78c39 100644 --- a/packages/frontend/core/src/blocksuite/ai/index.ts +++ b/packages/frontend/core/src/blocksuite/ai/index.ts @@ -3,7 +3,6 @@ export * from './actions'; export { ChatPanel } from './chat-panel'; export * from './entries'; export * from './entries/edgeless/actions-config'; -export * from './extensions'; export * from './messages'; export { AIChatBlockPeekViewTemplate } from './peek-view/chat-block-peek-view'; export * from './provider'; diff --git a/packages/frontend/core/src/blocksuite/extensions/entry/enable-affine.ts b/packages/frontend/core/src/blocksuite/extensions/entry/enable-affine.ts deleted file mode 100644 index 9a1a525df9..0000000000 --- a/packages/frontend/core/src/blocksuite/extensions/entry/enable-affine.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { SpecBuilder } from '@blocksuite/affine/shared/utils'; -import { type FrameworkProvider } from '@toeverything/infra'; - -import { buildDocDisplayMetaExtension } from '../display-meta'; -import { getEditorConfigExtension } from '../editor-config'; -import { getFontConfigExtension } from '../font-config'; -import { getTelemetryExtension } from '../telemetry'; -import { getThemeExtension } from '../theme'; - -export function enableAffineExtension( - specBuilder: SpecBuilder, - framework: FrameworkProvider -): void { - specBuilder.extend( - [ - getThemeExtension(framework), - getFontConfigExtension(), - getTelemetryExtension(), - getEditorConfigExtension(framework), - buildDocDisplayMetaExtension(framework), - ].flat() - ); -} diff --git a/packages/frontend/core/src/blocksuite/extensions/entry/enable-preview.ts b/packages/frontend/core/src/blocksuite/extensions/entry/enable-preview.ts index 8e6c26158f..236aae424e 100644 --- a/packages/frontend/core/src/blocksuite/extensions/entry/enable-preview.ts +++ b/packages/frontend/core/src/blocksuite/extensions/entry/enable-preview.ts @@ -1,4 +1,3 @@ -import { PeekViewService } from '@affine/core/modules/peek-view/services/peek-view'; import { AppThemeService } from '@affine/core/modules/theme'; import type { Container } from '@blocksuite/affine/global/di'; import { ColorScheme } from '@blocksuite/affine/model'; @@ -9,24 +8,15 @@ import { import { createSignalFromObservable, type Signal, - SpecProvider, } from '@blocksuite/affine/shared/utils'; import { type BlockStdScope, LifeCycleWatcher, StdIdentifier, } from '@blocksuite/affine/std'; -import type { ExtensionType } from '@blocksuite/affine/store'; import type { FrameworkProvider } from '@toeverything/infra'; import type { Observable } from 'rxjs'; -import { AIChatBlockSpec } from '../../ai/blocks'; -import { AITranscriptionBlockSpec } from '../../ai/blocks/ai-chat-block/ai-transcription-block'; -import { buildDocDisplayMetaExtension } from '../display-meta'; -import { getFontConfigExtension } from '../font-config'; -import { patchPeekViewService } from '../peek-view-service'; -import { getThemeExtension } from '../theme'; - export function getPagePreviewThemeExtension(framework: FrameworkProvider) { class AffinePagePreviewThemeExtension extends LifeCycleWatcher @@ -81,38 +71,3 @@ export function getPagePreviewThemeExtension(framework: FrameworkProvider) { return AffinePagePreviewThemeExtension; } - -const fontConfig = getFontConfigExtension(); - -let _framework: FrameworkProvider; -let _previewExtensions: ExtensionType[]; -export function enablePreviewExtension(framework: FrameworkProvider): void { - if (_framework === framework && _previewExtensions) { - return; - } - - const specProvider = SpecProvider._; - - if (_previewExtensions) { - _previewExtensions.forEach(extension => { - specProvider.omitSpec('preview:page', extension); - specProvider.omitSpec('preview:edgeless', extension); - }); - } - - _framework = framework; - const peekViewService = framework.get(PeekViewService); - - _previewExtensions = [ - ...AIChatBlockSpec, - ...AITranscriptionBlockSpec, - fontConfig, - getThemeExtension(framework), - getPagePreviewThemeExtension(framework), - buildDocDisplayMetaExtension(framework), - patchPeekViewService(peekViewService), - ]; - - specProvider.extendSpec('preview:page', _previewExtensions); - specProvider.extendSpec('preview:edgeless', _previewExtensions); -} diff --git a/packages/frontend/core/src/blocksuite/extensions/index.ts b/packages/frontend/core/src/blocksuite/extensions/index.ts index bbc9b34f6b..025a1597dc 100644 --- a/packages/frontend/core/src/blocksuite/extensions/index.ts +++ b/packages/frontend/core/src/blocksuite/extensions/index.ts @@ -1,2 +1 @@ -export * from './entry/enable-affine'; export * from './entry/enable-mobile'; diff --git a/packages/frontend/core/src/bootstrap/blocksuite.ts b/packages/frontend/core/src/bootstrap/blocksuite.ts deleted file mode 100644 index ad5d5ec3af..0000000000 --- a/packages/frontend/core/src/bootstrap/blocksuite.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { registerStoreSpecs } from '@blocksuite/affine/extensions'; - -registerStoreSpecs();