diff --git a/blocksuite/affine/block-latex/package.json b/blocksuite/affine/block-latex/package.json index a1bbea01c9..bacad3a7cd 100644 --- a/blocksuite/affine/block-latex/package.json +++ b/blocksuite/affine/block-latex/package.json @@ -16,9 +16,12 @@ "@blocksuite/affine-block-note": "workspace:*", "@blocksuite/affine-components": "workspace:*", "@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", "@blocksuite/inline": "workspace:*", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", diff --git a/blocksuite/affine/block-latex/src/configs/slash-menu.ts b/blocksuite/affine/block-latex/src/configs/slash-menu.ts new file mode 100644 index 0000000000..51b08426d6 --- /dev/null +++ b/blocksuite/affine/block-latex/src/configs/slash-menu.ts @@ -0,0 +1,45 @@ +import { insertInlineLatex } from '@blocksuite/affine-rich-text'; +import { + getSelectedModelsCommand, + getTextSelectionCommand, +} from '@blocksuite/affine-shared/commands'; +import { type SlashMenuConfig } from '@blocksuite/affine-widget-slash-menu'; +import { TeXIcon } from '@blocksuite/icons/lit'; + +import { insertLatexBlockCommand } from '../commands'; + +export const latexSlashMenuConfig: SlashMenuConfig = { + items: [ + { + name: 'Inline equation', + group: '0_Basic@8', + description: 'Create a inline equation.', + icon: TeXIcon(), + searchAlias: ['inlineMath, inlineEquation', 'inlineLatex'], + action: ({ std }) => { + std.command + .chain() + .pipe(getTextSelectionCommand) + .pipe(insertInlineLatex) + .run(); + }, + }, + { + name: 'Equation', + description: 'Create a equation block.', + icon: TeXIcon(), + searchAlias: ['mathBlock, equationBlock', 'latexBlock'], + group: '4_Content & Media@9', + action: ({ std }) => { + std.command + .chain() + .pipe(getSelectedModelsCommand) + .pipe(insertLatexBlockCommand, { + place: 'after', + removeEmptyLine: true, + }) + .run(); + }, + }, + ], +}; diff --git a/blocksuite/affine/block-latex/src/latex-spec.ts b/blocksuite/affine/block-latex/src/latex-spec.ts index 740de1eb15..06c22844e0 100644 --- a/blocksuite/affine/block-latex/src/latex-spec.ts +++ b/blocksuite/affine/block-latex/src/latex-spec.ts @@ -1,10 +1,13 @@ +import { SlashMenuConfigExtension } from '@blocksuite/affine-widget-slash-menu'; import { BlockViewExtension } from '@blocksuite/block-std'; import type { ExtensionType } from '@blocksuite/store'; import { literal } from 'lit/static-html.js'; import { LatexBlockAdapterExtensions } from './adapters/extension.js'; +import { latexSlashMenuConfig } from './configs/slash-menu.js'; export const LatexBlockSpec: ExtensionType[] = [ BlockViewExtension('affine:latex', literal`affine-latex`), LatexBlockAdapterExtensions, + SlashMenuConfigExtension('affine:latex', latexSlashMenuConfig), ].flat(); diff --git a/blocksuite/affine/block-latex/tsconfig.json b/blocksuite/affine/block-latex/tsconfig.json index 5617ed4f35..0f980ec951 100644 --- a/blocksuite/affine/block-latex/tsconfig.json +++ b/blocksuite/affine/block-latex/tsconfig.json @@ -10,7 +10,9 @@ { "path": "../block-note" }, { "path": "../components" }, { "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 2de2b2d46d..54203787bd 100644 --- a/blocksuite/affine/widget-slash-menu/package.json +++ b/blocksuite/affine/widget-slash-menu/package.json @@ -14,7 +14,6 @@ "license": "MIT", "dependencies": { "@blocksuite/affine-block-embed": "workspace:*", - "@blocksuite/affine-block-latex": "workspace:*", "@blocksuite/affine-block-note": "workspace:*", "@blocksuite/affine-block-surface": "workspace:*", "@blocksuite/affine-block-surface-ref": "workspace:*", diff --git a/blocksuite/affine/widget-slash-menu/src/config.ts b/blocksuite/affine/widget-slash-menu/src/config.ts index 3fb0e55557..68a50981ac 100644 --- a/blocksuite/affine/widget-slash-menu/src/config.ts +++ b/blocksuite/affine/widget-slash-menu/src/config.ts @@ -1,4 +1,3 @@ -import { insertLatexBlockCommand } from '@blocksuite/affine-block-latex'; import { getSurfaceBlock } from '@blocksuite/affine-block-surface'; import { insertSurfaceRefBlockCommand } from '@blocksuite/affine-block-surface-ref'; import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal'; @@ -10,14 +9,10 @@ import type { import { getInlineEditorByModel, insertContent, - insertInlineLatex, textConversionConfigs, textFormatConfigs, } from '@blocksuite/affine-rich-text'; -import { - getSelectedModelsCommand, - getTextSelectionCommand, -} from '@blocksuite/affine-shared/commands'; +import { getSelectedModelsCommand } from '@blocksuite/affine-shared/commands'; import { REFERENCE_NODE } from '@blocksuite/affine-shared/consts'; import { createDefaultDoc } from '@blocksuite/affine-shared/utils'; import { @@ -35,7 +30,6 @@ import { LoomLogoDuotoneIcon, NowIcon, PlusIcon, - TeXIcon, TodayIcon, TomorrowIcon, YesterdayIcon, @@ -91,21 +85,6 @@ export const defaultSlashMenuConfig: SlashMenuConfig = { }) satisfies SlashMenuActionItem ), - { - name: 'Inline equation', - group: `0_Basic@${index++}`, - description: 'Create a equation block.', - icon: TeXIcon(), - searchAlias: ['inlineMath, inlineEquation', 'inlineLatex'], - action: ({ std }) => { - std.command - .chain() - .pipe(getTextSelectionCommand) - .pipe(insertInlineLatex) - .run(); - }, - }, - // --------------------------------------------------------- // { groupName: 'List' }, ...textConversionConfigs @@ -287,24 +266,6 @@ export const defaultSlashMenuConfig: SlashMenuConfig = { }, }, - { - name: 'Equation', - description: 'Create a equation block.', - icon: TeXIcon(), - searchAlias: ['mathBlock, equationBlock', 'latexBlock'], - group: `4_Content & Media@${index++}`, - action: ({ std }) => { - std.command - .chain() - .pipe(getSelectedModelsCommand) - .pipe(insertLatexBlockCommand, { - place: 'after', - removeEmptyLine: true, - }) - .run(); - }, - }, - // TODO(@L-Sun): Linear // --------------------------------------------------------- diff --git a/blocksuite/affine/widget-slash-menu/tsconfig.json b/blocksuite/affine/widget-slash-menu/tsconfig.json index ea6d81ff3c..618156a638 100644 --- a/blocksuite/affine/widget-slash-menu/tsconfig.json +++ b/blocksuite/affine/widget-slash-menu/tsconfig.json @@ -8,7 +8,6 @@ "include": ["./src"], "references": [ { "path": "../block-embed" }, - { "path": "../block-latex" }, { "path": "../block-note" }, { "path": "../block-surface" }, { "path": "../block-surface-ref" }, diff --git a/tools/utils/src/workspace.gen.ts b/tools/utils/src/workspace.gen.ts index 7c3d2acc85..36ef45aabd 100644 --- a/tools/utils/src/workspace.gen.ts +++ b/tools/utils/src/workspace.gen.ts @@ -185,7 +185,9 @@ export const PackageList = [ 'blocksuite/affine/block-note', 'blocksuite/affine/components', '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', @@ -492,7 +494,6 @@ export const PackageList = [ name: '@blocksuite/affine-widget-slash-menu', workspaceDependencies: [ 'blocksuite/affine/block-embed', - 'blocksuite/affine/block-latex', 'blocksuite/affine/block-note', 'blocksuite/affine/block-surface', 'blocksuite/affine/block-surface-ref', diff --git a/yarn.lock b/yarn.lock index 3dc4c108b1..1d4a69a9a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2502,9 +2502,12 @@ __metadata: "@blocksuite/affine-block-note": "workspace:*" "@blocksuite/affine-components": "workspace:*" "@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" "@blocksuite/inline": "workspace:*" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" @@ -3036,7 +3039,6 @@ __metadata: resolution: "@blocksuite/affine-widget-slash-menu@workspace:blocksuite/affine/widget-slash-menu" dependencies: "@blocksuite/affine-block-embed": "workspace:*" - "@blocksuite/affine-block-latex": "workspace:*" "@blocksuite/affine-block-note": "workspace:*" "@blocksuite/affine-block-surface": "workspace:*" "@blocksuite/affine-block-surface-ref": "workspace:*"