From 2f8d8dbc1e7ca2efd876709d9f591fdad9d2258f Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Wed, 14 May 2025 02:18:21 +0000 Subject: [PATCH] refactor(editor): finish the extension provider migration (#12259) ## Summary by CodeRabbit - **New Features** - Added AI-powered store extension to support chat and transcription block schemas. - Introduced a new database view extension for enhanced database block integration. - **Refactor** - Updated and reorganized import paths for improved code structure and maintainability. - Consolidated and streamlined extension registration for store and view managers. - **Chores** - Removed deprecated or redundant extension classes and imports. --- packages/frontend/apps/android/src/app.tsx | 2 +- packages/frontend/apps/ios/src/app.tsx | 2 +- .../blocksuite/ai/components/text-renderer.ts | 4 +-- .../__tests__/mindmap-preview.unit.spec.ts | 2 +- .../bi-directional-link-panel.tsx | 10 +++--- .../block-suite-editor/lit-adaper.tsx | 2 +- .../block-suite-page-list/utils.tsx | 3 +- .../manager/{migrating-store.ts => store.ts} | 23 +++--------- .../manager/{migrating-view.ts => view.ts} | 31 ++++++++-------- .../blocksuite/store-extensions/ai/index.ts | 16 +++++++++ .../feature-flag/feature-flag-syncer.ts | 0 .../feature-flag/index.ts | 2 +- .../ai/edgeless-clipboard.ts | 0 .../ai/index.ts | 0 .../cloud/index.ts | 0 .../cloud/user-list.ts | 0 .../cloud/user.ts | 0 .../code-block-preview/html-preview.ts | 0 .../code-block-preview/index.ts} | 2 +- .../code-block-preview/web-container.ts | 0 .../database-block-config-service.ts | 4 +-- .../view-extensions/database/index.ts | 26 ++++++++++++++ .../edgeless-block-header/common.tsx | 0 .../edgeless-block-header.css.ts | 0 .../edgeless-embed-synced-doc-header.tsx | 0 .../edgeless-note-header.tsx | 0 .../edgeless-block-header/index.tsx | 2 +- .../edgeless-block-header/patch.tsx | 0 .../editor-config/database.ts | 0 .../editor-config/get-config.ts | 2 +- .../editor-config/index.ts | 2 +- .../editor-config/linked.ts | 0 .../editor-config/toolbar/copy-as-image.ts | 0 .../editor-config/toolbar/index.ts | 2 +- .../editor-view}/audio/audio-view.tsx | 0 .../editor-view}/display-meta.ts | 0 .../editor-view}/doc-mode-service.ts | 0 .../editor-view}/doc-url.ts | 0 .../editor-view}/editor-view.tsx | 35 +++++++++---------- .../editor-view}/file-size-limit.ts | 0 .../editor-view}/notification-service.tsx | 0 .../editor-view}/open-doc.ts | 0 .../editor-view}/quick-search-service.ts | 0 .../editor-view}/reference-renderer.ts | 0 .../editor-view}/side-bar-service.ts | 0 .../electron/electron-clipboard.ts | 0 .../electron/index.ts | 0 .../link-preview-service/index.ts | 0 .../link-preview-service.ts | 0 .../mobile/index.ts | 4 +-- .../mobile/keyboard-toolbar-extension.ts | 0 .../mobile/mobile-feature-flag-control.ts | 0 .../pdf/index.ts | 0 .../pdf/pdf-view.tsx | 0 .../theme/index.ts | 4 +-- .../theme/preview-theme.ts | 0 .../theme/theme.ts | 0 .../turbo-renderer/index.ts | 0 .../turbo-renderer/turbo-painter.worker.ts | 0 .../turbo-renderer/turbo-renderer.ts | 0 .../use-block-suite-page-preview.spec.ts | 2 +- .../core/src/desktop/dialogs/import/index.tsx | 2 +- .../editor/edgeless/snapshot.tsx | 2 +- .../core/src/modules/doc-info/use-std.ts | 2 +- .../modules/import-clipper/services/import.ts | 2 +- .../modules/integration/entities/writer.ts | 2 +- .../core/src/modules/workspace/impls/doc.ts | 2 +- tools/cli/src/bundle.ts | 2 +- 68 files changed, 110 insertions(+), 86 deletions(-) rename packages/frontend/core/src/blocksuite/manager/{migrating-store.ts => store.ts} (65%) rename packages/frontend/core/src/blocksuite/manager/{migrating-view.ts => view.ts} (90%) create mode 100644 packages/frontend/core/src/blocksuite/store-extensions/ai/index.ts rename packages/frontend/core/src/blocksuite/{extensions => store-extensions}/feature-flag/feature-flag-syncer.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => store-extensions}/feature-flag/index.ts (87%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/ai/edgeless-clipboard.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/ai/index.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/cloud/index.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/cloud/user-list.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/cloud/user.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/code-block-preview/html-preview.ts (100%) rename packages/frontend/core/src/blocksuite/{manager/code-block-preview.ts => view-extensions/code-block-preview/index.ts} (89%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/code-block-preview/web-container.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/database}/database-block-config-service.ts (78%) create mode 100644 packages/frontend/core/src/blocksuite/view-extensions/database/index.ts rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/edgeless-block-header/common.tsx (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/edgeless-block-header/edgeless-block-header.css.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/edgeless-block-header/edgeless-embed-synced-doc-header.tsx (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/edgeless-block-header/edgeless-note-header.tsx (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/edgeless-block-header/index.tsx (94%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/edgeless-block-header/patch.tsx (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/editor-config/database.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/editor-config/get-config.ts (94%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/editor-config/index.ts (95%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/editor-config/linked.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/editor-config/toolbar/copy-as-image.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/editor-config/toolbar/index.ts (99%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/audio/audio-view.tsx (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/display-meta.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/doc-mode-service.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/doc-url.ts (100%) rename packages/frontend/core/src/blocksuite/{manager => view-extensions/editor-view}/editor-view.tsx (74%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/file-size-limit.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/notification-service.tsx (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/open-doc.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/quick-search-service.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/reference-renderer.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions/editor-view}/side-bar-service.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/electron/electron-clipboard.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/electron/index.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/link-preview-service/index.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/link-preview-service/link-preview-service.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/mobile/index.ts (90%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/mobile/keyboard-toolbar-extension.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/mobile/mobile-feature-flag-control.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/pdf/index.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/pdf/pdf-view.tsx (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/theme/index.ts (88%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/theme/preview-theme.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/theme/theme.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/turbo-renderer/index.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/turbo-renderer/turbo-painter.worker.ts (100%) rename packages/frontend/core/src/blocksuite/{extensions => view-extensions}/turbo-renderer/turbo-renderer.ts (100%) diff --git a/packages/frontend/apps/android/src/app.tsx b/packages/frontend/apps/android/src/app.tsx index b04ea2474d..9d7a695c93 100644 --- a/packages/frontend/apps/android/src/app.tsx +++ b/packages/frontend/apps/android/src/app.tsx @@ -1,4 +1,4 @@ -import { getStoreManager } from '@affine/core/blocksuite/manager/migrating-store'; +import { getStoreManager } from '@affine/core/blocksuite/manager/store'; import { AffineContext } from '@affine/core/components/context'; import { AppFallback } from '@affine/core/mobile/components/app-fallback'; import { configureMobileModules } from '@affine/core/mobile/modules'; diff --git a/packages/frontend/apps/ios/src/app.tsx b/packages/frontend/apps/ios/src/app.tsx index 360a8d83eb..2f20c4b504 100644 --- a/packages/frontend/apps/ios/src/app.tsx +++ b/packages/frontend/apps/ios/src/app.tsx @@ -1,4 +1,4 @@ -import { getStoreManager } from '@affine/core/blocksuite/manager/migrating-store'; +import { getStoreManager } from '@affine/core/blocksuite/manager/store'; import { AffineContext } from '@affine/core/components/context'; import { AppFallback } from '@affine/core/mobile/components/app-fallback'; import { configureMobileModules } from '@affine/core/mobile/modules'; diff --git a/packages/frontend/core/src/blocksuite/ai/components/text-renderer.ts b/packages/frontend/core/src/blocksuite/ai/components/text-renderer.ts index e193f2d488..d56ed3e065 100644 --- a/packages/frontend/core/src/blocksuite/ai/components/text-renderer.ts +++ b/packages/frontend/core/src/blocksuite/ai/components/text-renderer.ts @@ -1,4 +1,6 @@ import { createReactComponentFromLit } from '@affine/component'; +import { getStoreManager } from '@affine/core/blocksuite/manager/store'; +import { getViewManager } from '@affine/core/blocksuite/manager/view'; import type { FeatureFlagService } from '@affine/core/modules/feature-flag'; import { Container, type ServiceProvider } from '@blocksuite/affine/global/di'; import { WithDisposable } from '@blocksuite/affine/global/lit'; @@ -33,8 +35,6 @@ import { keyed } from 'lit/directives/keyed.js'; import { literal } from 'lit/static-html.js'; import React from 'react'; -import { getStoreManager } from '../../manager/migrating-store'; -import { getViewManager } from '../../manager/migrating-view'; import { markDownToDoc } from '../../utils'; import type { AffineAIPanelState, diff --git a/packages/frontend/core/src/blocksuite/ai/mini-mindmap/__tests__/mindmap-preview.unit.spec.ts b/packages/frontend/core/src/blocksuite/ai/mini-mindmap/__tests__/mindmap-preview.unit.spec.ts index 3fe7d91985..6ffb7376d7 100644 --- a/packages/frontend/core/src/blocksuite/ai/mini-mindmap/__tests__/mindmap-preview.unit.spec.ts +++ b/packages/frontend/core/src/blocksuite/ai/mini-mindmap/__tests__/mindmap-preview.unit.spec.ts @@ -1,4 +1,4 @@ -import { getStoreManager } from '@affine/core/blocksuite/manager/migrating-store.js'; +import { getStoreManager } from '@affine/core/blocksuite/manager/store'; import { Container } from '@blocksuite/affine/global/di'; import { TestWorkspace } from '@blocksuite/affine/store/test'; import { describe, expect, test } from 'vitest'; diff --git a/packages/frontend/core/src/blocksuite/block-suite-editor/bi-directional-link-panel.tsx b/packages/frontend/core/src/blocksuite/block-suite-editor/bi-directional-link-panel.tsx index ceabf52fa8..eb502801ba 100644 --- a/packages/frontend/core/src/blocksuite/block-suite-editor/bi-directional-link-panel.tsx +++ b/packages/frontend/core/src/blocksuite/block-suite-editor/bi-directional-link-panel.tsx @@ -1,4 +1,9 @@ import { Button, Divider, useLitPortalFactory } from '@affine/component'; +import { getViewManager } from '@affine/core/blocksuite/manager/view'; +import { + patchReferenceRenderer, + type ReferenceReactRenderer, +} from '@affine/core/blocksuite/view-extensions/editor-view/reference-renderer'; import { useGuard } from '@affine/core/components/guard'; import { useEnableAI } from '@affine/core/components/hooks/affine/use-enable-ai'; import { DocService } from '@affine/core/modules/doc'; @@ -41,11 +46,6 @@ import { AffineSharedPageReference, } from '../../components/affine/reference-link'; import { LitTextRenderer } from '../ai/components/text-renderer'; -import { - patchReferenceRenderer, - type ReferenceReactRenderer, -} from '../extensions/reference-renderer'; -import { getViewManager } from '../manager/migrating-view'; import * as styles from './bi-directional-link-panel.css'; const PREFIX = 'bi-directional-link-panel-collapse:'; diff --git a/packages/frontend/core/src/blocksuite/block-suite-editor/lit-adaper.tsx b/packages/frontend/core/src/blocksuite/block-suite-editor/lit-adaper.tsx index 779276a3bb..145befc9a6 100644 --- a/packages/frontend/core/src/blocksuite/block-suite-editor/lit-adaper.tsx +++ b/packages/frontend/core/src/blocksuite/block-suite-editor/lit-adaper.tsx @@ -6,7 +6,7 @@ import { LitEdgelessEditor, type PageEditor, } from '@affine/core/blocksuite/editors'; -import { getViewManager } from '@affine/core/blocksuite/manager/migrating-view'; +import { getViewManager } from '@affine/core/blocksuite/manager/view'; import { useEnableAI } from '@affine/core/components/hooks/affine/use-enable-ai'; import type { DocCustomPropertyInfo } from '@affine/core/modules/db'; import type { diff --git a/packages/frontend/core/src/blocksuite/block-suite-page-list/utils.tsx b/packages/frontend/core/src/blocksuite/block-suite-page-list/utils.tsx index 82d7541ed3..bd3f92bc9e 100644 --- a/packages/frontend/core/src/blocksuite/block-suite-page-list/utils.tsx +++ b/packages/frontend/core/src/blocksuite/block-suite-page-list/utils.tsx @@ -1,4 +1,5 @@ import { toast } from '@affine/component'; +import { getStoreManager } from '@affine/core/blocksuite/manager/store'; import { AppSidebarService } from '@affine/core/modules/app-sidebar'; import { DocsService } from '@affine/core/modules/doc'; import { WorkbenchService } from '@affine/core/modules/workbench'; @@ -8,8 +9,6 @@ import type { Workspace } from '@blocksuite/affine/store'; import { useServices } from '@toeverything/infra'; import { useCallback, useMemo } from 'react'; -import { getStoreManager } from '../manager/migrating-store'; - export const usePageHelper = (docCollection: Workspace) => { const { docsService, workbenchService, appSidebarService } = useServices({ DocsService, diff --git a/packages/frontend/core/src/blocksuite/manager/migrating-store.ts b/packages/frontend/core/src/blocksuite/manager/store.ts similarity index 65% rename from packages/frontend/core/src/blocksuite/manager/migrating-store.ts rename to packages/frontend/core/src/blocksuite/manager/store.ts index b31e67e6c1..65f8ade239 100644 --- a/packages/frontend/core/src/blocksuite/manager/migrating-store.ts +++ b/packages/frontend/core/src/blocksuite/manager/store.ts @@ -1,24 +1,9 @@ -import { FeatureFlagStoreExtension } from '@affine/core/blocksuite/extensions/feature-flag'; +import { AIStoreExtension } from '@affine/core/blocksuite/store-extensions/ai'; import type { FeatureFlagService } from '@affine/core/modules/feature-flag'; -import { - type StoreExtensionContext, - StoreExtensionManager, - StoreExtensionProvider, -} from '@blocksuite/affine/ext-loader'; +import { StoreExtensionManager } from '@blocksuite/affine/ext-loader'; import { getInternalStoreExtensions } from '@blocksuite/affine/extensions/store'; -import { AIChatBlockSchemaExtension } from '../ai/blocks/ai-chat-block/model'; -import { TranscriptionBlockSchemaExtension } from '../ai/blocks/transcription-block/model'; - -class MigratingAffineStoreExtension extends StoreExtensionProvider { - override name = 'affine-store-extensions'; - - override setup(context: StoreExtensionContext) { - super.setup(context); - context.register(AIChatBlockSchemaExtension); - context.register(TranscriptionBlockSchemaExtension); - } -} +import { FeatureFlagStoreExtension } from '../store-extensions/feature-flag'; interface Configure { init: () => Configure; @@ -42,7 +27,7 @@ class StoreProvider { constructor() { this._manager = new StoreExtensionManager([ ...getInternalStoreExtensions(), - MigratingAffineStoreExtension, + AIStoreExtension, FeatureFlagStoreExtension, ]); } diff --git a/packages/frontend/core/src/blocksuite/manager/migrating-view.ts b/packages/frontend/core/src/blocksuite/manager/view.ts similarity index 90% rename from packages/frontend/core/src/blocksuite/manager/migrating-view.ts rename to packages/frontend/core/src/blocksuite/manager/view.ts index c575d4c2ba..6dd0e19d09 100644 --- a/packages/frontend/core/src/blocksuite/manager/migrating-view.ts +++ b/packages/frontend/core/src/blocksuite/manager/view.ts @@ -1,23 +1,25 @@ import type { ReactToLit } from '@affine/component'; -import { AIViewExtension } from '@affine/core/blocksuite/extensions/ai'; -import { CloudViewExtension } from '@affine/core/blocksuite/extensions/cloud'; +import { AIViewExtension } from '@affine/core/blocksuite/view-extensions/ai'; +import { CloudViewExtension } from '@affine/core/blocksuite/view-extensions/cloud'; +import { CodeBlockPreviewViewExtension } from '@affine/core/blocksuite/view-extensions/code-block-preview'; +import { AffineDatabaseViewExtension } from '@affine/core/blocksuite/view-extensions/database'; import { EdgelessBlockHeaderConfigViewExtension, type EdgelessBlockHeaderViewOptions, -} from '@affine/core/blocksuite/extensions/edgeless-block-header'; -import { AffineEditorConfigViewExtension } from '@affine/core/blocksuite/extensions/editor-config'; -import { createDatabaseOptionsConfig } from '@affine/core/blocksuite/extensions/editor-config/database'; -import { createLinkedWidgetConfig } from '@affine/core/blocksuite/extensions/editor-config/linked'; -import { ElectronViewExtension } from '@affine/core/blocksuite/extensions/electron'; -import { AffineLinkPreviewExtension } from '@affine/core/blocksuite/extensions/link-preview-service'; -import { MobileViewExtension } from '@affine/core/blocksuite/extensions/mobile'; -import { PdfViewExtension } from '@affine/core/blocksuite/extensions/pdf'; -import { AffineThemeViewExtension } from '@affine/core/blocksuite/extensions/theme'; -import { TurboRendererViewExtension } from '@affine/core/blocksuite/extensions/turbo-renderer'; +} from '@affine/core/blocksuite/view-extensions/edgeless-block-header'; +import { AffineEditorConfigViewExtension } from '@affine/core/blocksuite/view-extensions/editor-config'; +import { createDatabaseOptionsConfig } from '@affine/core/blocksuite/view-extensions/editor-config/database'; +import { createLinkedWidgetConfig } from '@affine/core/blocksuite/view-extensions/editor-config/linked'; import { AffineEditorViewExtension, type AffineEditorViewOptions, -} from '@affine/core/blocksuite/manager/editor-view'; +} from '@affine/core/blocksuite/view-extensions/editor-view/editor-view'; +import { ElectronViewExtension } from '@affine/core/blocksuite/view-extensions/electron'; +import { AffineLinkPreviewExtension } from '@affine/core/blocksuite/view-extensions/link-preview-service'; +import { MobileViewExtension } from '@affine/core/blocksuite/view-extensions/mobile'; +import { PdfViewExtension } from '@affine/core/blocksuite/view-extensions/pdf'; +import { AffineThemeViewExtension } from '@affine/core/blocksuite/view-extensions/theme'; +import { TurboRendererViewExtension } from '@affine/core/blocksuite/view-extensions/turbo-renderer'; import { PeekViewService } from '@affine/core/modules/peek-view'; import { DebugLogger } from '@affine/debug'; import { mixpanel } from '@affine/track'; @@ -35,8 +37,6 @@ import { LinkedDocViewExtension } from '@blocksuite/affine/widgets/linked-doc/vi import type { FrameworkProvider } from '@toeverything/infra'; import type { TemplateResult } from 'lit'; -import { CodeBlockPreviewViewExtension } from './code-block-preview'; - type Configure = { init: () => Configure; @@ -88,6 +88,7 @@ class ViewProvider { AIViewExtension, ElectronViewExtension, AffineLinkPreviewExtension, + AffineDatabaseViewExtension, ]); } diff --git a/packages/frontend/core/src/blocksuite/store-extensions/ai/index.ts b/packages/frontend/core/src/blocksuite/store-extensions/ai/index.ts new file mode 100644 index 0000000000..907ca31f40 --- /dev/null +++ b/packages/frontend/core/src/blocksuite/store-extensions/ai/index.ts @@ -0,0 +1,16 @@ +import { AIChatBlockSchemaExtension } from '@affine/core/blocksuite/ai/blocks'; +import { TranscriptionBlockSchemaExtension } from '@affine/core/blocksuite/ai/blocks/transcription-block/model'; +import { + type StoreExtensionContext, + StoreExtensionProvider, +} from '@blocksuite/affine/ext-loader'; + +export class AIStoreExtension extends StoreExtensionProvider { + override name = 'affine-store-extensions'; + + override setup(context: StoreExtensionContext) { + super.setup(context); + context.register(AIChatBlockSchemaExtension); + context.register(TranscriptionBlockSchemaExtension); + } +} diff --git a/packages/frontend/core/src/blocksuite/extensions/feature-flag/feature-flag-syncer.ts b/packages/frontend/core/src/blocksuite/store-extensions/feature-flag/feature-flag-syncer.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/feature-flag/feature-flag-syncer.ts rename to packages/frontend/core/src/blocksuite/store-extensions/feature-flag/feature-flag-syncer.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/feature-flag/index.ts b/packages/frontend/core/src/blocksuite/store-extensions/feature-flag/index.ts similarity index 87% rename from packages/frontend/core/src/blocksuite/extensions/feature-flag/index.ts rename to packages/frontend/core/src/blocksuite/store-extensions/feature-flag/index.ts index 2e64668bb9..428fce5a5e 100644 --- a/packages/frontend/core/src/blocksuite/extensions/feature-flag/index.ts +++ b/packages/frontend/core/src/blocksuite/store-extensions/feature-flag/index.ts @@ -1,4 +1,4 @@ -import { getFeatureFlagSyncer } from '@affine/core/blocksuite/extensions/feature-flag/feature-flag-syncer'; +import { getFeatureFlagSyncer } from '@affine/core/blocksuite/store-extensions/feature-flag/feature-flag-syncer'; import { FeatureFlagService } from '@affine/core/modules/feature-flag'; import { type StoreExtensionContext, diff --git a/packages/frontend/core/src/blocksuite/extensions/ai/edgeless-clipboard.ts b/packages/frontend/core/src/blocksuite/view-extensions/ai/edgeless-clipboard.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/ai/edgeless-clipboard.ts rename to packages/frontend/core/src/blocksuite/view-extensions/ai/edgeless-clipboard.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/ai/index.ts b/packages/frontend/core/src/blocksuite/view-extensions/ai/index.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/ai/index.ts rename to packages/frontend/core/src/blocksuite/view-extensions/ai/index.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/cloud/index.ts b/packages/frontend/core/src/blocksuite/view-extensions/cloud/index.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/cloud/index.ts rename to packages/frontend/core/src/blocksuite/view-extensions/cloud/index.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/cloud/user-list.ts b/packages/frontend/core/src/blocksuite/view-extensions/cloud/user-list.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/cloud/user-list.ts rename to packages/frontend/core/src/blocksuite/view-extensions/cloud/user-list.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/cloud/user.ts b/packages/frontend/core/src/blocksuite/view-extensions/cloud/user.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/cloud/user.ts rename to packages/frontend/core/src/blocksuite/view-extensions/cloud/user.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/code-block-preview/html-preview.ts b/packages/frontend/core/src/blocksuite/view-extensions/code-block-preview/html-preview.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/code-block-preview/html-preview.ts rename to packages/frontend/core/src/blocksuite/view-extensions/code-block-preview/html-preview.ts diff --git a/packages/frontend/core/src/blocksuite/manager/code-block-preview.ts b/packages/frontend/core/src/blocksuite/view-extensions/code-block-preview/index.ts similarity index 89% rename from packages/frontend/core/src/blocksuite/manager/code-block-preview.ts rename to packages/frontend/core/src/blocksuite/view-extensions/code-block-preview/index.ts index 396fc37875..e46c8951fc 100644 --- a/packages/frontend/core/src/blocksuite/manager/code-block-preview.ts +++ b/packages/frontend/core/src/blocksuite/view-extensions/code-block-preview/index.ts @@ -6,7 +6,7 @@ import { import { CodeBlockHtmlPreview, effects as htmlPreviewEffects, -} from '../extensions/code-block-preview/html-preview'; +} from './html-preview'; export class CodeBlockPreviewViewExtension extends ViewExtensionProvider { override name = 'code-block-preview'; diff --git a/packages/frontend/core/src/blocksuite/extensions/code-block-preview/web-container.ts b/packages/frontend/core/src/blocksuite/view-extensions/code-block-preview/web-container.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/code-block-preview/web-container.ts rename to packages/frontend/core/src/blocksuite/view-extensions/code-block-preview/web-container.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/database-block-config-service.ts b/packages/frontend/core/src/blocksuite/view-extensions/database/database-block-config-service.ts similarity index 78% rename from packages/frontend/core/src/blocksuite/extensions/database-block-config-service.ts rename to packages/frontend/core/src/blocksuite/view-extensions/database/database-block-config-service.ts index 26ad9b119c..9758feec13 100644 --- a/packages/frontend/core/src/blocksuite/extensions/database-block-config-service.ts +++ b/packages/frontend/core/src/blocksuite/view-extensions/database/database-block-config-service.ts @@ -4,8 +4,8 @@ import { } from '@blocksuite/affine/blocks/database'; import type { ExtensionType } from '@blocksuite/affine/store'; -import { groupByConfigList } from '../database-block/group-by'; -import { propertiesPresets } from '../database-block/properties'; +import { groupByConfigList } from '../../database-block/group-by'; +import { propertiesPresets } from '../../database-block/properties'; export function patchDatabaseBlockConfigService(): ExtensionType { //TODO use service diff --git a/packages/frontend/core/src/blocksuite/view-extensions/database/index.ts b/packages/frontend/core/src/blocksuite/view-extensions/database/index.ts new file mode 100644 index 0000000000..3bfa235d99 --- /dev/null +++ b/packages/frontend/core/src/blocksuite/view-extensions/database/index.ts @@ -0,0 +1,26 @@ +import { + type ViewExtensionContext, + ViewExtensionProvider, +} from '@blocksuite/affine/ext-loader'; +import { z } from 'zod'; + +import { patchDatabaseBlockConfigService } from './database-block-config-service'; + +const optionsSchema = z.object({}); + +export type AffineDatabaseViewOptions = z.infer; + +export class AffineDatabaseViewExtension extends ViewExtensionProvider { + override name = 'affine-database-view'; + + override schema = optionsSchema; + + override setup( + context: ViewExtensionContext, + options?: AffineDatabaseViewOptions + ) { + super.setup(context, options); + + context.register(patchDatabaseBlockConfigService()); + } +} diff --git a/packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/common.tsx b/packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/common.tsx similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/common.tsx rename to packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/common.tsx diff --git a/packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/edgeless-block-header.css.ts b/packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/edgeless-block-header.css.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/edgeless-block-header.css.ts rename to packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/edgeless-block-header.css.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/edgeless-embed-synced-doc-header.tsx b/packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/edgeless-embed-synced-doc-header.tsx similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/edgeless-embed-synced-doc-header.tsx rename to packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/edgeless-embed-synced-doc-header.tsx diff --git a/packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/edgeless-note-header.tsx b/packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/edgeless-note-header.tsx similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/edgeless-note-header.tsx rename to packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/edgeless-note-header.tsx diff --git a/packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/index.tsx b/packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/index.tsx similarity index 94% rename from packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/index.tsx rename to packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/index.tsx index b7c3425be3..efdd4e2126 100644 --- a/packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/index.tsx +++ b/packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/index.tsx @@ -2,7 +2,7 @@ import type { ElementOrFactory } from '@affine/component'; import { patchForEdgelessNoteConfig, patchForEmbedSyncedDocConfig, -} from '@affine/core/blocksuite/extensions/edgeless-block-header/patch'; +} from '@affine/core/blocksuite/view-extensions/edgeless-block-header/patch'; import { type ViewExtensionContext, ViewExtensionProvider, diff --git a/packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/patch.tsx b/packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/patch.tsx similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/edgeless-block-header/patch.tsx rename to packages/frontend/core/src/blocksuite/view-extensions/edgeless-block-header/patch.tsx diff --git a/packages/frontend/core/src/blocksuite/extensions/editor-config/database.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/database.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/editor-config/database.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-config/database.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/editor-config/get-config.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/get-config.ts similarity index 94% rename from packages/frontend/core/src/blocksuite/extensions/editor-config/get-config.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-config/get-config.ts index abcbb6698c..6dd6694f24 100644 --- a/packages/frontend/core/src/blocksuite/extensions/editor-config/get-config.ts +++ b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/get-config.ts @@ -1,7 +1,7 @@ import { createCustomToolbarExtension, createToolbarMoreMenuConfig, -} from '@affine/core/blocksuite/extensions/editor-config/toolbar'; +} from '@affine/core/blocksuite/view-extensions/editor-config/toolbar'; import { WorkspaceServerService } from '@affine/core/modules/cloud'; import { EditorSettingService } from '@affine/core/modules/editor-setting'; import { ToolbarMoreMenuConfigExtension } from '@blocksuite/affine/components/toolbar'; diff --git a/packages/frontend/core/src/blocksuite/extensions/editor-config/index.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/index.ts similarity index 95% rename from packages/frontend/core/src/blocksuite/extensions/editor-config/index.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-config/index.ts index 1f93db7217..fa82acdc67 100644 --- a/packages/frontend/core/src/blocksuite/extensions/editor-config/index.ts +++ b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/index.ts @@ -1,4 +1,4 @@ -import { getEditorConfigExtension } from '@affine/core/blocksuite/extensions/editor-config/get-config'; +import { getEditorConfigExtension } from '@affine/core/blocksuite/view-extensions/editor-config/get-config'; import { type ViewExtensionContext, ViewExtensionProvider, diff --git a/packages/frontend/core/src/blocksuite/extensions/editor-config/linked.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/linked.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/editor-config/linked.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-config/linked.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/editor-config/toolbar/copy-as-image.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/toolbar/copy-as-image.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/editor-config/toolbar/copy-as-image.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-config/toolbar/copy-as-image.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/editor-config/toolbar/index.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/toolbar/index.ts similarity index 99% rename from packages/frontend/core/src/blocksuite/extensions/editor-config/toolbar/index.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-config/toolbar/index.ts index 583279b545..4a27ff0467 100644 --- a/packages/frontend/core/src/blocksuite/extensions/editor-config/toolbar/index.ts +++ b/packages/frontend/core/src/blocksuite/view-extensions/editor-config/toolbar/index.ts @@ -89,7 +89,7 @@ import { keyed } from 'lit/directives/keyed.js'; import { repeat } from 'lit/directives/repeat.js'; import { styleMap } from 'lit/directives/style-map.js'; -import { openDocActions } from '../../open-doc'; +import { openDocActions } from '../../editor-view/open-doc'; import { copyAsImage, createCopyAsPngMenuItem } from './copy-as-image'; export function createToolbarMoreMenuConfig(framework: FrameworkProvider) { diff --git a/packages/frontend/core/src/blocksuite/extensions/audio/audio-view.tsx b/packages/frontend/core/src/blocksuite/view-extensions/editor-view/audio/audio-view.tsx similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/audio/audio-view.tsx rename to packages/frontend/core/src/blocksuite/view-extensions/editor-view/audio/audio-view.tsx diff --git a/packages/frontend/core/src/blocksuite/extensions/display-meta.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-view/display-meta.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/display-meta.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-view/display-meta.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/doc-mode-service.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-view/doc-mode-service.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/doc-mode-service.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-view/doc-mode-service.ts diff --git a/packages/frontend/core/src/blocksuite/extensions/doc-url.ts b/packages/frontend/core/src/blocksuite/view-extensions/editor-view/doc-url.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/extensions/doc-url.ts rename to packages/frontend/core/src/blocksuite/view-extensions/editor-view/doc-url.ts diff --git a/packages/frontend/core/src/blocksuite/manager/editor-view.tsx b/packages/frontend/core/src/blocksuite/view-extensions/editor-view/editor-view.tsx similarity index 74% rename from packages/frontend/core/src/blocksuite/manager/editor-view.tsx rename to packages/frontend/core/src/blocksuite/view-extensions/editor-view/editor-view.tsx index 8a3c24ceb9..029e5964ae 100644 --- a/packages/frontend/core/src/blocksuite/manager/editor-view.tsx +++ b/packages/frontend/core/src/blocksuite/view-extensions/editor-view/editor-view.tsx @@ -1,18 +1,4 @@ import type { ConfirmModalProps, ElementOrFactory } from '@affine/component'; -import { patchForAudioEmbedView } from '@affine/core/blocksuite/extensions/audio/audio-view'; -import { patchDatabaseBlockConfigService } from '@affine/core/blocksuite/extensions/database-block-config-service'; -import { buildDocDisplayMetaExtension } from '@affine/core/blocksuite/extensions/display-meta'; -import { patchDocModeService } from '@affine/core/blocksuite/extensions/doc-mode-service'; -import { patchDocUrlExtensions } from '@affine/core/blocksuite/extensions/doc-url'; -import { patchFileSizeLimitExtension } from '@affine/core/blocksuite/extensions/file-size-limit'; -import { patchNotificationService } from '@affine/core/blocksuite/extensions/notification-service'; -import { patchOpenDocExtension } from '@affine/core/blocksuite/extensions/open-doc'; -import { patchQuickSearchService } from '@affine/core/blocksuite/extensions/quick-search-service'; -import { - patchReferenceRenderer, - type ReferenceReactRenderer, -} from '@affine/core/blocksuite/extensions/reference-renderer'; -import { patchSideBarService } from '@affine/core/blocksuite/extensions/side-bar-service'; import { AffinePageReference, AffineSharedPageReference, @@ -29,6 +15,20 @@ import { FrameworkProvider } from '@toeverything/infra'; import type { TemplateResult } from 'lit'; import { z } from 'zod'; +import { patchForAudioEmbedView } from './audio/audio-view'; +import { buildDocDisplayMetaExtension } from './display-meta'; +import { patchDocModeService } from './doc-mode-service'; +import { patchDocUrlExtensions } from './doc-url'; +import { patchFileSizeLimitExtension } from './file-size-limit'; +import { patchNotificationService } from './notification-service'; +import { patchOpenDocExtension } from './open-doc'; +import { patchQuickSearchService } from './quick-search-service'; +import { + patchReferenceRenderer, + type ReferenceReactRenderer, +} from './reference-renderer'; +import { patchSideBarService } from './side-bar-service'; + const optionsSchema = z.object({ // services framework: z.instanceof(FrameworkProvider), @@ -115,12 +115,9 @@ export class AffineEditorViewExtension extends ViewExtensionProvider