From 8d9746e0cc85245651cf77fd3f2fd87911ab6f6d Mon Sep 17 00:00:00 2001 From: L-Sun Date: Fri, 7 Mar 2025 08:21:19 +0000 Subject: [PATCH] refactor(editor): embed slash menu config extension (#10679) --- blocksuite/affine/block-embed/package.json | 1 + .../embed-figma-block/configs/slash-menu.ts | 39 ++++++ .../embed-figma-block/configs/tooltips.ts} | 1 + .../src/embed-figma-block/embed-figma-spec.ts | 3 + .../embed-github-block/configs/slash-menu.ts | 39 ++++++ .../embed-github-block/configs/tooltips.ts} | 1 + .../embed-github-block/embed-github-spec.ts | 3 + .../src/embed-html-block/configs/tooltips.ts} | 34 +++++ .../embed-loom-block/configs/slash-menu.ts | 32 +++++ .../src/embed-loom-block/embed-loom-spec.ts | 3 + .../embed-youtube-block/configs/slash-menu.ts | 39 ++++++ .../embed-youtube-block/configs/tooltips.ts} | 1 + .../embed-youtube-block/embed-youtube-spec.ts | 3 + blocksuite/affine/block-embed/tsconfig.json | 1 + .../affine/widget-slash-menu/package.json | 1 - .../affine/widget-slash-menu/src/config.ts | 118 +----------------- .../widget-slash-menu/src/tooltips/index.ts | 30 ----- .../widget-slash-menu/src/tooltips/tweet.ts | 33 ----- .../affine/widget-slash-menu/src/utils.ts | 8 -- .../affine/widget-slash-menu/tsconfig.json | 1 - tools/utils/src/workspace.gen.ts | 2 +- yarn.lock | 2 +- 22 files changed, 203 insertions(+), 192 deletions(-) create mode 100644 blocksuite/affine/block-embed/src/embed-figma-block/configs/slash-menu.ts rename blocksuite/affine/{widget-slash-menu/src/tooltips/figma.ts => block-embed/src/embed-figma-block/configs/tooltips.ts} (99%) create mode 100644 blocksuite/affine/block-embed/src/embed-github-block/configs/slash-menu.ts rename blocksuite/affine/{widget-slash-menu/src/tooltips/github-repo.ts => block-embed/src/embed-github-block/configs/tooltips.ts} (99%) rename blocksuite/affine/{widget-slash-menu/src/tooltips/linear.ts => block-embed/src/embed-html-block/configs/tooltips.ts} (50%) create mode 100644 blocksuite/affine/block-embed/src/embed-loom-block/configs/slash-menu.ts create mode 100644 blocksuite/affine/block-embed/src/embed-youtube-block/configs/slash-menu.ts rename blocksuite/affine/{widget-slash-menu/src/tooltips/youtube-video.ts => block-embed/src/embed-youtube-block/configs/tooltips.ts} (99%) delete mode 100644 blocksuite/affine/widget-slash-menu/src/tooltips/tweet.ts diff --git a/blocksuite/affine/block-embed/package.json b/blocksuite/affine/block-embed/package.json index ac76429c97..1accf64269 100644 --- a/blocksuite/affine/block-embed/package.json +++ b/blocksuite/affine/block-embed/package.json @@ -18,6 +18,7 @@ "@blocksuite/affine-model": "workspace:*", "@blocksuite/affine-rich-text": "workspace:*", "@blocksuite/affine-shared": "workspace:*", + "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", "@blocksuite/icons": "^2.2.1", diff --git a/blocksuite/affine/block-embed/src/embed-figma-block/configs/slash-menu.ts b/blocksuite/affine/block-embed/src/embed-figma-block/configs/slash-menu.ts new file mode 100644 index 0000000000..7b514e4b56 --- /dev/null +++ b/blocksuite/affine/block-embed/src/embed-figma-block/configs/slash-menu.ts @@ -0,0 +1,39 @@ +import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal'; +import type { SlashMenuConfig } from '@blocksuite/affine-widget-slash-menu'; +import { FigmaDuotoneIcon } from '@blocksuite/icons/lit'; + +import { FigmaTooltip } from './tooltips'; + +export const embedFigmaSlashMenuConfig: SlashMenuConfig = { + items: [ + { + name: 'Figma', + description: 'Embed a Figma document.', + icon: FigmaDuotoneIcon(), + tooltip: { + figure: FigmaTooltip, + caption: 'Figma', + }, + group: '4_Content & Media@7', + when: ({ model }) => + model.doc.schema.flavourSchemaMap.has('affine:embed-figma'), + action: ({ std, model }) => { + (async () => { + const { host } = std; + const parentModel = host.doc.getParent(model); + if (!parentModel) { + return; + } + const index = parentModel.children.indexOf(model) + 1; + await toggleEmbedCardCreateModal( + host, + 'Figma', + 'The added Figma link will be displayed as an embed view.', + { mode: 'page', parentModel, index } + ); + if (model.text?.length === 0) std.store.deleteBlock(model); + })().catch(console.error); + }, + }, + ], +}; diff --git a/blocksuite/affine/widget-slash-menu/src/tooltips/figma.ts b/blocksuite/affine/block-embed/src/embed-figma-block/configs/tooltips.ts similarity index 99% rename from blocksuite/affine/widget-slash-menu/src/tooltips/figma.ts rename to blocksuite/affine/block-embed/src/embed-figma-block/configs/tooltips.ts index 200134d6e1..893ef070e0 100644 --- a/blocksuite/affine/widget-slash-menu/src/tooltips/figma.ts +++ b/blocksuite/affine/block-embed/src/embed-figma-block/configs/tooltips.ts @@ -1,4 +1,5 @@ import { html } from 'lit'; + // prettier-ignore export const FigmaTooltip = html` diff --git a/blocksuite/affine/block-embed/src/embed-figma-block/embed-figma-spec.ts b/blocksuite/affine/block-embed/src/embed-figma-block/embed-figma-spec.ts index 1b91f3a0aa..330c57c9d2 100644 --- a/blocksuite/affine/block-embed/src/embed-figma-block/embed-figma-spec.ts +++ b/blocksuite/affine/block-embed/src/embed-figma-block/embed-figma-spec.ts @@ -1,5 +1,6 @@ import { EmbedFigmaBlockSchema } from '@blocksuite/affine-model'; import { ToolbarModuleExtension } from '@blocksuite/affine-shared/services'; +import { SlashMenuConfigExtension } from '@blocksuite/affine-widget-slash-menu'; import { BlockServiceIdentifier, BlockViewExtension, @@ -10,6 +11,7 @@ import { literal } from 'lit/static-html.js'; import { createBuiltinToolbarConfigForExternal } from '../configs/toolbar'; import { EmbedFigmaBlockAdapterExtensions } from './adapters/extension'; +import { embedFigmaSlashMenuConfig } from './configs/slash-menu'; import { EmbedFigmaBlockComponent } from './embed-figma-block'; import { EmbedFigmaBlockOptionConfig } from './embed-figma-service'; @@ -28,4 +30,5 @@ export const EmbedFigmaBlockSpec: ExtensionType[] = [ id: BlockServiceIdentifier(flavour), config: createBuiltinToolbarConfigForExternal(EmbedFigmaBlockComponent), }), + SlashMenuConfigExtension(flavour, embedFigmaSlashMenuConfig), ].flat(); diff --git a/blocksuite/affine/block-embed/src/embed-github-block/configs/slash-menu.ts b/blocksuite/affine/block-embed/src/embed-github-block/configs/slash-menu.ts new file mode 100644 index 0000000000..5441cff688 --- /dev/null +++ b/blocksuite/affine/block-embed/src/embed-github-block/configs/slash-menu.ts @@ -0,0 +1,39 @@ +import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal'; +import type { SlashMenuConfig } from '@blocksuite/affine-widget-slash-menu'; +import { GithubDuotoneIcon } from '@blocksuite/icons/lit'; + +import { GithubRepoTooltip } from './tooltips'; + +export const embedGithubSlashMenuConfig: SlashMenuConfig = { + items: [ + { + name: 'GitHub', + description: 'Link to a GitHub repository.', + icon: GithubDuotoneIcon(), + tooltip: { + figure: GithubRepoTooltip, + caption: 'GitHub Repo', + }, + group: '4_Content & Media@6', + when: ({ model }) => + model.doc.schema.flavourSchemaMap.has('affine:embed-github'), + action: ({ std, model }) => { + (async () => { + const { host } = std; + const parentModel = host.doc.getParent(model); + if (!parentModel) { + return; + } + const index = parentModel.children.indexOf(model) + 1; + await toggleEmbedCardCreateModal( + host, + 'GitHub', + 'The added GitHub issue or pull request link will be displayed as a card view.', + { mode: 'page', parentModel, index } + ); + if (model.text?.length === 0) std.store.deleteBlock(model); + })().catch(console.error); + }, + }, + ], +}; diff --git a/blocksuite/affine/widget-slash-menu/src/tooltips/github-repo.ts b/blocksuite/affine/block-embed/src/embed-github-block/configs/tooltips.ts similarity index 99% rename from blocksuite/affine/widget-slash-menu/src/tooltips/github-repo.ts rename to blocksuite/affine/block-embed/src/embed-github-block/configs/tooltips.ts index ff89346629..76b8f67022 100644 --- a/blocksuite/affine/widget-slash-menu/src/tooltips/github-repo.ts +++ b/blocksuite/affine/block-embed/src/embed-github-block/configs/tooltips.ts @@ -1,4 +1,5 @@ import { html } from 'lit'; + // prettier-ignore export const GithubRepoTooltip = html` diff --git a/blocksuite/affine/block-embed/src/embed-github-block/embed-github-spec.ts b/blocksuite/affine/block-embed/src/embed-github-block/embed-github-spec.ts index a9655b2a33..67b1e57fde 100644 --- a/blocksuite/affine/block-embed/src/embed-github-block/embed-github-spec.ts +++ b/blocksuite/affine/block-embed/src/embed-github-block/embed-github-spec.ts @@ -1,5 +1,6 @@ import { EmbedGithubBlockSchema } from '@blocksuite/affine-model'; import { ToolbarModuleExtension } from '@blocksuite/affine-shared/services'; +import { SlashMenuConfigExtension } from '@blocksuite/affine-widget-slash-menu'; import { BlockServiceIdentifier, BlockViewExtension, @@ -10,6 +11,7 @@ import { literal } from 'lit/static-html.js'; import { createBuiltinToolbarConfigForExternal } from '../configs/toolbar'; import { EmbedGithubBlockAdapterExtensions } from './adapters/extension'; +import { embedGithubSlashMenuConfig } from './configs/slash-menu'; import { EmbedGithubBlockComponent } from './embed-github-block'; import { EmbedGithubBlockOptionConfig, @@ -32,4 +34,5 @@ export const EmbedGithubBlockSpec: ExtensionType[] = [ id: BlockServiceIdentifier(flavour), config: createBuiltinToolbarConfigForExternal(EmbedGithubBlockComponent), }), + SlashMenuConfigExtension(flavour, embedGithubSlashMenuConfig), ].flat(); diff --git a/blocksuite/affine/widget-slash-menu/src/tooltips/linear.ts b/blocksuite/affine/block-embed/src/embed-html-block/configs/tooltips.ts similarity index 50% rename from blocksuite/affine/widget-slash-menu/src/tooltips/linear.ts rename to blocksuite/affine/block-embed/src/embed-html-block/configs/tooltips.ts index 5f92af6643..5adbf1a330 100644 --- a/blocksuite/affine/widget-slash-menu/src/tooltips/linear.ts +++ b/blocksuite/affine/block-embed/src/embed-html-block/configs/tooltips.ts @@ -1,4 +1,38 @@ import { html } from 'lit'; + +// prettier-ignore +export const TweetTooltip = html` + + + + + + +Embed a X post (tweet). + + +To Shape, Not to Adapt. + +AFFiNE +@AFFiNEOfficial + + + + + + + + + + + + + + + + +`; + // prettier-ignore export const LinearTooltip = html` diff --git a/blocksuite/affine/block-embed/src/embed-loom-block/configs/slash-menu.ts b/blocksuite/affine/block-embed/src/embed-loom-block/configs/slash-menu.ts new file mode 100644 index 0000000000..37c3883bca --- /dev/null +++ b/blocksuite/affine/block-embed/src/embed-loom-block/configs/slash-menu.ts @@ -0,0 +1,32 @@ +import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal'; +import type { SlashMenuConfig } from '@blocksuite/affine-widget-slash-menu'; +import { LoomLogoDuotoneIcon } from '@blocksuite/icons/lit'; + +export const embedLoomSlashMenuConfig: SlashMenuConfig = { + items: [ + { + name: 'Loom', + icon: LoomLogoDuotoneIcon(), + group: '4_Content & Media@8', + when: ({ model }) => + model.doc.schema.flavourSchemaMap.has('affine:embed-loom'), + action: ({ std, model }) => { + (async () => { + const { host } = std; + const parentModel = host.doc.getParent(model); + if (!parentModel) { + return; + } + const index = parentModel.children.indexOf(model) + 1; + await toggleEmbedCardCreateModal( + host, + 'Loom', + 'The added Loom video link will be displayed as an embed view.', + { mode: 'page', parentModel, index } + ); + if (model.text?.length === 0) std.store.deleteBlock(model); + })().catch(console.error); + }, + }, + ], +}; diff --git a/blocksuite/affine/block-embed/src/embed-loom-block/embed-loom-spec.ts b/blocksuite/affine/block-embed/src/embed-loom-block/embed-loom-spec.ts index 8d0f878605..bdf3ae33d7 100644 --- a/blocksuite/affine/block-embed/src/embed-loom-block/embed-loom-spec.ts +++ b/blocksuite/affine/block-embed/src/embed-loom-block/embed-loom-spec.ts @@ -1,5 +1,6 @@ import { EmbedLoomBlockSchema } from '@blocksuite/affine-model'; import { ToolbarModuleExtension } from '@blocksuite/affine-shared/services'; +import { SlashMenuConfigExtension } from '@blocksuite/affine-widget-slash-menu'; import { BlockServiceIdentifier, BlockViewExtension, @@ -10,6 +11,7 @@ import { literal } from 'lit/static-html.js'; import { createBuiltinToolbarConfigForExternal } from '../configs/toolbar'; import { EmbedLoomBlockAdapterExtensions } from './adapters/extension'; +import { embedLoomSlashMenuConfig } from './configs/slash-menu'; import { EmbedLoomBlockComponent } from './embed-loom-block'; import { EmbedLoomBlockOptionConfig, @@ -32,4 +34,5 @@ export const EmbedLoomBlockSpec: ExtensionType[] = [ id: BlockServiceIdentifier(flavour), config: createBuiltinToolbarConfigForExternal(EmbedLoomBlockComponent), }), + SlashMenuConfigExtension(flavour, embedLoomSlashMenuConfig), ].flat(); diff --git a/blocksuite/affine/block-embed/src/embed-youtube-block/configs/slash-menu.ts b/blocksuite/affine/block-embed/src/embed-youtube-block/configs/slash-menu.ts new file mode 100644 index 0000000000..a235234898 --- /dev/null +++ b/blocksuite/affine/block-embed/src/embed-youtube-block/configs/slash-menu.ts @@ -0,0 +1,39 @@ +import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal'; +import type { SlashMenuConfig } from '@blocksuite/affine-widget-slash-menu'; +import { YoutubeDuotoneIcon } from '@blocksuite/icons/lit'; + +import { YoutubeVideoTooltip } from './tooltips'; + +export const embedYoutubeSlashMenuConfig: SlashMenuConfig = { + items: [ + { + name: 'YouTube', + description: 'Embed a YouTube video.', + icon: YoutubeDuotoneIcon(), + tooltip: { + figure: YoutubeVideoTooltip, + caption: 'YouTube Video', + }, + group: '4_Content & Media@5', + when: ({ model }) => + model.doc.schema.flavourSchemaMap.has('affine:embed-youtube'), + action: ({ std, model }) => { + (async () => { + const { host } = std; + const parentModel = host.doc.getParent(model); + if (!parentModel) { + return; + } + const index = parentModel.children.indexOf(model) + 1; + await toggleEmbedCardCreateModal( + host, + 'YouTube', + 'The added YouTube video link will be displayed as an embed view.', + { mode: 'page', parentModel, index } + ); + if (model.text?.length === 0) std.store.deleteBlock(model); + })().catch(console.error); + }, + }, + ], +}; diff --git a/blocksuite/affine/widget-slash-menu/src/tooltips/youtube-video.ts b/blocksuite/affine/block-embed/src/embed-youtube-block/configs/tooltips.ts similarity index 99% rename from blocksuite/affine/widget-slash-menu/src/tooltips/youtube-video.ts rename to blocksuite/affine/block-embed/src/embed-youtube-block/configs/tooltips.ts index 971eaf75ba..95bcfc4323 100644 --- a/blocksuite/affine/widget-slash-menu/src/tooltips/youtube-video.ts +++ b/blocksuite/affine/block-embed/src/embed-youtube-block/configs/tooltips.ts @@ -1,4 +1,5 @@ import { html } from 'lit'; + // prettier-ignore export const YoutubeVideoTooltip = html` diff --git a/blocksuite/affine/block-embed/src/embed-youtube-block/embed-youtube-spec.ts b/blocksuite/affine/block-embed/src/embed-youtube-block/embed-youtube-spec.ts index dfa9466001..d40893ffc2 100644 --- a/blocksuite/affine/block-embed/src/embed-youtube-block/embed-youtube-spec.ts +++ b/blocksuite/affine/block-embed/src/embed-youtube-block/embed-youtube-spec.ts @@ -1,5 +1,6 @@ import { EmbedYoutubeBlockSchema } from '@blocksuite/affine-model'; import { ToolbarModuleExtension } from '@blocksuite/affine-shared/services'; +import { SlashMenuConfigExtension } from '@blocksuite/affine-widget-slash-menu'; import { BlockServiceIdentifier, BlockViewExtension, @@ -10,6 +11,7 @@ import { literal } from 'lit/static-html.js'; import { createBuiltinToolbarConfigForExternal } from '../configs/toolbar'; import { EmbedYoutubeBlockAdapterExtensions } from './adapters/extension'; +import { embedYoutubeSlashMenuConfig } from './configs/slash-menu'; import { EmbedYoutubeBlockComponent } from './embed-youtube-block'; import { EmbedYoutubeBlockOptionConfig, @@ -32,4 +34,5 @@ export const EmbedYoutubeBlockSpec: ExtensionType[] = [ id: BlockServiceIdentifier(flavour), config: createBuiltinToolbarConfigForExternal(EmbedYoutubeBlockComponent), }), + SlashMenuConfigExtension('affine:embed-youtube', embedYoutubeSlashMenuConfig), ].flat(); diff --git a/blocksuite/affine/block-embed/tsconfig.json b/blocksuite/affine/block-embed/tsconfig.json index e42fd3875a..e597a9e86b 100644 --- a/blocksuite/affine/block-embed/tsconfig.json +++ b/blocksuite/affine/block-embed/tsconfig.json @@ -12,6 +12,7 @@ { "path": "../model" }, { "path": "../rich-text" }, { "path": "../shared" }, + { "path": "../widget-slash-menu" }, { "path": "../../framework/block-std" }, { "path": "../../framework/global" }, { "path": "../../framework/inline" }, diff --git a/blocksuite/affine/widget-slash-menu/package.json b/blocksuite/affine/widget-slash-menu/package.json index f443679d7e..4385db5be8 100644 --- a/blocksuite/affine/widget-slash-menu/package.json +++ b/blocksuite/affine/widget-slash-menu/package.json @@ -13,7 +13,6 @@ "author": "toeverything", "license": "MIT", "dependencies": { - "@blocksuite/affine-block-embed": "workspace:*", "@blocksuite/affine-block-surface": "workspace:*", "@blocksuite/affine-block-surface-ref": "workspace:*", "@blocksuite/affine-components": "workspace:*", diff --git a/blocksuite/affine/widget-slash-menu/src/config.ts b/blocksuite/affine/widget-slash-menu/src/config.ts index 446dc97083..8318d322a4 100644 --- a/blocksuite/affine/widget-slash-menu/src/config.ts +++ b/blocksuite/affine/widget-slash-menu/src/config.ts @@ -1,6 +1,5 @@ import { getSurfaceBlock } from '@blocksuite/affine-block-surface'; import { insertSurfaceRefBlockCommand } from '@blocksuite/affine-block-surface-ref'; -import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal'; import { toast } from '@blocksuite/affine-components/toast'; import type { FrameBlockModel, @@ -19,25 +18,21 @@ import { CopyIcon, DeleteIcon, DualLinkIcon, - FigmaDuotoneIcon, FrameIcon, - GithubDuotoneIcon, GroupingIcon, LinkedPageIcon, - LoomLogoDuotoneIcon, NowIcon, PlusIcon, TodayIcon, TomorrowIcon, YesterdayIcon, - YoutubeDuotoneIcon, } from '@blocksuite/icons/lit'; import type { DeltaInsert } from '@blocksuite/inline'; import { Slice, Text } from '@blocksuite/store'; import { slashMenuToolTips } from './tooltips'; import type { SlashMenuActionItem, SlashMenuConfig } from './types'; -import { formatDate, formatTime, tryRemoveEmptyLine } from './utils'; +import { formatDate, formatTime } from './utils'; // TODO(@L-Sun): This counter temporarily added variables for refactoring. let index = 0; @@ -107,117 +102,6 @@ export const defaultSlashMenuConfig: SlashMenuConfig = { }, }, - // --------------------------------------------------------- - // { groupName: 'Content & Media' }, - - { - name: 'YouTube', - description: 'Embed a YouTube video.', - icon: YoutubeDuotoneIcon(), - tooltip: slashMenuToolTips['YouTube'], - group: `4_Content & Media@${index++}`, - when: ({ model }) => - model.doc.schema.flavourSchemaMap.has('affine:embed-youtube'), - action: ({ std, model }) => { - (async () => { - const { host } = std; - const parentModel = host.doc.getParent(model); - if (!parentModel) { - return; - } - const index = parentModel.children.indexOf(model) + 1; - await toggleEmbedCardCreateModal( - host, - 'YouTube', - 'The added YouTube video link will be displayed as an embed view.', - { mode: 'page', parentModel, index } - ); - tryRemoveEmptyLine(model); - })().catch(console.error); - }, - }, - { - name: 'GitHub', - description: 'Link to a GitHub repository.', - icon: GithubDuotoneIcon(), - tooltip: slashMenuToolTips['Github'], - group: `4_Content & Media@${index++}`, - when: ({ model }) => - model.doc.schema.flavourSchemaMap.has('affine:embed-github'), - action: ({ std, model }) => { - (async () => { - const { host } = std; - const parentModel = host.doc.getParent(model); - if (!parentModel) { - return; - } - const index = parentModel.children.indexOf(model) + 1; - await toggleEmbedCardCreateModal( - host, - 'GitHub', - 'The added GitHub issue or pull request link will be displayed as a card view.', - { mode: 'page', parentModel, index } - ); - tryRemoveEmptyLine(model); - })().catch(console.error); - }, - }, - // TODO: X Twitter - - { - name: 'Figma', - description: 'Embed a Figma document.', - icon: FigmaDuotoneIcon(), - tooltip: slashMenuToolTips['Figma'], - group: `4_Content & Media@${index++}`, - when: ({ model }) => - model.doc.schema.flavourSchemaMap.has('affine:embed-figma'), - action: ({ std, model }) => { - (async () => { - const { host } = std; - const parentModel = host.doc.getParent(model); - if (!parentModel) { - return; - } - const index = parentModel.children.indexOf(model) + 1; - await toggleEmbedCardCreateModal( - host, - 'Figma', - 'The added Figma link will be displayed as an embed view.', - { mode: 'page', parentModel, index } - ); - tryRemoveEmptyLine(model); - })().catch(console.error); - }, - }, - - { - name: 'Loom', - icon: LoomLogoDuotoneIcon(), - group: `4_Content & Media@${index++}`, - when: ({ model }) => - model.doc.schema.flavourSchemaMap.has('affine:embed-loom'), - action: ({ std, model }) => { - (async () => { - const { host } = std; - const parentModel = host.doc.getParent(model); - if (!parentModel) { - return; - } - const index = parentModel.children.indexOf(model) + 1; - await toggleEmbedCardCreateModal( - host, - 'Loom', - 'The added Loom video link will be displayed as an embed view.', - { mode: 'page', parentModel, index } - ); - tryRemoveEmptyLine(model); - })().catch(console.error); - }, - }, - - // TODO(@L-Sun): Linear - // --------------------------------------------------------- ({ std, model }) => { const { host } = std; diff --git a/blocksuite/affine/widget-slash-menu/src/tooltips/index.ts b/blocksuite/affine/widget-slash-menu/src/tooltips/index.ts index 174fed1b69..28b6cdd876 100644 --- a/blocksuite/affine/widget-slash-menu/src/tooltips/index.ts +++ b/blocksuite/affine/widget-slash-menu/src/tooltips/index.ts @@ -2,9 +2,6 @@ import type { SlashMenuTooltip } from '../types'; import { CopyTooltip } from './copy'; import { DeleteTooltip } from './delete'; import { EdgelessTooltip } from './edgeless'; -import { FigmaTooltip } from './figma'; -import { GithubRepoTooltip } from './github-repo'; -import { LinearTooltip } from './linear'; import { LinkDocTooltip } from './link-doc'; import { MoveDownTooltip } from './move-down'; import { MoveUpTooltip } from './move-up'; @@ -12,9 +9,7 @@ import { NewDocTooltip } from './new-doc'; import { NowTooltip } from './now'; import { TodayTooltip } from './today'; import { TomorrowTooltip } from './tomorrow'; -import { TweetTooltip } from './tweet'; import { YesterdayTooltip } from './yesterday'; -import { YoutubeVideoTooltip } from './youtube-video'; export const slashMenuToolTips: Record = { 'New Doc': { @@ -27,31 +22,6 @@ export const slashMenuToolTips: Record = { caption: 'Link Doc', }, - Github: { - figure: GithubRepoTooltip, - caption: 'GitHub Repo', - }, - - YouTube: { - figure: YoutubeVideoTooltip, - caption: 'YouTube Video', - }, - - 'X (Twitter)': { - figure: TweetTooltip, - caption: 'Tweet', - }, - - Figma: { - figure: FigmaTooltip, - caption: 'Figma', - }, - - Linear: { - figure: LinearTooltip, - caption: 'Linear', - }, - Today: { figure: TodayTooltip, caption: 'Today', diff --git a/blocksuite/affine/widget-slash-menu/src/tooltips/tweet.ts b/blocksuite/affine/widget-slash-menu/src/tooltips/tweet.ts deleted file mode 100644 index 734bff4bf3..0000000000 --- a/blocksuite/affine/widget-slash-menu/src/tooltips/tweet.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { html } from 'lit'; -// prettier-ignore -export const TweetTooltip = html` - - - - - - -Embed a X post (tweet). - - -To Shape, Not to Adapt. - -AFFiNE -@AFFiNEOfficial - - - - - - - - - - - - - - - - -`; diff --git a/blocksuite/affine/widget-slash-menu/src/utils.ts b/blocksuite/affine/widget-slash-menu/src/utils.ts index d718f1256c..428c162c67 100644 --- a/blocksuite/affine/widget-slash-menu/src/utils.ts +++ b/blocksuite/affine/widget-slash-menu/src/utils.ts @@ -1,5 +1,3 @@ -import type { BlockModel } from '@blocksuite/store'; - import type { SlashMenuActionItem, SlashMenuConfig, @@ -84,12 +82,6 @@ export function mergeSlashMenuConfigs( }; } -export function tryRemoveEmptyLine(model: BlockModel) { - if (model.text?.length === 0) { - model.doc.deleteBlock(model); - } -} - export function formatDate(date: Date) { // yyyy-mm-dd const year = date.getFullYear(); diff --git a/blocksuite/affine/widget-slash-menu/tsconfig.json b/blocksuite/affine/widget-slash-menu/tsconfig.json index 4a4c03c78c..3aff78deea 100644 --- a/blocksuite/affine/widget-slash-menu/tsconfig.json +++ b/blocksuite/affine/widget-slash-menu/tsconfig.json @@ -7,7 +7,6 @@ }, "include": ["./src"], "references": [ - { "path": "../block-embed" }, { "path": "../block-surface" }, { "path": "../block-surface-ref" }, { "path": "../components" }, diff --git a/tools/utils/src/workspace.gen.ts b/tools/utils/src/workspace.gen.ts index 5526a00932..55d869b9d7 100644 --- a/tools/utils/src/workspace.gen.ts +++ b/tools/utils/src/workspace.gen.ts @@ -142,6 +142,7 @@ export const PackageList = [ 'blocksuite/affine/model', 'blocksuite/affine/rich-text', 'blocksuite/affine/shared', + 'blocksuite/affine/widget-slash-menu', 'blocksuite/framework/block-std', 'blocksuite/framework/global', 'blocksuite/framework/inline', @@ -494,7 +495,6 @@ export const PackageList = [ location: 'blocksuite/affine/widget-slash-menu', name: '@blocksuite/affine-widget-slash-menu', workspaceDependencies: [ - 'blocksuite/affine/block-embed', 'blocksuite/affine/block-surface', 'blocksuite/affine/block-surface-ref', 'blocksuite/affine/components', diff --git a/yarn.lock b/yarn.lock index b089284f17..3c56227c56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2426,6 +2426,7 @@ __metadata: "@blocksuite/affine-model": "workspace:*" "@blocksuite/affine-rich-text": "workspace:*" "@blocksuite/affine-shared": "workspace:*" + "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" "@blocksuite/icons": "npm:^2.2.1" @@ -3039,7 +3040,6 @@ __metadata: version: 0.0.0-use.local resolution: "@blocksuite/affine-widget-slash-menu@workspace:blocksuite/affine/widget-slash-menu" dependencies: - "@blocksuite/affine-block-embed": "workspace:*" "@blocksuite/affine-block-surface": "workspace:*" "@blocksuite/affine-block-surface-ref": "workspace:*" "@blocksuite/affine-components": "workspace:*"