refactor(editor): latex slash menu config extension (#10677)
This commit is contained in:
@@ -16,9 +16,12 @@
|
|||||||
"@blocksuite/affine-block-note": "workspace:*",
|
"@blocksuite/affine-block-note": "workspace:*",
|
||||||
"@blocksuite/affine-components": "workspace:*",
|
"@blocksuite/affine-components": "workspace:*",
|
||||||
"@blocksuite/affine-model": "workspace:*",
|
"@blocksuite/affine-model": "workspace:*",
|
||||||
|
"@blocksuite/affine-rich-text": "workspace:*",
|
||||||
"@blocksuite/affine-shared": "workspace:*",
|
"@blocksuite/affine-shared": "workspace:*",
|
||||||
|
"@blocksuite/affine-widget-slash-menu": "workspace:*",
|
||||||
"@blocksuite/block-std": "workspace:*",
|
"@blocksuite/block-std": "workspace:*",
|
||||||
"@blocksuite/global": "workspace:*",
|
"@blocksuite/global": "workspace:*",
|
||||||
|
"@blocksuite/icons": "^2.2.1",
|
||||||
"@blocksuite/inline": "workspace:*",
|
"@blocksuite/inline": "workspace:*",
|
||||||
"@blocksuite/store": "workspace:*",
|
"@blocksuite/store": "workspace:*",
|
||||||
"@floating-ui/dom": "^1.6.13",
|
"@floating-ui/dom": "^1.6.13",
|
||||||
|
|||||||
45
blocksuite/affine/block-latex/src/configs/slash-menu.ts
Normal file
45
blocksuite/affine/block-latex/src/configs/slash-menu.ts
Normal file
@@ -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();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
|
import { SlashMenuConfigExtension } from '@blocksuite/affine-widget-slash-menu';
|
||||||
import { BlockViewExtension } from '@blocksuite/block-std';
|
import { BlockViewExtension } from '@blocksuite/block-std';
|
||||||
import type { ExtensionType } from '@blocksuite/store';
|
import type { ExtensionType } from '@blocksuite/store';
|
||||||
import { literal } from 'lit/static-html.js';
|
import { literal } from 'lit/static-html.js';
|
||||||
|
|
||||||
import { LatexBlockAdapterExtensions } from './adapters/extension.js';
|
import { LatexBlockAdapterExtensions } from './adapters/extension.js';
|
||||||
|
import { latexSlashMenuConfig } from './configs/slash-menu.js';
|
||||||
|
|
||||||
export const LatexBlockSpec: ExtensionType[] = [
|
export const LatexBlockSpec: ExtensionType[] = [
|
||||||
BlockViewExtension('affine:latex', literal`affine-latex`),
|
BlockViewExtension('affine:latex', literal`affine-latex`),
|
||||||
LatexBlockAdapterExtensions,
|
LatexBlockAdapterExtensions,
|
||||||
|
SlashMenuConfigExtension('affine:latex', latexSlashMenuConfig),
|
||||||
].flat();
|
].flat();
|
||||||
|
|||||||
@@ -10,7 +10,9 @@
|
|||||||
{ "path": "../block-note" },
|
{ "path": "../block-note" },
|
||||||
{ "path": "../components" },
|
{ "path": "../components" },
|
||||||
{ "path": "../model" },
|
{ "path": "../model" },
|
||||||
|
{ "path": "../rich-text" },
|
||||||
{ "path": "../shared" },
|
{ "path": "../shared" },
|
||||||
|
{ "path": "../widget-slash-menu" },
|
||||||
{ "path": "../../framework/block-std" },
|
{ "path": "../../framework/block-std" },
|
||||||
{ "path": "../../framework/global" },
|
{ "path": "../../framework/global" },
|
||||||
{ "path": "../../framework/inline" },
|
{ "path": "../../framework/inline" },
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@blocksuite/affine-block-embed": "workspace:*",
|
"@blocksuite/affine-block-embed": "workspace:*",
|
||||||
"@blocksuite/affine-block-latex": "workspace:*",
|
|
||||||
"@blocksuite/affine-block-note": "workspace:*",
|
"@blocksuite/affine-block-note": "workspace:*",
|
||||||
"@blocksuite/affine-block-surface": "workspace:*",
|
"@blocksuite/affine-block-surface": "workspace:*",
|
||||||
"@blocksuite/affine-block-surface-ref": "workspace:*",
|
"@blocksuite/affine-block-surface-ref": "workspace:*",
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { insertLatexBlockCommand } from '@blocksuite/affine-block-latex';
|
|
||||||
import { getSurfaceBlock } from '@blocksuite/affine-block-surface';
|
import { getSurfaceBlock } from '@blocksuite/affine-block-surface';
|
||||||
import { insertSurfaceRefBlockCommand } from '@blocksuite/affine-block-surface-ref';
|
import { insertSurfaceRefBlockCommand } from '@blocksuite/affine-block-surface-ref';
|
||||||
import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal';
|
import { toggleEmbedCardCreateModal } from '@blocksuite/affine-components/embed-card-modal';
|
||||||
@@ -10,14 +9,10 @@ import type {
|
|||||||
import {
|
import {
|
||||||
getInlineEditorByModel,
|
getInlineEditorByModel,
|
||||||
insertContent,
|
insertContent,
|
||||||
insertInlineLatex,
|
|
||||||
textConversionConfigs,
|
textConversionConfigs,
|
||||||
textFormatConfigs,
|
textFormatConfigs,
|
||||||
} from '@blocksuite/affine-rich-text';
|
} from '@blocksuite/affine-rich-text';
|
||||||
import {
|
import { getSelectedModelsCommand } from '@blocksuite/affine-shared/commands';
|
||||||
getSelectedModelsCommand,
|
|
||||||
getTextSelectionCommand,
|
|
||||||
} from '@blocksuite/affine-shared/commands';
|
|
||||||
import { REFERENCE_NODE } from '@blocksuite/affine-shared/consts';
|
import { REFERENCE_NODE } from '@blocksuite/affine-shared/consts';
|
||||||
import { createDefaultDoc } from '@blocksuite/affine-shared/utils';
|
import { createDefaultDoc } from '@blocksuite/affine-shared/utils';
|
||||||
import {
|
import {
|
||||||
@@ -35,7 +30,6 @@ import {
|
|||||||
LoomLogoDuotoneIcon,
|
LoomLogoDuotoneIcon,
|
||||||
NowIcon,
|
NowIcon,
|
||||||
PlusIcon,
|
PlusIcon,
|
||||||
TeXIcon,
|
|
||||||
TodayIcon,
|
TodayIcon,
|
||||||
TomorrowIcon,
|
TomorrowIcon,
|
||||||
YesterdayIcon,
|
YesterdayIcon,
|
||||||
@@ -91,21 +85,6 @@ export const defaultSlashMenuConfig: SlashMenuConfig = {
|
|||||||
}) satisfies SlashMenuActionItem
|
}) 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' },
|
// { groupName: 'List' },
|
||||||
...textConversionConfigs
|
...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
|
// TODO(@L-Sun): Linear
|
||||||
|
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
"include": ["./src"],
|
"include": ["./src"],
|
||||||
"references": [
|
"references": [
|
||||||
{ "path": "../block-embed" },
|
{ "path": "../block-embed" },
|
||||||
{ "path": "../block-latex" },
|
|
||||||
{ "path": "../block-note" },
|
{ "path": "../block-note" },
|
||||||
{ "path": "../block-surface" },
|
{ "path": "../block-surface" },
|
||||||
{ "path": "../block-surface-ref" },
|
{ "path": "../block-surface-ref" },
|
||||||
|
|||||||
@@ -185,7 +185,9 @@ export const PackageList = [
|
|||||||
'blocksuite/affine/block-note',
|
'blocksuite/affine/block-note',
|
||||||
'blocksuite/affine/components',
|
'blocksuite/affine/components',
|
||||||
'blocksuite/affine/model',
|
'blocksuite/affine/model',
|
||||||
|
'blocksuite/affine/rich-text',
|
||||||
'blocksuite/affine/shared',
|
'blocksuite/affine/shared',
|
||||||
|
'blocksuite/affine/widget-slash-menu',
|
||||||
'blocksuite/framework/block-std',
|
'blocksuite/framework/block-std',
|
||||||
'blocksuite/framework/global',
|
'blocksuite/framework/global',
|
||||||
'blocksuite/framework/inline',
|
'blocksuite/framework/inline',
|
||||||
@@ -492,7 +494,6 @@ export const PackageList = [
|
|||||||
name: '@blocksuite/affine-widget-slash-menu',
|
name: '@blocksuite/affine-widget-slash-menu',
|
||||||
workspaceDependencies: [
|
workspaceDependencies: [
|
||||||
'blocksuite/affine/block-embed',
|
'blocksuite/affine/block-embed',
|
||||||
'blocksuite/affine/block-latex',
|
|
||||||
'blocksuite/affine/block-note',
|
'blocksuite/affine/block-note',
|
||||||
'blocksuite/affine/block-surface',
|
'blocksuite/affine/block-surface',
|
||||||
'blocksuite/affine/block-surface-ref',
|
'blocksuite/affine/block-surface-ref',
|
||||||
|
|||||||
@@ -2502,9 +2502,12 @@ __metadata:
|
|||||||
"@blocksuite/affine-block-note": "workspace:*"
|
"@blocksuite/affine-block-note": "workspace:*"
|
||||||
"@blocksuite/affine-components": "workspace:*"
|
"@blocksuite/affine-components": "workspace:*"
|
||||||
"@blocksuite/affine-model": "workspace:*"
|
"@blocksuite/affine-model": "workspace:*"
|
||||||
|
"@blocksuite/affine-rich-text": "workspace:*"
|
||||||
"@blocksuite/affine-shared": "workspace:*"
|
"@blocksuite/affine-shared": "workspace:*"
|
||||||
|
"@blocksuite/affine-widget-slash-menu": "workspace:*"
|
||||||
"@blocksuite/block-std": "workspace:*"
|
"@blocksuite/block-std": "workspace:*"
|
||||||
"@blocksuite/global": "workspace:*"
|
"@blocksuite/global": "workspace:*"
|
||||||
|
"@blocksuite/icons": "npm:^2.2.1"
|
||||||
"@blocksuite/inline": "workspace:*"
|
"@blocksuite/inline": "workspace:*"
|
||||||
"@blocksuite/store": "workspace:*"
|
"@blocksuite/store": "workspace:*"
|
||||||
"@floating-ui/dom": "npm:^1.6.13"
|
"@floating-ui/dom": "npm:^1.6.13"
|
||||||
@@ -3036,7 +3039,6 @@ __metadata:
|
|||||||
resolution: "@blocksuite/affine-widget-slash-menu@workspace:blocksuite/affine/widget-slash-menu"
|
resolution: "@blocksuite/affine-widget-slash-menu@workspace:blocksuite/affine/widget-slash-menu"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@blocksuite/affine-block-embed": "workspace:*"
|
"@blocksuite/affine-block-embed": "workspace:*"
|
||||||
"@blocksuite/affine-block-latex": "workspace:*"
|
|
||||||
"@blocksuite/affine-block-note": "workspace:*"
|
"@blocksuite/affine-block-note": "workspace:*"
|
||||||
"@blocksuite/affine-block-surface": "workspace:*"
|
"@blocksuite/affine-block-surface": "workspace:*"
|
||||||
"@blocksuite/affine-block-surface-ref": "workspace:*"
|
"@blocksuite/affine-block-surface-ref": "workspace:*"
|
||||||
|
|||||||
Reference in New Issue
Block a user