diff --git a/blocksuite/affine/all/package.json b/blocksuite/affine/all/package.json index 3cce2aa851..11e1b2f3db 100644 --- a/blocksuite/affine/all/package.json +++ b/blocksuite/affine/all/package.json @@ -187,7 +187,8 @@ "./gfx/mindmap/view": "./src/gfx/mindmap/view.ts", "./gfx/connector": "./src/gfx/connector.ts", "./gfx/group": "./src/gfx/group.ts", - "./gfx/template": "./src/gfx/template.ts", + "./gfx/template": "./src/gfx/template/index.ts", + "./gfx/template/view": "./src/gfx/template/view.ts", "./gfx/turbo-renderer": "./src/gfx/turbo-renderer.ts", "./components/block-selection": "./src/components/block-selection.ts", "./components/block-zero-width": "./src/components/block-zero-width.ts", diff --git a/blocksuite/affine/all/src/extensions/view.ts b/blocksuite/affine/all/src/extensions/view.ts index d822cb90d0..7507e5f396 100644 --- a/blocksuite/affine/all/src/extensions/view.ts +++ b/blocksuite/affine/all/src/extensions/view.ts @@ -19,6 +19,7 @@ import { BrushViewExtension } from '@blocksuite/affine-gfx-brush/view'; import { MindmapViewExtension } from '@blocksuite/affine-gfx-mindmap/view'; import { NoteViewExtension as GfxNoteViewExtension } from '@blocksuite/affine-gfx-note/view'; import { ShapeViewExtension } from '@blocksuite/affine-gfx-shape/view'; +import { TemplateViewExtension } from '@blocksuite/affine-gfx-template/view'; import { FootnoteViewExtension } from '@blocksuite/affine-inline-footnote/view'; import { LatexViewExtension as InlineLatexViewExtension } from '@blocksuite/affine-inline-latex/view'; import { LinkViewExtension } from '@blocksuite/affine-inline-link/view'; @@ -34,7 +35,7 @@ export function getInternalViewExtensions() { BrushViewExtension, ShapeViewExtension, MindmapViewExtension, - // template + TemplateViewExtension, // Block AttachmentViewExtension, diff --git a/blocksuite/affine/all/src/gfx/template.ts b/blocksuite/affine/all/src/gfx/template/index.ts similarity index 100% rename from blocksuite/affine/all/src/gfx/template.ts rename to blocksuite/affine/all/src/gfx/template/index.ts diff --git a/blocksuite/affine/all/src/gfx/template/view.ts b/blocksuite/affine/all/src/gfx/template/view.ts new file mode 100644 index 0000000000..9c040b41e9 --- /dev/null +++ b/blocksuite/affine/all/src/gfx/template/view.ts @@ -0,0 +1 @@ +export * from '@blocksuite/affine-gfx-template/view'; diff --git a/blocksuite/affine/blocks/root/src/edgeless/components/toolbar/tools.ts b/blocksuite/affine/blocks/root/src/edgeless/components/toolbar/tools.ts index 57847ed88f..0bda36a16d 100644 --- a/blocksuite/affine/blocks/root/src/edgeless/components/toolbar/tools.ts +++ b/blocksuite/affine/blocks/root/src/edgeless/components/toolbar/tools.ts @@ -1,5 +1,4 @@ import { connectorQuickTool } from '@blocksuite/affine-gfx-connector'; -import { templateSeniorTool } from '@blocksuite/affine-gfx-template'; import { QuickToolExtension } from '@blocksuite/affine-widget-edgeless-toolbar'; import { html } from 'lit'; @@ -25,5 +24,3 @@ const linkQuickTool = QuickToolExtension('link', ({ block, gfx }) => { }); export const quickTools = [defaultQuickTool, connectorQuickTool, linkQuickTool]; - -export const seniorTools = [templateSeniorTool]; diff --git a/blocksuite/affine/blocks/root/src/edgeless/edgeless-builtin-spec.ts b/blocksuite/affine/blocks/root/src/edgeless/edgeless-builtin-spec.ts index d86035a445..c8fc874365 100644 --- a/blocksuite/affine/blocks/root/src/edgeless/edgeless-builtin-spec.ts +++ b/blocksuite/affine/blocks/root/src/edgeless/edgeless-builtin-spec.ts @@ -6,7 +6,6 @@ import { } from '@blocksuite/affine-gfx-connector'; import type * as NoteEffect from '@blocksuite/affine-gfx-note'; import type * as ShapeEffect from '@blocksuite/affine-gfx-shape'; -import { TemplateTool } from '@blocksuite/affine-gfx-template'; import { TextTool } from '@blocksuite/affine-gfx-text'; import { InteractivityManager } from '@blocksuite/std/gfx'; import type { ExtensionType } from '@blocksuite/store'; @@ -32,7 +31,6 @@ export const EdgelessToolExtension: ExtensionType[] = [ PanTool, TextTool, ConnectorTool, - TemplateTool, EmptyTool, ]; diff --git a/blocksuite/affine/blocks/root/src/edgeless/edgeless-root-spec.ts b/blocksuite/affine/blocks/root/src/edgeless/edgeless-root-spec.ts index 88950ff952..a08cde7a75 100644 --- a/blocksuite/affine/blocks/root/src/edgeless/edgeless-root-spec.ts +++ b/blocksuite/affine/blocks/root/src/edgeless/edgeless-root-spec.ts @@ -35,7 +35,7 @@ import { EdgelessClipboardController } from './clipboard/clipboard.js'; import { NOTE_SLICER_WIDGET } from './components/note-slicer/index.js'; import { EDGELESS_DRAGGING_AREA_WIDGET } from './components/rects/edgeless-dragging-area-rect.js'; import { EDGELESS_SELECTED_RECT_WIDGET } from './components/rects/edgeless-selected-rect.js'; -import { quickTools, seniorTools } from './components/toolbar/tools.js'; +import { quickTools } from './components/toolbar/tools.js'; import { EdgelessRootService } from './edgeless-root-service.js'; export const edgelessZoomToolbarWidget = WidgetViewExtension( @@ -91,7 +91,6 @@ const EdgelessCommonExtension: ExtensionType[] = [ EdgelessRootService, ViewportElementExtension('.affine-edgeless-viewport'), ...quickTools, - ...seniorTools, ...EdgelessClipboardConfigs, ].flat(); diff --git a/blocksuite/affine/blocks/root/src/effects.ts b/blocksuite/affine/blocks/root/src/effects.ts index f05218532e..edb5762a91 100644 --- a/blocksuite/affine/blocks/root/src/effects.ts +++ b/blocksuite/affine/blocks/root/src/effects.ts @@ -1,6 +1,5 @@ import { effects as gfxConnectorEffects } from '@blocksuite/affine-gfx-connector/effects'; import { effects as gfxGroupEffects } from '@blocksuite/affine-gfx-group/effects'; -import { effects as gfxTemplateEffects } from '@blocksuite/affine-gfx-template/effects'; import { effects as gfxCanvasTextEffects } from '@blocksuite/affine-gfx-text/effects'; import { effects as widgetEdgelessToolbarEffects } from '@blocksuite/affine-widget-edgeless-toolbar/effects'; import { effects as widgetMobileToolbarEffects } from '@blocksuite/affine-widget-keyboard-toolbar/effects'; @@ -77,7 +76,6 @@ function registerGfxEffects() { gfxCanvasTextEffects(); gfxConnectorEffects(); gfxGroupEffects(); - gfxTemplateEffects(); } function registerWidgets() { diff --git a/blocksuite/affine/gfx/connector/src/toolbar/quick-tool.ts b/blocksuite/affine/gfx/connector/src/toolbar/quick-tool.ts index 0c0d4d8a33..96d23fe5d3 100644 --- a/blocksuite/affine/gfx/connector/src/toolbar/quick-tool.ts +++ b/blocksuite/affine/gfx/connector/src/toolbar/quick-tool.ts @@ -9,6 +9,7 @@ export const connectorQuickTool = QuickToolExtension( content: html``, + priority: 80, }; } ); diff --git a/blocksuite/affine/gfx/template/package.json b/blocksuite/affine/gfx/template/package.json index 13bfce159f..eaa79d0121 100644 --- a/blocksuite/affine/gfx/template/package.json +++ b/blocksuite/affine/gfx/template/package.json @@ -12,6 +12,7 @@ "dependencies": { "@blocksuite/affine-block-surface": "workspace:*", "@blocksuite/affine-components": "workspace:*", + "@blocksuite/affine-ext-loader": "workspace:*", "@blocksuite/affine-gfx-text": "workspace:*", "@blocksuite/affine-model": "workspace:*", "@blocksuite/affine-rich-text": "workspace:*", @@ -35,7 +36,8 @@ }, "exports": { ".": "./src/index.ts", - "./effects": "./src/effects.ts" + "./effects": "./src/effects.ts", + "./view": "./src/view.ts" }, "files": [ "src", diff --git a/blocksuite/affine/gfx/template/src/view.ts b/blocksuite/affine/gfx/template/src/view.ts new file mode 100644 index 0000000000..3dad6b374b --- /dev/null +++ b/blocksuite/affine/gfx/template/src/view.ts @@ -0,0 +1,25 @@ +import { + type ViewExtensionContext, + ViewExtensionProvider, +} from '@blocksuite/affine-ext-loader'; + +import { effects } from './effects'; +import { TemplateTool } from './template-tool'; +import { templateSeniorTool } from './toolbar/senior-tool'; + +export class TemplateViewExtension extends ViewExtensionProvider { + override name = 'affine-template-view'; + + override effect(): void { + super.effect(); + effects(); + } + + override setup(context: ViewExtensionContext) { + super.setup(context); + if (this.isEdgeless(context.scope)) { + context.register(TemplateTool); + context.register(templateSeniorTool); + } + } +} diff --git a/blocksuite/affine/gfx/template/tsconfig.json b/blocksuite/affine/gfx/template/tsconfig.json index 1cd15403e9..cfca82fae5 100644 --- a/blocksuite/affine/gfx/template/tsconfig.json +++ b/blocksuite/affine/gfx/template/tsconfig.json @@ -9,6 +9,7 @@ "references": [ { "path": "../../blocks/surface" }, { "path": "../../components" }, + { "path": "../../ext-loader" }, { "path": "../text" }, { "path": "../../model" }, { "path": "../../rich-text" }, diff --git a/tools/utils/src/workspace.gen.ts b/tools/utils/src/workspace.gen.ts index 07ff56a143..6c5770d1f4 100644 --- a/tools/utils/src/workspace.gen.ts +++ b/tools/utils/src/workspace.gen.ts @@ -603,6 +603,7 @@ export const PackageList = [ workspaceDependencies: [ 'blocksuite/affine/blocks/surface', 'blocksuite/affine/components', + 'blocksuite/affine/ext-loader', 'blocksuite/affine/gfx/text', 'blocksuite/affine/model', 'blocksuite/affine/rich-text', diff --git a/yarn.lock b/yarn.lock index 75c751b40c..31ed532732 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3281,6 +3281,7 @@ __metadata: dependencies: "@blocksuite/affine-block-surface": "workspace:*" "@blocksuite/affine-components": "workspace:*" + "@blocksuite/affine-ext-loader": "workspace:*" "@blocksuite/affine-gfx-text": "workspace:*" "@blocksuite/affine-model": "workspace:*" "@blocksuite/affine-rich-text": "workspace:*"