diff --git a/blocksuite/affine/all/package.json b/blocksuite/affine/all/package.json index 11e1b2f3db..fa5ddf4be7 100644 --- a/blocksuite/affine/all/package.json +++ b/blocksuite/affine/all/package.json @@ -185,7 +185,9 @@ "./gfx/mindmap": "./src/gfx/mindmap/index.ts", "./gfx/mindmap/store": "./src/gfx/mindmap/store.ts", "./gfx/mindmap/view": "./src/gfx/mindmap/view.ts", - "./gfx/connector": "./src/gfx/connector.ts", + "./gfx/connector": "./src/gfx/connector/index.ts", + "./gfx/connector/store": "./src/gfx/connector/store.ts", + "./gfx/connector/view": "./src/gfx/connector/view.ts", "./gfx/group": "./src/gfx/group.ts", "./gfx/template": "./src/gfx/template/index.ts", "./gfx/template/view": "./src/gfx/template/view.ts", diff --git a/blocksuite/affine/all/src/extensions/migrating.ts b/blocksuite/affine/all/src/extensions/migrating.ts index 454f504f20..254fff7364 100644 --- a/blocksuite/affine/all/src/extensions/migrating.ts +++ b/blocksuite/affine/all/src/extensions/migrating.ts @@ -11,18 +11,10 @@ import { PageSurfaceBlockSpec, SurfaceBlockAdapterExtensions, } from '@blocksuite/affine-block-surface'; -import { - connectorToMarkdownAdapterMatcher, - connectorToPlainTextAdapterMatcher, -} from '@blocksuite/affine-gfx-connector'; import { groupToMarkdownAdapterMatcher, groupToPlainTextAdapterMatcher, } from '@blocksuite/affine-gfx-group'; -import { - mindmapToMarkdownAdapterMatcher, - mindmapToPlainTextAdapterMatcher, -} from '@blocksuite/affine-gfx-mindmap'; import { textToMarkdownAdapterMatcher, textToPlainTextAdapterMatcher, @@ -38,16 +30,12 @@ import type { ExtensionType } from '@blocksuite/store'; const elementToPlainTextAdapterMatchers = [ groupToPlainTextAdapterMatcher, - connectorToPlainTextAdapterMatcher, textToPlainTextAdapterMatcher, - mindmapToPlainTextAdapterMatcher, ]; const elementToMarkdownAdapterMatchers = [ groupToMarkdownAdapterMatcher, - connectorToMarkdownAdapterMatcher, textToMarkdownAdapterMatcher, - mindmapToMarkdownAdapterMatcher, ]; const CommonBlockSpecs: ExtensionType[] = [ diff --git a/blocksuite/affine/all/src/extensions/store.ts b/blocksuite/affine/all/src/extensions/store.ts index 48b65dfccb..297ce88f3c 100644 --- a/blocksuite/affine/all/src/extensions/store.ts +++ b/blocksuite/affine/all/src/extensions/store.ts @@ -16,6 +16,7 @@ import { ParagraphStoreExtension } from '@blocksuite/affine-block-paragraph/stor import { SurfaceRefStoreExtension } from '@blocksuite/affine-block-surface-ref/store'; import { TableStoreExtension } from '@blocksuite/affine-block-table/store'; import { BrushStoreExtension } from '@blocksuite/affine-gfx-brush/store'; +import { ConnectorStoreExtension } from '@blocksuite/affine-gfx-connector/store'; import { MindmapStoreExtension } from '@blocksuite/affine-gfx-mindmap/store'; import { ShapeStoreExtension } from '@blocksuite/affine-gfx-shape/store'; import { FootnoteStoreExtension } from '@blocksuite/affine-inline-footnote/store'; @@ -55,6 +56,7 @@ export function getInternalStoreExtensions() { BrushStoreExtension, ShapeStoreExtension, MindmapStoreExtension, + ConnectorStoreExtension, MigratingStoreExtension, ]; diff --git a/blocksuite/affine/all/src/extensions/view.ts b/blocksuite/affine/all/src/extensions/view.ts index 7507e5f396..7708d53cbc 100644 --- a/blocksuite/affine/all/src/extensions/view.ts +++ b/blocksuite/affine/all/src/extensions/view.ts @@ -16,6 +16,7 @@ import { ParagraphViewExtension } from '@blocksuite/affine-block-paragraph/view' import { SurfaceRefViewExtension } from '@blocksuite/affine-block-surface-ref/view'; import { TableViewExtension } from '@blocksuite/affine-block-table/view'; import { BrushViewExtension } from '@blocksuite/affine-gfx-brush/view'; +import { ConnectorViewExtension } from '@blocksuite/affine-gfx-connector/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'; @@ -35,6 +36,7 @@ export function getInternalViewExtensions() { BrushViewExtension, ShapeViewExtension, MindmapViewExtension, + ConnectorViewExtension, TemplateViewExtension, // Block diff --git a/blocksuite/affine/all/src/gfx/connector.ts b/blocksuite/affine/all/src/gfx/connector/index.ts similarity index 100% rename from blocksuite/affine/all/src/gfx/connector.ts rename to blocksuite/affine/all/src/gfx/connector/index.ts diff --git a/blocksuite/affine/all/src/gfx/connector/store.ts b/blocksuite/affine/all/src/gfx/connector/store.ts new file mode 100644 index 0000000000..62b8c8c018 --- /dev/null +++ b/blocksuite/affine/all/src/gfx/connector/store.ts @@ -0,0 +1 @@ +export * from '@blocksuite/affine-gfx-connector/store'; diff --git a/blocksuite/affine/all/src/gfx/connector/view.ts b/blocksuite/affine/all/src/gfx/connector/view.ts new file mode 100644 index 0000000000..3ac78be74f --- /dev/null +++ b/blocksuite/affine/all/src/gfx/connector/view.ts @@ -0,0 +1 @@ +export * from '@blocksuite/affine-gfx-connector/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 0bda36a16d..b7067f9e79 100644 --- a/blocksuite/affine/blocks/root/src/edgeless/components/toolbar/tools.ts +++ b/blocksuite/affine/blocks/root/src/edgeless/components/toolbar/tools.ts @@ -1,4 +1,3 @@ -import { connectorQuickTool } from '@blocksuite/affine-gfx-connector'; import { QuickToolExtension } from '@blocksuite/affine-widget-edgeless-toolbar'; import { html } from 'lit'; @@ -23,4 +22,4 @@ const linkQuickTool = QuickToolExtension('link', ({ block, gfx }) => { }; }); -export const quickTools = [defaultQuickTool, connectorQuickTool, linkQuickTool]; +export const quickTools = [defaultQuickTool, linkQuickTool]; diff --git a/blocksuite/affine/blocks/root/src/edgeless/configs/toolbar/index.ts b/blocksuite/affine/blocks/root/src/edgeless/configs/toolbar/index.ts index bcc5841b51..5bb6de023d 100644 --- a/blocksuite/affine/blocks/root/src/edgeless/configs/toolbar/index.ts +++ b/blocksuite/affine/blocks/root/src/edgeless/configs/toolbar/index.ts @@ -1,4 +1,3 @@ -import { connectorToolbarExtension } from '@blocksuite/affine-gfx-connector'; import { groupToolbarExtension } from '@blocksuite/affine-gfx-group'; import { textToolbarExtension } from '@blocksuite/affine-gfx-text'; import { ToolbarModuleExtension } from '@blocksuite/affine-shared/services'; @@ -10,8 +9,6 @@ import { builtinLockedToolbarConfig, builtinMiscToolbarConfig } from './misc'; export const EdgelessElementToolbarExtension: ExtensionType[] = [ groupToolbarExtension, - connectorToolbarExtension, - textToolbarExtension, ToolbarModuleExtension({ 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 c8fc874365..fc5c4a305c 100644 --- a/blocksuite/affine/blocks/root/src/edgeless/edgeless-builtin-spec.ts +++ b/blocksuite/affine/blocks/root/src/edgeless/edgeless-builtin-spec.ts @@ -1,9 +1,5 @@ import { ConnectionOverlay } from '@blocksuite/affine-block-surface'; import type * as BrushEffect from '@blocksuite/affine-gfx-brush'; -import { - ConnectorFilter, - ConnectorTool, -} from '@blocksuite/affine-gfx-connector'; import type * as NoteEffect from '@blocksuite/affine-gfx-note'; import type * as ShapeEffect from '@blocksuite/affine-gfx-shape'; import { TextTool } from '@blocksuite/affine-gfx-text'; @@ -30,13 +26,11 @@ export const EdgelessToolExtension: ExtensionType[] = [ DefaultTool, PanTool, TextTool, - ConnectorTool, EmptyTool, ]; export const EdgelessEditExtensions: ExtensionType[] = [ InteractivityManager, - ConnectorFilter, SnapExtension, DblClickAddEdgelessText, ]; diff --git a/blocksuite/affine/blocks/root/src/effects.ts b/blocksuite/affine/blocks/root/src/effects.ts index edb5762a91..2b6c79e92e 100644 --- a/blocksuite/affine/blocks/root/src/effects.ts +++ b/blocksuite/affine/blocks/root/src/effects.ts @@ -1,4 +1,3 @@ -import { effects as gfxConnectorEffects } from '@blocksuite/affine-gfx-connector/effects'; import { effects as gfxGroupEffects } from '@blocksuite/affine-gfx-group/effects'; import { effects as gfxCanvasTextEffects } from '@blocksuite/affine-gfx-text/effects'; import { effects as widgetEdgelessToolbarEffects } from '@blocksuite/affine-widget-edgeless-toolbar/effects'; @@ -74,7 +73,6 @@ function registerRootComponents() { function registerGfxEffects() { gfxCanvasTextEffects(); - gfxConnectorEffects(); gfxGroupEffects(); } diff --git a/blocksuite/affine/blocks/surface/src/managers/connector-manager.ts b/blocksuite/affine/blocks/surface/src/managers/connector-manager.ts index c7da573225..1f1b4acacb 100644 --- a/blocksuite/affine/blocks/surface/src/managers/connector-manager.ts +++ b/blocksuite/affine/blocks/surface/src/managers/connector-manager.ts @@ -850,6 +850,7 @@ function renderRect( ctx.restore(); } +// TODO(@mirone): move to connector package export class ConnectionOverlay extends Overlay { static override overlayName = 'connection'; diff --git a/blocksuite/affine/gfx/connector/package.json b/blocksuite/affine/gfx/connector/package.json index 41a0807ddb..7aa1a1953a 100644 --- a/blocksuite/affine/gfx/connector/package.json +++ b/blocksuite/affine/gfx/connector/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:*", @@ -34,7 +35,9 @@ }, "exports": { ".": "./src/index.ts", - "./effects": "./src/effects.ts" + "./effects": "./src/effects.ts", + "./view": "./src/view.ts", + "./store": "./src/store.ts" }, "files": [ "src", diff --git a/blocksuite/affine/gfx/connector/src/index.ts b/blocksuite/affine/gfx/connector/src/index.ts index 30b98f4949..fa47ee23b2 100644 --- a/blocksuite/affine/gfx/connector/src/index.ts +++ b/blocksuite/affine/gfx/connector/src/index.ts @@ -5,4 +5,4 @@ export * from './element-transform'; export * from './text'; export * from './toolbar/config'; export * from './toolbar/quick-tool'; -export * from './view'; +export * from './view/index'; diff --git a/blocksuite/affine/gfx/connector/src/store.ts b/blocksuite/affine/gfx/connector/src/store.ts new file mode 100644 index 0000000000..ebb768af2f --- /dev/null +++ b/blocksuite/affine/gfx/connector/src/store.ts @@ -0,0 +1,19 @@ +import { + type StoreExtensionContext, + StoreExtensionProvider, +} from '@blocksuite/affine-ext-loader'; + +import { + connectorToMarkdownAdapterMatcher, + connectorToPlainTextAdapterMatcher, +} from './adapter'; + +export class ConnectorStoreExtension extends StoreExtensionProvider { + override name = 'affine-connector-gfx'; + + override setup(context: StoreExtensionContext) { + super.setup(context); + context.register(connectorToPlainTextAdapterMatcher); + context.register(connectorToMarkdownAdapterMatcher); + } +} diff --git a/blocksuite/affine/gfx/connector/src/view.ts b/blocksuite/affine/gfx/connector/src/view.ts new file mode 100644 index 0000000000..0d25dbc74e --- /dev/null +++ b/blocksuite/affine/gfx/connector/src/view.ts @@ -0,0 +1,29 @@ +import { + type ViewExtensionContext, + ViewExtensionProvider, +} from '@blocksuite/affine-ext-loader'; + +import { ConnectorTool } from './connector-tool'; +import { effects } from './effects'; +import { ConnectorFilter } from './element-transform'; +import { connectorToolbarExtension } from './toolbar/config'; +import { connectorQuickTool } from './toolbar/quick-tool'; + +export class ConnectorViewExtension extends ViewExtensionProvider { + override name = 'affine-connector-gfx'; + + override effect(): void { + super.effect(); + effects(); + } + + override setup(context: ViewExtensionContext) { + super.setup(context); + if (this.isEdgeless(context.scope)) { + context.register(ConnectorTool); + context.register(ConnectorFilter); + context.register(connectorQuickTool); + context.register(connectorToolbarExtension); + } + } +} diff --git a/blocksuite/affine/gfx/connector/tsconfig.json b/blocksuite/affine/gfx/connector/tsconfig.json index 1cd15403e9..cfca82fae5 100644 --- a/blocksuite/affine/gfx/connector/tsconfig.json +++ b/blocksuite/affine/gfx/connector/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 6c5770d1f4..155c0486c4 100644 --- a/tools/utils/src/workspace.gen.ts +++ b/tools/utils/src/workspace.gen.ts @@ -513,6 +513,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 31ed532732..10bb2b2ea6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3130,6 +3130,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:*"