@jvs-milkdown/crepe 1.2.29 → 1.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/lib/cjs/builder.js +2 -1
  2. package/lib/cjs/builder.js.map +1 -1
  3. package/lib/cjs/feature/toolbar/index.js +84 -62
  4. package/lib/cjs/feature/toolbar/index.js.map +1 -1
  5. package/lib/cjs/index.js +1121 -988
  6. package/lib/cjs/index.js.map +1 -1
  7. package/lib/esm/builder.js +2 -1
  8. package/lib/esm/builder.js.map +1 -1
  9. package/lib/esm/feature/toolbar/index.js +84 -62
  10. package/lib/esm/feature/toolbar/index.js.map +1 -1
  11. package/lib/esm/index.js +1143 -1010
  12. package/lib/esm/index.js.map +1 -1
  13. package/lib/theme/common/image-block.css +5 -1
  14. package/lib/theme/common/reset.css +1 -1
  15. package/lib/theme/common/table.css +5 -0
  16. package/lib/theme/common/toolbar.css +23 -0
  17. package/lib/tsconfig.tsbuildinfo +1 -1
  18. package/lib/types/feature/fixed-toolbar/component.d.ts +2 -2
  19. package/lib/types/feature/fixed-toolbar/component.d.ts.map +1 -1
  20. package/lib/types/feature/fixed-toolbar/index.d.ts +2 -0
  21. package/lib/types/feature/fixed-toolbar/index.d.ts.map +1 -1
  22. package/lib/types/feature/fixed-toolbar/outline-panel.d.ts.map +1 -1
  23. package/lib/types/feature/fixed-toolbar/view-menu-state.d.ts +3 -0
  24. package/lib/types/feature/fixed-toolbar/view-menu-state.d.ts.map +1 -1
  25. package/lib/types/feature/toolbar/component.d.ts +2 -2
  26. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  27. package/lib/types/feature/toolbar/index.d.ts.map +1 -1
  28. package/package.json +4 -4
  29. package/src/feature/fixed-toolbar/component.tsx +203 -110
  30. package/src/feature/fixed-toolbar/index.ts +30 -8
  31. package/src/feature/fixed-toolbar/outline-panel.tsx +1 -2
  32. package/src/feature/fixed-toolbar/view-menu-state.ts +2 -0
  33. package/src/feature/toolbar/component.tsx +57 -44
  34. package/src/feature/toolbar/index.ts +9 -13
  35. package/src/theme/common/image-block.css +6 -1
  36. package/src/theme/common/reset.css +1 -1
  37. package/src/theme/common/table.css +5 -0
  38. package/src/theme/common/toolbar.css +30 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/feature/toolbar/color.ts","../../../../src/icons/align-center.ts","../../../../src/icons/align-left.ts","../../../../src/icons/align-right.ts","../../../../src/icons/bold.ts","../../../../src/icons/bullet-list.ts","../../../../src/icons/chevron-down.ts","../../../../src/icons/clear.ts","../../../../src/icons/code.ts","../../../../src/icons/confirm.ts","../../../../src/icons/copy.ts","../../../../src/icons/divider.ts","../../../../src/icons/edit.ts","../../../../src/icons/h1.ts","../../../../src/icons/h2.ts","../../../../src/icons/h3.ts","../../../../src/icons/h4.ts","../../../../src/icons/h5.ts","../../../../src/icons/h6.ts","../../../../src/icons/image.ts","../../../../src/icons/italic.ts","../../../../src/icons/link.ts","../../../../src/icons/ordered-list.ts","../../../../src/icons/plus.ts","../../../../src/icons/quote.ts","../../../../src/icons/remove.ts","../../../../src/icons/strikethrough.ts","../../../../src/icons/table.ts","../../../../src/icons/text.ts","../../../../src/icons/todo-list.ts","../../../../src/icons/functions.ts","../../../../src/icons/indent-increase.ts","../../../../src/icons/indent-decrease.ts","../../../../src/icons/underline.ts","../../../../src/icons/font-color.ts","../../../../src/icons/high-line-code.ts","../../../../src/icons/file-link.ts","../../../../src/icons/line-code.ts","../../../../src/icons/merge-cell.ts","../../../../src/icons/more.ts","../../../../src/icons/split-cell.ts","../../../../src/icons/format-painter.ts","../../../../src/utils/fixed-toolbar-popup-state.ts","../../../../src/utils/keep-alive.ts","../../../../src/utils/group-builder.ts","../../../../src/feature/block-edit/menu/api.ts","../../../../src/feature/attachment/schema.ts","../../../../src/feature/latex/inline-latex.ts","../../../../src/feature/latex/command.ts","../../../../src/feature/block-edit/menu/config.ts","../../../../src/feature/block-edit/menu/component.tsx","../../../../src/feature/block-edit/menu/index.ts","../../../../src/feature/toolbar/highlight-mark.ts","../../../../src/feature/toolbar/underline.ts","../../../../src/feature/toolbar/config.ts","../../../../src/feature/toolbar/font.ts","../../../../src/feature/toolbar/component.tsx","../../../../src/feature/toolbar/index.ts"],"sourcesContent":["import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { createSlice } from '@jvs-milkdown/kit/ctx'\n\nexport const zhCN = {\n // block handle\n 'handle.add': '插入内容',\n 'handle.menu': '点击打开菜单',\n 'handle.drag': '拖拽移动位置',\n // placeholder\n 'placeholder.text': \"输入正文或 '/' 快速插入内容\",\n\n // toolbar\n 'toolbar.heading': '标题',\n 'toolbar.formatting': '格式',\n 'toolbar.function': '功能',\n 'toolbar.formatPainter': '格式刷',\n\n // menu bar\n 'menuBar.file': '文件',\n 'menuBar.edit': '编辑',\n 'menuBar.view': '视图',\n 'menuBar.insert': '插入',\n 'menuBar.format': '格式',\n\n // view menu\n 'view.outline': '大纲面板',\n 'view.outlineLeft': '在左侧显示',\n 'view.outlineRight': '在右侧显示',\n 'view.docBackground': '文档背景色',\n 'view.title': '显示标题',\n 'view.cover': '显示封面',\n 'view.editorWidth': '内容宽度',\n 'view.widthDefault': '默认',\n 'view.widthWide': '较宽',\n 'view.widthFull': '全宽',\n\n // code-mirror\n 'codeMirror.searchPlaceholder': '搜索语言',\n 'codeMirror.noResultText': '无结果',\n 'codeMirror.previewToggleOptionEdit': '编辑',\n 'codeMirror.previewToggleOptionHide': '隐藏',\n 'codeMirror.previewLabel': '预览',\n 'codeMirror.wrapText': '自动换行',\n\n // link-tooltip\n 'linkTooltip.pasteLink': '粘贴链接...',\n\n // image-block\n 'imageBlock.inlineUploadButton': '上传',\n 'imageBlock.inlineUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockUploadButton': '上传文件',\n 'imageBlock.blockUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockCaptionPlaceholder': '写下图片描述...',\n 'imageBlock.blockConfirmButton': '确定',\n\n // attachment-block\n 'attachmentBlock.uploadButton': '上传文件',\n 'attachmentBlock.uploadPlaceholderText': '或点击上传',\n 'attachmentBlock.download': '下载',\n\n // menu categories\n 'menu.group.text': '正文',\n 'menu.group.block': '段落',\n 'menu.group.list': '列表',\n 'menu.group.advanced': '高级',\n\n // menu items\n 'menu.item.text': '普通文本',\n 'menu.item.h1': '标题 1',\n 'menu.item.h2': '标题 2',\n 'menu.item.h3': '标题 3',\n 'menu.item.h4': '标题 4',\n 'menu.item.h5': '标题 5',\n 'menu.item.h6': '标题 6',\n 'menu.item.quote': '引用',\n 'menu.item.divider': '分割线',\n 'menu.item.bulletList': '无序列表',\n 'menu.item.orderedList': '有序列表',\n 'menu.item.taskList': '任务列表',\n 'menu.item.image': '图片',\n 'menu.item.attachment': '视频或文件',\n 'menu.item.code': '代码块',\n 'menu.item.table': '表格',\n 'menu.item.math': '公式',\n 'menu.item.bold': '加粗',\n 'menu.item.italic': '斜体',\n 'menu.item.strikethrough': '删除线',\n 'menu.item.underline': '下划线',\n 'menu.item.highlight': '高亮',\n 'menu.item.lineCode': '行内代码',\n 'menu.item.link': '链接',\n\n // menu tooltips\n 'menu.tooltip.text': '普通文本 (Ctrl+Alt+0)',\n 'menu.tooltip.h1': '标题 1 (Ctrl+Alt+1)\\nMarkdown: # 空格',\n 'menu.tooltip.h2': '标题 2 (Ctrl+Alt+2)\\nMarkdown: ## 空格',\n 'menu.tooltip.h3': '标题 3 (Ctrl+Alt+3)\\nMarkdown: ### 空格',\n 'menu.tooltip.h4': '标题 4 (Ctrl+Alt+4)\\nMarkdown: #### 空格',\n 'menu.tooltip.h5': '标题 5 (Ctrl+Alt+5)\\nMarkdown: ##### 空格',\n 'menu.tooltip.h6': '标题 6 (Ctrl+Alt+6)\\nMarkdown: ###### 空格',\n 'menu.tooltip.quote': '引用 (Ctrl+Shift+9)\\nMarkdown: > 空格',\n 'menu.tooltip.divider': '分割线\\nMarkdown: --- 空格',\n 'menu.tooltip.bulletList':\n '无序列表 (Ctrl+Shift+8)\\nMarkdown: - 空格 或 * 空格',\n 'menu.tooltip.orderedList': '有序列表 (Ctrl+Shift+7)\\nMarkdown: 1. 空格',\n 'menu.tooltip.taskList': '任务列表\\nMarkdown: - [ ] 空格',\n 'menu.tooltip.image': '图片\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': '代码块 (Ctrl+Shift+\\\\)\\nMarkdown: ``` 回车',\n 'menu.tooltip.table': '表格\\nMarkdown: | | |',\n 'menu.tooltip.math': '公式\\nMarkdown: $$ 回车',\n\n // custom block menu items\n 'customMenu.indentAndAlign': '缩进和对齐',\n 'customMenu.color': '颜色',\n 'customMenu.cut': '剪切',\n 'customMenu.copy': '复制',\n 'customMenu.delete': '删除',\n 'customMenu.addBelow': '在下方添加',\n 'customMenu.alignLeft': '左对齐',\n 'customMenu.alignCenter': '居中对齐',\n 'customMenu.alignRight': '右对齐',\n 'customMenu.increaseIndent': '增加缩进',\n 'customMenu.decreaseIndent': '减少缩进',\n 'customMenu.textColor': '字体颜色',\n 'customMenu.bgColor': '背景颜色',\n 'customMenu.restoreDefault': '恢复默认',\n 'customMenu.colorDefault': '默认',\n 'customMenu.colorRed': '红色',\n 'customMenu.colorOrange': '橙色',\n 'customMenu.colorYellow': '黄色',\n 'customMenu.colorGreen': '绿色',\n 'customMenu.colorBlue': '蓝色',\n 'customMenu.colorPurple': '紫色',\n 'customMenu.colorGray': '灰色',\n 'customMenu.insertTable': '插入支持富文本的表格',\n 'customMenu.export': '导出',\n 'customMenu.import': '导入',\n\n 'customMenu.fontDefault': '默认',\n 'font.fangSong': '仿宋',\n 'font.stFangsong': '华文仿宋',\n 'font.stSong': '华文宋体',\n 'font.stKaiti': '华文楷体',\n 'font.simSun': '宋体',\n 'font.microsoftYaHei': '微软雅黑',\n 'font.kaiTi': '楷体',\n 'font.simHei': '黑体',\n\n // latex\n 'latex.escToExit': '按 ESC 完成输入',\n 'latex.helpDoc': '查看帮助文档',\n 'latex.emptyPlaceholder': '添加 LaTeX 公式',\n 'latex.inputPlaceholder': '请输入公式',\n\n // shortcuts\n 'shortcuts.title': '键盘快捷键',\n 'shortcuts.formatting': '文本格式',\n 'shortcuts.bold': '加粗',\n 'shortcuts.italic': '斜体',\n 'shortcuts.underline': '下划线',\n 'shortcuts.strikethrough': '删除线',\n 'shortcuts.inlineCode': '行内代码',\n 'shortcuts.highlight': '高亮',\n 'shortcuts.paragraph': '段落',\n 'shortcuts.heading': '标题',\n 'shortcuts.block': '块级元素',\n 'shortcuts.codeBlock': '代码块',\n 'shortcuts.blockquote': '引用',\n 'shortcuts.orderedList': '有序列表',\n 'shortcuts.bulletList': '无序列表',\n 'shortcuts.indent': '增加缩进',\n 'shortcuts.outdent': '减少缩进',\n 'shortcuts.hardBreak': '换行',\n 'shortcuts.history': '历史记录',\n 'shortcuts.undo': '撤销',\n 'shortcuts.redo': '重做',\n\n // inline-diff\n 'inlineDiff.accept': '接受',\n 'inlineDiff.reject': '拒绝',\n}\n\nexport const enUS: typeof zhCN = {\n 'handle.add': 'Add content',\n 'handle.menu': 'Open menu',\n 'handle.drag': 'Drag to move',\n 'placeholder.text': \"Type '/' to use slash menu\",\n\n 'toolbar.heading': 'Heading',\n 'toolbar.formatting': 'Formatting',\n 'toolbar.function': 'Function',\n 'toolbar.formatPainter': 'Format Painter',\n\n 'menuBar.file': 'File',\n 'menuBar.edit': 'Edit',\n 'menuBar.view': 'View',\n 'menuBar.insert': 'Insert',\n 'menuBar.format': 'Format',\n\n 'view.outline': 'Outline Panel',\n 'view.outlineLeft': 'Show on Left',\n 'view.outlineRight': 'Show on Right',\n 'view.docBackground': 'Document Background',\n 'view.title': 'Show Title',\n 'view.cover': 'Show Cover',\n 'view.editorWidth': 'Content Width',\n 'view.widthDefault': 'Default',\n 'view.widthWide': 'Wide',\n 'view.widthFull': 'Full Width',\n\n 'codeMirror.searchPlaceholder': 'Search language',\n 'codeMirror.noResultText': 'No result',\n 'codeMirror.previewToggleOptionEdit': 'Edit',\n 'codeMirror.previewToggleOptionHide': 'Hide',\n 'codeMirror.previewLabel': 'Preview',\n 'codeMirror.wrapText': 'Wrap',\n\n 'linkTooltip.pasteLink': 'Paste link...',\n\n 'imageBlock.inlineUploadButton': 'Upload',\n 'imageBlock.inlineUploadPlaceholder': 'or paste link',\n 'imageBlock.blockUploadButton': 'Upload file',\n 'imageBlock.blockUploadPlaceholder': 'or paste link',\n 'imageBlock.blockCaptionPlaceholder': 'Write Image Caption',\n 'imageBlock.blockConfirmButton': 'Confirm',\n\n 'attachmentBlock.uploadButton': 'Upload file',\n 'attachmentBlock.uploadPlaceholderText': 'or click to upload',\n 'attachmentBlock.download': 'Download',\n\n 'menu.group.text': 'Text',\n 'menu.group.block': 'Block',\n 'menu.group.list': 'List',\n 'menu.group.advanced': 'Advanced',\n\n 'menu.item.text': 'Text',\n 'menu.item.h1': 'Heading 1',\n 'menu.item.h2': 'Heading 2',\n 'menu.item.h3': 'Heading 3',\n 'menu.item.h4': 'Heading 4',\n 'menu.item.h5': 'Heading 5',\n 'menu.item.h6': 'Heading 6',\n 'menu.item.quote': 'Quote',\n 'menu.item.divider': 'Divider',\n 'menu.item.bulletList': 'Bullet List',\n 'menu.item.orderedList': 'Ordered List',\n 'menu.item.taskList': 'Task List',\n 'menu.item.image': 'Image',\n 'menu.item.attachment': 'Video or File',\n 'menu.item.code': 'Code',\n 'menu.item.table': 'Table',\n 'menu.item.math': 'Math',\n 'menu.item.bold': 'Bold',\n 'menu.item.italic': 'Italic',\n 'menu.item.strikethrough': 'Strikethrough',\n 'menu.item.underline': 'Underline',\n 'menu.item.highlight': 'Highlight',\n 'menu.item.lineCode': 'Inline Code',\n 'menu.item.link': 'Link',\n\n 'menu.tooltip.text': 'Text (Ctrl+Alt+0)',\n 'menu.tooltip.h1': 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space',\n 'menu.tooltip.h2': 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space',\n 'menu.tooltip.h3': 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space',\n 'menu.tooltip.h4': 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space',\n 'menu.tooltip.h5': 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space',\n 'menu.tooltip.h6': 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space',\n 'menu.tooltip.quote': 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space',\n 'menu.tooltip.divider': 'Divider\\nMarkdown: --- Space',\n 'menu.tooltip.bulletList':\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space',\n 'menu.tooltip.orderedList': 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space',\n 'menu.tooltip.taskList': 'Task List\\nMarkdown: - [ ] Space',\n 'menu.tooltip.image': 'Image\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter',\n 'menu.tooltip.table': 'Table\\nMarkdown: | | |',\n 'menu.tooltip.math': 'Math\\nMarkdown: $$ Enter',\n\n 'customMenu.indentAndAlign': 'Indent & Align',\n 'customMenu.color': 'Color',\n 'customMenu.cut': 'Cut',\n 'customMenu.copy': 'Copy',\n 'customMenu.delete': 'Delete',\n 'customMenu.addBelow': 'Add below',\n 'customMenu.alignLeft': 'Align Left',\n 'customMenu.alignCenter': 'Align Center',\n 'customMenu.alignRight': 'Align Right',\n 'customMenu.increaseIndent': 'Increase Indent',\n 'customMenu.decreaseIndent': 'Decrease Indent',\n 'customMenu.textColor': 'Text Color',\n 'customMenu.bgColor': 'Background Color',\n 'customMenu.restoreDefault': 'Restore Default',\n 'customMenu.colorDefault': 'Default',\n 'customMenu.colorRed': 'Red',\n 'customMenu.colorOrange': 'Orange',\n 'customMenu.colorYellow': 'Yellow',\n 'customMenu.colorGreen': 'Green',\n 'customMenu.colorBlue': 'Blue',\n 'customMenu.colorPurple': 'Purple',\n 'customMenu.colorGray': 'Gray',\n 'customMenu.insertTable': 'Insert Table',\n 'customMenu.export': 'Export',\n 'customMenu.import': 'Import',\n\n 'customMenu.fontDefault': 'Default',\n 'font.fangSong': 'FangSong',\n 'font.stFangsong': 'STFangsong',\n 'font.stSong': 'STSong',\n 'font.stKaiti': 'STKaiti',\n 'font.simSun': 'SimSun',\n 'font.microsoftYaHei': 'Microsoft YaHei',\n 'font.kaiTi': 'KaiTi',\n 'font.simHei': 'SimHei',\n\n 'latex.escToExit': 'Press ESC to finish',\n 'latex.helpDoc': 'Help Doc',\n 'latex.emptyPlaceholder': 'Add LaTeX',\n 'latex.inputPlaceholder': 'Please enter formula',\n\n 'shortcuts.title': 'Keyboard Shortcuts',\n 'shortcuts.formatting': 'Text Formatting',\n 'shortcuts.bold': 'Bold',\n 'shortcuts.italic': 'Italic',\n 'shortcuts.underline': 'Underline',\n 'shortcuts.strikethrough': 'Strikethrough',\n 'shortcuts.inlineCode': 'Inline Code',\n 'shortcuts.highlight': 'Highlight',\n 'shortcuts.paragraph': 'Paragraph',\n 'shortcuts.heading': 'Heading',\n 'shortcuts.block': 'Block Elements',\n 'shortcuts.codeBlock': 'Code Block',\n 'shortcuts.blockquote': 'Blockquote',\n 'shortcuts.orderedList': 'Ordered List',\n 'shortcuts.bulletList': 'Bullet List',\n 'shortcuts.indent': 'Indent',\n 'shortcuts.outdent': 'Outdent',\n 'shortcuts.hardBreak': 'Hard Break',\n 'shortcuts.history': 'History',\n 'shortcuts.undo': 'Undo',\n 'shortcuts.redo': 'Redo',\n\n 'inlineDiff.accept': 'Accept',\n 'inlineDiff.reject': 'Reject',\n}\n\nexport type CrepeTranslations = typeof zhCN\n\nexport const translationsCtx = createSlice<\n Record<string, Partial<CrepeTranslations>>\n>(\n {\n 'zh-CN': zhCN,\n 'en-US': enUS,\n },\n 'translationsCtx'\n)\n\nexport const localeCtx = createSlice('zh-CN', 'localeCtx')\n\nexport function i18n(ctx: Ctx, key: keyof CrepeTranslations): string {\n const translations = ctx.get(translationsCtx)\n const locale = ctx.get(localeCtx)\n return (\n translations[locale]?.[key] ??\n translations['zh-CN']?.[key] ??\n enUS[key] ??\n key\n )\n}\n","import { createSlice, type Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n\nexport { localeCtx, translationsCtx } from './locale'\n","import type { AttachmentFeatureConfig } from './attachment/config'\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { DiffBlockFeatureConfig } from './diff-block'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { InlineDiffFeatureConfig } from './inline-diff'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n\n /// Inline diff comparison between two document versions, similar to Word track changes.\n InlineDiff = 'inline-diff',\n\n /// Diff comparison block for showing code differences\n DiffBlock = 'diff-block',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n [CrepeFeature.InlineDiff]?: InlineDiffFeatureConfig\n [CrepeFeature.DiffBlock]?: DiffBlockFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n [CrepeFeature.InlineDiff]: false,\n [CrepeFeature.DiffBlock]: true,\n}\n","import type { Command } from '@jvs-milkdown/kit/prose/state'\n\nimport {\n $command,\n $markAttr,\n $markSchema,\n $remark,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkTextColorPlugin = $remark(\n 'remarkTextColor',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n textColor: (node: any, _: any, state: any) => {\n return `<span style=\"color:${node.color}\">${state.containerPhrasing(node, state)}</span>`\n },\n bgColor: (node: any, _: any, state: any) => {\n return `<span style=\"background-color:${node.color}\">${state.containerPhrasing(node, state)}</span>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value.startsWith('<span') &&\n parent &&\n index != null\n ) {\n const hasTextColor =\n node.value.includes('color:') &&\n !node.value.match(/background-color:\\s*([^\"';>]+)/)\n const hasBgColor = node.value.includes('background-color:')\n\n if (!hasTextColor && !hasBgColor) return\n\n let color = null\n let markType = null\n\n if (hasBgColor) {\n const match = node.value.match(/background-color:\\s*([^\"';>]+)/)\n color = match ? match[1].trim() : null\n markType = 'bgColor'\n } else if (hasTextColor) {\n const match = node.value.match(/color:\\s*([^\"';>]+)/)\n color = match ? match[1].trim() : null\n markType = 'textColor'\n }\n\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</span>'\n )\n\n if (endIndex !== -1 && color && markType) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n parent.children.splice(index, 0, {\n type: markType,\n color: color,\n children: content,\n })\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const textColorAttr = $markAttr('textColor')\n\nexport const textColorSchema = $markSchema('textColor', (_ctx) => ({\n inclusive: true,\n attrs: {\n color: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"color\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n if (dom.style.backgroundColor) return false // Prevent capturing background span as text color\n return { color: dom.style.color || null }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `color: ${mark.attrs.color}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'textColor',\n runner: (state, node, markType) => {\n state.openMark(markType, { color: node.color })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'textColor',\n runner: (state, mark) => {\n state.withMark(mark, 'textColor', undefined, { color: mark.attrs.color })\n },\n },\n}))\n\nexport const bgColorAttr = $markAttr('bgColor')\n\nexport const bgColorSchema = $markSchema('bgColor', (_ctx) => ({\n inclusive: true,\n attrs: {\n color: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"background-color\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n return { color: dom.style.backgroundColor || null }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `background-color: ${mark.attrs.color}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'bgColor',\n runner: (state, node, markType) => {\n state.openMark(markType, { color: node.color })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'bgColor',\n runner: (state, mark) => {\n state.withMark(mark, 'bgColor', undefined, { color: mark.attrs.color })\n },\n },\n}))\n\nexport const toggleTextColorCommand = $command(\n 'ToggleTextColor',\n (ctx) =>\n (color?: string | null): Command => {\n return (state, dispatch) => {\n const markType = textColorSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.color === color) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (color) tr = tr.addStoredMark(markType.create({ color }))\n }\n } else {\n let hasSameColor = false\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.color === color) {\n hasSameColor = true\n }\n }\n })\n }\n\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameColor && color) {\n tr = tr.addMark($from.pos, $to.pos, markType.create({ color }))\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\nexport const toggleBgColorCommand = $command(\n 'ToggleBgColor',\n (ctx) =>\n (color?: string | null): Command => {\n return (state, dispatch) => {\n const markType = bgColorSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.color === color) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (color) tr = tr.addStoredMark(markType.create({ color }))\n }\n } else {\n let hasSameColor = false\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.color === color) {\n hasSameColor = true\n }\n }\n })\n }\n\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameColor && color) {\n tr = tr.addMark($from.pos, $to.pos, markType.create({ color }))\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\nexport const colorPlugins = [\n textColorAttr,\n textColorSchema,\n toggleTextColorCommand,\n bgColorAttr,\n bgColorSchema,\n toggleBgColorCommand,\n remarkTextColorPlugin,\n]\n","export const alignCenterIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n ><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"52612\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52613\"></path><path d=\"M288 497.536c0 25.664 20.8 46.464 46.464 46.464h355.072a46.464 46.464 0 0 0 0-92.928H334.464c-25.664 0-46.464 20.8-46.464 46.464zM224 750.464c0 25.6 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H270.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#363B4C\" p-id=\"52614\"></path></svg>\n`\n\nexport const alignCenterIconActive = `\n<svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"52154\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"52155\"></path><path d=\"M288 497.536c0 25.664 20.8 46.464 46.464 46.464h355.072a46.464 46.464 0 0 0 0-92.928H334.464c-25.664 0-46.464 20.8-46.464 46.464zM224 750.464c0 25.6 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H270.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#1E6FFF\" p-id=\"52156\"></path></svg>\n`\n","export const alignLeftIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"52306\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52307\"></path><path d=\"M128 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52308\"></path><path d=\"M128 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H174.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#363B4C\" p-id=\"52309\"></path></svg>\n`\nexport const alignLeftIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"50196\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"50197\"></path><path d=\"M128 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"50198\"></path><path d=\"M128 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H174.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#1E6FFF\" p-id=\"50199\"></path>\n </svg>\n`\n","export const alignRightIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n ><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"52459\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52460\"></path><path d=\"M447.99999995 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52461\"></path><path d=\"M319.99999997 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H366.46399997c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#363B4C\" p-id=\"52462\"></path></svg>\n`\nexport const alignRightIconActive = `\n<svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"52001\"></path>\n <path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"52002\"></path><path d=\"M447.99999995 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"52003\"></path><path d=\"M319.99999997 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H366.46399997c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#1E6FFF\" p-id=\"52004\"></path>\n </svg>\n`\n","export const boldIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"2767\"></path><path d=\"M340.032 468.032H544c62.592 0 113.28-49.28 113.28-110.08 0-60.672-50.688-109.952-113.28-109.952H340.032v220.032z m453.248 197.952c0 109.376-91.392 198.016-204.032 198.016H249.28v-704H544c112.64 0 204.032 88.64 204.032 198.016 0 52.992-21.632 101.12-56.512 136.64 60.8 34.24 101.76 98.176 101.76 171.328zM340.032 555.968v220.032h249.216c62.592 0 113.28-49.28 113.28-110.016 0-60.736-50.688-110.016-113.28-110.016H340.032z\" fill=\"#363B4C\" p-id=\"2768\"></path>\n </svg>\n`\nexport const boldIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"50045\"></path><path d=\"M340.032 468.032H544c62.592 0 113.28-49.28 113.28-110.08 0-60.672-50.688-109.952-113.28-109.952H340.032v220.032z m453.248 197.952c0 109.376-91.392 198.016-204.032 198.016H249.28v-704H544c112.64 0 204.032 88.64 204.032 198.016 0 52.992-21.632 101.12-56.512 136.64 60.8 34.24 101.76 98.176 101.76 171.328zM340.032 555.968v220.032h249.216c62.592 0 113.28-49.28 113.28-110.016 0-60.736-50.688-110.016-113.28-110.016H340.032z\" fill=\"#1E6FFF\" p-id=\"50046\"></path>\n </svg>\n`\n","export const bulletListIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M375.104 150.592h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368M170.112 128h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m0 316.224h1.024a67.776 67.776 0 0 1 0 135.552h-1.024a67.776 67.776 0 0 1 0-135.552m0 316.224h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m204.992-293.632h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368m0 316.224h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368\" fill=\"#363B4C\" p-id=\"3965\"></path>\n </svg>\n`\nexport const bulletListIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M375.104 150.592h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368M170.112 128h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m0 316.224h1.024a67.776 67.776 0 0 1 0 135.552h-1.024a67.776 67.776 0 0 1 0-135.552m0 316.224h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m204.992-293.632h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368m0 316.224h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368\" fill=\"#1E6FFF\" p-id=\"53364\"></path></svg>\n`\n","export const chevronDownIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M477.110857 689.298286l-204.068571-235.227429a73.874286 73.874286 0 0 1-12.946286-71.899428c8.630857-24.868571 29.257143-40.96 52.150857-40.813715H711.68c22.601143-0.146286 43.008 15.579429 51.785143 39.936 8.777143 24.356571 4.242286 52.516571-11.483429 71.460572L556.397714 687.981714a50.249143 50.249143 0 0 1-78.774857 0l-0.512 1.316572z\" fill=\"#363B4C\" p-id=\"18098\"></path>\n </svg>\n`\n","export const clearIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_1098_15553)\">\n <path\n d=\"M18.3007 5.70973C17.9107 5.31973 17.2807 5.31973 16.8907 5.70973L12.0007 10.5897L7.1107 5.69973C6.7207 5.30973 6.0907 5.30973 5.7007 5.69973C5.3107 6.08973 5.3107 6.71973 5.7007 7.10973L10.5907 11.9997L5.7007 16.8897C5.3107 17.2797 5.3107 17.9097 5.7007 18.2997C6.0907 18.6897 6.7207 18.6897 7.1107 18.2997L12.0007 13.4097L16.8907 18.2997C17.2807 18.6897 17.9107 18.6897 18.3007 18.2997C18.6907 17.9097 18.6907 17.2797 18.3007 16.8897L13.4107 11.9997L18.3007 7.10973C18.6807 6.72973 18.6807 6.08973 18.3007 5.70973Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1098_15553\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const codeIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M64 830.848V193.152q0-53.504 37.76-91.328Q139.712 64 193.216 64h637.696q53.504 0 91.328 37.76 37.824 37.888 37.824 91.392v637.696q0 53.504-37.76 91.328-37.888 37.824-91.392 37.824H193.152q-53.504 0-91.328-37.76Q64 884.288 64 830.784z m94.72 0q0 34.432 34.432 34.432h637.696q34.432 0 34.432-34.432V193.152q0-34.432-34.432-34.432H193.152q-34.432 0-34.432 34.432v637.696zM278.144 432q-6.592-6.592-10.24-15.296-3.584-8.704-3.584-18.176 0-4.608 0.896-9.216t2.688-8.832q1.792-4.288 4.416-8.192 2.56-3.904 5.824-7.232 3.392-3.2 7.232-5.888 3.84-2.56 8.192-4.352 4.224-1.792 8.896-2.688 4.544-0.96 9.216-0.96 9.408 0 18.112 3.584 8.704 3.648 15.36 10.304L491.968 512q6.72 6.656 10.24 15.36 3.648 8.64 3.648 18.112 0 9.408-3.584 18.112-3.584 8.704-10.24 15.36L345.216 725.76q-6.72 6.72-15.36 10.304-8.768 3.584-18.24 3.584-4.608 0-9.216-0.896-4.48-0.896-8.832-2.688-4.288-1.728-8.192-4.416-3.84-2.56-7.168-5.888-3.328-3.264-5.888-7.104-2.624-3.904-4.416-8.192-1.792-4.288-2.688-8.96-0.96-4.48-0.96-9.216 0-9.408 3.648-18.112 3.584-8.64 10.24-15.36L391.68 545.408 278.144 432z m440.832 299.2H585.472q-4.672 0-9.28-0.896-4.544-0.832-8.832-2.688-4.352-1.792-8.256-4.352-3.84-2.56-7.104-5.952-3.264-3.2-5.952-7.04-2.56-3.968-4.352-8.256-1.728-4.352-2.688-8.896-0.896-4.544-0.896-9.28 0-4.608 0.896-9.216 0.96-4.544 2.688-8.832 1.792-4.352 4.352-8.32 2.688-3.84 5.952-7.04 3.2-3.328 7.168-5.952 3.904-2.56 8.192-4.352 4.288-1.792 8.832-2.688 4.608-0.96 9.28-0.96h133.504q4.736 0 9.28 0.96 4.608 0.896 8.96 2.688 4.224 1.792 8.128 4.352 3.84 2.624 7.104 5.888 3.392 3.328 5.952 7.232 2.624 3.904 4.416 8.192 1.792 4.288 2.624 8.832 0.896 4.608 0.896 9.216 0 4.736-0.896 9.28-0.832 4.608-2.624 8.96-1.792 4.224-4.48 8.128-2.56 3.84-5.888 7.104-3.2 3.392-7.04 5.952-3.968 2.56-8.256 4.352-4.352 1.856-8.896 2.688-4.544 0.896-9.28 0.896z\" fill=\"#363B4C\" p-id=\"16577\"></path></svg>\n`\n","export const confirmIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_1013_1606)\">\n <path\n d=\"M9.00012 16.1998L5.50012 12.6998C5.11012 12.3098 4.49012 12.3098 4.10012 12.6998C3.71012 13.0898 3.71012 13.7098 4.10012 14.0998L8.29012 18.2898C8.68012 18.6798 9.31012 18.6798 9.70012 18.2898L20.3001 7.69982C20.6901 7.30982 20.6901 6.68982 20.3001 6.29982C19.9101 5.90982 19.2901 5.90982 18.9001 6.29982L9.00012 16.1998Z\"\n fill=\"#817567\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1013_1606\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const copyIcon = `\n <svg viewBox=\"0 0 1024 1024\" height=\"24px\"\n width=\"24px\">\n <path d=\"M320 128m0 0l576 0q0 0 0 0l0 576q0 0 0 0l-576 0q0 0 0 0l0-576q0 0 0 0Z\" fill=\"#FFFFFF\" p-id=\"2678\"></path><path d=\"M757.696 704h99.648q17.28 0 17.28-17.28V166.592q0-17.28-17.28-17.28H337.28q-17.28 0-17.28 17.28v98.56a42.688 42.688 0 0 1-85.376 0v-98.56q0-42.496 30.08-72.576Q294.784 64 337.28 64h520.064q42.496 0 72.576 30.08 30.08 30.08 30.08 72.576v520q0 42.56-30.08 72.64t-72.576 30.08h-99.648a42.688 42.688 0 0 1 0-85.376z\" fill=\"#333333\" p-id=\"2679\"></path><path d=\"M789.376 337.28v520.064q0 42.496-30.08 72.576-30.08 30.08-72.64 30.08H166.656q-42.496 0-72.576-30.08Q64 899.84 64 857.344V337.28q0-42.56 30.08-72.64t72.576-30.08h520q42.56 0 72.64 30.08t30.08 72.64zM704 337.28Q704 320 686.72 320H166.592q-17.28 0-17.28 17.28v520.064q0 17.28 17.28 17.28h520q17.344 0 17.344-17.28V337.28z\" fill=\"#333333\" p-id=\"2680\"></path>\n </svg>\n`\n","export const dividerIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M888.384 560H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48H888.32c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 896H452.608c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48z m316.928 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 224H452.608c-23.808 0-39.68-19.2-39.68-48S428.8 128 452.672 128h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48zM254.528 896H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m0-672H135.68c-23.808 0-39.68-19.2-39.68-48S111.872 128 135.68 128h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m633.856 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48z\" fill=\"#363B4C\" p-id=\"3671\"></path>\n </svg>\n`\nexport const dividerIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M888.384 560H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48H888.32c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 896H452.608c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48z m316.928 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 224H452.608c-23.808 0-39.68-19.2-39.68-48S428.8 128 452.672 128h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48zM254.528 896H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m0-672H135.68c-23.808 0-39.68-19.2-39.68-48S111.872 128 135.68 128h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m633.856 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48z\" fill=\"#1E6FFF\" p-id=\"53064\"></path></svg>\n`\n","export const editIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_1013_1585)\">\n <path\n d=\"M14.06 9.02L14.98 9.94L5.92 19H5V18.08L14.06 9.02ZM17.66 3C17.41 3 17.15 3.1 16.96 3.29L15.13 5.12L18.88 8.87L20.71 7.04C21.1 6.65 21.1 6.02 20.71 5.63L18.37 3.29C18.17 3.09 17.92 3 17.66 3ZM14.06 6.19L3 17.25V21H6.75L17.81 9.94L14.06 6.19Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1013_1585\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h1Icon = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\">\n <path d=\"M835.648 349.44a42.688 42.688 0 0 1 17.664 34.56v426.688a42.688 42.688 0 1 1-85.312 0V443.2l-71.872 23.936a42.688 42.688 0 1 1-26.944-80.96l128-42.688a42.752 42.752 0 0 1 38.4 5.888zM128 170.624c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2131\"></path>\n </svg>\n`\nexport const h1IconActive = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\">\n <path d=\"M835.648 349.44a42.688 42.688 0 0 1 17.664 34.56v426.688a42.688 42.688 0 1 1-85.312 0V443.2l-71.872 23.936a42.688 42.688 0 1 1-26.944-80.96l128-42.688a42.752 42.752 0 0 1 38.4 5.888zM128 170.624c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50493\"></path>\n </svg>\n`\n","export const h2Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M768 426.688c-47.104 0-85.312 38.208-85.312 85.312v21.312a42.688 42.688 0 1 1-85.376 0V512A170.688 170.688 0 0 1 768 341.312h7.36a163.328 163.328 0 0 1 115.456 278.912L743.04 768H896a42.688 42.688 0 0 1 0 85.312h-256a42.688 42.688 0 0 1-30.144-72.832l220.672-220.672a78.016 78.016 0 0 0-55.168-133.12H768z m-640-256c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2281\"></path>\n </svg>\n`\nexport const h2IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M768 426.688c-47.104 0-85.312 38.208-85.312 85.312v21.312a42.688 42.688 0 1 1-85.376 0V512A170.688 170.688 0 0 1 768 341.312h7.36a163.328 163.328 0 0 1 115.456 278.912L743.04 768H896a42.688 42.688 0 0 1 0 85.312h-256a42.688 42.688 0 0 1-30.144-72.832l220.672-220.672a78.016 78.016 0 0 0-55.168-133.12H768z m-640-256c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50643\"></path></svg>\n`\n","export const h3Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M597.312 384c0-23.552 19.136-42.688 42.688-42.688h256a42.688 42.688 0 0 1 30.144 72.832l-105.92 105.984A170.752 170.752 0 0 1 768 853.312a170.688 170.688 0 0 1-160.96-113.856 42.688 42.688 0 0 1 80.512-28.352A85.312 85.312 0 1 0 768 597.312h-42.688a42.688 42.688 0 0 1-30.144-72.832l97.856-97.792H640A42.688 42.688 0 0 1 597.312 384zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2575\"></path>\n </svg>\n`\nexport const h3IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M597.312 384c0-23.552 19.136-42.688 42.688-42.688h256a42.688 42.688 0 0 1 30.144 72.832l-105.92 105.984A170.752 170.752 0 0 1 768 853.312a170.688 170.688 0 0 1-160.96-113.856 42.688 42.688 0 0 1 80.512-28.352A85.312 85.312 0 1 0 768 597.312h-42.688a42.688 42.688 0 0 1-30.144-72.832l97.856-97.792H640A42.688 42.688 0 0 1 597.312 384zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50793\"></path></svg>\n`\n","export const h4Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M780.736 343.296c22.464 7.04 35.008 30.912 28.032 53.44l-89.408 285.952H896A42.688 42.688 0 0 1 896 768h-234.688a42.688 42.688 0 0 1-40.704-55.36L727.296 371.2a42.688 42.688 0 0 1 53.44-27.968z\" fill=\"#363B4C\" p-id=\"2725\"></path><path d=\"M853.312 554.688c23.616 0 42.688 19.072 42.688 42.624v213.376a42.688 42.688 0 1 1-85.312 0V597.312c0-23.552 19.072-42.624 42.624-42.624zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2726\"></path>\n </svg>\n`\nexport const h4IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M780.736 343.296c22.464 7.04 35.008 30.912 28.032 53.44l-89.408 285.952H896A42.688 42.688 0 0 1 896 768h-234.688a42.688 42.688 0 0 1-40.704-55.36L727.296 371.2a42.688 42.688 0 0 1 53.44-27.968z\" fill=\"#1E6FFF\" p-id=\"50943\"></path><path d=\"M853.312 554.688c23.616 0 42.688 19.072 42.688 42.624v213.376a42.688 42.688 0 1 1-85.312 0V597.312c0-23.552 19.072-42.624 42.624-42.624zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50944\"></path></svg>\n`\n","export const h5Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M683.968 373.696a42.688 42.688 0 0 1 41.344-32.384H896a42.688 42.688 0 1 1 0 85.376h-137.28l-22.016 88.192c128.64-24 235.264 99.712 192.64 223.36-42.624 123.712-202.816 155.456-289.344 57.344a42.688 42.688 0 0 1 64-56.448 85.312 85.312 0 1 0 0-112.896 42.688 42.688 0 0 1-73.408-38.528l53.376-214.016zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2876\"></path>\n </svg>\n`\nexport const h5IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M683.968 373.696a42.688 42.688 0 0 1 41.344-32.384H896a42.688 42.688 0 1 1 0 85.376h-137.28l-22.016 88.192c128.64-24 235.264 99.712 192.64 223.36-42.624 123.712-202.816 155.456-289.344 57.344a42.688 42.688 0 0 1 64-56.448 85.312 85.312 0 1 0 0-112.896 42.688 42.688 0 0 1-73.408-38.528l53.376-214.016zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"51094\"></path></svg>\n`\n","export const h6Icon = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\">\n <path d=\"M831.296 304c20.608 11.328 28.16 37.312 16.704 57.92l-83.52 151.488c31.104-0.64 61.824 7.232 88.768 22.72a169.6 169.6 0 0 1 62.528 232.32 171.072 171.072 0 0 1-232.96 62.144 169.6 169.6 0 0 1-62.848-231.872l153.344-278.016a42.688 42.688 0 0 1 57.984-16.768z m-20.48 306.112a85.76 85.76 0 0 0-116.736 31.04 84.224 84.224 0 0 0 31.168 115.456 85.76 85.76 0 0 0 116.736-31.04 84.224 84.224 0 0 0-31.168-115.456zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"3026\"></path>\n </svg>\n`\nexport const h6IconActive = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\"><path d=\"M831.296 304c20.608 11.328 28.16 37.312 16.704 57.92l-83.52 151.488c31.104-0.64 61.824 7.232 88.768 22.72a169.6 169.6 0 0 1 62.528 232.32 171.072 171.072 0 0 1-232.96 62.144 169.6 169.6 0 0 1-62.848-231.872l153.344-278.016a42.688 42.688 0 0 1 57.984-16.768z m-20.48 306.112a85.76 85.76 0 0 0-116.736 31.04 84.224 84.224 0 0 0 31.168 115.456 85.76 85.76 0 0 0 116.736-31.04 84.224 84.224 0 0 0-31.168-115.456zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"51244\"></path></svg>\n`\n","export const imageIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M320 256a64 64 0 1 1 0 128 64 64 0 0 1 0-128z m512-96H192a64 64 0 0 0-64 64v410.688l107.008-110.592a141.696 141.696 0 0 1 196.928-5.44l4.032 3.84 3.84 4.032 32.896 35.712 110.464-129.28a141.632 141.632 0 0 1 196.16-17.408c9.28 7.488 17.536 16.192 24.512 25.792l4.928 7.36L896 587.072V224a64 64 0 0 0-64-64z m-171.52 330.368l-2.88 3.136-146.24 171.264a49.28 49.28 0 0 1-69.76 4.672l-3.456-3.328-70.4-76.288-2.368-2.432a43.2 43.2 0 0 0-56.832-1.28l-3.136 2.944L128 772.48v27.584a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-32.512l-169.728-269.184a43.136 43.136 0 0 0-65.728-7.936zM832 64a160 160 0 0 1 159.872 153.088l0.128 6.912v576a160 160 0 0 1-153.088 159.872L832 960H192a160 160 0 0 1-159.872-153.088L32 800v-576a160 160 0 0 1 153.088-159.872L192 64h640z\" fill=\"#363B4C\" p-id=\"17641\"></path>\n </svg>\n`\n","export const italicIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"3068\"></path><path d=\"M595.968 864H325.504a43.968 43.968 0 1 1 0-88h87.04l94.976-528H414.976a43.968 43.968 0 1 1 0-88h270.528a43.968 43.968 0 1 1 0 88H598.4l-94.976 528h92.48a43.968 43.968 0 1 1 0 88\" fill=\"#363B4C\" p-id=\"3069\"></path></svg>\n`\nexport const italicIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"51394\"></path><path d=\"M595.968 864H325.504a43.968 43.968 0 1 1 0-88h87.04l94.976-528H414.976a43.968 43.968 0 1 1 0-88h270.528a43.968 43.968 0 1 1 0 88H598.4l-94.976 528h92.48a43.968 43.968 0 1 1 0 88\" fill=\"#1E6FFF\" p-id=\"51395\"></path></svg>\n`\n","export const linkIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M902.656 188.672l-3.392-3.328a197.184 197.184 0 0 0-278.016 0l-177.28 177.152a197.312 197.312 0 0 0 0 278.144l3.264 3.264c6.4 6.336 13.248 12.096 20.16 17.472L532.224 596.48a103.232 103.232 0 0 1-21.184-16.32l-3.264-3.2a106.624 106.624 0 0 1 0-150.656l177.28-177.28a106.496 106.496 0 0 1 150.528 0l3.264 3.264c41.6 41.6 41.6 108.992 0 150.592L758.784 483.2c13.888 34.496 20.48 71.04 19.84 107.52l124.032-123.904a197.12 197.12 0 0 0 0-278.08z m-261.888 255.36a194.752 194.752 0 0 0-20.224-17.472L555.712 491.392c7.616 4.544 14.848 9.856 21.248 16.384l3.392 3.264c41.536 41.6 41.536 109.056 0 150.656l-177.28 177.28a106.752 106.752 0 0 1-150.656 0l-3.264-3.392a106.56 106.56 0 0 1 0-150.592L329.28 604.8a274.816 274.816 0 0 1-19.84-107.52L185.408 621.12a197.312 197.312 0 0 0 0 278.208l3.2 3.328a197.376 197.376 0 0 0 278.144 0l177.28-177.28a197.376 197.376 0 0 0 0-278.144l-3.264-3.264v0.064z\" fill=\"#363B4C\" p-id=\"9910\"></path>\n </svg>\n`\n","export const orderedListIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M133.184 376.448a56.064 56.064 0 0 1 42.176 17.92 61.184 61.184 0 0 1 16.32 42.752 61.056 61.056 0 0 1-11.84 36.864l-39.872 53.888h27.328c11.776 0 21.696 7.872 23.872 18.56l0.512 4.608c0 12.8-10.88 23.168-24.32 23.168H100.352a23.04 23.04 0 0 1-23.552-22.4v-9.344c0-3.84 1.28-7.616 3.584-10.752l61.76-83.264a41.216 41.216 0 0 0 1.536-2.432l1.728-3.264c0.448-1.92 0.64-3.84 0.64-5.824a16.832 16.832 0 0 0-3.264-10.752c-1.92-2.24-4.224-3.264-7.936-3.392a9.984 9.984 0 0 0-7.808 3.2c-1.92 1.984-3.328 4.672-4.736 10.112l-1.792 3.84A18.432 18.432 0 0 1 105.088 448l-12.672-0.128a16.32 16.32 0 0 1-14.976-18.176l1.344-7.552a63.36 63.36 0 0 1 14.4-27.904 53.44 53.44 0 0 1 40-17.792z m10.24 308.864c20.608 0.192 37.632 6.272 50.432 18.304a56.704 56.704 0 0 1 13.44 65.792 44.288 44.288 0 0 1-8.32 11.264l-0.64 0.448 0.896 0.704a62.016 62.016 0 0 1 5.12 5.632l4.032 6.208c4.224 8 6.4 16.832 6.4 25.856a58.304 58.304 0 0 1-20.8 46.208c-13.184 11.456-30.08 17.28-50.24 17.408-15.872 0-30.144-4.608-42.432-13.632a61.44 61.44 0 0 1-21.952-30.912l-0.512-2.624-0.128-1.856a17.28 17.28 0 0 1 17.664-16.768h19.84l10.048 6.016 2.112 4.16 2.752 3.648 2.88 2.752c2.56 1.92 6.272 3.072 11.52 3.072A19.52 19.52 0 0 0 159.232 832c3.2-2.56 4.864-6.4 4.992-11.712-0.128-5.952-1.92-9.92-5.12-12.608a21.568 21.568 0 0 0-14.336-4.48l-4.608-0.448a21.888 21.888 0 0 1-18.432-21.248v-1.664a20.48 20.48 0 0 1 20.928-19.904c6.976 0 11.776-1.472 14.976-4.352a11.584 11.584 0 0 0 4.288-9.472 13.312 13.312 0 0 0-4.48-10.24 20.096 20.096 0 0 0-13.184-4.352 17.28 17.28 0 0 0-10.176 3.2c-2.112 1.408-3.712 3.392-5.76 7.68l-2.048 3.328a19.52 19.52 0 0 1-14.976 6.72l-19.392-0.256a15.424 15.424 0 0 1-12.736-18.816l2.048-6.784a60.544 60.544 0 0 1 17.984-25.152c12.224-10.432 27.008-15.872 44.032-16.128h0.064zM148.928 89.6c10.816 0 19.52 8.384 19.52 18.688v153.408c0 14.208-12.032 25.664-26.88 25.664a26.304 26.304 0 0 1-26.944-25.6V145.664l-8.192 4.8a20.16 20.16 0 0 1-6.592 2.368l-3.52 0.32a19.072 19.072 0 0 1-19.584-18.624v-11.328c0-7.04 4.224-13.568 10.88-16.704l31.36-14.976a20.288 20.288 0 0 1 8.768-2.048h21.184z m746.816 54.848c28.352 0 51.392 19.712 51.392 44.096 0 24.32-23.04 44.16-51.392 44.16H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.384 23.04-44.16 51.392-44.16h565.504z m0 303.36c28.352 0 51.392 19.776 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z m0 303.424c28.352 0 51.392 19.712 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z\" fill=\"#363B4C\" p-id=\"4265\"></path>\n </svg>\n`\nexport const orderedListIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M133.184 376.448a56.064 56.064 0 0 1 42.176 17.92 61.184 61.184 0 0 1 16.32 42.752 61.056 61.056 0 0 1-11.84 36.864l-39.872 53.888h27.328c11.776 0 21.696 7.872 23.872 18.56l0.512 4.608c0 12.8-10.88 23.168-24.32 23.168H100.352a23.04 23.04 0 0 1-23.552-22.4v-9.344c0-3.84 1.28-7.616 3.584-10.752l61.76-83.264a41.216 41.216 0 0 0 1.536-2.432l1.728-3.264c0.448-1.92 0.64-3.84 0.64-5.824a16.832 16.832 0 0 0-3.264-10.752c-1.92-2.24-4.224-3.264-7.936-3.392a9.984 9.984 0 0 0-7.808 3.2c-1.92 1.984-3.328 4.672-4.736 10.112l-1.792 3.84A18.432 18.432 0 0 1 105.088 448l-12.672-0.128a16.32 16.32 0 0 1-14.976-18.176l1.344-7.552a63.36 63.36 0 0 1 14.4-27.904 53.44 53.44 0 0 1 40-17.792z m10.24 308.864c20.608 0.192 37.632 6.272 50.432 18.304a56.704 56.704 0 0 1 13.44 65.792 44.288 44.288 0 0 1-8.32 11.264l-0.64 0.448 0.896 0.704a62.016 62.016 0 0 1 5.12 5.632l4.032 6.208c4.224 8 6.4 16.832 6.4 25.856a58.304 58.304 0 0 1-20.8 46.208c-13.184 11.456-30.08 17.28-50.24 17.408-15.872 0-30.144-4.608-42.432-13.632a61.44 61.44 0 0 1-21.952-30.912l-0.512-2.624-0.128-1.856a17.28 17.28 0 0 1 17.664-16.768h19.84l10.048 6.016 2.112 4.16 2.752 3.648 2.88 2.752c2.56 1.92 6.272 3.072 11.52 3.072A19.52 19.52 0 0 0 159.232 832c3.2-2.56 4.864-6.4 4.992-11.712-0.128-5.952-1.92-9.92-5.12-12.608a21.568 21.568 0 0 0-14.336-4.48l-4.608-0.448a21.888 21.888 0 0 1-18.432-21.248v-1.664a20.48 20.48 0 0 1 20.928-19.904c6.976 0 11.776-1.472 14.976-4.352a11.584 11.584 0 0 0 4.288-9.472 13.312 13.312 0 0 0-4.48-10.24 20.096 20.096 0 0 0-13.184-4.352 17.28 17.28 0 0 0-10.176 3.2c-2.112 1.408-3.712 3.392-5.76 7.68l-2.048 3.328a19.52 19.52 0 0 1-14.976 6.72l-19.392-0.256a15.424 15.424 0 0 1-12.736-18.816l2.048-6.784a60.544 60.544 0 0 1 17.984-25.152c12.224-10.432 27.008-15.872 44.032-16.128h0.064zM148.928 89.6c10.816 0 19.52 8.384 19.52 18.688v153.408c0 14.208-12.032 25.664-26.88 25.664a26.304 26.304 0 0 1-26.944-25.6V145.664l-8.192 4.8a20.16 20.16 0 0 1-6.592 2.368l-3.52 0.32a19.072 19.072 0 0 1-19.584-18.624v-11.328c0-7.04 4.224-13.568 10.88-16.704l31.36-14.976a20.288 20.288 0 0 1 8.768-2.048h21.184z m746.816 54.848c28.352 0 51.392 19.712 51.392 44.096 0 24.32-23.04 44.16-51.392 44.16H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.384 23.04-44.16 51.392-44.16h565.504z m0 303.36c28.352 0 51.392 19.776 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z m0 303.424c28.352 0 51.392 19.712 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z\" fill=\"#1E6FFF\" p-id=\"52914\"></path></svg>\n`\n","export const plusIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_971_7676)\">\n <path\n d=\"M18 13H13V18C13 18.55 12.55 19 12 19C11.45 19 11 18.55 11 18V13H6C5.45 13 5 12.55 5 12C5 11.45 5.45 11 6 11H11V6C11 5.45 11.45 5 12 5C12.55 5 13 5.45 13 6V11H18C18.55 11 19 11.45 19 12C19 12.55 18.55 13 18 13Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_971_7676\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const quoteIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M169.856 776.832c-48.064-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.008-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92C258.368 359.104 231.936 456.256 220.8 519.488c25.088-12.992 57.856-17.536 90.048-14.528 84.16 7.808 150.528 77.12 150.528 163.2A163.52 163.52 0 0 1 298.048 832c-50.048 0-97.92-22.976-128.192-55.168z m466.56 0c-48-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.072-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92c-123.84 80.768-150.272 177.92-161.408 241.152 25.024-12.992 57.856-17.536 89.984-14.528 84.224 7.808 150.592 77.12 150.592 163.2A163.52 163.52 0 0 1 764.672 832c-50.112 0-97.92-22.976-128.256-55.168z\" fill=\"#363B4C\" p-id=\"6160\"></path>\n </svg>\n`\nexport const quoteIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M169.856 776.832c-48.064-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.008-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92C258.368 359.104 231.936 456.256 220.8 519.488c25.088-12.992 57.856-17.536 90.048-14.528 84.16 7.808 150.528 77.12 150.528 163.2A163.52 163.52 0 0 1 298.048 832c-50.048 0-97.92-22.976-128.192-55.168z m466.56 0c-48-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.072-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92c-123.84 80.768-150.272 177.92-161.408 241.152 25.024-12.992 57.856-17.536 89.984-14.528 84.224 7.808 150.592 77.12 150.592 163.2A163.52 163.52 0 0 1 764.672 832c-50.112 0-97.92-22.976-128.256-55.168z\" fill=\"#1E6FFF\" p-id=\"52764\"></path>\n</svg>\n`\n","export const removeIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M7.30775 20.4997C6.81058 20.4997 6.385 20.3227 6.031 19.9687C5.677 19.6147 5.5 19.1892 5.5 18.692V5.99973H5.25C5.0375 5.99973 4.85942 5.92782 4.71575 5.78398C4.57192 5.64015 4.5 5.46198 4.5 5.24948C4.5 5.03682 4.57192 4.85873 4.71575 4.71523C4.85942 4.57157 5.0375 4.49973 5.25 4.49973H9C9 4.2549 9.08625 4.04624 9.25875 3.87374C9.43108 3.7014 9.63967 3.61523 9.8845 3.61523H14.1155C14.3603 3.61523 14.5689 3.7014 14.7413 3.87374C14.9138 4.04624 15 4.2549 15 4.49973H18.75C18.9625 4.49973 19.1406 4.57165 19.2843 4.71548C19.4281 4.85932 19.5 5.03748 19.5 5.24998C19.5 5.46265 19.4281 5.64073 19.2843 5.78423C19.1406 5.9279 18.9625 5.99973 18.75 5.99973H18.5V18.692C18.5 19.1892 18.323 19.6147 17.969 19.9687C17.615 20.3227 17.1894 20.4997 16.6923 20.4997H7.30775ZM17 5.99973H7V18.692C7 18.7818 7.02883 18.8556 7.0865 18.9132C7.14417 18.9709 7.21792 18.9997 7.30775 18.9997H16.6923C16.7821 18.9997 16.8558 18.9709 16.9135 18.9132C16.9712 18.8556 17 18.7818 17 18.692V5.99973ZM10.1543 16.9997C10.3668 16.9997 10.5448 16.9279 10.6885 16.7842C10.832 16.6404 10.9037 16.4622 10.9037 16.2497V8.74973C10.9037 8.53723 10.8318 8.35907 10.688 8.21523C10.5443 8.07157 10.3662 7.99973 10.1535 7.99973C9.941 7.99973 9.76292 8.07157 9.61925 8.21523C9.47575 8.35907 9.404 8.53723 9.404 8.74973V16.2497C9.404 16.4622 9.47583 16.6404 9.6195 16.7842C9.76333 16.9279 9.94158 16.9997 10.1543 16.9997ZM13.8465 16.9997C14.059 16.9997 14.2371 16.9279 14.3807 16.7842C14.5243 16.6404 14.596 16.4622 14.596 16.2497V8.74973C14.596 8.53723 14.5242 8.35907 14.3805 8.21523C14.2367 8.07157 14.0584 7.99973 13.8458 7.99973C13.6333 7.99973 13.4552 8.07157 13.3115 8.21523C13.168 8.35907 13.0962 8.53723 13.0962 8.74973V16.2497C13.0962 16.4622 13.1682 16.6404 13.312 16.7842C13.4557 16.9279 13.6338 16.9997 13.8465 16.9997Z\"\n fill=\"#363B4C\"\n />\n </svg>\n`\n","export const strikethroughIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"3219\"></path><path d=\"M431.296 228.8a216.512 216.512 0 0 1 91.968-15.168c30.848 1.344 60.992 9.6 88.256 24 25.664 13.952 44.864 32.448 56.704 52.672a42.688 42.688 0 0 0 73.6-43.264 230.592 230.592 0 0 0-89.536-84.352 292.928 292.928 0 0 0-124.8-34.24 301.824 301.824 0 0 0-128.448 21.312 246.272 246.272 0 0 0-100.608 73.6 190.08 190.08 0 0 0-42.304 110.976c-0.448 11.712 0.256 23.424 2.048 35.008a42.688 42.688 0 1 0 84.288-13.312 94.272 94.272 0 0 1-1.024-18.368c0.768-20.8 8.576-41.984 23.872-61.248 15.36-19.456 37.888-36.224 65.92-47.616zM170.688 469.312a42.688 42.688 0 0 0 0 85.376h341.44a212.48 212.48 0 0 1 90.24 19.648c11.648 5.44 22.592 12.16 32.704 20.032 11.072 8.576 20.736 18.752 28.8 30.272 12.8 17.92 19.392 39.68 18.752 61.696a105.152 105.152 0 0 1-23.872 61.312c-15.36 19.392-37.888 36.16-65.92 47.552a216.192 216.192 0 0 1-92.032 15.168 207.424 207.424 0 0 1-88.32-24c-25.6-13.952-44.8-32.448-56.704-52.672a42.688 42.688 0 1 0-73.536 43.264c20.672 35.136 51.968 63.936 89.6 84.352a292.928 292.928 0 0 0 124.672 34.24 301.888 301.888 0 0 0 128.512-21.312 246.208 246.208 0 0 0 100.608-73.6c25.6-32.32 40.704-70.592 42.24-110.912a186.112 186.112 0 0 0-33.728-113.408 213.312 213.312 0 0 0-17.024-21.632h136.192a42.688 42.688 0 1 0 0-85.376H170.688z\" fill=\"#363B4C\" p-id=\"3220\"></path>\n </svg>\n`\nexport const strikethroughIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"51850\"></path><path d=\"M431.296 228.8a216.512 216.512 0 0 1 91.968-15.168c30.848 1.344 60.992 9.6 88.256 24 25.664 13.952 44.864 32.448 56.704 52.672a42.688 42.688 0 0 0 73.6-43.264 230.592 230.592 0 0 0-89.536-84.352 292.928 292.928 0 0 0-124.8-34.24 301.824 301.824 0 0 0-128.448 21.312 246.272 246.272 0 0 0-100.608 73.6 190.08 190.08 0 0 0-42.304 110.976c-0.448 11.712 0.256 23.424 2.048 35.008a42.688 42.688 0 1 0 84.288-13.312 94.272 94.272 0 0 1-1.024-18.368c0.768-20.8 8.576-41.984 23.872-61.248 15.36-19.456 37.888-36.224 65.92-47.616zM170.688 469.312a42.688 42.688 0 0 0 0 85.376h341.44a212.48 212.48 0 0 1 90.24 19.648c11.648 5.44 22.592 12.16 32.704 20.032 11.072 8.576 20.736 18.752 28.8 30.272 12.8 17.92 19.392 39.68 18.752 61.696a105.152 105.152 0 0 1-23.872 61.312c-15.36 19.392-37.888 36.16-65.92 47.552a216.192 216.192 0 0 1-92.032 15.168 207.424 207.424 0 0 1-88.32-24c-25.6-13.952-44.8-32.448-56.704-52.672a42.688 42.688 0 1 0-73.536 43.264c20.672 35.136 51.968 63.936 89.6 84.352a292.928 292.928 0 0 0 124.672 34.24 301.888 301.888 0 0 0 128.512-21.312 246.208 246.208 0 0 0 100.608-73.6c25.6-32.32 40.704-70.592 42.24-110.912a186.112 186.112 0 0 0-33.728-113.408 213.312 213.312 0 0 0-17.024-21.632h136.192a42.688 42.688 0 1 0 0-85.376H170.688z\" fill=\"#1E6FFF\" p-id=\"51851\"></path></svg>\n`\n","export const tableIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M146.816 960A83.456 83.456 0 0 1 64 877.184V146.816C64 108.224 95.872 64 145.152 64h732.032C919.936 64 960 99.584 960 146.816v730.368c0 44.8-34.048 82.816-82.816 82.816H146.816z m530.56-81.92h199.68V684.16h-199.68v194.048z m-251.136 0h168.512V684.16H426.24v194.048z m-281.088 0H343.68V684.16h-198.4v194.048z m532.224-282.048h199.68V396.864h-199.68v199.168z m-251.136 0h168.512V396.864H426.24v199.168z m-281.088 0H343.68V396.864h-198.4v199.168z m0-451.136v164.992l732.032 2.432V145.28L145.152 144.96z\" fill=\"#363B4C\" p-id=\"16729\"></path>\n </svg>\n`\n","export const textIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M364.8 810.688c0-23.616 19.072-42.688 42.624-42.688h209.152a42.624 42.624 0 1 1 0 85.312H407.424a42.688 42.688 0 0 1-42.624-42.624z\" fill=\"#363B4C\" p-id=\"3176\"></path><path d=\"M512 170.688c23.552 0 42.688 19.072 42.688 42.624v597.376a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"3177\"></path><path d=\"M213.312 213.312c0-23.552 19.136-42.624 42.688-42.624h512c23.552 0 42.688 19.072 42.688 42.624V256a42.688 42.688 0 0 1-85.376 0H298.688a42.688 42.688 0 1 1-85.376 0v-42.688z\" fill=\"#363B4C\" p-id=\"3178\"></path>\n </svg>\n`\nexport const textIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M113.2544 108.8m46.7968 0l708.352 0q46.7968 0 46.7968 46.7968l0-0.0512q0 46.7968-46.7968 46.7968l-708.352 0q-46.7968 0-46.7968-46.7968l0 0.0512q0-46.7968 46.7968-46.7968Z\" fill=\"#1E6FFF\" p-id=\"51545\"></path><path d=\"M291.4816 821.6576m46.7968 0l351.9488 0q46.7968 0 46.7968 46.7968l0-0.0512q0 46.7968-46.7968 46.7968l-351.9488 0q-46.7968 0-46.7968-46.7968l0 0.0512q0-46.7968 46.7968-46.7968Z\" fill=\"#1E6FFF\" p-id=\"51546\"></path><path d=\"M558.7968 108.8m0 46.7968l0 708.352q0 46.7968-46.7968 46.7968l0.0512 0q-46.7968 0-46.7968-46.7968l0-708.352q0-46.7968 46.7968-46.7968l-0.0512 0q46.7968 0 46.7968 46.7968Z\" fill=\"#1E6FFF\" p-id=\"51547\"></path><path d=\"M202.3424 108.8m0 46.7968l0 84.6336q0 46.7968-46.7968 46.7968l0.0512 0q-46.7968 0-46.7968-46.7968l0-84.6336q0-46.7968 46.7968-46.7968l-0.0512 0q46.7968 0 46.7968 46.7968Z\" fill=\"#1E6FFF\" p-id=\"51548\"></path><path d=\"M915.2 108.8m0 46.7968l0 84.6336q0 46.7968-46.7968 46.7968l0.0512 0q-46.7968 0-46.7968-46.7968l0-84.6336q0-46.7968 46.7968-46.7968l-0.0512 0q46.7968 0 46.7968 46.7968Z\" fill=\"#1E6FFF\" p-id=\"51549\"></path></svg>\n`\n","export const todoListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n >\n <path d=\"M102.4 193.408c0-50.304 40.704-91.008 91.008-91.008h637.12c50.304 0 91.072 40.704 91.072 91.008v637.12c0 50.304-40.768 91.072-91.072 91.072H193.408A91.008 91.008 0 0 1 102.4 830.528V193.408z m728.128 0H193.408v637.12h637.12V193.408z\" fill=\"#363B4C\" p-id=\"10098\"></path><path d=\"M341.12 485.696a42.688 42.688 0 0 0 6.272 60.032l99.52 101.952a42.688 42.688 0 0 0 56.96-2.944l207.488-211.584a42.688 42.688 0 0 0-60.16-60.48L477.312 557.824l-76.16-78.4a42.688 42.688 0 0 0-60.096 6.272z\" fill=\"#363B4C\" p-id=\"10099\"></path></svg>\n`\n","export const functionsIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n >\n <path d=\"M850.176 83.2c27.264-0.064 50.368 20.096 54.08 47.104l0.448 7.424v133.12h-109.12l-0.064-78.592H263.552l294.464 254.912c33.216 28.8 39.04 77.44 14.848 113.024l-6.208 7.872-5.312 5.632-297.6 257.92h531.776v-77.952h109.184v132.48a54.592 54.592 0 0 1-47.168 54.144l-7.36 0.448H200.96a85.76 85.76 0 0 1-63.36-143.616l7.232-7.04L466.112 512l-321.28-278.144a85.76 85.76 0 0 1-28.992-54.272l-0.64-10.624a85.76 85.76 0 0 1 76.416-85.248l9.344-0.512h649.216z\" fill=\"#363B4C\" p-id=\"17793\"></path>\n </svg>\n`\n","export const indentIncreaseIcon = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\">\n <path d=\"M120-120v-80h720v80H120Zm0-160v-80h720v80H120Zm240-160v-80h480v80H360Zm0-160v-80h480v80H360Zm-120-40L120-760l120-120 56 57-63 63 63 63-56 57Zm-120-160v-80h720v80H120Z\"/>\n </svg>\n`\n","export const indentDecreaseIcon = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\">\n <path d=\"M120-120v-80h720v80H120Zm0-160v-80h720v80H120Zm240-160v-80h480v80H360Zm0-160v-80h480v80H360Zm-40-40 56-57-63-63 63-63-56-57-120 120 120 120Zm-200-160v-80h720v80H120Z\"/>\n </svg>\n`\n","export const underlineIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"3370\"></path>\n <path d=\"M160 845.184c0-24.96 22.72-45.184 50.56-45.184h603.456c27.776 0 49.984 20.224 49.984 45.184 0 24.96-22.208 45.184-49.984 45.184h-603.52c-27.776 0-50.496-20.288-50.496-45.184zM328.96 200v259.328C328.96 559.168 411.072 640 512 640c100.992 0 183.04-80.896 183.04-180.672v-259.2a45.76 45.76 0 1 1 91.52 0v259.2c0 149.696-123.072 271.04-274.56 271.04S237.76 609.024 237.76 459.328V200a45.632 45.632 0 0 1 91.264 0\" fill=\"#363B4C\" p-id=\"3371\"></path>\n </svg>\n`\nexport const underlineIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"51699\"></path>\n <path d=\"M160 845.184c0-24.96 22.72-45.184 50.56-45.184h603.456c27.776 0 49.984 20.224 49.984 45.184 0 24.96-22.208 45.184-49.984 45.184h-603.52c-27.776 0-50.496-20.288-50.496-45.184zM328.96 200v259.328C328.96 559.168 411.072 640 512 640c100.992 0 183.04-80.896 183.04-180.672v-259.2a45.76 45.76 0 1 1 91.52 0v259.2c0 149.696-123.072 271.04-274.56 271.04S237.76 609.024 237.76 459.328V200a45.632 45.632 0 0 1 91.264 0\" fill=\"#1E6FFF\" p-id=\"51700\"></path>\n </svg>\n`\n","export const fontColorIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style=\"color: inherit; fill: currentColor;\"\n >\n <path d=\"M12.4 12V3.4h-1.2V12H3.4v1.2h7.8v7.8h1.2v-7.8h7.8V12z\" opacity=\"0\"/>\n <path d=\"M11 2.5L5.5 16h2.25l1.12-3h6.25l1.12 3h2.25L13 2.5h-2zm-1.38 9L12 5.67 14.38 11.5H9.62z\"/>\n <path d=\"M3 18.5v3h18v-3H3z\" opacity=\"1\"/>\n </svg>\n`\n","export const highLineCodeIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M57.728 124.928v323.264c0 27.52 20.672 48.192 48.192 48.192h825.408c27.52 0 48.128-20.672 48.128-48.192V124.928a47.04 47.04 0 0 0-48.128-48.128H105.92c-27.52 6.848-48.192 27.52-48.192 48.128z m96.32 275.136V173.056h736v227.008h-736z m685.056 257.28a47.04 47.04 0 0 0-48.128-48.192H103.168a47.04 47.04 0 0 0-48.192 48.192c0 27.52 20.672 48.128 48.192 48.128h687.808c27.52 6.848 48.128-13.76 48.128-48.128z m-274.752 240.384a47.04 47.04 0 0 0-48.128-48.192H103.488a47.04 47.04 0 0 0-48.128 48.192c0 27.52 20.608 48.128 48.128 48.128h412.736c27.52 6.912 48.128-13.76 48.128-48.128z\" fill=\"#363B4C\" p-id=\"17185\"></path>\n </svg>\n`\n// export const highLineCodeIconActive = `\n// <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M57.728 124.928v323.264c0 27.52 20.672 48.192 48.192 48.192h825.408c27.52 0 48.128-20.672 48.128-48.192V124.928a47.04 47.04 0 0 0-48.128-48.128H105.92c-27.52 6.848-48.192 27.52-48.192 48.128z m96.32 275.136V173.056h736v227.008h-736z m685.056 257.28a47.04 47.04 0 0 0-48.128-48.192H103.168a47.04 47.04 0 0 0-48.192 48.192c0 27.52 20.672 48.128 48.192 48.128h687.808c27.52 6.848 48.128-13.76 48.128-48.128z m-274.752 240.384a47.04 47.04 0 0 0-48.128-48.192H103.488a47.04 47.04 0 0 0-48.128 48.192c0 27.52 20.608 48.128 48.128 48.128h412.736c27.52 6.912 48.128-13.76 48.128-48.128z\" fill=\"#1E6FFF\" p-id=\"53514\"></path></svg>\n// `\n","export const fileLinkIcon = `\n<svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M879.36 530.048l67.84 68.608-290.368 293.76a333.376 333.376 0 0 1-475.2 0 342.528 342.528 0 0 1 0-480.448L487.04 103.04a238.08 238.08 0 0 1 339.392 0 244.608 244.608 0 0 1 0 343.232L521.024 755.2a142.912 142.912 0 0 1-203.648 0 146.816 146.816 0 0 1 0-205.888l305.472-308.992 67.84 68.672L385.28 617.856a48.96 48.96 0 0 0 0 68.672 47.616 47.616 0 0 0 67.84 0L758.592 377.6a146.816 146.816 0 0 0 0-205.888 142.912 142.912 0 0 0-203.648 0L249.472 480.576a244.608 244.608 0 0 0 0 343.232 238.08 238.08 0 0 0 339.456 0l290.432-293.76z\" fill=\"#363B4C\" p-id=\"17489\"></path></svg>\n`\n","export const linCodeIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M302.208 212.48a45.632 45.632 0 0 0-67.712 8.256l-192 259.648a55.296 55.296 0 0 0 0 64.896l192 259.584a45.504 45.504 0 0 0 66.56 6.848 54.848 54.848 0 0 0 8.32-71.68L141.44 512.512l168-227.456a54.848 54.848 0 0 0-7.168-72.704z m679.232 267.904l-192-259.648a45.504 45.504 0 0 0-66.56-6.784 54.848 54.848 0 0 0-8.32 71.68L882.56 512.64l-168 227.392a54.848 54.848 0 0 0 8.32 71.68 45.504 45.504 0 0 0 66.56-6.784l192-259.584a55.296 55.296 0 0 0 0-64.896zM594.048 97.152c-25.984-6.08-51.584 11.84-57.088 40L392.96 864c-6.912 28.8 9.984 57.984 36.928 63.872h10.048c23.04 0.576 43.2-16.64 48-40.96l144-727.04c6.272-28.8-11.008-57.344-37.888-62.72z\" fill=\"#363B4C\" p-id=\"17337\"></path></svg>\n`\n","export const mergeCellIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M853.2992 221.8496q0-51.2-51.2-51.2H632.832q-18.944 0.0512-32.3584-13.312-13.3632-13.4144-13.3632-32.3072 0-18.944 13.3632-32.3072 13.4144-13.4144 32.3584-13.3632h169.3696q58.9824 0 100.7616 41.728 41.728 41.728 41.728 100.7616v169.472q0 18.8416-13.3632 32.256-13.3632 13.312-32.256 13.312-18.944 0-32.256-13.312-13.4144-13.4144-13.4144-32.256l-0.0512-169.472z m-728.2688 215.04H124.928q-18.944 0-32.256-13.3632-13.3632-13.4144-13.3632-32.3072V221.8496q0-59.0336 41.728-100.7616t100.7616-41.728h169.3696q18.944 0 32.3072 13.312 13.4144 13.4144 13.4144 32.3584t-13.4144 32.256q-13.3632 13.4144-32.256 13.4144H221.7984q-51.1488 0-51.1488 51.1488v169.472q-0.0512 18.944-13.4656 32.256-13.312 13.312-32.256 13.312z m576.6144 251.6992l-136.8576-137.3696q-16.2304-16.1792-13.9776-39.0144V511.744q-2.2016-22.8352 13.9776-39.0144l136.8576-136.8576q14.336-14.336 34.4576-14.336 20.224 0 34.5088 14.336 14.2848 14.2336 14.2336 34.4576 0 20.1728-14.2848 34.4576l-58.4704 58.4704h183.808q20.1728 0 34.4576 14.2848t14.2848 34.4576q0 20.0192-14.1824 34.2016-14.1824 14.2336-34.304 14.2336h-184.32l58.7264 59.2384q13.9776 14.336 13.9776 34.4576 0.2048 20.1728-13.9776 34.4576-14.2336 14.336-34.4576 14.336-20.1728 0-34.4576-14.336z m-228.4544-176.384q2.2016 22.8352-13.9776 39.0144L322.304 688.64q-14.2336 14.336-34.4576 14.336-20.1728 0-34.4064-14.336-14.2336-14.2848-14.0288-34.4576-0.1536-20.1216 14.0288-34.4576l58.6752-59.2384h-184.32q-20.0704 0-34.2528-14.2336-14.1824-14.1824-14.1824-34.2016 0-20.224 14.2848-34.4576 14.2336-14.2848 34.4064-14.2848h183.808L253.44 404.7872q-14.2848-14.2848-14.2848-34.4576 0-20.224 14.2848-34.4576 14.2848-14.336 34.4576-14.336 20.224 0 34.4576 14.336L459.264 472.7296q16.1792 16.1792 13.9776 39.0144V512.2048z m-49.664 419.0208q-13.3632 13.4144-32.256 13.4144H221.7984q-59.0336 0-100.7616-41.7792-41.728-41.728-41.728-100.7616v-169.3696q0-18.944 13.312-32.256 13.3632-13.4144 32.256-13.4656 18.944 0 32.3584 13.312 13.3632 13.3632 13.4144 32.256v169.5232q0 51.2 51.2 51.2H391.168q18.944 0 32.256 13.312 13.4144 13.4144 13.4144 32.3584 0 18.8928-13.3632 32.256z m479.3856-28.3648q-41.7792 41.7792-100.7616 41.7792h-169.3696q-18.944 0-32.3072-13.4144-13.3632-13.3632-13.3632-32.256 0-18.944 13.312-32.3072 13.4144-13.4144 32.3584-13.4144h169.3696q51.1488 0 51.1488-51.1488l0.1536-169.4208q0-18.8928 13.312-32.256 13.3632-13.312 32.256-13.312 18.944 0 32.256 13.312 13.312 13.3632 13.312 32.256v169.472q0 58.9824-41.6768 100.7104z\" fill=\"#363B4C\" p-id=\"3356\"></path>\n </svg>\n`\n","export const moreIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n >\n <path d=\"M242.5856 513.024q0 4.4032-0.4096 8.7552-0.4608 4.4032-1.28 8.704-0.8704 4.352-2.1504 8.6016-1.28 4.1984-2.9696 8.2944t-3.7888 7.936q-2.048 3.8912-4.5056 7.5776-2.4576 3.6864-5.2736 7.0656-2.7648 3.4304-5.888 6.5536-3.1232 3.072-6.5536 5.888-3.4304 2.816-7.0656 5.2736-3.6864 2.4576-7.5776 4.5056-3.8912 2.0992-7.936 3.7888-4.096 1.6896-8.2944 2.9696-4.2496 1.28-8.5504 2.1504-4.352 0.8704-8.704 1.28-4.4032 0.4096-8.8576 0.4096-4.4032 0-8.8064-0.4096-4.352-0.4096-8.704-1.28-4.3008-0.8704-8.5504-2.1504-4.1984-1.28-8.2944-2.9696t-7.936-3.7888q-3.8912-2.048-7.5776-4.5056-3.6864-2.4576-7.0656-5.2736-3.4304-2.7648-6.5536-5.888-3.072-3.1232-5.888-6.5536-2.816-3.3792-5.2736-7.0656-2.4576-3.6864-4.5056-7.5776-2.0992-3.8912-3.7888-7.936-1.6896-4.096-2.9696-8.2944-1.28-4.2496-2.1504-8.5504-0.8704-4.352-1.28-8.704-0.4608-4.4032-0.4608-8.8064 0-4.4544 0.4608-8.8064 0.4096-4.4032 1.28-8.704 0.8704-4.352 2.1504-8.6016 1.28-4.1984 2.9696-8.2944t3.7888-7.936q2.048-3.8912 4.5056-7.5776 2.4576-3.6864 5.2736-7.0656 2.7648-3.4304 5.888-6.5536 3.1232-3.072 6.5536-5.888 3.3792-2.816 7.0656-5.2736 3.6864-2.4576 7.5776-4.5056 3.8912-2.048 7.936-3.7888 4.096-1.6896 8.2944-2.9696 4.2496-1.28 8.5504-2.1504 4.352-0.8192 8.704-1.28 4.4032-0.4096 8.8064-0.4096 4.4544 0 8.8064 0.4096 4.4032 0.4608 8.704 1.28 4.352 0.8704 8.6016 2.1504 4.1984 1.28 8.2944 2.9696t7.936 3.7888q3.8912 2.048 7.5776 4.5056 3.6352 2.4576 7.0656 5.2736 3.4304 2.7648 6.5536 5.888 3.072 3.1232 5.888 6.5536 2.816 3.3792 5.2736 7.0656 2.4576 3.6864 4.5056 7.5776 2.048 3.8912 3.7888 7.936 1.6896 4.096 2.9696 8.2944 1.28 4.2496 2.1504 8.5504 0.8192 4.352 1.28 8.704 0.4096 4.4032 0.4096 8.8576zM601.8048 513.024q0 4.4032-0.4608 8.7552-0.4096 4.4032-1.28 8.704-0.8704 4.352-2.1504 8.6016-1.28 4.1984-2.9696 8.2944t-3.7376 7.936q-2.048 3.8912-4.5568 7.5776-2.4576 3.6864-5.2224 7.0656-2.816 3.4304-5.9392 6.5536-3.072 3.072-6.5024 5.888-3.4304 2.816-7.1168 5.2736-3.6352 2.4576-7.5264 4.5056-3.8912 2.0992-7.9872 3.7888-4.096 1.6896-8.2944 2.9696t-8.5504 2.1504q-4.3008 0.8704-8.704 1.28-4.4032 0.4096-8.8064 0.4096t-8.8064-0.4096q-4.4032-0.4096-8.704-1.28-4.352-0.8704-8.5504-2.1504-4.2496-1.28-8.2944-2.9696-4.096-1.6896-7.9872-3.7888-3.8912-2.048-7.5264-4.5056-3.6864-2.4576-7.1168-5.2736-3.3792-2.7648-6.5024-5.888-3.1232-3.1232-5.9392-6.5536-2.7648-3.3792-5.2224-7.0656-2.4576-3.6864-4.5568-7.5776-2.048-3.8912-3.7376-7.936-1.6896-4.096-2.9696-8.2944-1.28-4.2496-2.1504-8.5504-0.8704-4.352-1.28-8.704-0.4608-4.4032-0.4608-8.8064 0-4.4544 0.4608-8.8064 0.4096-4.4032 1.28-8.704 0.8704-4.352 2.1504-8.6016 1.28-4.1984 2.9696-8.2944t3.7376-7.936q2.048-3.8912 4.5568-7.5776 2.4576-3.6864 5.2224-7.0656 2.816-3.4304 5.9392-6.5536 3.072-3.072 6.5024-5.888 3.4304-2.816 7.1168-5.2736 3.6352-2.4576 7.5264-4.5056 3.8912-2.048 7.9872-3.7888 4.096-1.6896 8.2944-2.9696t8.5504-2.1504q4.3008-0.8192 8.704-1.28 4.4032-0.4096 8.8064-0.4096t8.8064 0.4096q4.4032 0.4608 8.704 1.28 4.352 0.8704 8.5504 2.1504 4.2496 1.28 8.2944 2.9696 4.096 1.6896 7.9872 3.7888 3.8912 2.048 7.5264 4.5056 3.6864 2.4576 7.1168 5.2736 3.3792 2.7648 6.5024 5.888 3.1232 3.1232 5.9392 6.5536 2.7648 3.3792 5.2224 7.0656 2.4576 3.6864 4.5568 7.5776 2.048 3.8912 3.7376 7.936 1.6896 4.096 2.9696 8.2944 1.28 4.2496 2.1504 8.5504 0.8704 4.352 1.28 8.704 0.4608 4.4032 0.4608 8.8576zM961.024 513.024q0 4.4032-0.4608 8.7552-0.4096 4.4032-1.28 8.704-0.8704 4.352-2.1504 8.6016-1.28 4.1984-2.9696 8.2944t-3.7888 7.936q-2.048 3.8912-4.5056 7.5776-2.4576 3.6864-5.2736 7.0656-2.7648 3.4304-5.888 6.5536-3.1232 3.072-6.5536 5.888-3.3792 2.816-7.0656 5.2736-3.6864 2.4576-7.5776 4.5056-3.8912 2.0992-7.936 3.7888-4.096 1.6896-8.2944 2.9696-4.2496 1.28-8.5504 2.1504-4.352 0.8704-8.704 1.28-4.4032 0.4096-8.8064 0.4096-4.4544 0-8.8064-0.4096-4.4032-0.4096-8.704-1.28-4.352-0.8704-8.6016-2.1504-4.1984-1.28-8.2944-2.9696t-7.936-3.7888q-3.8912-2.048-7.5776-4.5056-3.6352-2.4576-7.0656-5.2736-3.4304-2.7648-6.5536-5.888-3.072-3.1232-5.888-6.5536-2.816-3.3792-5.2736-7.0656-2.4576-3.6864-4.5056-7.5776-2.048-3.8912-3.7888-7.936-1.6896-4.096-2.9696-8.2944-1.28-4.2496-2.1504-8.5504-0.8192-4.352-1.28-8.704-0.4096-4.4032-0.4096-8.8064 0-4.4544 0.4096-8.8064 0.4608-4.4032 1.28-8.704 0.8704-4.352 2.1504-8.6016 1.28-4.1984 2.9696-8.2944t3.7888-7.936q2.048-3.8912 4.5056-7.5776 2.4576-3.6864 5.2736-7.0656 2.7648-3.4304 5.888-6.5536 3.1232-3.072 6.5536-5.888 3.4304-2.816 7.0656-5.2736 3.6864-2.4576 7.5776-4.5056 3.8912-2.048 7.936-3.7888 4.096-1.6896 8.2944-2.9696 4.2496-1.28 8.5504-2.1504 4.352-0.8192 8.704-1.28 4.4032-0.4096 8.8576-0.4096 4.4032 0 8.8064 0.4096 4.352 0.4608 8.704 1.28 4.3008 0.8704 8.5504 2.1504 4.1984 1.28 8.2944 2.9696t7.936 3.7888q3.8912 2.048 7.5776 4.5056 3.6864 2.4576 7.0656 5.2736 3.4304 2.7648 6.5536 5.888 3.072 3.1232 5.888 6.5536 2.816 3.3792 5.2736 7.0656 2.4576 3.6864 4.5056 7.5776 2.0992 3.8912 3.7888 7.936 1.6896 4.096 2.9696 8.2944 1.28 4.2496 2.1504 8.5504 0.8704 4.352 1.28 8.704 0.4608 4.4032 0.4608 8.8576z\" fill=\"#363B4C\" p-id=\"9748\"></path>\n </svg>\n`\n","export const splitCellIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M448 405.4528a42.5472 42.5472 0 0 1-85.0944 0.1024V256q0-42.9056-42.9056-42.9056H170.5472a42.5472 42.5472 0 1 1 0-85.0944H320A128 128 0 0 1 448 256v149.4528z m0 234.5472V768a128 128 0 0 1-128 128H170.5472a42.5472 42.5472 0 1 1 0-85.0944H320q42.9056 0 42.9056-42.9056v-149.5552a42.5472 42.5472 0 1 1 85.0944 0.1024v21.4528z m448-469.4528c0 23.552-19.0464 42.5984-42.5472 42.5472H704q-42.9056 0-42.9056 42.9056v149.504a42.496 42.496 0 0 1-85.0944 0V256a128 128 0 0 1 128-128h149.4528c23.4496 0 42.5472 19.0976 42.5472 42.5472z m0 682.9056c0 23.5008-19.0464 42.5472-42.5472 42.5472H704a128 128 0 0 1-128-128v-149.504a42.496 42.496 0 0 1 85.0432 0l0.1024 149.504q0 42.9056 42.8544 42.9056h149.4528c23.4496 0 42.5472 19.0464 42.5472 42.496z\" fill=\"#363B4C\" p-id=\"3508\"></path><path d=\"M882.7392 475.8016c9.5744 9.5232 14.336 22.8352 13.0048 36.2496a45.0048 45.0048 0 0 1-13.0048 36.2496l-120.7296 121.1904a45.2096 45.2096 0 0 1-64 0 44.8 44.8 0 0 1-13.0048-32c0-11.6736 4.1984-23.04 13.0048-32l47.9744-48.384H588.8a45.0048 45.0048 0 0 1-45.056-45.056c0-24.9856 20.2752-45.2608 45.2608-45.2608h156.7744l-47.7696-47.7696a45.056 45.056 0 0 1 0-64 45.1584 45.1584 0 0 1 64 0l120.7296 120.7808z m-740.9664 0a45.0048 45.0048 0 0 0-13.0048 36.2496 45.0048 45.0048 0 0 0 13.0048 36.2496l120.7808 121.1904a45.2096 45.2096 0 0 0 64 0 44.8 44.8 0 0 0 12.9536-32 45.0048 45.0048 0 0 0-12.9536-32l-48.0256-48.384h157.2352c24.8832 0 45.056-20.224 45.0048-45.056a45.2608 45.2608 0 0 0-45.2608-45.2608H278.7328l47.8208-47.7696a45.056 45.056 0 0 0 0-64 45.2096 45.2096 0 0 0-64 0l-120.832 120.7808z\" fill=\"#363B4C\" p-id=\"3509\"></path>\n </svg>\n`\n","export const formatPainterIcon = `\n <svg viewBox=\"0 0 1024 1024\" version=\"1.1\" width=\"20\" height=\"20\">\n <path d=\"M454.698667 302.506667H323.84q-23.04 0-41.6 13.824-18.517333 13.824-25.130667 35.968l-31.36 104.704q-10.112 33.621333 10.794667 61.738666 11.52 15.445333 27.221333 22.442667 0.853333 46.165333-0.810666 105.6-1.408 51.84-58.368 138.496-23.338667 35.413333-3.413334 72.96 20.053333 37.76 62.677334 37.76h477.994666q39.509333 0 69.077334-26.325333 29.738667-26.453333 34.090666-65.962667 10.24-93.738667 10.24-155.946667 0-57.088-8.618666-103.68 20.949333-6.058667 35.285333-25.344 20.864-28.117333 10.837333-61.738666l-31.36-104.704q-6.656-22.144-25.173333-35.968-18.517333-13.781333-41.6-13.781334h-130.858667V197.802667q0-28.885333-20.437333-49.365334Q622.933333 128 594.090667 128H524.373333q-28.842667 0-49.237333 20.48-20.437333 20.437333-20.437333 49.322667v104.746666z m68.992 41.728q0.682667-3.370667 0.682666-6.784V197.802667h69.717334V337.493333q0 3.413333 0.64 6.826667 0.682667 3.370667 2.005333 6.528 1.28 3.2 3.2 6.058667 1.92 2.816 4.352 5.248 2.389333 2.474667 5.248 4.352 2.901333 1.92 6.058667 3.242666 3.157333 1.322667 6.528 1.962667 3.328 0.682667 6.826666 0.682667h165.674667l31.36 104.746666H292.48l31.36-104.746666h165.717333q3.413333 0 6.826667-0.64 3.328-0.682667 6.528-2.005334 3.157333-1.322667 5.973333-3.242666 2.858667-1.877333 5.290667-4.352 2.432-2.432 4.309333-5.248 1.92-2.901333 3.242667-6.058667 1.322667-3.157333 1.962667-6.570667z m252.501333 202.666666q9.429333 43.648 9.429333 100.864 0 58.368-9.813333 148.352-1.450667 12.757333-11.093333 21.376-9.813333 8.704-22.826667 8.704h-100.309333q22.058667-81.493333 22.058666-174.592h-69.674666q0 94.421333-24.96 174.592h-121.514667q41.941333-81.450667 41.941333-174.592H419.754667q0 94.378667-52.992 174.592H263.808q-0.725333 0-1.109333-0.725333-0.469333-0.981333 0.042666-1.749333 67.968-103.253333 69.888-175.018667 1.536-56.533333 0.938667-101.802667H776.106667z\" fill=\"currentColor\" p-id=\"11997\"></path>\n </svg>\n`\n","type Listener = () => void\nconst listeners = new Set<Listener>()\nlet _popupCount = 0\n\nexport function getIsAnyPopupOpen(): boolean {\n return _popupCount > 0\n}\n\nexport function addPopupChangeListener(fn: Listener): () => void {\n listeners.add(fn)\n return () => listeners.delete(fn)\n}\n\nexport function incrementPopupCount(): void {\n const wasZero = _popupCount === 0\n _popupCount++\n if (wasZero) {\n listeners.forEach((fn) => fn())\n }\n}\n\nexport function decrementPopupCount(): void {\n _popupCount = Math.max(0, _popupCount - 1)\n if (_popupCount === 0) {\n listeners.forEach((fn) => fn())\n }\n}\n\nexport function resetPopupCount(): void {\n _popupCount = 0\n listeners.forEach((fn) => fn())\n}\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\ntype MenuItem<T> = {\n index: number\n key: string\n onRun: (ctx: Ctx) => void\n} & T\n\ntype WithRange<T, HasIndex extends true | false = true> = HasIndex extends true\n ? T & { range: [start: number, end: number] }\n : T\n\nexport type MenuItemGroup<T, HasIndex extends true | false = true> = WithRange<\n {\n key: string\n label: string\n items: HasIndex extends true ? MenuItem<T>[] : Omit<MenuItem<T>, 'index'>[]\n },\n HasIndex\n>\n\nexport class GroupBuilder<T> {\n #groups: MenuItemGroup<T, false>[] = []\n\n clear = () => {\n this.#groups = []\n return this\n }\n\n #getGroupInstance = (group: MenuItemGroup<T, false>) => {\n const groupInstance = {\n group,\n addItem: (key: string, item: Omit<MenuItem<T>, 'key' | 'index'>) => {\n const data = { ...item, key } as MenuItem<T>\n group.items.push(data)\n return groupInstance\n },\n clear: () => {\n group.items = []\n return groupInstance\n },\n }\n return groupInstance\n }\n\n addGroup = (key: string, label: string) => {\n const items: Omit<MenuItem<T>, 'index'>[] = []\n const group: MenuItemGroup<T, false> = {\n key,\n label,\n items,\n }\n this.#groups.push(group)\n\n return this.#getGroupInstance(group)\n }\n\n getGroup = (key: string) => {\n const group = this.#groups.find((group) => group.key === key)\n if (!group) throw new Error(`Group with key ${key} not found`)\n\n return this.#getGroupInstance(group)\n }\n\n build = () => {\n return this.#groups\n }\n}\n","import { $ctx } from '@jvs-milkdown/kit/utils'\n\nexport interface MenuAPI {\n show: (\n pos: number,\n isClick?: boolean,\n triggerElement?: HTMLElement,\n mode?: 'list' | 'block'\n ) => void\n hide: () => void\n onHoverDelayHide: () => void\n cancelHide: () => void\n isProgrammatic: () => boolean\n getPos: () => number | null\n isShow: () => boolean\n getMode: () => 'list' | 'block' | null\n}\n\nexport const menuAPI = $ctx(\n {\n show: () => {},\n hide: () => {},\n onHoverDelayHide: () => {},\n cancelHide: () => {},\n isProgrammatic: () => false,\n getPos: () => null,\n isShow: () => false,\n getMode: () => null,\n } as MenuAPI,\n 'menuAPICtx'\n)\n","import { $nodeSchema } from '@jvs-milkdown/kit/utils'\n\nexport const ATTACHMENT_DATA_TYPE = 'attachment-block'\n\nexport const attachmentSchema = $nodeSchema('attachment', () => {\n return {\n inline: false,\n group: 'block',\n selectable: true,\n draggable: true,\n isolating: true,\n marks: '',\n atom: true,\n priority: 100,\n attrs: {\n src: { default: '', validate: 'string' },\n name: { default: '', validate: 'string' },\n size: { default: 0, validate: 'number' },\n videoWidth: { default: 0, validate: 'number' },\n },\n parseDOM: [\n {\n tag: `a[data-type=\"${ATTACHMENT_DATA_TYPE}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement))\n throw new TypeError('Expect dom to be HTMLElement')\n return {\n src: dom.getAttribute('href') || '',\n name: dom.getAttribute('data-name') || '',\n size: Number(dom.getAttribute('data-size') || 0),\n videoWidth: Number(dom.getAttribute('data-video-width') || 0),\n }\n },\n },\n ],\n toDOM: (node) => [\n 'a',\n {\n 'data-type': ATTACHMENT_DATA_TYPE,\n href: node.attrs.src,\n 'data-name': node.attrs.name,\n 'data-size': String(node.attrs.size),\n 'data-video-width': String(node.attrs.videoWidth || 0),\n class: 'attachment',\n },\n node.attrs.name,\n ],\n parseMarkdown: {\n match: (node) => {\n // A custom attachment block might be parsed from an HTML block or standard link.\n // We'll map standard links with the \"attachment\" class if using remark-directive\n // or just rely on DOM string parsing for this specific milkdown environment.\n // Since milkdown parses Markdown -> MDAST, we need to instruct it.\n // For simplicity, we can hook into markdown `link` node parsing conditionally if it matches our shape,\n // or a custom remark node `attachment`. We'll just define the structural match here.\n return node.type === 'attachment'\n },\n runner: (state, node, type) => {\n state.addNode(type, {\n src: node.url,\n name: node.name || '',\n size: Number(node.size || 0),\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'attachment',\n runner: (state, node) => {\n state.openNode('paragraph')\n // Using html node to preserve data-size natively since mdast 'link' doesn't have data-attributes\n state.addNode(\n 'html',\n undefined,\n `<a href=\"${node.attrs.src}\" data-size=\"${node.attrs.size}\" data-name=\"${node.attrs.name}\" data-video-width=\"${node.attrs.videoWidth || 0}\" data-type=\"${ATTACHMENT_DATA_TYPE}\" class=\"attachment\">${node.attrs.name}</a>`\n )\n state.closeNode()\n },\n },\n }\n})\n","import { $nodeSchema } from '@jvs-milkdown/kit/utils'\nimport katex from 'katex'\n\nexport const mathInlineId = 'math_inline'\n\n/// Schema for inline math node.\n/// Add support for:\n///\n/// ```markdown\n/// $a^2 + b^2 = c^2$\n/// ```\nexport const mathInlineSchema = $nodeSchema(mathInlineId, () => ({\n group: 'inline',\n inline: true,\n draggable: true,\n selectable: true,\n atom: true,\n attrs: {\n value: {\n default: '',\n },\n },\n parseDOM: [\n {\n tag: `span[data-type=\"${mathInlineId}\"]`,\n getAttrs: (dom) => {\n return {\n value: (dom as HTMLElement).dataset.value ?? '',\n }\n },\n },\n ],\n toDOM: (node) => {\n const code: string = node.attrs.value\n const dom = document.createElement('span')\n dom.dataset.type = mathInlineId\n dom.dataset.value = code\n if (!code) {\n dom.classList.add('empty-math-inline')\n dom.textContent = '添加 LaTeX 公式'\n dom.contentEditable = 'false'\n dom.style.userSelect = 'none'\n dom.style.cursor = 'pointer'\n } else {\n dom.classList.remove('empty-math-inline')\n katex.render(code, dom, {\n throwOnError: false,\n })\n }\n\n return dom\n },\n parseMarkdown: {\n match: (node) => node.type === 'inlineMath',\n runner: (state, node, type) => {\n state.addNode(type, { value: node.value as string })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === mathInlineId,\n runner: (state, node) => {\n state.addNode('inlineMath', undefined, node.attrs.value)\n },\n },\n}))\n","import type { Node } from '@jvs-milkdown/kit/prose/model'\n\nimport { findNodeInSelection } from '@jvs-milkdown/kit/prose'\nimport { NodeSelection, TextSelection } from '@jvs-milkdown/kit/prose/state'\nimport { $command } from '@jvs-milkdown/kit/utils'\n\nimport { mathInlineSchema } from './inline-latex'\n\nexport const toggleLatexCommand = $command('ToggleLatex', (ctx) => {\n return () => (state, dispatch) => {\n const {\n hasNode: hasLatex,\n pos: latexPos,\n target: latexNode,\n } = findNodeInSelection(state, mathInlineSchema.type(ctx))\n\n const { selection, doc, tr } = state\n if (!hasLatex) {\n const text = doc.textBetween(selection.from, selection.to)\n let _tr = tr.replaceSelectionWith(\n mathInlineSchema.type(ctx).create({\n value: text,\n })\n )\n if (dispatch) {\n dispatch(\n _tr.setSelection(NodeSelection.create(_tr.doc, selection.from))\n )\n }\n return true\n }\n\n const { from, to } = selection\n if (!latexNode || latexPos < 0) return false\n\n let _tr = tr.delete(latexPos, latexPos + 1)\n const content = (latexNode as Node).attrs.value\n _tr = _tr.insertText(content, latexPos)\n if (dispatch) {\n dispatch(\n _tr.setSelection(\n TextSelection.create(_tr.doc, from, to + content.length - 1)\n )\n )\n }\n return true\n }\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { Node as ProseNode } from '@jvs-milkdown/kit/prose/model'\n\nimport { imageBlockSchema } from '@jvs-milkdown/kit/component/image-block'\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/kit/core'\nimport {\n addBlockTypeCommand,\n blockquoteSchema,\n bulletListSchema,\n clearTextInCurrentBlockCommand,\n codeBlockSchema,\n headingSchema,\n hrSchema,\n listItemSchema,\n orderedListSchema,\n paragraphSchema,\n selectTextNearPosCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n wrapInBulletListCommand,\n wrapInHeadingCommand,\n wrapInOrderedListCommand,\n liftListItemCommand,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport { createTable } from '@jvs-milkdown/kit/preset/gfm'\nimport { findNodeInSelection } from '@jvs-milkdown/kit/prose'\nimport { lift } from '@jvs-milkdown/kit/prose/commands'\nimport { wrapInList } from '@jvs-milkdown/kit/prose/schema-list'\nimport { TextSelection } from '@jvs-milkdown/kit/prose/state'\n\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { SlashMenuItem } from './utils'\n\nimport { i18n, type CrepeTranslations } from '../../../core/locale'\nimport { useCrepeFeatures } from '../../../core/slice'\nimport { CrepeFeature } from '../../../feature'\nimport {\n bulletListIcon,\n codeIcon,\n dividerIcon,\n functionsIcon,\n fileLinkIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n imageIcon,\n orderedListIcon,\n quoteIcon,\n tableIcon,\n textIcon,\n todoListIcon,\n} from '../../../icons'\nimport { GroupBuilder, type MenuItemGroup } from '../../../utils/group-builder'\nimport { attachmentSchema } from '../../attachment/schema'\nimport { toggleLatexCommand } from '../../latex/command'\nimport { menuAPI } from './api'\n\n/**\n * If the cursor is currently inside a code_block, expand the selection\n * to cover the entire code_block. This ensures that when changing the block type\n * (e.g. to heading or paragraph), the entire multi-line content of the code block\n * is converted properly, rather than splitting and converting just one line.\n */\nfunction selectEntireCodeBlockIfNeeded(ctx: Ctx) {\n const view = ctx.get(editorViewCtx)\n const { state, dispatch } = view\n const { $from, $to } = state.selection\n\n if (state.selection instanceof TextSelection) {\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (node.type.name === 'code_block') {\n const fromPos = $from.start(d)\n const toPos = $from.end(d)\n const textContent = node.textContent\n\n if (textContent.includes('\\n')) {\n let tr = state.tr\n // Iterate backwards to avoid index shifting issues\n for (let i = textContent.length - 1; i >= 0; i--) {\n if (textContent[i] === '\\n') {\n const pos = fromPos + i\n // Delete the newline character\n tr = tr.delete(pos, pos + 1)\n // Split the code_block into separate blocks\n tr = tr.split(pos)\n }\n }\n // The mapping keeps track of our positions smoothly\n const newStart = tr.mapping.map(fromPos, -1)\n const newEnd = tr.mapping.map(toPos, 1)\n tr = tr.setSelection(TextSelection.create(tr.doc, newStart, newEnd))\n dispatch(tr)\n } else {\n if ($from.pos !== fromPos || $to.pos !== toPos) {\n dispatch(\n state.tr.setSelection(\n TextSelection.create(state.doc, fromPos, toPos)\n )\n )\n }\n }\n break\n }\n }\n }\n}\n\n/**\n * If the cursor is inside a list_item, lift it (and any ancestors) out\n * so the resulting paragraph is no longer wrapped by a list.\n * This is needed because list_item schema requires 'paragraph' as first child,\n * preventing direct setBlockType → heading conversion.\n */\nfunction liftOutOfListItem(ctx: Ctx) {\n const commands = ctx.get(commandsCtx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n\n for (let safety = 0; safety < 10; safety++) {\n const { $from } = view.state.selection\n let inListItem = false\n for (let d = $from.depth; d > 0; d--) {\n if ($from.node(d).type === listItem) {\n inListItem = true\n break\n }\n }\n if (!inListItem) break\n commands.call(liftListItemCommand.key)\n }\n}\n\n/**\n * Convert any headings in the selection to paragraphs before wrapping in a list.\n * This is needed because list_item schema requires 'paragraph' as first child,\n * so a heading cannot be directly placed inside a list_item.\n */\nfunction convertHeadingToParagraphIfNeeded(ctx: Ctx) {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const heading = headingSchema.type(ctx)\n const { from, to } = view.state.selection\n\n let hasHeading = false\n view.state.doc.nodesBetween(from, to, (node) => {\n if (node.type === heading) hasHeading = true\n })\n\n if (hasHeading) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n }\n}\n\nexport function getGroups(\n filter?: string,\n config?: BlockEditFeatureConfig,\n ctx?: Ctx\n) {\n const flags = ctx && useCrepeFeatures(ctx).get()\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n const isImageBlockEnabled = flags?.includes(CrepeFeature.ImageBlock)\n const isTableEnabled = flags?.includes(CrepeFeature.Table)\n const isAttachmentEnabled = flags?.includes(CrepeFeature.Attachment)\n\n const t = (key: keyof CrepeTranslations, fallback: string) =>\n ctx ? i18n(ctx, key) : fallback\n\n const groupBuilder = new GroupBuilder<SlashMenuItem>()\n if (config?.textGroup !== null) {\n const textGroup = groupBuilder.addGroup(\n 'text',\n config?.textGroup?.label ?? t('menu.group.text', 'Text')\n )\n if (config?.textGroup?.text !== null) {\n textGroup.addItem('text', {\n label: config?.textGroup?.text?.label ?? t('menu.item.text', 'Text'),\n icon: config?.textGroup?.text?.icon ?? textIcon,\n tooltip: t('menu.tooltip.text', 'Text (Ctrl+Alt+0)'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const paragraph = paragraphSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraph,\n })\n },\n })\n }\n\n if (config?.textGroup?.h1 !== null) {\n textGroup.addItem('h1', {\n label: config?.textGroup?.h1?.label ?? t('menu.item.h1', 'Heading 1'),\n icon: config?.textGroup?.h1?.icon ?? h1Icon,\n tooltip: t(\n 'menu.tooltip.h1',\n 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 1\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 1)\n }\n },\n })\n }\n\n if (config?.textGroup?.h2 !== null) {\n textGroup.addItem('h2', {\n label: config?.textGroup?.h2?.label ?? t('menu.item.h2', 'Heading 2'),\n icon: config?.textGroup?.h2?.icon ?? h2Icon,\n tooltip: t(\n 'menu.tooltip.h2',\n 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 2\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 2)\n }\n },\n })\n }\n\n if (config?.textGroup?.h3 !== null) {\n textGroup.addItem('h3', {\n label: config?.textGroup?.h3?.label ?? t('menu.item.h3', 'Heading 3'),\n icon: config?.textGroup?.h3?.icon ?? h3Icon,\n tooltip: t(\n 'menu.tooltip.h3',\n 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 3\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 3)\n }\n },\n })\n }\n\n if (config?.textGroup?.h4 !== null) {\n textGroup.addItem('h4', {\n label: config?.textGroup?.h4?.label ?? t('menu.item.h4', 'Heading 4'),\n icon: config?.textGroup?.h4?.icon ?? h4Icon,\n tooltip: t(\n 'menu.tooltip.h4',\n 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 4\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 4)\n }\n },\n })\n }\n\n if (config?.textGroup?.h5 !== null) {\n textGroup.addItem('h5', {\n label: config?.textGroup?.h5?.label ?? t('menu.item.h5', 'Heading 5'),\n icon: config?.textGroup?.h5?.icon ?? h5Icon,\n tooltip: t(\n 'menu.tooltip.h5',\n 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 5\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 5)\n }\n },\n })\n }\n\n if (config?.textGroup?.h6 !== null) {\n textGroup.addItem('h6', {\n label: config?.textGroup?.h6?.label ?? t('menu.item.h6', 'Heading 6'),\n icon: config?.textGroup?.h6?.icon ?? h6Icon,\n tooltip: t(\n 'menu.tooltip.h6',\n 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 6\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 6)\n }\n },\n })\n }\n }\n\n if (config?.blockGroup !== null) {\n const blockGroup = groupBuilder.addGroup(\n 'block',\n config?.blockGroup?.label ?? t('menu.group.block', 'Block')\n )\n\n if (config?.blockGroup?.quote !== null) {\n blockGroup.addItem('quote', {\n label:\n config?.blockGroup?.quote?.label ?? t('menu.item.quote', 'Quote'),\n icon: config?.blockGroup?.quote?.icon ?? quoteIcon,\n tooltip: t(\n 'menu.tooltip.quote',\n 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const blockquote = blockquoteSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive = findNodeInSelection(view.state, blockquote).hasNode\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n lift(view.state, view.dispatch)\n } else {\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: blockquote,\n })\n }\n },\n })\n }\n\n if (config?.blockGroup?.divider !== null) {\n blockGroup.addItem('divider', {\n label:\n config?.blockGroup?.divider?.label ??\n t('menu.item.divider', 'Divider'),\n icon: config?.blockGroup?.divider?.icon ?? dividerIcon,\n tooltip: t('menu.tooltip.divider', 'Divider\\nMarkdown: --- Space'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const hr = hrSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n commands.call(addBlockTypeCommand.key, {\n nodeType: hr,\n })\n },\n })\n }\n }\n\n if (config?.listGroup !== null) {\n const listGroup = groupBuilder.addGroup(\n 'list',\n config?.listGroup?.label ?? t('menu.group.list', 'List')\n )\n if (config?.listGroup?.bulletList !== null) {\n listGroup.addItem('bullet-list', {\n label:\n config?.listGroup?.bulletList?.label ??\n t('menu.item.bulletList', 'Bullet List'),\n icon: config?.listGroup?.bulletList?.icon ?? bulletListIcon,\n tooltip: t(\n 'menu.tooltip.bulletList',\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const bulletList = bulletListSchema.type(ctx)\n const orderedList = orderedListSchema.type(ctx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n\n let hasBulletItem = false\n let hasTaskItem = false\n let hasOrderedItem = false\n let hasUnlisted = false\n\n const { from, to } = view.state.selection\n view.state.doc.nodesBetween(from, to, (node, _pos, parent) => {\n if (node.type === listItem) {\n if (parent?.type === bulletList) {\n if (node.attrs.checked != null) hasTaskItem = true\n else hasBulletItem = true\n } else if (parent?.type === orderedList) {\n hasOrderedItem = true\n }\n } else if (\n ['paragraph', 'heading'].includes(node.type.name) &&\n parent?.type !== listItem\n ) {\n hasUnlisted = true\n }\n })\n\n const isActive =\n hasBulletItem && !hasTaskItem && !hasOrderedItem && !hasUnlisted\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n\n if (isActive) {\n // Toggle off: lift out of list\n commands.call(liftListItemCommand.key)\n return\n }\n\n const listsToChange: { pos: number; node: ProseNode }[] = []\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === orderedList || node.type === bulletList) {\n listsToChange.push({ pos, node })\n }\n })\n\n if (listsToChange.length > 0) {\n const tr = view.state.tr\n listsToChange\n .sort((a, b) => b.pos - a.pos)\n .forEach(({ pos, node }) => {\n tr.setNodeMarkup(pos, bulletList, {\n spread: node.attrs.spread || false,\n })\n node.forEach((child: ProseNode, offset: number) => {\n if (child.type === listItem) {\n tr.setNodeMarkup(pos + 1 + offset, undefined, {\n ...child.attrs,\n checked: null,\n listType: 'bullet',\n label: '•',\n })\n }\n })\n })\n view.dispatch(tr)\n return\n }\n\n // Not in any list → wrap (convert heading to paragraph first)\n convertHeadingToParagraphIfNeeded(ctx)\n commands.call(wrapInBulletListCommand.key)\n },\n })\n }\n\n if (config?.listGroup?.orderedList !== null) {\n listGroup.addItem('ordered-list', {\n label:\n config?.listGroup?.orderedList?.label ??\n t('menu.item.orderedList', 'Ordered List'),\n icon: config?.listGroup?.orderedList?.icon ?? orderedListIcon,\n tooltip: t(\n 'menu.tooltip.orderedList',\n 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const orderedList = orderedListSchema.type(ctx)\n const bulletList = bulletListSchema.type(ctx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const { from, to } = view.state.selection\n\n let hasOrderedList = false\n let hasNonOrderedList = false\n let hasUnlisted = false\n\n view.state.doc.nodesBetween(from, to, (node, _pos, parent) => {\n if (node.type === listItem) {\n if (parent?.type === orderedList) hasOrderedList = true\n else hasNonOrderedList = true\n } else if (\n ['paragraph', 'heading'].includes(node.type.name) &&\n parent?.type !== listItem\n ) {\n hasUnlisted = true\n }\n })\n\n const isActive = hasOrderedList && !hasNonOrderedList && !hasUnlisted\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n\n if (isActive) {\n commands.call(liftListItemCommand.key)\n return\n }\n\n const listsToChange: { pos: number; node: ProseNode }[] = []\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === orderedList || node.type === bulletList) {\n listsToChange.push({ pos, node })\n }\n })\n\n if (listsToChange.length > 0) {\n const tr = view.state.tr\n listsToChange\n .sort((a, b) => b.pos - a.pos)\n .forEach(({ pos, node }) => {\n tr.setNodeMarkup(pos, orderedList, {\n spread: node.attrs.spread || false,\n order: 1,\n })\n let idx = 1\n node.forEach((child: ProseNode, offset: number) => {\n if (child.type === listItem) {\n tr.setNodeMarkup(pos + 1 + offset, undefined, {\n ...child.attrs,\n checked: null,\n listType: 'ordered',\n label: `${idx}.`,\n })\n idx++\n }\n })\n })\n view.dispatch(tr)\n return\n }\n\n // Convert heading to paragraph first, then wrap\n convertHeadingToParagraphIfNeeded(ctx)\n commands.call(wrapInOrderedListCommand.key)\n },\n })\n }\n\n if (config?.listGroup?.taskList !== null) {\n listGroup.addItem('task-list', {\n label:\n config?.listGroup?.taskList?.label ??\n t('menu.item.taskList', 'Task List'),\n icon: config?.listGroup?.taskList?.icon ?? todoListIcon,\n tooltip: t('menu.tooltip.taskList', 'Task List\\nMarkdown: - [ ] Space'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const bulletList = bulletListSchema.type(ctx)\n const orderedList = orderedListSchema.type(ctx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const { from, to } = view.state.selection\n\n let hasTaskList = false\n let hasNonTaskList = false\n let hasUnlisted = false\n\n view.state.doc.nodesBetween(from, to, (node, _pos, parent) => {\n if (node.type === listItem) {\n if (node.attrs.checked != null) hasTaskList = true\n else hasNonTaskList = true\n } else if (\n ['paragraph', 'heading'].includes(node.type.name) &&\n parent?.type !== listItem\n ) {\n hasUnlisted = true\n }\n })\n\n const isActive = hasTaskList && !hasNonTaskList && !hasUnlisted\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n\n if (isActive) {\n commands.call(liftListItemCommand.key)\n return\n }\n\n const listsToChange: { pos: number; node: ProseNode }[] = []\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === orderedList || node.type === bulletList) {\n listsToChange.push({ pos, node })\n }\n })\n\n if (listsToChange.length > 0) {\n const tr = view.state.tr\n listsToChange\n .sort((a, b) => b.pos - a.pos)\n .forEach(({ pos, node }) => {\n tr.setNodeMarkup(pos, bulletList, {\n spread: node.attrs.spread || false,\n })\n node.forEach((child: ProseNode, offset: number) => {\n if (child.type === listItem) {\n tr.setNodeMarkup(pos + 1 + offset, undefined, {\n ...child.attrs,\n checked:\n child.attrs.checked != null\n ? child.attrs.checked\n : false,\n listType: 'bullet',\n label: '•',\n })\n }\n })\n })\n view.dispatch(tr)\n return\n }\n\n // Convert heading to paragraph first, then wrap\n convertHeadingToParagraphIfNeeded(ctx)\n const result = wrapInList(bulletList)(view.state, (tr) => {\n // Set checked attribute on each list item\n tr.doc.nodesBetween(\n tr.mapping.map(from),\n tr.mapping.map(to),\n (node, pos) => {\n if (node.type === listItem) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n checked: false,\n listType: 'bullet',\n label: '•',\n })\n }\n }\n )\n view.dispatch(tr)\n })\n if (result) return\n },\n })\n }\n }\n\n if (config?.advancedGroup !== null) {\n const advancedGroup = groupBuilder.addGroup(\n 'advanced',\n config?.advancedGroup?.label ?? t('menu.group.advanced', 'Advanced')\n )\n\n if (config?.advancedGroup?.image !== null && isImageBlockEnabled) {\n advancedGroup.addItem('image', {\n label:\n config?.advancedGroup?.image?.label ?? t('menu.item.image', 'Image'),\n icon: config?.advancedGroup?.image?.icon ?? imageIcon,\n tooltip: t('menu.tooltip.image', 'Image\\nMarkdown: ![alt](url)'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const imageBlock = imageBlockSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n commands.call(addBlockTypeCommand.key, {\n nodeType: imageBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.attachment !== null && isAttachmentEnabled) {\n advancedGroup.addItem('attachment', {\n label:\n config?.advancedGroup?.attachment?.label ??\n t('menu.item.attachment', 'Video or File'),\n icon: config?.advancedGroup?.attachment?.icon ?? fileLinkIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const attachBlock = attachmentSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n commands.call(addBlockTypeCommand.key, {\n nodeType: attachBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.codeBlock !== null) {\n advancedGroup.addItem('code', {\n label:\n config?.advancedGroup?.codeBlock?.label ??\n t('menu.item.code', 'Code'),\n icon: config?.advancedGroup?.codeBlock?.icon ?? codeIcon,\n tooltip: t(\n 'menu.tooltip.code',\n 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const codeBlock = codeBlockSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, codeBlock)\n const isActive =\n result.hasNode && result.target?.attrs?.language !== 'LaTex'\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(setBlockTypeCommand.key, {\n nodeType: codeBlock,\n })\n }\n },\n })\n }\n\n if (config?.advancedGroup?.table !== null && isTableEnabled) {\n advancedGroup.addItem('table', {\n label:\n config?.advancedGroup?.table?.label ?? t('menu.item.table', 'Table'),\n icon: config?.advancedGroup?.table?.icon ?? tableIcon,\n tooltip: t('menu.tooltip.table', 'Table\\nMarkdown: | | |'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n // record the position before the table is inserted\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, 3, 3),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.math !== null && isLatexEnabled) {\n advancedGroup.addItem('math', {\n label:\n config?.advancedGroup?.math?.label ?? t('menu.item.math', 'Math'),\n icon: config?.advancedGroup?.math?.icon ?? functionsIcon,\n tooltip: t('menu.tooltip.math', 'Math\\nMarkdown: $$ Enter'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n commands.call(toggleLatexCommand.key)\n\n requestAnimationFrame(() => {\n view.dispatch(view.state.tr)\n })\n },\n })\n }\n }\n\n config?.buildMenu?.(groupBuilder)\n\n let groups = groupBuilder.build()\n\n if (filter) {\n groups = groups\n .map((group) => {\n const items = group.items.filter((item) =>\n item.label.toLowerCase().includes(filter.toLowerCase())\n )\n\n return {\n ...group,\n items,\n }\n })\n .filter((group) => group.items.length > 0)\n }\n\n const items = groups.flatMap((groups) => groups.items)\n items.forEach((item, index) => {\n Object.assign(item, { index })\n })\n\n groups.reduce((acc, group) => {\n const end = acc + group.items.length\n Object.assign(group, {\n range: [acc, end],\n })\n return end\n }, 0)\n\n return {\n groups: groups as MenuItemGroup<SlashMenuItem>[],\n size: items.length,\n }\n}\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\nimport { editorViewCtx, commandsCtx, schemaCtx } from '@jvs-milkdown/kit/core'\nimport {\n clearTextInCurrentBlockCommand,\n addBlockTypeCommand,\n selectTextNearPosCommand,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport { createTable } from '@jvs-milkdown/kit/preset/gfm'\nimport { TextSelection, NodeSelection } from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport {\n computed,\n defineComponent,\n onUnmounted,\n ref,\n watch,\n watchEffect,\n type Ref,\n type PropType,\n h,\n} from 'vue'\n\nimport type { BlockEditFeatureConfig } from '..'\n\nimport { i18n } from '../../../core/locale'\nimport {\n alignLeftIcon,\n alignCenterIcon,\n alignRightIcon,\n indentIncreaseIcon,\n indentDecreaseIcon,\n confirmIcon,\n editIcon,\n clearIcon,\n copyIcon,\n removeIcon,\n plusIcon,\n chevronDownIcon,\n} from '../../../icons'\nimport { keepAlive } from '../../../utils/keep-alive'\nimport { textColorSchema, bgColorSchema } from '../../toolbar/color'\nimport { menuAPI } from './api'\nimport { getGroups } from './config'\n\nkeepAlive(h)\n\ntype MenuProps = {\n ctx: Ctx\n show: Ref<boolean>\n filter: Ref<string>\n hide: () => void\n config?: BlockEditFeatureConfig\n activeKey: Ref<string>\n}\n\nexport const Menu = defineComponent<MenuProps>({\n props: {\n ctx: {\n type: Object,\n required: true,\n },\n activeKey: {\n type: Object as PropType<Ref<string>>,\n required: true,\n },\n show: {\n type: Object,\n required: true,\n },\n filter: {\n type: Object,\n required: true,\n },\n hide: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: false,\n },\n },\n setup({ ctx, show, filter, hide, config, activeKey }: any) {\n const host = ref<HTMLElement>()\n const groupInfo = computed(() => getGroups(filter.value, config, ctx))\n const hoverIndex = ref(0)\n const prevMousePosition = ref({ x: -999, y: -999 })\n\n const showIndentAlignMenu = ref(false)\n const indentAlignMenuPos = ref({ top: 0, left: 0 })\n let hideMenuTimer: ReturnType<typeof setTimeout> | null = null\n\n const handleIndentAlignEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n indentAlignMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showColorMenu.value = false\n showAddBelowMenu.value = false\n showIndentAlignMenu.value = true\n }\n\n const handleIndentAlignLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = false\n }, 150)\n }\n\n const showColorMenu = ref(false)\n const colorMenuPos = ref({ top: 0, left: 0 })\n\n const handleColorEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n colorMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showIndentAlignMenu.value = false\n showAddBelowMenu.value = false\n showColorMenu.value = true\n }\n\n const handleColorLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = false\n }, 150)\n }\n\n const showAddBelowMenu = ref(false)\n const addBelowMenuPos = ref({ top: 0, left: 0 })\n\n const handleAddBelowEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n addBelowMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = true\n }\n\n const handleAddBelowLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = false\n showTableMenu.value = false\n }, 150)\n }\n\n const showTableMenu = ref(false)\n const tableMenuPos = ref({ top: 0, left: 0 })\n const tableHoverIndices = ref({ r: 0, c: 0 })\n\n const handleTableEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n tableMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showIndentAlignMenu.value = false\n showAddBelowMenu.value = false\n showColorMenu.value = false\n showTableMenu.value = true\n }\n\n const handleTableLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showAddBelowMenu.value = false\n showColorMenu.value = false\n showTableMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n }, 150)\n }\n\n const runTableInsert = (rows: number, cols: number) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const api = ctx.get(menuAPI.key)\n\n if (api) {\n const pos = api.getPos()\n if (pos !== null && pos !== undefined) {\n const { tr } = view.state\n const node = tr.doc.nodeAt(pos)\n if (node) {\n const endPos = pos + node.nodeSize - 1\n const $endPos = tr.doc.resolve(endPos)\n view.dispatch(tr.setSelection(TextSelection.near($endPos, -1)))\n } else {\n const $pos = tr.doc.resolve(pos)\n view.dispatch(tr.setSelection(TextSelection.near($pos)))\n }\n }\n }\n\n if (!api?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n const { $from } = view.state.selection\n let tableEndPos: number | null = null\n for (let d = $from.depth; d > 0; d--) {\n if ($from.node(d).type.name === 'table') {\n tableEndPos = $from.after(d)\n break\n }\n }\n\n if (tableEndPos !== null) {\n const { tr } = view.state\n const tableNode = createTable(ctx, rows, cols)\n view.dispatch(tr.insert(tableEndPos, tableNode))\n commands.call(selectTextNearPosCommand.key, {\n pos: tableEndPos,\n })\n } else {\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, rows, cols),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n }\n\n showTableMenu.value = false\n hide()\n }\n\n const onPointerMove = (e: MouseEvent) => {\n const { x, y } = e\n prevMousePosition.value = { x, y }\n }\n\n watch(\n [groupInfo, show],\n ([newGroupInfo, newShow]: any, [oldGroupInfo, oldShow]: any) => {\n const { size } = newGroupInfo\n if (size === 0 && newShow) {\n hide()\n return\n }\n\n if (newShow && newShow !== oldShow) {\n const items = newGroupInfo.groups.flatMap((g: any) => g.items)\n const api = ctx.get(menuAPI.key)\n const isSlash = api?.getMode() === 'list' || !api?.isProgrammatic()\n\n if (isSlash) {\n hoverIndex.value = 0\n setTimeout(() => {\n const scrollRoot =\n host.value?.querySelector<HTMLElement>('.menu-groups')\n if (scrollRoot) {\n scrollRoot.scrollTop = 0\n }\n }, 0)\n } else {\n const target = items.find((i: any) => i.key === activeKey.value)\n hoverIndex.value = target ? target.index : 0\n setTimeout(() => scrollToIndex(hoverIndex.value), 0)\n }\n } else if (newGroupInfo !== oldGroupInfo) {\n hoverIndex.value = 0\n setTimeout(() => {\n const scrollRoot =\n host.value?.querySelector<HTMLElement>('.menu-groups')\n if (scrollRoot) {\n scrollRoot.scrollTop = 0\n }\n }, 0)\n } else if (hoverIndex.value >= size) {\n hoverIndex.value = 0\n }\n }\n )\n\n const onHover = (\n index: number | ((prev: number) => number),\n after?: (index: number) => void\n ) => {\n const prevHoverIndex = hoverIndex.value\n const next = typeof index === 'function' ? index(prevHoverIndex) : index\n after?.(next)\n hoverIndex.value = next\n }\n\n const scrollToIndex = (index: number) => {\n const target = host.value?.querySelector<HTMLElement>(\n `[data-index=\"${index}\"]`\n )\n const scrollRoot = host.value?.querySelector<HTMLElement>('.menu-groups')\n\n if (!target || !scrollRoot) return\n\n scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop\n }\n\n const runByIndex = (index: number) => {\n const item = groupInfo.value.groups\n .flatMap((group: any) => group.items)\n .at(index)\n if (item && ctx) {\n const api = ctx.get(menuAPI.key)\n if (api) {\n const pos = api.getPos()\n if (pos !== null && pos !== undefined) {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n const node = tr.doc.nodeAt(pos)\n if (node) {\n const endPos = pos + node.nodeSize - 1\n const $endPos = tr.doc.resolve(endPos)\n view.dispatch(tr.setSelection(TextSelection.near($endPos, -1)))\n } else {\n const $pos = tr.doc.resolve(pos)\n view.dispatch(tr.setSelection(TextSelection.near($pos)))\n }\n }\n }\n item.onRun(ctx)\n }\n\n hide()\n }\n\n const runByIndexForAddBelow = (index: number) => {\n const item = groupInfo.value.groups\n .flatMap((group: any) => group.items)\n .at(index)\n if (item && ctx) {\n const api = ctx.get(menuAPI.key)\n const pos = api?.getPos()\n if (pos !== null && pos !== undefined) {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (targetNode) {\n const endPos = pos + targetNode.nodeSize\n const paragraphType = view.state.schema.nodes.paragraph\n if (paragraphType) {\n view.dispatch(tr.insert(endPos, paragraphType.createAndFill()!))\n view.dispatch(\n view.state.tr.setSelection(\n TextSelection.create(view.state.doc, endPos + 1)\n )\n )\n view.focus()\n }\n }\n }\n item.onRun(ctx)\n }\n\n showAddBelowMenu.value = false\n hide()\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n const { size, groups } = groupInfo.value\n if (e.key === 'Escape') {\n e.preventDefault()\n hide?.()\n return\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return onHover(\n (index) => (index < size - 1 ? index + 1 : index),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return onHover(\n (index) => (index <= 0 ? index : index - 1),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group: any) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const prevGroup = groups[groups.indexOf(group) - 1]\n if (!prevGroup) return index\n\n return prevGroup.range[1] - 1\n }, scrollToIndex)\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group: any) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const nextGroup = groups[groups.indexOf(group) + 1]\n if (!nextGroup) return index\n\n return nextGroup.range[0]\n }, scrollToIndex)\n }\n\n if (e.key === 'Enter') {\n e.preventDefault()\n runByIndex(hoverIndex.value)\n }\n }\n\n const getOnPointerEnter = (index: number) => (e: MouseEvent) => {\n const prevPos = prevMousePosition.value\n if (!prevPos) return\n\n const { x, y } = e\n if (x === prevPos.x && y === prevPos.y) return\n\n onHover(index)\n }\n\n watchEffect(() => {\n const isShown = show.value\n if (isShown) {\n window.addEventListener('keydown', onKeydown, { capture: true })\n } else {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n }\n })\n onUnmounted(() => {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n })\n\n return () => {\n // Force vue to track the `show` ref so it correctly re-evaluates `api.isProgrammatic()`\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n void show.value\n const api = ctx.get(menuAPI.key)\n const showListMenu =\n api?.getMode() === 'list' ||\n !api?.isProgrammatic() ||\n filter.value !== ''\n\n if (showListMenu) {\n return (\n <div ref={host} onPointerdown={(e: any) => e.preventDefault()}>\n <div class=\"menu-groups\" onPointermove={onPointerMove}>\n {groupInfo.value.groups.map((group: any) => (\n <div key={group.key} class=\"menu-group\">\n <h6>{group.label}</h6>\n <ul>\n {group.items.map((item: any) => (\n <li\n key={item.key}\n data-index={item.index}\n data-key={item.key}\n title={item.tooltip || item.label}\n class={[\n hoverIndex.value === item.index ? 'hover' : '',\n item.key === activeKey.value ? 'selected' : '',\n ]}\n onPointerenter={(e: any) => {\n getOnPointerEnter(item.index)(e)\n if (item.key === 'table') handleTableEnter(e)\n else {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n showTableMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n }\n }}\n onPointerleave={() => {\n if (item.key === 'table') handleTableLeave()\n }}\n onPointerdown={(e: any) => {\n if (item.key === 'table') {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }}\n onPointerup={(e: any) => {\n if (item.key === 'table') {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n >\n <Icon icon={item.icon} />\n <span style={item.key === 'table' ? { flex: 1 } : {}}>\n {item.label}\n </span>\n {item.key === 'table' ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n opacity: 0.5,\n transform: 'rotate(-90deg)',\n }}\n >\n <Icon icon={chevronDownIcon} />\n </div>\n ) : null}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n {showTableMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${tableMenuPos.value.top}px`,\n left: `${tableMenuPos.value.left}px`,\n zIndex: 9999,\n width: 'max-content',\n padding: '12px',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n display: 'flex',\n flexDirection: 'column',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleTableLeave}\n >\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginBottom: '8px',\n }}\n >\n {i18n(ctx, 'customMenu.insertTable')}\n </div>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(9, 1fr)',\n gap: '4px',\n width: 'max-content',\n }}\n >\n {Array.from({ length: 9 }).map((_, r) =>\n Array.from({ length: 9 }).map((_, c) => {\n const isHovered =\n r < tableHoverIndices.value.r &&\n c < tableHoverIndices.value.c\n return (\n <div\n key={`cell-${r}-${c}`}\n style={{\n width: '20px',\n height: '20px',\n backgroundColor: isHovered\n ? 'color-mix(in srgb, var(--crepe-color-primary), transparent 85%)'\n : 'var(--crepe-color-surface-low, #f5f5f5)',\n border: isHovered\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n onPointerenter={() => {\n tableHoverIndices.value = { r: r + 1, c: c + 1 }\n }}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n runTableInsert(r + 1, c + 1)\n }}\n />\n )\n })\n )}\n </div>\n {tableHoverIndices.value.r > 0 ? (\n <div\n style={{\n fontSize: '12px',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n {tableHoverIndices.value.r} x {tableHoverIndices.value.c}\n </div>\n ) : (\n <div\n style={{\n fontSize: '12px',\n color: 'transparent',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n 0 x 0\n </div>\n )}\n </div>\n ) : null}\n </div>\n )\n }\n\n const allItems = groupInfo.value.groups.flatMap((g: any) => g.items)\n const findItem = (key: string) => allItems.find((i: any) => i.key === key)\n\n const allGridKeys = [\n 'text',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'bullet-list',\n 'ordered-list',\n 'task-list',\n 'code',\n 'quote',\n ]\n\n const view = ctx.get(editorViewCtx)\n const pos = api?.getPos()\n const node =\n pos !== null && pos !== undefined ? view.state.doc.nodeAt(pos) : null\n\n const isImageBlock = node?.type.name === 'image-block'\n const isAttachmentBlock = node?.type.name.includes('attachment')\n\n let hasImageChild = false\n if (node?.type.name === 'paragraph') {\n node.content.forEach((child: any) => {\n if (child.type.name.includes('image')) {\n hasImageChild = true\n }\n })\n }\n\n const isImageParagraph =\n node?.type.name === 'paragraph' &&\n node.textContent.length === 0 &&\n hasImageChild\n const isTableBlock = node?.type.name === 'table'\n const isMedia =\n node?.type.name?.includes('image') ||\n isAttachmentBlock ||\n isImageParagraph ||\n node?.type.name === 'hr' ||\n isTableBlock\n const showAlign = !isMedia || isImageBlock\n\n const isEmpty = node\n ? node.type.name === 'paragraph' &&\n node.textContent.length === 0 &&\n node.content.size <= 2 &&\n !isMedia\n : false\n\n const currentAlign = node?.attrs?.align || 'left'\n const currentIndent = node?.attrs?.indent || 0\n\n const setAlign = (alignValue: string) => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n view.dispatch(\n tr.setNodeMarkup(pos, undefined, {\n ...targetNode.attrs,\n align: alignValue,\n })\n )\n showIndentAlignMenu.value = false\n hide()\n }\n\n const setIndent = (adjustment: number) => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n const newIndent = Math.max(\n 0,\n (targetNode.attrs.indent || 0) + adjustment\n )\n view.dispatch(\n tr.setNodeMarkup(pos, undefined, {\n ...targetNode.attrs,\n indent: newIndent,\n })\n )\n showIndentAlignMenu.value = false\n hide()\n }\n\n let activeTextColor: string | null = null\n let activeBgColor: string | null = null\n\n if (node && node.nodeSize > 2) {\n const schema = ctx.get(schemaCtx)\n const tcHasMark = schema.marks[textColorSchema.id]\n const bcHasMark = schema.marks[bgColorSchema.id]\n\n if (tcHasMark || bcHasMark) {\n node.descendants((childNode: any) => {\n if (childNode.isText) {\n if (tcHasMark && !activeTextColor) {\n const tcType = textColorSchema.type(ctx)\n const tcMark = childNode.marks.find(\n (m: any) => m.type === tcType\n )\n if (tcMark) activeTextColor = tcMark.attrs.color\n }\n if (bcHasMark && !activeBgColor) {\n const bcType = bgColorSchema.type(ctx)\n const bcMark = childNode.marks.find(\n (m: any) => m.type === bcType\n )\n if (bcMark) activeBgColor = bcMark.attrs.color\n }\n }\n return false\n })\n }\n }\n\n const setBlockColor = (colorValue: string | null, isBg: boolean) => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n const schema = ctx.get(schemaCtx)\n const hasMark = isBg\n ? schema.marks[bgColorSchema.id]\n : schema.marks[textColorSchema.id]\n if (!hasMark) return\n\n const markType = isBg\n ? bgColorSchema.type(ctx)\n : textColorSchema.type(ctx)\n const start = pos + 1\n const end = pos + targetNode.nodeSize - 1\n\n tr.removeMark(start, end, markType)\n\n if (colorValue) {\n tr.addMark(start, end, markType.create({ color: colorValue }))\n }\n\n view.dispatch(tr)\n\n showColorMenu.value = false\n hide()\n }\n\n const setTextColor = (color: string | null) => setBlockColor(color, false)\n const setBgColor = (color: string | null) => setBlockColor(color, true)\n\n const clearColor = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n const schema = ctx.get(schemaCtx)\n const tcHasMark = schema.marks[textColorSchema.id]\n const bcHasMark = schema.marks[bgColorSchema.id]\n\n const start = pos + 1\n const end = pos + targetNode.nodeSize - 1\n\n if (tcHasMark) {\n tr.removeMark(start, end, textColorSchema.type(ctx))\n }\n if (bcHasMark) {\n tr.removeMark(start, end, bgColorSchema.type(ctx))\n }\n\n view.dispatch(tr)\n showColorMenu.value = false\n hide()\n }\n\n const applyDelete = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n view.dispatch(tr.delete(pos, pos + targetNode.nodeSize))\n hide()\n }\n\n const applyCopy = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n view.dispatch(tr.setSelection(NodeSelection.create(tr.doc, pos)))\n view.focus()\n document.execCommand('copy')\n hide()\n }\n\n const applyCut = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n view.dispatch(tr.setSelection(NodeSelection.create(tr.doc, pos)))\n view.focus()\n document.execCommand('cut')\n hide()\n }\n\n if (isEmpty) {\n allGridKeys.push('divider', 'image')\n }\n\n const gridRows = []\n for (let i = 0; i < allGridKeys.length; i += 6) {\n gridRows.push(allGridKeys.slice(i, i + 6))\n }\n\n const renderGridBtn = (key: string) => {\n const item = findItem(key)\n if (!item) return null\n return (\n <div\n title={item.label}\n class={[\n 'menu-grid-btn',\n hoverIndex.value === item.index ? 'hover' : '',\n item.key === activeKey.value ? 'selected' : '',\n ]}\n onPointerenter={getOnPointerEnter(item.index)}\n onPointerdown={() =>\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }\n onPointerup={() => {\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n data-index={item.index}\n >\n <Icon icon={item.icon} />\n </div>\n )\n }\n\n const renderCustomRow = (\n iconHtml: string,\n label: string,\n hasArrow?: boolean,\n onPointerEnter?: (e: MouseEvent) => void,\n onPointerLeave?: (e: MouseEvent) => void,\n onClick?: () => void\n ) => {\n return (\n <div\n class=\"custom-menu-row\"\n onPointerenter={onPointerEnter}\n onPointerleave={onPointerLeave}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n onClick?.()\n }}\n >\n <div class=\"custom-menu-row-left\">\n <Icon icon={iconHtml} />\n <span>{label}</span>\n </div>\n {hasArrow ? <Icon icon={chevronDownIcon} /> : null}\n </div>\n )\n }\n\n const renderSubMenuItem = (\n iconHtml: string,\n label: string,\n isActive: boolean,\n onClick: () => void,\n disabled = false\n ) => {\n return (\n <div\n class={['custom-menu-row', disabled ? 'disabled' : '']}\n style={{\n opacity: disabled ? 0.5 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) onClick()\n }}\n >\n <div class=\"custom-menu-row-left\">\n <Icon icon={iconHtml} />\n <span\n style={{\n color: isActive ? 'var(--crepe-color-primary)' : '#363B4C',\n }}\n >\n {label}\n </span>\n </div>\n {isActive ? (\n <span style={{ color: 'var(--crepe-color-primary)' }}>\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n )\n }\n\n return (\n <div\n ref={host}\n onPointerdown={(e: any) => e.preventDefault()}\n class=\"custom-block-menu\"\n >\n {!isMedia ? (\n <div class=\"custom-grid-container\">\n {gridRows.map((rowKeys: any, rIndex: any) => (\n <div class=\"custom-grid-row\" key={'row-' + rIndex}>\n {rowKeys.map(renderGridBtn)}\n </div>\n ))}\n </div>\n ) : null}\n\n {showAlign ? <div class=\"custom-divider\"></div> : null}\n {showAlign &&\n renderCustomRow(\n alignLeftIcon,\n i18n(ctx, 'customMenu.indentAndAlign'),\n true,\n handleIndentAlignEnter,\n handleIndentAlignLeave\n )}\n {showIndentAlignMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${indentAlignMenuPos.value.top}px`,\n left: `${indentAlignMenuPos.value.left}px`,\n zIndex: 9999,\n width: '180px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleIndentAlignLeave}\n >\n {renderSubMenuItem(\n alignLeftIcon,\n i18n(ctx, 'customMenu.alignLeft'),\n currentAlign === 'left',\n () => setAlign('left')\n )}\n {renderSubMenuItem(\n alignCenterIcon,\n i18n(ctx, 'customMenu.alignCenter'),\n currentAlign === 'center',\n () => setAlign('center')\n )}\n {renderSubMenuItem(\n alignRightIcon,\n i18n(ctx, 'customMenu.alignRight'),\n currentAlign === 'right',\n () => setAlign('right')\n )}\n <div class=\"custom-divider\"></div>\n {renderSubMenuItem(\n indentIncreaseIcon,\n i18n(ctx, 'customMenu.increaseIndent'),\n false,\n () => setIndent(1)\n )}\n {renderSubMenuItem(\n indentDecreaseIcon,\n i18n(ctx, 'customMenu.decreaseIndent'),\n false,\n () => setIndent(-1),\n currentIndent <= 0\n )}\n </div>\n ) : null}\n {!isMedia &&\n renderCustomRow(\n editIcon,\n i18n(ctx, 'customMenu.color'),\n true,\n handleColorEnter,\n handleColorLeave\n )}\n {showColorMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${colorMenuPos.value.top}px`,\n left: `${colorMenuPos.value.left}px`,\n zIndex: 9999,\n width: '246px',\n padding: '12px',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n gap: '8px',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleColorLeave}\n >\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n }}\n >\n {i18n(ctx, 'customMenu.textColor')}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n '#000000',\n '#8C8C8C',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color: any) => (\n <div\n key={color}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n setTextColor(color)\n }}\n style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n borderRadius: '4px',\n border:\n activeTextColor === color\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid #eeeff0',\n backgroundColor: '#ffffff',\n color: color,\n fontWeight: 'bold',\n fontSize: '14px',\n }}\n >\n A\n </div>\n ))}\n </div>\n\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '4px',\n }}\n >\n {i18n(ctx, 'customMenu.bgColor')}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n 'transparent',\n '#F5F5F5',\n '#FFCCC7',\n '#FFE7BA',\n '#FFF1B8',\n '#D9F7BE',\n '#D6E4FF',\n '#EFDBFF',\n ].map((color: any) => (\n <div\n key={color}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n setBgColor(color === 'transparent' ? null : color)\n }}\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n border:\n activeBgColor === color ||\n (color === 'transparent' && !activeBgColor)\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid var(--crepe-color-outline-variant)',\n backgroundColor:\n color === 'transparent' ? '#ffffff' : color,\n position: 'relative',\n overflow: 'hidden',\n }}\n >\n {color === 'transparent' ? (\n <div\n style={{\n position: 'absolute',\n top: '-2px',\n left: 0,\n width: '141%',\n height: '1px',\n backgroundColor: '#ff4d4f',\n transform: 'rotate(45deg)',\n transformOrigin: 'top left',\n }}\n ></div>\n ) : null}\n </div>\n ))}\n {[\n '#BFBFBF',\n '#595959',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color: any) => (\n <div\n key={color}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n setBgColor(color)\n }}\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n border:\n activeBgColor === color\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n backgroundColor: color,\n }}\n ></div>\n ))}\n </div>\n\n <button\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n clearColor()\n }}\n style={{\n width: '100%',\n marginTop: '8px',\n padding: '4px 0',\n border: '1px solid #eeeff0',\n borderRadius: '4px',\n background: 'transparent',\n color: '#363b4c',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n {i18n(ctx, 'customMenu.restoreDefault')}\n </button>\n </div>\n ) : null}\n\n {!isMedia ? <div class=\"custom-divider\"></div> : null}\n {renderCustomRow(\n clearIcon,\n i18n(ctx, 'customMenu.cut'),\n false,\n undefined,\n undefined,\n applyCut\n )}\n {renderCustomRow(\n copyIcon,\n i18n(ctx, 'customMenu.copy'),\n false,\n undefined,\n undefined,\n applyCopy\n )}\n {renderCustomRow(\n removeIcon,\n i18n(ctx, 'customMenu.delete'),\n false,\n undefined,\n undefined,\n applyDelete\n )}\n\n <div class=\"custom-divider\"></div>\n {renderCustomRow(\n plusIcon,\n i18n(ctx, 'customMenu.addBelow'),\n true,\n handleAddBelowEnter,\n handleAddBelowLeave\n )}\n {showAddBelowMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${addBelowMenuPos.value.top}px`,\n left: `${addBelowMenuPos.value.left}px`,\n zIndex: 9999,\n width: 'max-content',\n minWidth: '220px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleAddBelowLeave}\n >\n <div\n class=\"menu-groups\"\n onPointermove={onPointerMove}\n style={{ maxHeight: '300px', overflowY: 'auto' }}\n >\n {groupInfo.value.groups.map((group: any) => (\n <div key={group.key} class=\"menu-group\">\n <h6>{group.label}</h6>\n <ul>\n {group.items.map((item: any) => (\n <li\n key={item.key}\n data-index={item.index}\n data-key={item.key}\n class={[\n hoverIndex.value === item.index ? 'hover' : '',\n item.key === activeKey.value ? 'selected' : '',\n ]}\n onPointerenter={getOnPointerEnter(item.index)}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n host.value\n ?.querySelectorAll(`[data-index=\"${item.index}\"]`)\n .forEach((el: any) => el.classList.add('active'))\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n host.value\n ?.querySelectorAll(`[data-index=\"${item.index}\"]`)\n .forEach((el: any) =>\n el.classList.remove('active')\n )\n runByIndexForAddBelow(item.index)\n }}\n >\n <Icon icon={item.icon} />\n <span>{item.label}</span>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n ) : null}\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { Node } from '@jvs-milkdown/kit/prose/model'\nimport type { EditorView } from '@jvs-milkdown/kit/prose/view'\n\nimport { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { SlashProvider, slashFactory } from '@jvs-milkdown/kit/plugin/slash'\nimport {\n TextSelection,\n type PluginView,\n type Selection,\n} from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport { createApp, ref, type App, type Ref } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport { isInCodeBlock, isInList } from '../../../utils'\nimport { Menu } from './component'\n\nexport const menu = slashFactory('CREPE_MENU')\n\nimport { menuAPI, type MenuAPI } from './api'\n\nexport { menuAPI, type MenuAPI }\n\nexport function configureMenu(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(menu.key, {\n view: (view) => new MenuView(ctx, view, config),\n })\n}\n\nclass MenuView implements PluginView {\n readonly #content: HTMLElement\n readonly #app: App\n readonly #filter: Ref<string>\n readonly #slashProvider: SlashProvider\n readonly #activeKey: Ref<string>\n readonly #view: EditorView\n #programmaticallyPos: number | null = null\n #mode: 'list' | 'block' | null = null\n #hideTimeout: number | undefined\n #isMenuHovered = false\n #keepOpenUntilClickOutside = false\n\n constructor(ctx: Ctx, view: EditorView, config?: BlockEditFeatureConfig) {\n this.#view = view\n const content = document.createElement('div')\n content.classList.add('milkdown-slash-menu')\n const show = ref(false)\n\n const filter = ref('')\n this.#filter = filter\n\n const activeKey = ref('text')\n this.#activeKey = activeKey\n\n const hide = this.hide\n\n const app = createApp(Menu, {\n ctx,\n config,\n show,\n filter,\n hide,\n activeKey,\n })\n this.#app = app\n app.mount(content)\n\n this.#content = content\n\n this.#content.addEventListener('pointerenter', () => {\n this.#isMenuHovered = true\n this.cancelHide()\n })\n this.#content.addEventListener('pointerleave', () => {\n this.#isMenuHovered = false\n this.onHoverDelayHide()\n })\n\n // oxlint-disable-next-line ts/no-this-alias\n const self = this\n this.#slashProvider = new SlashProvider({\n content: this.#content,\n debounce: 20,\n shouldShow(this: SlashProvider, view: EditorView) {\n if (\n isInCodeBlock(view.state.selection) ||\n isInList(view.state.selection)\n )\n return false\n\n const currentText = this.getContent(view, (node) =>\n ['paragraph', 'heading'].includes(node.type.name)\n )\n\n if (currentText == null) return false\n\n if (!isSelectionAtEndOfNode(view.state.selection)) {\n return false\n }\n\n const pos = self.#programmaticallyPos\n\n filter.value = currentText.startsWith('/')\n ? currentText.slice(1)\n : currentText\n\n if (typeof pos === 'number') {\n const maxSize = view.state.doc.nodeSize - 2\n const validPos = Math.min(pos, maxSize)\n if (\n view.state.doc.resolve(validPos).node() !==\n view.state.doc.resolve(view.state.selection.from).node()\n ) {\n self.#programmaticallyPos = null\n\n return false\n }\n\n return true\n }\n\n if (!currentText.startsWith('/')) return false\n\n return true\n },\n offset: 10,\n })\n\n this.#slashProvider.onShow = () => {\n show.value = true\n }\n this.#slashProvider.onHide = () => {\n show.value = false\n this.#keepOpenUntilClickOutside = false\n }\n this.update(view)\n\n ctx.set(menuAPI.key, {\n show: (pos, isClick = false, triggerElement, mode) => {\n this.show(pos, isClick, triggerElement, mode)\n this.cancelHide()\n },\n hide: () => this.hide(),\n onHoverDelayHide: () => this.onHoverDelayHide(),\n cancelHide: () => this.cancelHide(),\n isProgrammatic: () => this.#programmaticallyPos !== null,\n getPos: () => this.#programmaticallyPos,\n isShow: () => show.value,\n getMode: () => this.#mode,\n })\n }\n\n onHoverDelayHide = () => {\n window.clearTimeout(this.#hideTimeout)\n this.#hideTimeout = window.setTimeout(() => {\n if (\n !this.#isMenuHovered &&\n !this.#keepOpenUntilClickOutside &&\n this.#programmaticallyPos !== null\n ) {\n this.hide()\n }\n }, 150)\n }\n\n cancelHide = () => {\n window.clearTimeout(this.#hideTimeout)\n }\n\n update = (view: EditorView) => {\n this.#slashProvider.update(view)\n }\n\n show = (\n pos: number,\n isClick = false,\n triggerElement?: HTMLElement,\n mode: 'list' | 'block' = 'block'\n ) => {\n if (isClick) {\n this.#keepOpenUntilClickOutside = true\n } else {\n this.#keepOpenUntilClickOutside = false\n }\n this.#programmaticallyPos = pos\n this.#mode = mode\n this.#filter.value = ''\n\n const node = this.#view.state.doc.nodeAt(pos)\n if (node) {\n this.#activeKey.value = getBlockKey(node)\n } else {\n this.#activeKey.value = 'text'\n }\n\n this.#slashProvider.show()\n this.#content.dataset.mode = mode\n\n if (triggerElement) {\n void computePosition(triggerElement, this.#content, {\n placement: 'bottom-start',\n middleware: [\n flip(),\n shift({ padding: 10 }),\n offset(({ placement }) => {\n let margin = 10\n const handle = triggerElement.closest('.milkdown-block-handle')\n if (handle) {\n const handleRect = handle.getBoundingClientRect()\n const refRect = triggerElement.getBoundingClientRect()\n if (placement.startsWith('right')) {\n margin += handleRect.right - refRect.right\n } else if (placement.startsWith('left')) {\n margin += refRect.left - handleRect.left\n }\n }\n return margin\n }),\n ],\n }).then(({ x, y }) => {\n Object.assign(this.#content.style, {\n left: `${x}px`,\n top: `${y}px`,\n })\n })\n }\n }\n\n hide = () => {\n this.#programmaticallyPos = null\n this.#mode = null\n this.#content.removeAttribute('data-mode')\n this.cancelHide()\n this.#slashProvider.hide()\n }\n\n destroy = () => {\n this.#slashProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n}\n\nfunction isSelectionAtEndOfNode(selection: Selection) {\n if (!(selection instanceof TextSelection)) return false\n\n const { $head } = selection\n const parent = $head.parent\n const offset = $head.parentOffset\n\n return offset === parent.content.size\n}\n\nfunction getBlockKey(node: Node): string {\n if (node.type.name.includes('image')) return 'image'\n if (node.type.name.includes('attachment')) return 'attachment'\n switch (node.type.name) {\n case 'heading': {\n const level = node.attrs.level\n return `h${level}`\n }\n case 'blockquote':\n return 'quote'\n case 'code_block':\n return 'code'\n case 'math_display':\n case 'math_inline':\n return 'math'\n case 'hr':\n return 'divider'\n case 'table':\n return 'table'\n case 'list_item':\n if (node.attrs.checked != null) {\n return 'task-list'\n } else {\n return 'bullet-list'\n }\n case 'bullet_list':\n return 'bullet-list'\n case 'paragraph': {\n let hasImageChild = false\n node.content.forEach((child) => {\n if (child.type.name.includes('image')) hasImageChild = true\n })\n if (hasImageChild && node.textContent.length === 0) return 'image'\n return 'text'\n }\n default:\n return 'text'\n }\n}\n","import { commandsCtx } from '@jvs-milkdown/kit/core'\nimport { Plugin, PluginKey, TextSelection } from '@jvs-milkdown/kit/prose/state'\nimport { Decoration, DecorationSet } from '@jvs-milkdown/kit/prose/view'\nimport {\n $command,\n $markAttr,\n $markSchema,\n $prose,\n $remark,\n $useKeymap,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkHighlightMarkPlugin = $remark(\n 'remarkHighlightMark',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n highlightMark: (node: any, _: any, state: any) => {\n const idAttr = node.id ? ` data-id=\"${node.id}\"` : ''\n return `<mark${idAttr}>${state.containerPhrasing(node, state)}</mark>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value.startsWith('<mark') &&\n parent &&\n index != null\n ) {\n const idMatch = node.value.match(/data-id=\"([^\"]+)\"/)\n const id = idMatch ? idMatch[1] : null\n\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</mark>'\n )\n if (endIndex !== -1) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n parent.children.splice(index, 0, {\n type: 'highlightMark',\n id,\n children: content,\n })\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const highlightMarkAttr = $markAttr('highlightMark')\n\nexport const highlightMarkSchema = $markSchema('highlightMark', (ctx) => ({\n inclusive: true,\n attrs: {\n id: { default: null },\n },\n parseDOM: [\n {\n tag: 'mark',\n getAttrs: (dom) => ({\n id: (dom as HTMLElement).getAttribute('data-id') || null,\n }),\n },\n ],\n toDOM: (mark) => {\n const attrs = { ...ctx.get(highlightMarkAttr.key)(mark) } as any\n if (mark.attrs.id) {\n attrs['data-id'] = mark.attrs.id\n }\n return ['mark', attrs, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'highlightMark',\n runner: (state, node, markType) => {\n state.openMark(markType, { id: node.id })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'highlightMark',\n runner: (state, mark) => {\n state.withMark(mark, 'highlightMark', undefined, { id: mark.attrs.id })\n },\n },\n}))\n\nexport const toggleHighlightMarkCommand = $command(\n 'ToggleHighlightMark',\n (ctx) => () => (state, dispatch) => {\n const markType = highlightMarkSchema.type(ctx)\n const { $cursor, ranges, $from, $to } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n const newId = Math.random().toString(36).substring(2, 9)\n const creatMark = () => markType.create({ id: newId })\n\n if ($cursor) {\n const isEmptyBlock = $cursor.parent.content.size === 0\n if (isEmptyBlock) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark) {\n tr = tr.removeStoredMark(markType)\n } else {\n const zwsp = '\\u200B'\n tr = tr.insertText(zwsp, $cursor.pos)\n tr = tr.addMark($cursor.pos, $cursor.pos + 1, creatMark())\n tr = tr.setSelection(TextSelection.create(tr.doc, $cursor.pos))\n }\n } else {\n const start = $cursor.start()\n const end = $cursor.end()\n\n const hasMark = state.doc.rangeHasMark(start, end, markType)\n if (hasMark) {\n tr = tr.removeMark(start, end, markType)\n if (\n $cursor.parent.content.size === 1 &&\n $cursor.parent.textContent === '\\u200B'\n ) {\n tr = tr.delete(start, end)\n }\n } else {\n tr = tr.addMark(start, end, creatMark())\n }\n }\n } else {\n let hasMark = false\n for (const range of ranges) {\n const { $from, $to } = range\n if (state.doc.rangeHasMark($from.pos, $to.pos, markType)) {\n hasMark = true\n break\n }\n }\n\n if (hasMark) {\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n }\n } else {\n // Remove existing marks of the same type to prevent messy overlaps before adding a unified new id\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n }\n\n let canFlatten = true\n let blockCount = 0\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isTextblock) {\n blockCount++\n }\n if (node.isBlock) {\n const name = node.type.name\n if (\n name !== 'paragraph' &&\n name !== 'doc' &&\n name !== 'blockquote'\n ) {\n canFlatten = false\n }\n }\n })\n\n if (canFlatten && blockCount > 1) {\n const nodes: any[] = []\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isTextblock) {\n const hardbreakType = state.schema.nodes.hardbreak\n if (hardbreakType && nodes.length > 0) {\n nodes.push(hardbreakType.create())\n }\n node.forEach((child: any) => nodes.push(child))\n }\n })\n\n const paragraphType = state.schema.nodes.paragraph\n const range = $from.blockRange($to)\n if (paragraphType && range) {\n const p = paragraphType.create({}, nodes)\n tr = tr.replaceWith(range.start, range.end, p)\n tr = tr.addMark(\n range.start,\n range.start + p.nodeSize,\n creatMark()\n )\n }\n } else {\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.addMark($from.pos, $to.pos, creatMark())\n }\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n\n return true\n }\n)\n\nexport const highlightMarkKeymap = $useKeymap('highlightMarkKeymap', {\n ToggleHighlightMark: {\n shortcuts: 'Mod-Shift-h',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleHighlightMarkCommand.key)\n },\n },\n HighlightMarkEnter: {\n shortcuts: 'Enter',\n command: (ctx) => {\n return (state, dispatch) => {\n const markType = highlightMarkSchema.type(ctx)\n const { $from, empty } = state.selection\n\n if (!empty) return false\n\n const marks = state.storedMarks || $from.marks()\n if (!markType.isInSet(marks)) return false\n\n if (dispatch) {\n const hardbreak = state.schema.nodes.hardbreak\n if (hardbreak) {\n // inherit marks by passing true to replaceSelectionWith\n // and do not setMeta 'hardbreak' so the clear mark plugin ignores it.\n let tr = state.tr.replaceSelectionWith(hardbreak.create(), true)\n\n dispatch(tr.scrollIntoView())\n }\n }\n return true\n }\n },\n },\n HighlightMarkArrowDown: {\n shortcuts: 'ArrowDown',\n command: (ctx) => {\n return (state, dispatch, view) => {\n if (!view) return false\n\n const markType = highlightMarkSchema.type(ctx)\n const { selection } = state\n const { $from, empty } = selection\n\n if (!empty) return false\n\n const isTextblock = $from.parent.isTextblock\n if (!isTextblock) return false\n\n let hasNodeAfter = false\n state.doc.nodesBetween(\n $from.after(),\n state.doc.content.size,\n (node) => {\n if (node.isTextblock) hasNodeAfter = true\n }\n )\n if (hasNodeAfter) return false\n\n let hasHighlight = false\n if ($from.parent.content.size === 0) {\n const marks = state.storedMarks || $from.marks()\n if (markType.isInSet(marks)) {\n hasHighlight = true\n }\n } else if (\n $from.parent.content.size === 1 &&\n $from.parent.textContent === '\\u200B'\n ) {\n const child = $from.parent.child(0)\n if (child.marks.some((m: any) => m.type === markType)) {\n hasHighlight = true\n }\n } else {\n $from.parent.descendants((node) => {\n if (\n node.isText &&\n node.marks.some((m: any) => m.type === markType)\n ) {\n hasHighlight = true\n }\n })\n }\n\n if (!hasHighlight) return false\n\n if (!view.endOfTextblock('down')) return false\n\n const paragraphType = state.schema.nodes.paragraph\n if (!paragraphType) return false\n\n if (dispatch) {\n const p = paragraphType.create()\n const insertPos = state.doc.content.size\n let tr = state.tr.insert(insertPos, p)\n const newPos = insertPos + 1\n tr = tr.setSelection(TextSelection.create(tr.doc, newPos))\n tr = tr.removeStoredMark(markType)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n },\n },\n HighlightMarkBackspace: {\n shortcuts: 'Backspace',\n command: (ctx) => {\n return (state, dispatch) => {\n const markType = highlightMarkSchema.type(ctx)\n const { selection } = state\n const { $from, empty } = selection\n\n if (!empty) return false\n\n const isTextblock = $from.parent.isTextblock\n if (!isTextblock) return false\n\n if ($from.parentOffset === 0) {\n const prevBlockPos = $from.before() - 1\n if (prevBlockPos > 0) {\n const $prev = state.doc.resolve(prevBlockPos)\n const prevBlock = $prev.parent\n\n if (prevBlock && prevBlock.isTextblock) {\n let prevHasHighlight = false\n\n prevBlock.descendants((node) => {\n if (node.marks.some((m: any) => m.type === markType)) {\n prevHasHighlight = true\n }\n })\n\n if (prevHasHighlight) {\n if (dispatch) {\n let tr = state.tr\n tr = tr.delete($prev.start() - 1, $prev.end() + 1)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n }\n }\n\n let hasHighlight = false\n let isPlaceholder = false\n\n if ($from.parent.content.size === 0) {\n const marks = state.storedMarks || $from.marks()\n if (markType.isInSet(marks)) {\n hasHighlight = true\n }\n } else if (\n $from.parent.content.size === 1 &&\n $from.parent.textContent === '\\u200B'\n ) {\n const child = $from.parent.child(0)\n if (child.marks.some((m: any) => m.type === markType)) {\n hasHighlight = true\n isPlaceholder = true\n }\n }\n\n if (hasHighlight) {\n if (dispatch) {\n let tr = state.tr\n if (isPlaceholder) {\n const start = $from.start()\n const end = $from.end()\n tr = tr.delete(start, end)\n }\n tr = tr.removeStoredMark(markType)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n\n return false\n }\n },\n },\n})\n\nexport const highlightEmptyBlockPlugin = $prose((ctx) => {\n return new Plugin({\n key: new PluginKey('highlightEmptyBlock'),\n props: {\n decorations(state) {\n const markType = highlightMarkSchema.type(ctx)\n const decorations: Decoration[] = []\n\n state.doc.descendants((node, pos) => {\n if (node.isTextblock) {\n if (node.content.size === 1 && node.textContent === '\\u200B') {\n const child = node.child(0)\n if (child.marks.some((m: any) => m.type === markType)) {\n decorations.push(\n Decoration.node(pos, pos + node.nodeSize, {\n class: 'crepe-placeholder crepe-highlight-empty',\n 'data-placeholder': '请输入内容',\n })\n )\n }\n }\n }\n })\n\n const { selection } = state\n const { $from, empty } = selection\n\n if (\n empty &&\n $from.parent.isTextblock &&\n $from.parent.content.size === 0\n ) {\n const marks = state.storedMarks || $from.marks()\n if (markType.isInSet(marks)) {\n const start = $from.start() - 1\n decorations.push(\n Decoration.node(start, start + $from.parent.nodeSize, {\n class: 'crepe-placeholder crepe-highlight-empty',\n 'data-placeholder': '请输入内容',\n })\n )\n }\n }\n\n return DecorationSet.create(state.doc, decorations)\n },\n },\n appendTransaction(transactions, _oldState, newState) {\n const markType = highlightMarkSchema.type(ctx)\n if (!transactions.some((t) => t.docChanged)) return null\n\n const { empty, $from } = newState.selection\n if (!empty || !$from.parent.isTextblock) return null\n if ($from.parent.content.size !== 0) return null\n\n const marks = newState.storedMarks || $from.marks()\n if (!markType.isInSet(marks)) return null\n\n const id = Math.random().toString(36).substring(2, 9)\n const mark = markType.create({ id })\n return newState.tr.insert($from.pos, newState.schema.text('​', [mark]))\n },\n })\n})\n\nexport const highlightMark = [\n highlightMarkAttr,\n highlightMarkSchema,\n toggleHighlightMarkCommand,\n highlightMarkKeymap,\n remarkHighlightMarkPlugin,\n highlightEmptyBlockPlugin,\n]\n","import { commandsCtx } from '@jvs-milkdown/kit/core'\nimport { toggleMark } from '@jvs-milkdown/kit/prose/commands'\nimport {\n $command,\n $markAttr,\n $markSchema,\n $remark,\n $useKeymap,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkUnderlinePlugin = $remark(\n 'remarkUnderline',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n underline: (node: any, _: any, state: any) => {\n return `<u>${state.containerPhrasing(node, state)}</u>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value === '<u>' &&\n parent &&\n index != null\n ) {\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</u>'\n )\n if (endIndex !== -1) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n parent.children.splice(index, 0, {\n type: 'underline',\n children: content,\n })\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const underlineAttr = $markAttr('underline')\n\nexport const underlineSchema = $markSchema('underline', (ctx) => ({\n inclusive: true,\n parseDOM: [\n { tag: 'u' },\n {\n style: 'text-decoration',\n getAttrs: (value) => (value === 'underline' ? null : false),\n },\n ],\n toDOM: (mark) => ['u', ctx.get(underlineAttr.key)(mark), 0],\n parseMarkdown: {\n match: (node) => node.type === 'underline',\n runner: (state, node, markType) => {\n state.openMark(markType)\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'underline',\n runner: (state, mark) => {\n state.withMark(mark, 'underline')\n },\n },\n}))\n\nexport const toggleUnderlineCommand = $command(\n 'ToggleUnderline',\n (ctx) => () => toggleMark(underlineSchema.type(ctx))\n)\n\nexport const underlineKeymap = $useKeymap('underlineKeymap', {\n ToggleUnderline: {\n shortcuts: 'Mod-u',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleUnderlineCommand.key)\n },\n },\n})\n\nexport const underline = [\n underlineAttr,\n underlineSchema,\n toggleUnderlineCommand,\n underlineKeymap,\n remarkUnderlinePlugin,\n]\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { toggleLinkCommand } from '@jvs-milkdown/kit/component/link-tooltip'\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/kit/core'\nimport {\n emphasisSchema,\n headingSchema,\n inlineCodeSchema,\n isMarkSelectedCommand,\n linkSchema,\n strongSchema,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n wrapInHeadingCommand,\n setBlockTypeCommand,\n paragraphSchema,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport {\n strikethroughSchema,\n toggleStrikethroughCommand,\n} from '@jvs-milkdown/kit/preset/gfm'\nimport { findNodeInSelection } from '@jvs-milkdown/kit/prose'\n\nimport type { ToolbarFeatureConfig } from '.'\n\nimport { i18n } from '../../core/locale'\nimport {\n boldIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n italicIcon,\n linkIcon,\n strikethroughIcon,\n underlineIcon,\n linCodeIcon,\n highLineCodeIcon,\n} from '../../icons'\nimport { GroupBuilder } from '../../utils/group-builder'\nimport {\n toggleHighlightMarkCommand,\n highlightMarkSchema,\n} from './highlight-mark'\nimport { toggleUnderlineCommand, underlineSchema } from './underline'\n\nexport type ToolbarItem = {\n active: (ctx: Ctx) => boolean\n icon: string\n label: string\n}\n\nexport function getGroups(config?: ToolbarFeatureConfig, ctx?: Ctx) {\n const groupBuilder = new GroupBuilder<ToolbarItem>()\n\n groupBuilder\n .addGroup('heading', ctx ? i18n(ctx, 'toolbar.heading') : 'Heading')\n .addItem('h1', {\n label: ctx ? i18n(ctx, 'menu.item.h1') : 'Heading 1',\n icon: config?.h1Icon ?? h1Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 1\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 1\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 1)\n }\n },\n })\n .addItem('h2', {\n label: ctx ? i18n(ctx, 'menu.item.h2') : 'Heading 2',\n icon: config?.h2Icon ?? h2Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 2\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 2\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 2)\n }\n },\n })\n .addItem('h3', {\n label: ctx ? i18n(ctx, 'menu.item.h3') : 'Heading 3',\n icon: config?.h3Icon ?? h3Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 3\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 3\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 3)\n }\n },\n })\n .addItem('h4', {\n label: ctx ? i18n(ctx, 'menu.item.h4') : 'Heading 4',\n icon: config?.h4Icon ?? h4Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 4\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 4\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 4)\n }\n },\n })\n .addItem('h5', {\n label: ctx ? i18n(ctx, 'menu.item.h5') : 'Heading 5',\n icon: config?.h5Icon ?? h5Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 5\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 5\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 5)\n }\n },\n })\n .addItem('h6', {\n label: ctx ? i18n(ctx, 'menu.item.h6') : 'Heading 6',\n icon: config?.h6Icon ?? h6Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 6\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 6\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 6)\n }\n },\n })\n\n groupBuilder\n .addGroup(\n 'formatting',\n ctx ? i18n(ctx, 'toolbar.formatting') : 'Formatting'\n )\n .addItem('bold', {\n label: ctx ? i18n(ctx, 'menu.item.bold') : 'Bold',\n icon: config?.boldIcon ?? boldIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(isMarkSelectedCommand.key, strongSchema.type(ctx))\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrongCommand.key)\n },\n })\n .addItem('italic', {\n label: ctx ? i18n(ctx, 'menu.item.italic') : 'Italic',\n icon: config?.italicIcon ?? italicIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n emphasisSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleEmphasisCommand.key)\n },\n })\n .addItem('strikethrough', {\n label: ctx ? i18n(ctx, 'menu.item.strikethrough') : 'Strikethrough',\n icon: config?.strikethroughIcon ?? strikethroughIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n strikethroughSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrikethroughCommand.key)\n },\n })\n .addItem('underline', {\n label: ctx ? i18n(ctx, 'menu.item.underline') : 'Underline',\n icon: config?.underlineIcon ?? underlineIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n underlineSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleUnderlineCommand.key)\n },\n })\n const functionGroup = groupBuilder.addGroup(\n 'function',\n ctx ? i18n(ctx, 'toolbar.function') : 'Function'\n )\n functionGroup.addItem('highlight', {\n label: ctx ? i18n(ctx, 'menu.item.highlight') : 'Highlight',\n icon: config?.highlightIcon ?? highLineCodeIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n highlightMarkSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleHighlightMarkCommand.key)\n },\n })\n functionGroup.addItem('code', {\n label: ctx ? i18n(ctx, 'menu.item.lineCode') : 'Inline Code',\n icon: config?.codeIcon ?? linCodeIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n inlineCodeSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleInlineCodeCommand.key)\n },\n })\n\n functionGroup.addItem('link', {\n label: ctx ? i18n(ctx, 'menu.item.link') : 'Link',\n icon: config?.linkIcon ?? linkIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(isMarkSelectedCommand.key, linkSchema.type(ctx))\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleLinkCommand.key)\n },\n })\n\n config?.buildToolbar?.(groupBuilder)\n\n return groupBuilder.build()\n}\n","import type { Command } from '@jvs-milkdown/kit/prose/state'\n\nimport {\n $command,\n $markAttr,\n $markSchema,\n $remark,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const supportedFontsCache = new Map<string, boolean>()\n\nexport const isFontSupported = (fontFamily: string | null): boolean => {\n if (!fontFamily) return true\n const normalizedFont = fontFamily.replace(/['\"]/g, '')\n if (supportedFontsCache.has(normalizedFont)) {\n return supportedFontsCache.get(normalizedFont)!\n }\n\n if (typeof document === 'undefined') return true\n\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n if (!context) return true\n\n const text = 'abcdefghijklmnopqrstuvwxyz0123456789'\n const size = '72px'\n\n context.font = `${size} monospace`\n const baseMono = context.measureText(text).width\n\n context.font = `${size} sans-serif`\n const baseSans = context.measureText(text).width\n\n context.font = `${size} \"${normalizedFont}\", monospace`\n const testMono = context.measureText(text).width\n\n context.font = `${size} \"${normalizedFont}\", sans-serif`\n const testSans = context.measureText(text).width\n\n const supported = testMono !== baseMono || testSans !== baseSans\n supportedFontsCache.set(normalizedFont, supported)\n return supported\n}\n\nexport const remarkFontPlugin = $remark(\n 'remarkFont',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n fontFamily: (node: any, _: any, state: any) => {\n return `<span style=\"font-family:${node.fontFamily}\">${state.containerPhrasing(node, state)}</span>`\n },\n fontSize: (node: any, _: any, state: any) => {\n return `<span style=\"font-size:${node.fontSize}\">${state.containerPhrasing(node, state)}</span>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value.startsWith('<span') &&\n parent &&\n index != null\n ) {\n const hasFontFamily = node.value.match(/font-family:\\s*([^\"';>]+)/)\n const hasFontSize = node.value.match(/font-size:\\s*([^\"';>]+)/)\n\n if (!hasFontFamily && !hasFontSize) return\n\n let fontFamily = null\n let fontSize = null\n let markType = null\n\n // Prioritize correctly, they should ideally be serialized into separate spans by prose to DOM\n if (hasFontFamily) {\n fontFamily = hasFontFamily[1].trim()\n markType = 'fontFamily'\n } else if (hasFontSize) {\n fontSize = hasFontSize[1].trim()\n markType = 'fontSize'\n }\n\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</span>'\n )\n\n if (endIndex !== -1 && markType && (fontFamily || fontSize)) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n const payload: any = {\n type: markType,\n children: content,\n }\n if (fontFamily) payload.fontFamily = fontFamily\n if (fontSize) payload.fontSize = fontSize\n\n parent.children.splice(index, 0, payload)\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const fontFamilyAttr = $markAttr('fontFamily')\n\nexport const fontFamilySchema = $markSchema('fontFamily', (_ctx) => ({\n inclusive: true,\n attrs: {\n fontFamily: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"font-family\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n const fontFamily = dom.style.fontFamily || null\n if (!isFontSupported(fontFamily)) return false\n return { fontFamily }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `font-family: ${mark.attrs.fontFamily}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'fontFamily',\n runner: (state, node, markType) => {\n state.openMark(markType, { fontFamily: node.fontFamily })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'fontFamily',\n runner: (state, mark) => {\n state.withMark(mark, 'fontFamily', undefined, {\n fontFamily: mark.attrs.fontFamily,\n })\n },\n },\n}))\n\nexport const fontSizeAttr = $markAttr('fontSize')\n\nexport const fontSizeSchema = $markSchema('fontSize', (_ctx) => ({\n inclusive: true,\n attrs: {\n fontSize: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"font-size\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n return { fontSize: dom.style.fontSize || null }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `font-size: ${mark.attrs.fontSize}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'fontSize',\n runner: (state, node, markType) => {\n state.openMark(markType, { fontSize: node.fontSize })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'fontSize',\n runner: (state, mark) => {\n state.withMark(mark, 'fontSize', undefined, {\n fontSize: mark.attrs.fontSize,\n })\n },\n },\n}))\n\nexport const toggleFontFamilyCommand = $command(\n 'ToggleFontFamily',\n (ctx) =>\n (fontFamily?: string | null): Command => {\n return (state, dispatch) => {\n const markType = fontFamilySchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.fontFamily === fontFamily) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (fontFamily)\n tr = tr.addStoredMark(markType.create({ fontFamily }))\n }\n } else {\n let hasSameFontFamily = false\n for (const range of ranges) {\n const { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.fontFamily === fontFamily) {\n hasSameFontFamily = true\n }\n }\n })\n }\n\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameFontFamily && fontFamily) {\n tr = tr.addMark(\n $from.pos,\n $to.pos,\n markType.create({ fontFamily })\n )\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\nexport const toggleFontSizeCommand = $command(\n 'ToggleFontSize',\n (ctx) =>\n (fontSize?: string | null): Command => {\n return (state, dispatch) => {\n const markType = fontSizeSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.fontSize === fontSize) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (fontSize) tr = tr.addStoredMark(markType.create({ fontSize }))\n }\n } else {\n let hasSameFontSize = false\n for (const range of ranges) {\n const { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.fontSize === fontSize) {\n hasSameFontSize = true\n }\n }\n })\n }\n\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameFontSize && fontSize) {\n tr = tr.addMark(\n $from.pos,\n $to.pos,\n markType.create({ fontSize })\n )\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\n/**\n * Strip all font-family from external pasted HTML.\n * Internal paste (from the same editor) is detected via `data-pm-slice`\n * and left untouched so that editor-set fonts are preserved.\n */\nexport function stripFontFamilyFromExternalHTML(html: string): string {\n // ProseMirror adds data-pm-slice for internal copy-paste — skip those\n if (html.includes('data-pm-slice')) return html\n\n try {\n const template = document.createElement('template')\n template.innerHTML = html\n\n // Remove font-family from any element with inline font-family\n const styledElements = template.content.querySelectorAll(\n '[style*=\"font-family\"]'\n )\n styledElements.forEach((el) => {\n if (el instanceof HTMLElement) {\n el.style.removeProperty('font-family')\n }\n })\n\n // Remove legacy <font face=\"...\">\n const fontElements = template.content.querySelectorAll('font[face]')\n fontElements.forEach((el) => {\n if (el instanceof HTMLElement) {\n el.removeAttribute('face')\n }\n })\n\n html = template.innerHTML\n template.remove()\n } catch {\n // If HTML parsing fails, return as-is\n }\n\n return html\n}\n\nexport const fontPlugins = [\n fontFamilyAttr,\n fontFamilySchema,\n toggleFontFamilyCommand,\n fontSizeAttr,\n fontSizeSchema,\n toggleFontSizeCommand,\n remarkFontPlugin,\n]\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { Mark } from '@jvs-milkdown/kit/prose/model'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\nimport {\n editorCtx,\n EditorStatus,\n editorViewCtx,\n commandsCtx,\n schemaCtx,\n} from '@jvs-milkdown/kit/core'\nimport {\n addBlockTypeCommand,\n selectTextNearPosCommand,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport { createTable, mergeCellsCommand } from '@jvs-milkdown/kit/preset/gfm'\nimport {\n type Selection,\n TextSelection,\n NodeSelection,\n} from '@jvs-milkdown/kit/prose/state'\nimport {\n mergeCells,\n splitCell,\n splitCellWithType,\n CellSelection,\n selectedRect,\n} from '@jvs-milkdown/kit/prose/tables'\nimport clsx from 'clsx'\n// @ts-ignore\nimport {\n defineComponent,\n type Ref,\n type ShallowRef,\n h,\n Fragment,\n computed,\n ref,\n onUnmounted,\n onMounted,\n watch,\n} from 'vue'\n\nimport type { ToolbarFeatureConfig } from '.'\n\nimport { i18n } from '../../core/locale'\nimport {\n textIcon,\n chevronDownIcon,\n alignLeftIcon,\n alignCenterIcon,\n alignRightIcon,\n indentIncreaseIcon,\n indentDecreaseIcon,\n confirmIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n quoteIcon,\n quoteIconActive,\n codeIcon,\n bulletListIcon,\n bulletListIconActive,\n orderedListIcon,\n orderedListIconActive,\n linkIcon,\n fontColorIcon,\n boldIconActive,\n alignLeftIconActive,\n alignCenterIconActive,\n alignRightIconActive,\n h1IconActive,\n boldIcon,\n h2IconActive,\n h3IconActive,\n h4IconActive,\n h5IconActive,\n h6IconActive,\n italicIcon,\n italicIconActive,\n textIconActive,\n underlineIcon,\n underlineIconActive,\n strikethroughIcon,\n strikethroughIconActive,\n dividerIcon,\n dividerIconActive,\n tableIcon,\n moreIcon,\n mergeCellIcon,\n splitCellIcon,\n formatPainterIcon,\n} from '../../icons'\nimport {\n incrementPopupCount,\n decrementPopupCount,\n} from '../../utils/fixed-toolbar-popup-state'\nimport { keepAlive } from '../../utils/keep-alive'\nimport { menuAPI } from '../block-edit/menu'\nimport { getGroups as getBlockGroups } from '../block-edit/menu/config'\nimport {\n toggleTextColorCommand,\n toggleBgColorCommand,\n textColorSchema,\n bgColorSchema,\n} from './color'\nimport { getGroups as getToolbarGroups, type ToolbarItem } from './config'\nimport {\n toggleFontFamilyCommand,\n toggleFontSizeCommand,\n fontFamilySchema,\n fontSizeSchema,\n isFontSupported,\n} from './font'\n\nconst activeIconMap: Record<string, string> = {\n [boldIcon]: boldIconActive,\n [alignLeftIcon]: alignLeftIconActive,\n [alignCenterIcon]: alignCenterIconActive,\n [alignRightIcon]: alignRightIconActive,\n [h1Icon]: h1IconActive,\n [h2Icon]: h2IconActive,\n [h3Icon]: h3IconActive,\n [h4Icon]: h4IconActive,\n [h5Icon]: h5IconActive,\n [h6Icon]: h6IconActive,\n [italicIcon]: italicIconActive,\n [textIcon]: textIconActive,\n [underlineIcon]: underlineIconActive,\n [strikethroughIcon]: strikethroughIconActive,\n [quoteIcon]: quoteIconActive,\n [orderedListIcon]: orderedListIconActive,\n [bulletListIcon]: bulletListIconActive,\n [dividerIcon]: dividerIconActive,\n // [highLineCodeIcon]: highLineCodeIconActive,\n}\n\nkeepAlive(h, Fragment)\n\ntype ToolbarProps = {\n ctx: Ctx\n hide: () => void\n show: Ref<boolean>\n selection: ShallowRef<Selection>\n config?: ToolbarFeatureConfig\n isFixed?: boolean\n}\n\ninterface FormatPainterState {\n marks: Mark[]\n align?: string | null\n blockType?: string | null\n blockAttrs?: Record<string, any> | null\n isPersistent: boolean\n}\n\nconst formatPainterStates = new WeakMap<any, Ref<FormatPainterState | null>>()\nconst formatPainterHandlers = new WeakMap<any, (ev: MouseEvent) => void>()\nconst formatPainterIgnoreNext = new WeakMap<any, { value: boolean }>()\nconst cursorStyleEls = new WeakMap<any, HTMLStyleElement>()\n\nexport const Toolbar = defineComponent<ToolbarProps>({\n props: {\n ctx: { type: Object as any, required: true },\n hide: { type: Function as any, required: true },\n show: { type: Object as any, required: true },\n selection: { type: Object as any, required: true },\n config: { type: Object as any, required: false },\n isFixed: { type: Boolean, required: false },\n },\n setup(props: any) {\n const { ctx, config, isFixed } = props\n\n const showBlockMenu = ref(false)\n const blockMenuPos = ref({ top: 0, left: 0 })\n let hideBlockTimer: ReturnType<typeof setTimeout> | null = null\n\n const showAlignMenu = ref(false)\n const alignMenuPos = ref({ top: 0, left: 0 })\n let hideAlignTimer: ReturnType<typeof setTimeout> | null = null\n\n const showColorMenu = ref(false)\n const colorMenuPos = ref({ top: 0, left: 0 })\n let hideColorTimer: ReturnType<typeof setTimeout> | null = null\n\n const showFontFamilyMenu = ref(false)\n const fontFamilyMenuPos = ref({ top: 0, left: 0 })\n let hideFontFamilyTimer: ReturnType<typeof setTimeout> | null = null\n\n const showFontSizeMenu = ref(false)\n const fontSizeMenuPos = ref({ top: 0, left: 0 })\n let hideFontSizeTimer: ReturnType<typeof setTimeout> | null = null\n\n const showTableMenu = ref(false)\n const tableMenuPos = ref({ top: 0, left: 0 })\n const tableHoverIndices = ref({ r: 0, c: 0 })\n let hideTableTimer: ReturnType<typeof setTimeout> | null = null\n\n // --- Format Painter ---\n let formatPainterState = formatPainterStates.get(ctx)\n if (!formatPainterState) {\n formatPainterState = ref<FormatPainterState | null>(null)\n formatPainterStates.set(ctx, formatPainterState)\n }\n\n let formatPainterIgnore = formatPainterIgnoreNext.get(ctx)\n if (!formatPainterIgnore) {\n formatPainterIgnore = { value: false }\n formatPainterIgnoreNext.set(ctx, formatPainterIgnore)\n }\n\n let formatPainterHandler = formatPainterHandlers.get(ctx)\n if (!formatPainterHandler) {\n formatPainterHandler = (ev: MouseEvent) => {\n if (!formatPainterState!.value) return\n\n if (formatPainterIgnore!.value) {\n formatPainterIgnore!.value = false\n return\n }\n\n const currentView = ctx.get(editorViewCtx)\n\n // Ignore if clicked on the toolbar itself\n const targetElement =\n ev.target instanceof Element\n ? ev.target\n : (ev.target as Node).parentElement\n if (\n targetElement &&\n targetElement.closest('.milkdown-toolbar, .milkdown-fixed-toolbar')\n ) {\n return\n }\n\n // Delay to let ProseMirror update its internal state.selection based on the new DOM selection\n setTimeout(() => {\n if (!formatPainterState!.value) return\n\n const { state: curState, dispatch } = currentView\n const { selection: curSelection, tr } = curState\n const {\n marks: savedMarks,\n align: savedAlign,\n blockType: savedBlockType,\n blockAttrs: savedBlockAttrs,\n isPersistent,\n } = formatPainterState!.value\n\n let applied = false\n if (!curSelection.empty) {\n savedMarks.forEach((m: any) => {\n tr.addMark(curSelection.from, curSelection.to, m)\n })\n if (savedAlign) {\n curState.doc.nodesBetween(\n curSelection.from,\n curSelection.to,\n (node: any, pos: number) => {\n if (\n node.type.name === 'paragraph' ||\n node.type.name === 'heading'\n ) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n align: savedAlign,\n })\n }\n }\n )\n }\n if (savedBlockType) {\n curState.doc.nodesBetween(\n curSelection.from,\n curSelection.to,\n (node: any, pos: number) => {\n if (node.type.name === 'paragraph') {\n tr.setNodeMarkup(\n pos,\n curState.schema.nodes[savedBlockType],\n {\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n }\n )\n } else if (node.type.name === 'heading' && savedBlockAttrs) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n })\n }\n }\n )\n }\n dispatch(tr)\n applied = true\n } else {\n if (savedMarks.length > 0) {\n const $pos = curSelection.$from\n if ($pos.parent.isTextblock) {\n const text = $pos.parent.textContent\n const offset = $pos.parentOffset\n let start = offset\n let end = offset\n const isWordChar = (char: string) =>\n !/[\\s,.\\-!?;:()[\\]{}\"'“”‘’,。!?;:()【】《》、\\n\\r]/.test(\n char\n )\n while (start > 0 && isWordChar(text[start - 1])) start--\n while (end < text.length && isWordChar(text[end])) end++\n\n if (start < end) {\n savedMarks.forEach((m: any) => {\n tr.addMark($pos.start() + start, $pos.start() + end, m)\n })\n }\n }\n }\n\n if (savedAlign) {\n const pos = curSelection.$from.before(curSelection.$from.depth)\n const node = curState.doc.nodeAt(pos)\n if (\n node &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n align: savedAlign,\n })\n }\n }\n\n if (savedBlockType) {\n const pos = curSelection.$from.before(curSelection.$from.depth)\n const node = curState.doc.nodeAt(pos)\n if (node && node.type.name === 'paragraph') {\n tr.setNodeMarkup(pos, curState.schema.nodes[savedBlockType], {\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n })\n } else if (\n node &&\n node.type.name === 'heading' &&\n savedBlockAttrs\n ) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n })\n }\n }\n\n tr.setStoredMarks(savedMarks)\n dispatch(tr)\n applied = true\n }\n\n if (applied && !isPersistent) {\n formatPainterState!.value = null\n document.removeEventListener('pointerup', formatPainterHandler!)\n }\n }, 50)\n }\n formatPainterHandlers.set(ctx, formatPainterHandler)\n }\n\n const toggleFormatPainter = (isPersistent: boolean) => {\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { selection } = state\n\n let marks: Mark[] = []\n if (selection.empty) {\n marks = state.storedMarks\n ? [...state.storedMarks]\n : [...selection.$from.marks()]\n } else {\n let foundMarks: Mark[] | null = null\n state.doc.nodesBetween(selection.from, selection.to, (node: any) => {\n if (foundMarks) return false\n if (node.isInline) {\n foundMarks = [...node.marks]\n return false\n }\n return undefined\n })\n marks = foundMarks || []\n }\n\n let align: string | null = null\n let foundAlign: string | null = null\n state.doc.nodesBetween(selection.from, selection.to, (node: any) => {\n if (foundAlign) return false\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n foundAlign = node.attrs.align || null\n return false\n }\n return undefined\n })\n\n if (!foundAlign) {\n const parent = selection.$from.parent\n if (\n parent &&\n (parent.type.name === 'paragraph' || parent.type.name === 'heading')\n ) {\n foundAlign = parent.attrs.align || null\n }\n }\n align = foundAlign\n\n // Capture block type (heading level) if selection is within a heading\n let blockType: string | null = null\n let blockAttrs: Record<string, any> | null = null\n {\n const parent = selection.$from.parent\n if (parent.type.name === 'heading') {\n blockType = 'heading'\n blockAttrs = { level: parent.attrs.level }\n }\n }\n\n formatPainterState!.value = {\n marks,\n align,\n blockType,\n blockAttrs,\n isPersistent,\n }\n document.removeEventListener('pointerup', formatPainterHandler!)\n\n setTimeout(() => {\n document.addEventListener('pointerup', formatPainterHandler!)\n }, 0)\n }\n\n const handleFormatPainterClick = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (formatPainterState!.value) {\n formatPainterState!.value = null\n document.removeEventListener('pointerup', formatPainterHandler!)\n } else {\n formatPainterIgnore!.value = true\n toggleFormatPainter(false)\n }\n }\n\n const handleFormatPainterDblClick = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n toggleFormatPainter(true)\n }\n\n watch(\n () => formatPainterState!.value,\n (newVal: any) => {\n if (newVal) {\n let cursorStyleEl = cursorStyleEls.get(ctx)\n if (!cursorStyleEl) {\n cursorStyleEl = document.createElement('style')\n // We must replace currentColor with a valid color for data URI (e.g., black or #363B4C)\n const encodedSvg = encodeURIComponent(\n formatPainterIcon.replace(/currentColor/g, '#363B4C')\n )\n cursorStyleEl.innerHTML = `.milkdown .ProseMirror, .milkdown .ProseMirror * { cursor: url(\"data:image/svg+xml;utf8,${encodedSvg}\") 0 16, auto !important; }`\n document.head.appendChild(cursorStyleEl)\n cursorStyleEls.set(ctx, cursorStyleEl)\n }\n } else {\n const cursorStyleEl = cursorStyleEls.get(ctx)\n if (cursorStyleEl) {\n cursorStyleEl.remove()\n cursorStyleEls.delete(ctx)\n }\n }\n }\n )\n\n onUnmounted(() => {\n // Clean up pointerup listener only if it's the last toolbar instance?\n // Actually, keep it simple, let it be cleaned up when format painter is turned off.\n // But if the component unmounts, maybe we should remove the style to be safe.\n })\n\n // --- Overflow menu (fixed toolbar only) ---\n const toolbarContainerRef = ref<HTMLElement | null>(null)\n const overflowVisibleCount = ref(Infinity)\n const totalSectionCount = ref(Infinity)\n const showOverflowMenu = ref(false)\n const overflowMenuPos = ref<{\n top: number\n left?: number\n right?: number\n }>({ top: 0 })\n const cachedWidths = new Map<number, number>()\n\n // Track popup state for fixed toolbar → notify floating toolbar\n const anyFixedPopup = computed(\n () =>\n !!isFixed &&\n (showBlockMenu.value ||\n showAlignMenu.value ||\n showColorMenu.value ||\n showFontFamilyMenu.value ||\n showFontSizeMenu.value ||\n showTableMenu.value ||\n showOverflowMenu.value)\n )\n watch(anyFixedPopup, (val) => {\n if (val) incrementPopupCount()\n else decrementPopupCount()\n })\n\n const getMenuLeftPos = (rect: DOMRect, menuWidth: number) => {\n let left = rect.left\n if (left + menuWidth > window.innerWidth) {\n left = Math.max(10, window.innerWidth - menuWidth - 10)\n }\n return left\n }\n\n const measureChild = (child: HTMLElement, index: number): number => {\n const w = child.offsetWidth\n if (w > 0) {\n const style = window.getComputedStyle(child)\n const total =\n w + parseFloat(style.marginLeft) + parseFloat(style.marginRight)\n cachedWidths.set(index, total)\n return total\n }\n return cachedWidths.get(index) || 0\n }\n\n let lastContainerWidth = 0\n\n const computeOverflow = () => {\n if (!toolbarContainerRef.value) return\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return\n const view = ctx.get(editorViewCtx)\n if (!view || !view.dom) return\n\n const container = toolbarContainerRef.value\n\n if (!isFixed) {\n const containerDOM =\n view.dom.closest('.milkdown-editor-container') ||\n view.dom.closest('.milkdown') ||\n view.dom\n if (containerDOM) {\n container.style.maxWidth = `${containerDOM.clientWidth - 32}px`\n }\n }\n\n // For fixed toolbar: use available space in parent (minus MenuBar & separator)\n // instead of container's own width, since container is no longer flex:1\n let containerWidth: number\n if (isFixed) {\n const parent = container.parentElement\n if (parent) {\n const siblings = Array.from(parent.children) as HTMLElement[]\n let siblingsWidth = 0\n for (const s of siblings) {\n if (s !== container) {\n siblingsWidth += s.offsetWidth\n }\n }\n // Account for gaps (12px per gap, n-1 gaps for n children)\n const gapCount = Math.max(0, siblings.length)\n containerWidth = parent.clientWidth - siblingsWidth - gapCount * 12\n } else {\n containerWidth = container.clientWidth\n }\n } else {\n const containerDOM =\n view.dom.closest('.milkdown-editor-container') ||\n view.dom.closest('.milkdown') ||\n view.dom\n containerWidth = containerDOM ? containerDOM.clientWidth - 32 : 0\n }\n\n if (showOverflowMenu.value) {\n showOverflowMenu.value = false\n }\n const MORE_BUTTON_WIDTH = 56\n const children = Array.from(container.children) as HTMLElement[]\n const toolbarChildren = children.filter(\n (el): el is HTMLElement =>\n el.style.position !== 'fixed' && el.dataset.overflowButton !== 'true'\n )\n\n // Total width using cached widths for hidden items\n let totalWidth = 0\n for (let i = 0; i < toolbarChildren.length; i++) {\n const child = toolbarChildren[i]!\n totalWidth += measureChild(child, i)\n }\n\n if (totalWidth === 0) {\n return\n }\n\n if (containerWidth === lastContainerWidth) {\n return\n }\n lastContainerWidth = containerWidth\n\n if (totalWidth <= containerWidth) {\n overflowVisibleCount.value = Infinity\n totalSectionCount.value = toolbarChildren.length\n cachedWidths.clear()\n return\n }\n\n // Calculate how many fit with more button reservation\n const availableWidth = containerWidth - MORE_BUTTON_WIDTH\n let accumulated = 0\n let visibleCount = 0\n for (let i = 0; i < toolbarChildren.length; i++) {\n const child = toolbarChildren[i]!\n accumulated += measureChild(child, i)\n if (accumulated <= availableWidth) {\n visibleCount++\n } else {\n break\n }\n }\n overflowVisibleCount.value = visibleCount\n totalSectionCount.value = toolbarChildren.length\n }\n\n const handleTableEnter = (e: MouseEvent) => {\n if (hideTableTimer) clearTimeout(hideTableTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n tableMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 250),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = true\n }\n const handleTableLeave = () => {\n hideTableTimer = setTimeout(() => {\n showTableMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n }, 150)\n }\n\n const runTableInsert = (rows: number, cols: number) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n const { $from } = view.state.selection\n let tableEndPos: number | null = null\n for (let d = $from.depth; d > 0; d--) {\n if ($from.node(d).type.name === 'table') {\n tableEndPos = $from.after(d)\n break\n }\n }\n\n if (tableEndPos !== null) {\n const { tr } = view.state\n const tableNode = createTable(ctx, rows, cols)\n view.dispatch(tr.insert(tableEndPos, tableNode))\n commands.call(selectTextNearPosCommand.key, {\n pos: tableEndPos,\n })\n } else {\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, rows, cols),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n }\n\n showTableMenu.value = false\n showOverflowMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n props.hide()\n }\n\n const handleBlockEnter = (e: MouseEvent) => {\n if (hideBlockTimer) clearTimeout(hideBlockTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n blockMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 200),\n }\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showBlockMenu.value = true\n }\n const handleBlockLeave = () => {\n hideBlockTimer = setTimeout(() => {\n showBlockMenu.value = false\n }, 150)\n }\n\n const handleAlignEnter = (e: MouseEvent) => {\n if (hideAlignTimer) clearTimeout(hideAlignTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n alignMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 180),\n }\n showBlockMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showAlignMenu.value = true\n }\n const handleAlignLeave = () => {\n hideAlignTimer = setTimeout(() => {\n showAlignMenu.value = false\n }, 150)\n }\n\n const handleColorEnter = (e: MouseEvent) => {\n if (hideColorTimer) clearTimeout(hideColorTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n colorMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 246),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showColorMenu.value = true\n }\n const handleColorLeave = () => {\n hideColorTimer = setTimeout(() => {\n showColorMenu.value = false\n }, 150)\n }\n\n const handleFontFamilyEnter = (e: MouseEvent) => {\n if (hideFontFamilyTimer) clearTimeout(hideFontFamilyTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n fontFamilyMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 180),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showFontFamilyMenu.value = true\n }\n const handleFontFamilyLeave = () => {\n hideFontFamilyTimer = setTimeout(() => {\n showFontFamilyMenu.value = false\n }, 150)\n }\n\n const handleFontSizeEnter = (e: MouseEvent) => {\n if (hideFontSizeTimer) clearTimeout(hideFontSizeTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n fontSizeMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 120),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showTableMenu.value = false\n showFontSizeMenu.value = true\n }\n const handleFontSizeLeave = () => {\n hideFontSizeTimer = setTimeout(() => {\n showFontSizeMenu.value = false\n }, 150)\n }\n\n onUnmounted(() => {\n if (hideBlockTimer) clearTimeout(hideBlockTimer)\n if (hideAlignTimer) clearTimeout(hideAlignTimer)\n if (hideColorTimer) clearTimeout(hideColorTimer)\n if (hideFontFamilyTimer) clearTimeout(hideFontFamilyTimer)\n if (hideFontSizeTimer) clearTimeout(hideFontSizeTimer)\n if (hideTableTimer) clearTimeout(hideTableTimer)\n if (anyFixedPopup.value) decrementPopupCount()\n })\n\n // --- Overflow lifecycle (fixed toolbar only) ---\n let overflowResizeObserver: ResizeObserver | null = null\n let overflowSetupDone = false\n\n const setupOverflowObserver = () => {\n if (!toolbarContainerRef.value || overflowSetupDone) return\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) {\n setTimeout(setupOverflowObserver, 50)\n return\n }\n const view = ctx.get(editorViewCtx)\n if (!view || !view.dom) {\n setTimeout(setupOverflowObserver, 50)\n return\n }\n overflowSetupDone = true\n overflowResizeObserver = new ResizeObserver(() => {\n computeOverflow()\n })\n overflowResizeObserver.observe(toolbarContainerRef.value)\n if (isFixed) {\n // Also observe parent so resize is detected when window grows\n const parent = toolbarContainerRef.value.parentElement\n if (parent) overflowResizeObserver.observe(parent)\n } else {\n overflowResizeObserver.observe(view.dom)\n\n const containerDOM = view.dom.closest('.milkdown-editor-container')\n if (containerDOM) {\n overflowResizeObserver.observe(containerDOM)\n }\n\n const rootDOM = view.dom.closest('.milkdown')\n if (rootDOM) {\n overflowResizeObserver.observe(rootDOM)\n }\n }\n computeOverflow()\n }\n\n const handleOverflowDocumentClick = (e: MouseEvent) => {\n if (!showOverflowMenu.value) return\n const target = e.target as HTMLElement\n if (\n !target.closest('.overflow-menu-popup') &&\n !target.closest('[data-overflow-button]')\n ) {\n showOverflowMenu.value = false\n }\n }\n\n onMounted(() => {\n document.addEventListener('click', handleOverflowDocumentClick, true)\n // Defer to ensure element is in the document and layout is computed.\n // Vue mounts to a detached div first, then FixedToolbarView inserts it\n // into the document after the constructor runs. setTimeout(0) ensures\n // we run after the entire constructor has completed.\n setTimeout(setupOverflowObserver, 0)\n })\n\n onUnmounted(() => {\n if (overflowResizeObserver) {\n overflowResizeObserver.disconnect()\n overflowResizeObserver = null\n }\n document.removeEventListener('click', handleOverflowDocumentClick, true)\n })\n\n const toolbarGroupInfo = computed(() => getToolbarGroups(config, ctx))\n\n watch(toolbarGroupInfo, () => {\n cachedWidths.clear()\n overflowVisibleCount.value = Infinity\n lastContainerWidth = 0\n setTimeout(computeOverflow, 0)\n })\n\n watch(\n () => props.show?.value,\n (val) => {\n if (val) {\n cachedWidths.clear()\n overflowVisibleCount.value = Infinity\n lastContainerWidth = 0\n setTimeout(computeOverflow, 0)\n }\n }\n )\n\n const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {\n e.preventDefault()\n if (ctx) fn(ctx)\n }\n\n function checkActive(checker: ToolbarItem['active']) {\n keepAlive(props.selection.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return false\n return checker(ctx)\n }\n\n const blockGroups = computed(() => getBlockGroups('', undefined, ctx))\n\n const activeBlockItem = computed(() => {\n keepAlive(props.selection.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return null\n\n const view = ctx.get(editorViewCtx)\n const { $from } = view.state.selection\n let activeNodeName = 'paragraph'\n let level = 0\n\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (node.isBlock) {\n activeNodeName = node.type.name\n if (activeNodeName === 'heading') level = node.attrs.level || 0\n // When inside a list_item, check the parent list type\n if (activeNodeName === 'list_item' && d > 1) {\n const parent = $from.node(d - 1)\n activeNodeName = parent.type.name\n }\n break\n }\n }\n\n let targetIcon = textIcon\n if (activeNodeName === 'heading') {\n if (level === 1) targetIcon = h1Icon\n else if (level === 2) targetIcon = h2Icon\n else if (level === 3) targetIcon = h3Icon\n else if (level === 4) targetIcon = h4Icon\n else if (level === 5) targetIcon = h5Icon\n else if (level === 6) targetIcon = h6Icon\n } else if (activeNodeName === 'blockquote') {\n targetIcon = quoteIcon\n } else if (activeNodeName === 'code_block') {\n targetIcon = codeIcon\n } else if (activeNodeName === 'bullet_list') {\n targetIcon = bulletListIcon\n } else if (activeNodeName === 'ordered_list') {\n targetIcon = orderedListIcon\n }\n\n return targetIcon\n })\n\n const currentAlignIndent = computed(() => {\n keepAlive(props.selection.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return { align: 'left', indent: 0 }\n const view = ctx.get(editorViewCtx)\n let align = 'left'\n let indent = 0\n const { selection } = view.state\n // Handle image-block selected via NodeSelection\n if (\n selection instanceof NodeSelection &&\n selection.node.type.name === 'image-block'\n ) {\n align = selection.node.attrs.align || 'center'\n return { align, indent }\n }\n const { $from } = selection\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n align = node.attrs.align || 'left'\n indent = node.attrs.indent || 0\n break\n }\n }\n return { align, indent }\n })\n\n const setAlign = (alignValue: string) => {\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { from, to } = state.selection\n const tr = state.tr\n let modified = false\n\n // Handle image-block selected via NodeSelection\n if (\n state.selection instanceof NodeSelection &&\n state.selection.node.type.name === 'image-block'\n ) {\n tr.setNodeMarkup(from, undefined, {\n ...state.selection.node.attrs,\n align: alignValue,\n })\n modified = true\n } else {\n state.doc.nodesBetween(from, to, (node: any, pos: number) => {\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n align: alignValue,\n })\n modified = true\n }\n })\n }\n\n if (modified) {\n view.dispatch(tr)\n }\n showAlignMenu.value = false\n }\n\n const setIndent = (adjustment: number) => {\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { from, to } = state.selection\n const tr = state.tr\n let modified = false\n\n state.doc.nodesBetween(from, to, (node: any, pos: number) => {\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n const newIndent = Math.max(0, (node.attrs.indent || 0) + adjustment)\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n indent: newIndent,\n })\n modified = true\n }\n })\n\n if (modified) {\n view.dispatch(tr)\n }\n }\n\n const canMerge = computed(() => {\n keepAlive(props.selection.value)\n const view = ctx?.get(editorViewCtx)\n if (!view) return false\n return mergeCells(view.state)\n })\n\n const canSplit = computed(() => {\n keepAlive(props.selection.value)\n const view = ctx?.get(editorViewCtx)\n if (!view) return false\n return splitCell(view.state)\n })\n\n const onMergeCells = () => {\n if (!ctx) return\n const view = ctx.get(editorViewCtx)\n if (!view || !view.editable) return\n const commands = ctx.get(commandsCtx)\n commands.call(mergeCellsCommand.key)\n requestAnimationFrame(() => view.focus())\n showAlignMenu.value = false\n }\n\n const onSplitCell = () => {\n if (!ctx) return\n const view = ctx.get(editorViewCtx)\n if (!view || !view.editable) return\n\n const { state } = view\n const { selection } = state\n\n let cellNode: any = null\n let cellPos: number | null = null\n\n if (selection instanceof CellSelection) {\n selection.forEachCell((cell: any, pos: number) => {\n if (\n !cellNode &&\n ((cell.attrs.rowspan ?? 1) > 1 || (cell.attrs.colspan ?? 1) > 1)\n ) {\n cellNode = cell\n cellPos = pos\n }\n })\n } else {\n const { $from } = selection as any\n for (let d = $from.depth; d > 0; d--) {\n const n = $from.node(d)\n if (n.type.name === 'table_cell' || n.type.name === 'table_header') {\n cellNode = n\n cellPos = $from.before(d)\n break\n }\n }\n }\n\n if (!cellNode || cellPos == null) return\n if (\n (cellNode.attrs.colspan ?? 1) == 1 &&\n (cellNode.attrs.rowspan ?? 1) == 1\n )\n return\n\n const $cellPos = state.doc.resolve(cellPos + 2)\n view.dispatch(state.tr.setSelection(TextSelection.near($cellPos)))\n\n const newState = view.state\n const { table } = selectedRect(newState)\n const { schema } = newState\n\n splitCellWithType(({ row }) => {\n const rowNode = table.child(row)\n return rowNode.type.name === 'table_header_row'\n ? schema.nodes.table_header!\n : schema.nodes.table_cell!\n })(newState, (tr) => {\n view.dispatch(tr)\n })\n\n requestAnimationFrame(() => view.focus())\n showAlignMenu.value = false\n }\n\n const currentColorState = computed(() => {\n keepAlive(props.selection.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created)\n return { textColor: null, bgColor: null }\n\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const schema = ctx.get(schemaCtx)\n\n const tcHasMark = schema.marks[textColorSchema.id]\n const bcHasMark = schema.marks[bgColorSchema.id]\n\n if (!tcHasMark || !bcHasMark) return { textColor: null, bgColor: null }\n\n const tcType = textColorSchema.type(ctx)\n const bcType = bgColorSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if ($cursor) {\n let textColor = null\n let bgColor = null\n const marks = state.storedMarks || $cursor.marks()\n for (const mark of marks) {\n if (mark.type === tcType) textColor = mark.attrs.color\n if (mark.type === bcType) bgColor = mark.attrs.color\n }\n return { textColor, bgColor }\n } else {\n const textColors = new Set<string | null>()\n const bgColors = new Set<string | null>()\n\n for (const range of ranges) {\n let { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node: any) => {\n if (node.isText) {\n const tcMark = tcType.isInSet(node.marks)\n const bcMark = bcType.isInSet(node.marks)\n textColors.add(tcMark ? tcMark.attrs.color : null)\n bgColors.add(bcMark ? bcMark.attrs.color : null)\n }\n })\n }\n\n const textColor =\n textColors.size === 1 ? Array.from(textColors)[0] : 'mixed'\n const bgColor = bgColors.size === 1 ? Array.from(bgColors)[0] : 'mixed'\n\n return { textColor, bgColor }\n }\n })\n\n const setTextColor = (color: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleTextColorCommand.key, color)\n }\n\n const setBgColor = (color: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleBgColorCommand.key, color)\n }\n\n const clearColor = () => {\n const view = ctx.get(editorViewCtx)\n const { state, dispatch } = view\n const { tr } = state\n const { from, to, empty } = state.selection\n const schema = ctx.get(schemaCtx)\n\n const tcHasMark = schema.marks[textColorSchema.id]\n const bcHasMark = schema.marks[bgColorSchema.id]\n\n if (!tcHasMark || !bcHasMark) return\n\n const textColorType = textColorSchema.type(ctx)\n const bgColorType = bgColorSchema.type(ctx)\n\n if (empty) {\n dispatch(\n tr.removeStoredMark(textColorType).removeStoredMark(bgColorType)\n )\n } else {\n dispatch(\n tr\n .removeMark(from, to, textColorType)\n .removeMark(from, to, bgColorType)\n )\n }\n showColorMenu.value = false\n }\n\n const currentFontState = computed(() => {\n keepAlive(props.selection.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created)\n return { fontFamily: null, fontSize: null }\n\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const schema = ctx.get(schemaCtx)\n\n const ffHasMark = schema.marks[fontFamilySchema.id]\n const fsHasMark = schema.marks[fontSizeSchema.id]\n\n if (!ffHasMark || !fsHasMark) return { fontFamily: null, fontSize: null }\n\n const ffType = fontFamilySchema.type(ctx)\n const fsType = fontSizeSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if ($cursor) {\n let fontFamily = null\n let fontSize = null\n const marks = state.storedMarks || $cursor.marks()\n for (const mark of marks) {\n if (mark.type === ffType) fontFamily = mark.attrs.fontFamily\n if (mark.type === fsType) fontSize = mark.attrs.fontSize\n }\n return { fontFamily, fontSize }\n } else {\n const fontFamilies = new Set<string | null>()\n const fontSizes = new Set<string | null>()\n\n for (const range of ranges) {\n let { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node: any) => {\n if (node.isText) {\n const ffMark = ffType.isInSet(node.marks)\n const fsMark = fsType.isInSet(node.marks)\n fontFamilies.add(ffMark ? ffMark.attrs.fontFamily : null)\n fontSizes.add(fsMark ? fsMark.attrs.fontSize : null)\n }\n })\n }\n\n const fontFamily =\n fontFamilies.size === 1 ? Array.from(fontFamilies)[0] : 'mixed'\n const fontSize =\n fontSizes.size === 1 ? Array.from(fontSizes)[0] : 'mixed'\n\n return { fontFamily, fontSize }\n }\n })\n\n const setFontFamily = (fontFamily: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleFontFamilyCommand.key, fontFamily)\n showFontFamilyMenu.value = false\n }\n\n const setFontSize = (fontSize: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleFontSizeCommand.key, fontSize)\n showFontSizeMenu.value = false\n }\n\n const renderSubMenuItem = (\n iconHtml: string,\n label: string,\n isActive: boolean,\n onClick: () => void,\n disabled = false\n ) => {\n return (\n <div\n class={['custom-menu-row', disabled ? 'disabled' : '']}\n style={{\n opacity: disabled ? 0.5 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n padding: '4px 12px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '14px',\n borderRadius: '4px',\n margin: '2px 8px',\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) onClick()\n }}\n onMouseenter={(e: MouseEvent) => {\n if (!disabled)\n (e.currentTarget as HTMLElement).style.backgroundColor =\n 'var(--crepe-color-hover)'\n }}\n onMouseleave={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'transparent'\n }}\n >\n <div\n class=\"custom-menu-row-left\"\n style={{ display: 'flex', alignItems: 'center', gap: '8px' }}\n >\n <span\n style={{\n width: '16px',\n height: '16px',\n display: 'flex',\n alignItems: 'center',\n }}\n innerHTML={iconHtml}\n />\n <span\n style={{\n color: isActive ? 'var(--crepe-color-primary)' : '#363B4C',\n userSelect: 'none',\n }}\n >\n {label}\n </span>\n </div>\n {isActive ? (\n <span\n style={{\n width: '16px',\n height: '16px',\n color: 'var(--crepe-color-primary)',\n }}\n >\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n )\n }\n\n return () => {\n // Find the formatting items\n const formatItems: ToolbarItem[] = []\n toolbarGroupInfo.value.forEach((group: any) => {\n if (group.items) {\n // We only want inline format items: bold, italic, strikethrough, underline, link, code\n group.items.forEach((item: any) => {\n // Add logic if it's formatting or inline. We know exactly what's inside.\n // But actually we injected underline in functionGroup and formattingGroup.\n if (\n [\n 'bold',\n 'italic',\n 'strikethrough',\n 'underline',\n 'link',\n 'code',\n ].includes(item.label.toLowerCase()) ||\n item.icon === textIcon ||\n item.icon === linkIcon\n ) {\n // Heuristic: check label or icon\n }\n formatItems.push(item)\n })\n }\n })\n\n // Ensure proper formatting tools are visible\n const nonHeadingGroups = toolbarGroupInfo.value.filter((group: any) => {\n if ((group as any).key === 'heading') return false\n if (props.isFixed && (group as any).key === 'function') return false\n return true\n })\n\n const isSectionOverflowed = (idx: number) =>\n idx >= overflowVisibleCount.value\n\n const hasOverflow = overflowVisibleCount.value < totalSectionCount.value\n\n return (\n <div\n ref={toolbarContainerRef}\n style={{\n display: 'flex',\n alignItems: 'stretch',\n minWidth: 0,\n overflow: 'hidden',\n }}\n >\n {/* Section 0: Block Type Dropdown */}\n <div\n class=\"toolbar-item\"\n onMouseenter={handleBlockEnter}\n onMouseleave={handleBlockLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(0) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n flexShrink: 0,\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={activeBlockItem.value || textIcon}\n />\n <span\n style={{ width: '20px', display: 'flex', alignItems: 'center' }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Format Painter */}\n <div\n style={{\n position: 'relative',\n display: isSectionOverflowed(1) ? 'none' : 'flex',\n flexShrink: 0,\n }}\n >\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n formatPainterState!.value && 'active'\n )}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n handleFormatPainterClick(e as any)\n }}\n onDblclick={handleFormatPainterDblClick}\n title={i18n(ctx, 'toolbar.formatPainter') || 'Format Painter'}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: formatPainterState!.value\n ? 'var(--crepe-color-selected, var(--crepe-color-hover))'\n : undefined,\n }}\n >\n <span\n style={\n {\n display: 'inline-flex',\n alignItems: 'center',\n '--toolbar-icon-color': formatPainterState!.value\n ? 'var(--crepe-color-primary)'\n : '#363B4C',\n } as any\n }\n innerHTML={formatPainterIcon}\n />\n </button>\n </div>\n\n {/* Section 1: Divider */}\n <div\n class=\"divider\"\n style={{\n margin: '0 4px',\n alignSelf: 'center',\n display: isSectionOverflowed(2) ? 'none' : undefined,\n flexShrink: 0,\n }}\n ></div>\n\n {/* Section 2: Font Family Dropdown */}\n <div\n class=\"toolbar-item custom-font-family-item\"\n onMouseenter={handleFontFamilyEnter}\n onMouseleave={handleFontFamilyLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(3) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n minWidth: '50px',\n flexShrink: 0,\n }}\n >\n <span\n style={{\n fontSize: '13px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '80px',\n color: '#363B4C',\n }}\n >\n {currentFontState.value.fontFamily &&\n currentFontState.value.fontFamily !== 'mixed'\n ? currentFontState.value.fontFamily\n .split(',')[0]\n .replace(/['\"]/g, '') ||\n (ctx ? i18n(ctx, 'customMenu.fontDefault' as any) : '默认')\n : ctx\n ? i18n(ctx, 'customMenu.fontDefault' as any)\n : '默认'}\n </span>\n <span\n style={{\n width: '16px',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '4px',\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Section 3: Font Size Dropdown */}\n <div\n class=\"toolbar-item custom-font-size-item\"\n onMouseenter={handleFontSizeEnter}\n onMouseleave={handleFontSizeLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(4) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n minWidth: '40px',\n flexShrink: 0,\n }}\n >\n <span style={{ fontSize: '13px', color: '#363B4C' }}>\n {currentFontState.value.fontSize &&\n currentFontState.value.fontSize !== 'mixed'\n ? currentFontState.value.fontSize\n : '16px'}\n </span>\n <span\n style={{\n width: '16px',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '4px',\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Section 4: Divider */}\n <div\n class=\"divider\"\n style={{\n margin: '0 4px',\n alignSelf: 'center',\n display: isSectionOverflowed(5) ? 'none' : undefined,\n flexShrink: 0,\n }}\n ></div>\n\n {/* Section 5: Alignment Dropdown */}\n <div\n class=\"toolbar-item\"\n onMouseenter={handleAlignEnter}\n onMouseleave={handleAlignLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(6) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n flexShrink: 0,\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={\n currentAlignIndent.value.align === 'center'\n ? alignCenterIcon\n : currentAlignIndent.value.align === 'right'\n ? alignRightIcon\n : alignLeftIcon\n }\n />\n <span\n style={{ width: '20px', display: 'flex', alignItems: 'center' }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Section 6: Color Dropdown */}\n <div\n class=\"toolbar-item\"\n onMouseenter={handleColorEnter}\n onMouseleave={handleColorLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(7) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 4px',\n flexShrink: 0,\n }}\n >\n <span\n class=\"milkdown-icon\"\n innerHTML={fontColorIcon}\n style={{\n display: 'inline-flex',\n color:\n currentColorState.value.textColor &&\n currentColorState.value.textColor !== 'mixed'\n ? currentColorState.value.textColor\n : '#363B4C',\n backgroundColor:\n currentColorState.value.bgColor &&\n currentColorState.value.bgColor !== 'mixed'\n ? currentColorState.value.bgColor\n : undefined,\n borderRadius: '4px',\n }}\n />\n <span\n style={{ width: '20px', display: 'flex', alignItems: 'center' }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Formatting Tools (sections 7+) */}\n {(() => {\n let sectionIdx = 8\n return nonHeadingGroups.map((group: any, groupIndex: number) => {\n const items = group.items.map((item: any) => {\n const idx = sectionIdx\n sectionIdx++\n const isTable = item.icon === tableIcon\n return (\n <div\n key={item.label}\n style={{\n position: 'relative',\n display: isSectionOverflowed(idx) ? 'none' : 'flex',\n flexShrink: 0,\n }}\n onMouseenter={isTable ? handleTableEnter : undefined}\n onMouseleave={isTable ? handleTableLeave : undefined}\n >\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && checkActive(item.active) && 'active'\n )}\n data-key={item.key}\n onPointerdown={(e: PointerEvent) => {\n if (isTable) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n onClick(item.onRun)(e)\n }}\n title={item.label}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={\n ctx && checkActive(item.active)\n ? activeIconMap[item.icon] || item.icon\n : item.icon\n }\n />\n {isTable ? (\n <span\n style={{\n width: '16px',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '2px',\n opacity: 0.5,\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n ) : null}\n </button>\n </div>\n )\n })\n const dividerIdx = sectionIdx\n if (\n groupIndex < nonHeadingGroups.length - 1 &&\n group.items.length > 0\n ) {\n sectionIdx++\n }\n return (\n <Fragment key={(group as any).key}>\n {items}\n {groupIndex < nonHeadingGroups.length - 1 &&\n group.items.length > 0 ? (\n <div\n class=\"divider\"\n style={{\n display: isSectionOverflowed(dividerIdx)\n ? 'none'\n : undefined,\n flexShrink: 0,\n }}\n ></div>\n ) : null}\n </Fragment>\n )\n })\n })()}\n\n {/* More button */}\n {hasOverflow ? (\n <div\n data-overflow-button=\"true\"\n class=\"toolbar-item\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n cursor: 'pointer',\n }}\n onClick={(e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (showOverflowMenu.value) {\n showOverflowMenu.value = false\n return\n }\n const rect = (\n e.currentTarget as HTMLElement\n ).getBoundingClientRect()\n overflowMenuPos.value = {\n top: rect.bottom + 4,\n right: window.innerWidth - rect.right,\n }\n showOverflowMenu.value = true\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={moreIcon}\n />\n </div>\n ) : null}\n\n {/* Submenus rendered conditionally in fixed portals or overlays to escape overflow */}\n {showBlockMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${blockMenuPos.value.top}px`,\n left: `${blockMenuPos.value.left}px`,\n zIndex: 9999,\n width: '200px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n maxHeight: '300px',\n overflowY: 'auto',\n }}\n onMouseenter={() => {\n if (hideBlockTimer) clearTimeout(hideBlockTimer)\n }}\n onMouseleave={handleBlockLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {blockGroups.value.groups\n .flatMap((group: any) => group.items)\n .filter((item: any) => {\n const key = (item as any).key\n if (isFixed) {\n return [\n 'text',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n ].includes(key)\n }\n return [\n 'text',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'quote',\n 'bullet-list',\n 'ordered-list',\n 'task-list',\n 'code',\n ].includes(key)\n })\n .map((item: any) => {\n const isActive =\n activeBlockItem.value === item.icon ||\n (activeBlockItem.value === null && item.icon === textIcon)\n return renderSubMenuItem(\n isActive\n ? activeIconMap[item.icon] || item.icon\n : item.icon,\n item.label,\n isActive,\n () => {\n // Mark as programmatic to skip clearTextInCurrentBlockCommand\n // which is only needed for slash menu text clearing\n const api = ctx.get(menuAPI.key)\n const origFn = api.isProgrammatic\n api.isProgrammatic = () => true\n item.onRun(ctx)\n api.isProgrammatic = origFn\n showBlockMenu.value = false\n }\n )\n })}\n </div>\n ) : null}\n\n {showAlignMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${alignMenuPos.value.top}px`,\n left: `${alignMenuPos.value.left}px`,\n zIndex: 9999,\n width: '180px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n }}\n onMouseenter={() => {\n if (hideAlignTimer) clearTimeout(hideAlignTimer)\n }}\n onMouseleave={handleAlignLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {renderSubMenuItem(\n currentAlignIndent.value.align === 'left'\n ? activeIconMap[alignLeftIcon] || alignLeftIcon\n : alignLeftIcon,\n ctx ? i18n(ctx, 'customMenu.alignLeft') : 'Left',\n currentAlignIndent.value.align === 'left',\n () => setAlign('left')\n )}\n {renderSubMenuItem(\n currentAlignIndent.value.align === 'center'\n ? activeIconMap[alignCenterIcon] || alignCenterIcon\n : alignCenterIcon,\n ctx ? i18n(ctx, 'customMenu.alignCenter') : 'Center',\n currentAlignIndent.value.align === 'center',\n () => setAlign('center')\n )}\n {renderSubMenuItem(\n currentAlignIndent.value.align === 'right'\n ? activeIconMap[alignRightIcon] || alignRightIcon\n : alignRightIcon,\n ctx ? i18n(ctx, 'customMenu.alignRight') : 'Right',\n currentAlignIndent.value.align === 'right',\n () => setAlign('right')\n )}\n <div\n style={{\n margin: '4px 0',\n borderBottom:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n }}\n ></div>\n {renderSubMenuItem(\n indentIncreaseIcon,\n ctx\n ? i18n(ctx, 'customMenu.increaseIndent')\n : 'Increase Indent',\n false,\n () => setIndent(1)\n )}\n {renderSubMenuItem(\n indentDecreaseIcon,\n ctx\n ? i18n(ctx, 'customMenu.decreaseIndent')\n : 'Decrease Indent',\n false,\n () => setIndent(-1),\n currentAlignIndent.value.indent <= 0\n )}\n {canMerge.value || canSplit.value ? (\n <>\n <div\n style={{\n margin: '4px 0',\n borderBottom:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n }}\n ></div>\n {canMerge.value &&\n renderSubMenuItem(\n mergeCellIcon,\n ctx\n ? i18n(ctx, 'customMenu.mergeCells' as any) ||\n '合并单元格'\n : '合并单元格',\n false,\n onMergeCells\n )}\n {canSplit.value &&\n renderSubMenuItem(\n splitCellIcon,\n ctx\n ? i18n(ctx, 'customMenu.splitCell' as any) ||\n '拆分单元格'\n : '拆分单元格',\n false,\n onSplitCell\n )}\n </>\n ) : null}\n </div>\n ) : null}\n\n {showColorMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${colorMenuPos.value.top}px`,\n left: `${colorMenuPos.value.left}px`,\n zIndex: 9999,\n width: '246px',\n padding: '12px',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n gap: '8px',\n }}\n onMouseenter={() => {\n if (hideColorTimer) clearTimeout(hideColorTimer)\n }}\n onMouseleave={handleColorLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n }}\n >\n {ctx ? i18n(ctx, 'customMenu.textColor') : '字体颜色'}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n '#000000',\n '#8C8C8C',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color) => (\n <div\n key={color}\n onClick={() => setTextColor(color)}\n style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n borderRadius: '4px',\n boxSizing: 'border-box',\n border:\n currentColorState.value.textColor === color\n ? '2px solid var(--crepe-color-primary)'\n : '1px solid #eeeff0',\n backgroundColor:\n currentColorState.value.textColor === color\n ? 'var(--crepe-color-hover)'\n : '#ffffff',\n color: color,\n fontWeight: 'bold',\n fontSize: '14px',\n }}\n >\n A\n </div>\n ))}\n </div>\n\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '4px',\n }}\n >\n {ctx ? i18n(ctx, 'customMenu.bgColor') : '背景颜色'}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n 'transparent',\n '#F5F5F5',\n '#FFCCC7',\n '#FFE7BA',\n '#FFF1B8',\n '#D9F7BE',\n '#D6E4FF',\n '#EFDBFF',\n ].map((color) => (\n <div\n key={color}\n onClick={() =>\n setBgColor(color === 'transparent' ? null : color)\n }\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n boxSizing: 'border-box',\n border:\n currentColorState.value.bgColor === color ||\n (color === 'transparent' &&\n !currentColorState.value.bgColor &&\n currentColorState.value.bgColor !== 'mixed')\n ? '2px solid var(--crepe-color-primary)'\n : '1px solid var(--crepe-color-outline-variant)',\n backgroundColor:\n color === 'transparent' ? '#ffffff' : color,\n position: 'relative',\n overflow: 'hidden',\n }}\n >\n {color === 'transparent' ? (\n <div\n style={{\n position: 'absolute',\n top: '-2px',\n left: 0,\n width: '141%',\n height: '1px',\n backgroundColor: '#ff4d4f',\n transform: 'rotate(45deg)',\n transformOrigin: 'top left',\n }}\n ></div>\n ) : null}\n </div>\n ))}\n {[\n '#BFBFBF',\n '#595959',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color) => (\n <div\n key={color}\n onClick={() => setBgColor(color)}\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n boxSizing: 'border-box',\n border:\n currentColorState.value.bgColor === color\n ? '2px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n backgroundColor: color,\n }}\n ></div>\n ))}\n </div>\n\n <button\n onClick={clearColor}\n style={{\n width: '100%',\n marginTop: '8px',\n padding: '4px 0',\n border: '1px solid #eeeff0',\n borderRadius: '4px',\n background: 'transparent',\n color: '#363B4C',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n {ctx ? i18n(ctx, 'customMenu.restoreDefault') : '恢复默认'}\n </button>\n </div>\n ) : null}\n\n {showFontFamilyMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${fontFamilyMenuPos.value.top}px`,\n left: `${fontFamilyMenuPos.value.left}px`,\n zIndex: 9999,\n width: '180px',\n maxHeight: '300px',\n overflowY: 'auto',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n }}\n onMouseenter={() => {\n if (hideFontFamilyTimer) clearTimeout(hideFontFamilyTimer)\n }}\n onMouseleave={handleFontFamilyLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {[\n {\n label: ctx\n ? i18n(ctx, 'customMenu.fontDefault' as any)\n : '默认',\n value: null,\n },\n { label: 'Arial', value: 'Arial' },\n { label: 'Comic Sans MS', value: '\"Comic Sans MS\"' },\n { label: 'Courier New', value: '\"Courier New\"' },\n { label: 'Georgia', value: 'Georgia' },\n { label: 'Helvetica', value: 'Helvetica' },\n { label: 'Impact', value: 'Impact' },\n { label: 'Times New Roman', value: '\"Times New Roman\"' },\n { label: 'Trebuchet MS', value: '\"Trebuchet MS\"' },\n { label: 'Verdana', value: 'Verdana' },\n {\n label: ctx ? i18n(ctx, 'font.fangSong' as any) : '仿宋',\n value: 'FangSong',\n },\n {\n label: ctx ? i18n(ctx, 'font.stFangsong' as any) : '华文仿宋',\n value: 'STFangsong',\n },\n {\n label: ctx ? i18n(ctx, 'font.stSong' as any) : '华文宋体',\n value: 'STSong',\n },\n {\n label: ctx ? i18n(ctx, 'font.stKaiti' as any) : '华文楷体',\n value: 'STKaiti',\n },\n {\n label: ctx ? i18n(ctx, 'font.simSun' as any) : '宋体',\n value: 'SimSun',\n },\n {\n label: ctx\n ? i18n(ctx, 'font.microsoftYaHei' as any)\n : '微软雅黑',\n value: '\"Microsoft YaHei\"',\n },\n {\n label: ctx ? i18n(ctx, 'font.kaiTi' as any) : '楷体',\n value: 'KaiTi',\n },\n {\n label: ctx ? i18n(ctx, 'font.simHei' as any) : '黑体',\n value: 'SimHei',\n },\n ].map((font) => {\n const supported = isFontSupported(font.value)\n return (\n <div\n key={font.label}\n class={['custom-menu-row']}\n style={{\n cursor: supported ? 'pointer' : 'not-allowed',\n padding: '6px 12px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '14px',\n fontFamily: font.value || 'inherit',\n borderRadius: '4px',\n margin: '2px 8px',\n opacity: supported ? 1 : 0.45,\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (supported) {\n setFontFamily(font.value)\n }\n }}\n onMouseenter={(e: MouseEvent) => {\n if (supported) {\n ;(\n e.currentTarget as HTMLElement\n ).style.backgroundColor = 'var(--crepe-color-hover)'\n }\n }}\n onMouseleave={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'transparent'\n }}\n >\n <span\n style={{\n color:\n currentFontState.value.fontFamily === font.value\n ? 'var(--crepe-color-primary)'\n : '#363B4C',\n userSelect: 'none',\n }}\n >\n {font.label}\n </span>\n {currentFontState.value.fontFamily === font.value ? (\n <span\n style={{\n width: '16px',\n height: '16px',\n color: 'var(--crepe-color-primary)',\n }}\n >\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n )\n })}\n </div>\n ) : null}\n\n {showFontSizeMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${fontSizeMenuPos.value.top}px`,\n left: `${fontSizeMenuPos.value.left}px`,\n zIndex: 9999,\n width: '120px',\n maxHeight: '300px',\n overflowY: 'auto',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n }}\n onMouseenter={() => {\n if (hideFontSizeTimer) clearTimeout(hideFontSizeTimer)\n }}\n onMouseleave={handleFontSizeLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {[\n { label: '12px', value: '12px' },\n { label: '13px', value: '13px' },\n { label: '14px', value: '14px' },\n { label: '15px', value: '15px' },\n { label: '16px', value: null },\n { label: '18px', value: '18px' },\n { label: '20px', value: '20px' },\n { label: '24px', value: '24px' },\n { label: '28px', value: '28px' },\n { label: '32px', value: '32px' },\n { label: '36px', value: '36px' },\n ].map((size) => (\n <div\n key={size.label}\n class={['custom-menu-row']}\n style={{\n cursor: 'pointer',\n padding: '6px 12px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '14px',\n borderRadius: '4px',\n margin: '2px 8px',\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setFontSize(size.value)\n }}\n onMouseenter={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'var(--crepe-color-hover)'\n }}\n onMouseleave={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'transparent'\n }}\n >\n <span\n style={{\n color:\n currentFontState.value.fontSize === size.value\n ? 'var(--crepe-color-primary)'\n : '#363B4C',\n userSelect: 'none',\n }}\n >\n {size.label}\n </span>\n {currentFontState.value.fontSize === size.value ? (\n <span\n style={{\n width: '16px',\n height: '16px',\n color: 'var(--crepe-color-primary)',\n }}\n >\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n ))}\n </div>\n ) : null}\n\n {showTableMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${tableMenuPos.value.top}px`,\n left: `${tableMenuPos.value.left}px`,\n zIndex: 9999,\n width: 'max-content',\n padding: '12px',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n display: 'flex',\n flexDirection: 'column',\n }}\n onMouseenter={() => {\n if (hideTableTimer) clearTimeout(hideTableTimer)\n }}\n onMouseleave={handleTableLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginBottom: '8px',\n }}\n >\n {i18n(ctx, 'customMenu.insertTable')}\n </div>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(9, 1fr)',\n gap: '4px',\n width: 'max-content',\n }}\n >\n {Array.from({ length: 9 }).map((_, r) =>\n Array.from({ length: 9 }).map((_, c) => {\n const isHovered =\n r < tableHoverIndices.value.r &&\n c < tableHoverIndices.value.c\n return (\n <div\n key={`cell-${r}-${c}`}\n style={{\n width: '20px',\n height: '20px',\n backgroundColor: isHovered\n ? 'color-mix(in srgb, var(--crepe-color-primary), transparent 85%)'\n : 'var(--crepe-color-surface-low, #f5f5f5)',\n border: isHovered\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n onPointerenter={() => {\n tableHoverIndices.value = { r: r + 1, c: c + 1 }\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n runTableInsert(r + 1, c + 1)\n }}\n />\n )\n })\n )}\n </div>\n {tableHoverIndices.value.r > 0 ? (\n <div\n style={{\n fontSize: '12px',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n {tableHoverIndices.value.r} x {tableHoverIndices.value.c}\n </div>\n ) : (\n <div\n style={{\n fontSize: '12px',\n color: 'transparent',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n 0 x 0\n </div>\n )}\n </div>\n ) : null}\n\n {/* Overflow Menu Popup — horizontal icon-only layout with flex-wrap */}\n {showOverflowMenu.value ? (\n <div\n class=\"overflow-menu-popup\"\n style={{\n position: 'fixed',\n top: `${overflowMenuPos.value.top}px`,\n left:\n overflowMenuPos.value.left !== undefined\n ? `${overflowMenuPos.value.left}px`\n : 'auto',\n right:\n overflowMenuPos.value.right !== undefined\n ? `${overflowMenuPos.value.right}px`\n : 'auto',\n zIndex: 9998,\n padding: '6px',\n display: 'flex',\n flexWrap: 'wrap',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n maxWidth: '360px',\n width: 'max-content',\n }}\n onClick={(e: MouseEvent) => e.stopPropagation()}\n >\n {(() => {\n const cutoff = overflowVisibleCount.value\n const items: any[] = []\n\n const renderIconButton = (\n iconHtml: string,\n title: string,\n isActive: boolean,\n onClick: ((e: MouseEvent) => void) | undefined,\n hasDropdown = false,\n onMouseEnter?: (e: MouseEvent) => void,\n onMouseLeave?: (e: MouseEvent) => void,\n key?: string\n ) => (\n <button\n type=\"button\"\n class={clsx('toolbar-item', isActive && 'active')}\n data-key={key}\n title={title}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onClick={(e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (onClick) onClick(e)\n }}\n onMouseenter={onMouseEnter}\n onMouseleave={onMouseLeave}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={iconHtml}\n />\n {hasDropdown ? (\n <span\n style={{\n width: '12px',\n display: 'flex',\n alignItems: 'center',\n opacity: 0.5,\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n ) : null}\n </button>\n )\n\n // Section 0: Block Type\n if (0 >= cutoff) {\n items.push(\n renderIconButton(\n activeBlockItem.value || textIcon,\n ctx ? i18n(ctx, 'customMenu.blockType' as any) : '段落',\n false,\n undefined,\n true,\n handleBlockEnter,\n handleBlockLeave\n )\n )\n }\n // Section 2: Font Family\n if (3 >= cutoff) {\n items.push(\n renderIconButton(\n textIcon,\n ctx ? i18n(ctx, 'customMenu.fontDefault' as any) : '字体',\n false,\n undefined,\n true,\n handleFontFamilyEnter,\n handleFontFamilyLeave\n )\n )\n }\n // Section 3: Font Size\n if (4 >= cutoff) {\n items.push(\n renderIconButton(\n textIcon,\n ctx ? i18n(ctx, 'customMenu.fontSize' as any) : '字号',\n false,\n undefined,\n true,\n handleFontSizeEnter,\n handleFontSizeLeave\n )\n )\n }\n // Section 5: Alignment\n if (6 >= cutoff) {\n items.push(\n renderIconButton(\n currentAlignIndent.value.align === 'center'\n ? alignCenterIcon\n : currentAlignIndent.value.align === 'right'\n ? alignRightIcon\n : alignLeftIcon,\n ctx ? i18n(ctx, 'customMenu.align' as any) : '对齐',\n false,\n undefined,\n true,\n handleAlignEnter,\n handleAlignLeave\n )\n )\n }\n // Section 6: Color\n if (7 >= cutoff) {\n items.push(\n renderIconButton(\n fontColorIcon,\n ctx ? i18n(ctx, 'customMenu.color' as any) : '颜色',\n false,\n undefined,\n true,\n handleColorEnter,\n handleColorLeave\n )\n )\n }\n // Formatting buttons (section 7+)\n let fmtIdx = 8\n for (const group of nonHeadingGroups) {\n for (const item of group.items) {\n const idx = fmtIdx\n fmtIdx++\n if (idx >= cutoff) {\n const isTable = item.icon === tableIcon\n items.push(\n renderIconButton(\n ctx && checkActive(item.active)\n ? activeIconMap[item.icon] || item.icon\n : item.icon,\n item.label,\n ctx ? checkActive(item.active) : false,\n isTable\n ? undefined\n : (_e: MouseEvent) => {\n item.onRun(ctx)\n showOverflowMenu.value = false\n },\n isTable,\n isTable ? handleTableEnter : undefined,\n isTable ? handleTableLeave : undefined,\n item.key\n )\n )\n }\n }\n fmtIdx++\n }\n return items\n })()}\n </div>\n ) : null}\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type {\n EditorState,\n PluginView,\n Selection,\n} from '@jvs-milkdown/kit/prose/state'\nimport type { EditorView } from '@jvs-milkdown/kit/prose/view'\n\nimport { editorViewOptionsCtx } from '@jvs-milkdown/kit/core'\nimport {\n TooltipProvider,\n tooltipFactory,\n} from '@jvs-milkdown/kit/plugin/tooltip'\nimport { TextSelection, AllSelection } from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport { createApp, ref, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { GroupBuilder } from '../../utils'\nimport type { DefineFeature } from '../shared'\nimport type { ToolbarItem } from './config'\n\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { CrepeFeature } from '../../feature'\nimport { colorPlugins } from './color'\nimport { Toolbar } from './component'\nimport { highlightMark } from './highlight-mark'\nimport { underline } from './underline'\nimport {\n getIsAnyPopupOpen,\n addPopupChangeListener,\n} from '../../utils/fixed-toolbar-popup-state'\n\ninterface ToolbarConfig {\n boldIcon: string\n codeIcon: string\n italicIcon: string\n linkIcon: string\n strikethroughIcon: string\n underlineIcon: string\n highlightIcon: string\n latexIcon: string\n h1Icon: string\n h2Icon: string\n h3Icon: string\n h4Icon: string\n h5Icon: string\n h6Icon: string\n buildToolbar: (builder: GroupBuilder<ToolbarItem>) => void\n}\n\nexport type ToolbarFeatureConfig = Partial<ToolbarConfig>\n\nconst toolbarTooltip = tooltipFactory('CREPE_TOOLBAR')\n\nclass ToolbarView implements PluginView {\n #tooltipProvider: TooltipProvider\n #content: HTMLElement\n #app: App\n #selection: ShallowRef<Selection>\n #show = ref(false)\n #mousePressed = false\n #removePopupListener: (() => void) | undefined\n #onDocumentMouseUp: ((ev: MouseEvent) => void) | undefined\n\n constructor(ctx: Ctx, view: EditorView, config?: ToolbarFeatureConfig) {\n const content = document.createElement('div')\n content.className = 'milkdown-toolbar'\n this.#selection = shallowRef(view.state.selection)\n const app = createApp(Toolbar, {\n ctx,\n hide: this.hide,\n config,\n selection: this.#selection,\n show: this.#show,\n })\n app.mount(content)\n this.#content = content\n this.#app = app\n\n view.dom.addEventListener('mousedown', () => {\n this.#mousePressed = true\n })\n view.dom.addEventListener('mouseup', () => {\n this.#mousePressed = false\n // Defer to ensure ProseMirror selection is finalized,\n // then manually trigger tooltip update\n setTimeout(() => {\n this.update(view)\n }, 0)\n })\n\n // Handle mouseup outside the editor view (finish selection outside)\n const onDocumentMouseUp = () => {\n if (this.#mousePressed) {\n this.#mousePressed = false\n setTimeout(() => {\n this.update(view)\n }, 0)\n }\n }\n document.addEventListener('mouseup', onDocumentMouseUp)\n this.#onDocumentMouseUp = onDocumentMouseUp\n\n this.#tooltipProvider = new TooltipProvider({\n content: this.#content,\n debounce: 20,\n offset: 10,\n shouldShow: (view: EditorView) => {\n if (this.#mousePressed) return false\n if (getIsAnyPopupOpen()) return false\n\n const { doc, selection } = view.state\n const { empty, from, to } = selection\n\n const isEmptyTextBlock =\n !doc.textBetween(from, to).length &&\n selection instanceof TextSelection\n\n const isNotTextBlock =\n !(selection instanceof TextSelection) &&\n !(selection instanceof AllSelection)\n\n const activeElement = (view.dom.getRootNode() as ShadowRoot | Document)\n .activeElement\n const isTooltipChildren = content.contains(activeElement)\n\n const notHasFocus = !view.hasFocus() && !isTooltipChildren\n\n const isReadonly = !view.editable\n\n if (\n notHasFocus ||\n isNotTextBlock ||\n empty ||\n isEmptyTextBlock ||\n isReadonly\n )\n return false\n\n return true\n },\n })\n this.#tooltipProvider.onShow = () => {\n this.#show.value = true\n }\n this.#tooltipProvider.onHide = () => {\n this.#show.value = false\n }\n\n // React to fixed toolbar popup state changes\n this.#removePopupListener = addPopupChangeListener(() => {\n if (getIsAnyPopupOpen()) {\n this.#tooltipProvider.hide()\n } else {\n this.#tooltipProvider.update(view)\n }\n })\n\n this.update(view)\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#tooltipProvider.update(view, prevState)\n this.#selection.value = view.state.selection\n }\n\n destroy = () => {\n this.#removePopupListener?.()\n if (this.#onDocumentMouseUp) {\n document.removeEventListener('mouseup', this.#onDocumentMouseUp)\n }\n this.#tooltipProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n\n hide = () => {\n this.#tooltipProvider.hide()\n }\n}\n\nimport { fontPlugins, stripFontFamilyFromExternalHTML } from './font'\n\nexport const toolbar: DefineFeature<ToolbarFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.Toolbar))\n .config((ctx) => {\n ctx.set(toolbarTooltip.key, {\n view: (view) => new ToolbarView(ctx, view, config),\n })\n })\n .config((ctx) => {\n // Register a transformPastedHTML handler that strips font-family\n // from content pasted from external sources (other web pages).\n // Internal copy-paste (data-pm-slice) is left untouched.\n ctx.update(editorViewOptionsCtx, (prev) => {\n const prevTransform = prev.transformPastedHTML\n return {\n ...prev,\n transformPastedHTML: (html: string, view: EditorView) => {\n if (prevTransform) html = prevTransform(html, view)\n return stripFontFamilyFromExternalHTML(html)\n },\n }\n })\n })\n .use(underline as any)\n .use(highlightMark as any)\n .use(colorPlugins as any)\n .use(fontPlugins as any)\n .use(toolbarTooltip)\n}\n"],"names":["CrepeFeature","__privateAdd","__privateSet","__privateGet","group","_tr","getGroups","ctx","_a","_b","_c","_d","items","groups","_","$from","$to","getToolbarGroups","getBlockGroups","onClick","view"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/utils/fixed-toolbar-popup-state.ts","../../../../src/feature/toolbar/color.ts","../../../../src/icons/align-center.ts","../../../../src/icons/align-left.ts","../../../../src/icons/align-right.ts","../../../../src/icons/bold.ts","../../../../src/icons/bullet-list.ts","../../../../src/icons/chevron-down.ts","../../../../src/icons/clear.ts","../../../../src/icons/code.ts","../../../../src/icons/confirm.ts","../../../../src/icons/copy.ts","../../../../src/icons/divider.ts","../../../../src/icons/edit.ts","../../../../src/icons/h1.ts","../../../../src/icons/h2.ts","../../../../src/icons/h3.ts","../../../../src/icons/h4.ts","../../../../src/icons/h5.ts","../../../../src/icons/h6.ts","../../../../src/icons/image.ts","../../../../src/icons/italic.ts","../../../../src/icons/link.ts","../../../../src/icons/ordered-list.ts","../../../../src/icons/plus.ts","../../../../src/icons/quote.ts","../../../../src/icons/remove.ts","../../../../src/icons/strikethrough.ts","../../../../src/icons/table.ts","../../../../src/icons/text.ts","../../../../src/icons/todo-list.ts","../../../../src/icons/functions.ts","../../../../src/icons/indent-increase.ts","../../../../src/icons/indent-decrease.ts","../../../../src/icons/underline.ts","../../../../src/icons/font-color.ts","../../../../src/icons/high-line-code.ts","../../../../src/icons/file-link.ts","../../../../src/icons/line-code.ts","../../../../src/icons/merge-cell.ts","../../../../src/icons/more.ts","../../../../src/icons/split-cell.ts","../../../../src/icons/format-painter.ts","../../../../src/utils/keep-alive.ts","../../../../src/utils/group-builder.ts","../../../../src/feature/block-edit/menu/api.ts","../../../../src/feature/attachment/schema.ts","../../../../src/feature/latex/inline-latex.ts","../../../../src/feature/latex/command.ts","../../../../src/feature/block-edit/menu/config.ts","../../../../src/feature/block-edit/menu/component.tsx","../../../../src/feature/block-edit/menu/index.ts","../../../../src/feature/toolbar/highlight-mark.ts","../../../../src/feature/toolbar/underline.ts","../../../../src/feature/toolbar/config.ts","../../../../src/feature/toolbar/font.ts","../../../../src/feature/toolbar/component.tsx","../../../../src/feature/toolbar/index.ts"],"sourcesContent":["import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { createSlice } from '@jvs-milkdown/kit/ctx'\n\nexport const zhCN = {\n // block handle\n 'handle.add': '插入内容',\n 'handle.menu': '点击打开菜单',\n 'handle.drag': '拖拽移动位置',\n // placeholder\n 'placeholder.text': \"输入正文或 '/' 快速插入内容\",\n\n // toolbar\n 'toolbar.heading': '标题',\n 'toolbar.formatting': '格式',\n 'toolbar.function': '功能',\n 'toolbar.formatPainter': '格式刷',\n\n // menu bar\n 'menuBar.file': '文件',\n 'menuBar.edit': '编辑',\n 'menuBar.view': '视图',\n 'menuBar.insert': '插入',\n 'menuBar.format': '格式',\n\n // view menu\n 'view.outline': '大纲面板',\n 'view.outlineLeft': '在左侧显示',\n 'view.outlineRight': '在右侧显示',\n 'view.docBackground': '文档背景色',\n 'view.title': '显示标题',\n 'view.cover': '显示封面',\n 'view.editorWidth': '内容宽度',\n 'view.widthDefault': '默认',\n 'view.widthWide': '较宽',\n 'view.widthFull': '全宽',\n\n // code-mirror\n 'codeMirror.searchPlaceholder': '搜索语言',\n 'codeMirror.noResultText': '无结果',\n 'codeMirror.previewToggleOptionEdit': '编辑',\n 'codeMirror.previewToggleOptionHide': '隐藏',\n 'codeMirror.previewLabel': '预览',\n 'codeMirror.wrapText': '自动换行',\n\n // link-tooltip\n 'linkTooltip.pasteLink': '粘贴链接...',\n\n // image-block\n 'imageBlock.inlineUploadButton': '上传',\n 'imageBlock.inlineUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockUploadButton': '上传文件',\n 'imageBlock.blockUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockCaptionPlaceholder': '写下图片描述...',\n 'imageBlock.blockConfirmButton': '确定',\n\n // attachment-block\n 'attachmentBlock.uploadButton': '上传文件',\n 'attachmentBlock.uploadPlaceholderText': '或点击上传',\n 'attachmentBlock.download': '下载',\n\n // menu categories\n 'menu.group.text': '正文',\n 'menu.group.block': '段落',\n 'menu.group.list': '列表',\n 'menu.group.advanced': '高级',\n\n // menu items\n 'menu.item.text': '普通文本',\n 'menu.item.h1': '标题 1',\n 'menu.item.h2': '标题 2',\n 'menu.item.h3': '标题 3',\n 'menu.item.h4': '标题 4',\n 'menu.item.h5': '标题 5',\n 'menu.item.h6': '标题 6',\n 'menu.item.quote': '引用',\n 'menu.item.divider': '分割线',\n 'menu.item.bulletList': '无序列表',\n 'menu.item.orderedList': '有序列表',\n 'menu.item.taskList': '任务列表',\n 'menu.item.image': '图片',\n 'menu.item.attachment': '视频或文件',\n 'menu.item.code': '代码块',\n 'menu.item.table': '表格',\n 'menu.item.math': '公式',\n 'menu.item.bold': '加粗',\n 'menu.item.italic': '斜体',\n 'menu.item.strikethrough': '删除线',\n 'menu.item.underline': '下划线',\n 'menu.item.highlight': '高亮',\n 'menu.item.lineCode': '行内代码',\n 'menu.item.link': '链接',\n\n // menu tooltips\n 'menu.tooltip.text': '普通文本 (Ctrl+Alt+0)',\n 'menu.tooltip.h1': '标题 1 (Ctrl+Alt+1)\\nMarkdown: # 空格',\n 'menu.tooltip.h2': '标题 2 (Ctrl+Alt+2)\\nMarkdown: ## 空格',\n 'menu.tooltip.h3': '标题 3 (Ctrl+Alt+3)\\nMarkdown: ### 空格',\n 'menu.tooltip.h4': '标题 4 (Ctrl+Alt+4)\\nMarkdown: #### 空格',\n 'menu.tooltip.h5': '标题 5 (Ctrl+Alt+5)\\nMarkdown: ##### 空格',\n 'menu.tooltip.h6': '标题 6 (Ctrl+Alt+6)\\nMarkdown: ###### 空格',\n 'menu.tooltip.quote': '引用 (Ctrl+Shift+9)\\nMarkdown: > 空格',\n 'menu.tooltip.divider': '分割线\\nMarkdown: --- 空格',\n 'menu.tooltip.bulletList':\n '无序列表 (Ctrl+Shift+8)\\nMarkdown: - 空格 或 * 空格',\n 'menu.tooltip.orderedList': '有序列表 (Ctrl+Shift+7)\\nMarkdown: 1. 空格',\n 'menu.tooltip.taskList': '任务列表\\nMarkdown: - [ ] 空格',\n 'menu.tooltip.image': '图片\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': '代码块 (Ctrl+Shift+\\\\)\\nMarkdown: ``` 回车',\n 'menu.tooltip.table': '表格\\nMarkdown: | | |',\n 'menu.tooltip.math': '公式\\nMarkdown: $$ 回车',\n\n // custom block menu items\n 'customMenu.indentAndAlign': '缩进和对齐',\n 'customMenu.color': '颜色',\n 'customMenu.cut': '剪切',\n 'customMenu.copy': '复制',\n 'customMenu.delete': '删除',\n 'customMenu.addBelow': '在下方添加',\n 'customMenu.alignLeft': '左对齐',\n 'customMenu.alignCenter': '居中对齐',\n 'customMenu.alignRight': '右对齐',\n 'customMenu.increaseIndent': '增加缩进',\n 'customMenu.decreaseIndent': '减少缩进',\n 'customMenu.textColor': '字体颜色',\n 'customMenu.bgColor': '背景颜色',\n 'customMenu.restoreDefault': '恢复默认',\n 'customMenu.colorDefault': '默认',\n 'customMenu.colorRed': '红色',\n 'customMenu.colorOrange': '橙色',\n 'customMenu.colorYellow': '黄色',\n 'customMenu.colorGreen': '绿色',\n 'customMenu.colorBlue': '蓝色',\n 'customMenu.colorPurple': '紫色',\n 'customMenu.colorGray': '灰色',\n 'customMenu.insertTable': '插入支持富文本的表格',\n 'customMenu.export': '导出',\n 'customMenu.import': '导入',\n\n 'customMenu.fontDefault': '默认',\n 'font.fangSong': '仿宋',\n 'font.stFangsong': '华文仿宋',\n 'font.stSong': '华文宋体',\n 'font.stKaiti': '华文楷体',\n 'font.simSun': '宋体',\n 'font.microsoftYaHei': '微软雅黑',\n 'font.kaiTi': '楷体',\n 'font.simHei': '黑体',\n\n // latex\n 'latex.escToExit': '按 ESC 完成输入',\n 'latex.helpDoc': '查看帮助文档',\n 'latex.emptyPlaceholder': '添加 LaTeX 公式',\n 'latex.inputPlaceholder': '请输入公式',\n\n // shortcuts\n 'shortcuts.title': '键盘快捷键',\n 'shortcuts.formatting': '文本格式',\n 'shortcuts.bold': '加粗',\n 'shortcuts.italic': '斜体',\n 'shortcuts.underline': '下划线',\n 'shortcuts.strikethrough': '删除线',\n 'shortcuts.inlineCode': '行内代码',\n 'shortcuts.highlight': '高亮',\n 'shortcuts.paragraph': '段落',\n 'shortcuts.heading': '标题',\n 'shortcuts.block': '块级元素',\n 'shortcuts.codeBlock': '代码块',\n 'shortcuts.blockquote': '引用',\n 'shortcuts.orderedList': '有序列表',\n 'shortcuts.bulletList': '无序列表',\n 'shortcuts.indent': '增加缩进',\n 'shortcuts.outdent': '减少缩进',\n 'shortcuts.hardBreak': '换行',\n 'shortcuts.history': '历史记录',\n 'shortcuts.undo': '撤销',\n 'shortcuts.redo': '重做',\n\n // inline-diff\n 'inlineDiff.accept': '接受',\n 'inlineDiff.reject': '拒绝',\n}\n\nexport const enUS: typeof zhCN = {\n 'handle.add': 'Add content',\n 'handle.menu': 'Open menu',\n 'handle.drag': 'Drag to move',\n 'placeholder.text': \"Type '/' to use slash menu\",\n\n 'toolbar.heading': 'Heading',\n 'toolbar.formatting': 'Formatting',\n 'toolbar.function': 'Function',\n 'toolbar.formatPainter': 'Format Painter',\n\n 'menuBar.file': 'File',\n 'menuBar.edit': 'Edit',\n 'menuBar.view': 'View',\n 'menuBar.insert': 'Insert',\n 'menuBar.format': 'Format',\n\n 'view.outline': 'Outline Panel',\n 'view.outlineLeft': 'Show on Left',\n 'view.outlineRight': 'Show on Right',\n 'view.docBackground': 'Document Background',\n 'view.title': 'Show Title',\n 'view.cover': 'Show Cover',\n 'view.editorWidth': 'Content Width',\n 'view.widthDefault': 'Default',\n 'view.widthWide': 'Wide',\n 'view.widthFull': 'Full Width',\n\n 'codeMirror.searchPlaceholder': 'Search language',\n 'codeMirror.noResultText': 'No result',\n 'codeMirror.previewToggleOptionEdit': 'Edit',\n 'codeMirror.previewToggleOptionHide': 'Hide',\n 'codeMirror.previewLabel': 'Preview',\n 'codeMirror.wrapText': 'Wrap',\n\n 'linkTooltip.pasteLink': 'Paste link...',\n\n 'imageBlock.inlineUploadButton': 'Upload',\n 'imageBlock.inlineUploadPlaceholder': 'or paste link',\n 'imageBlock.blockUploadButton': 'Upload file',\n 'imageBlock.blockUploadPlaceholder': 'or paste link',\n 'imageBlock.blockCaptionPlaceholder': 'Write Image Caption',\n 'imageBlock.blockConfirmButton': 'Confirm',\n\n 'attachmentBlock.uploadButton': 'Upload file',\n 'attachmentBlock.uploadPlaceholderText': 'or click to upload',\n 'attachmentBlock.download': 'Download',\n\n 'menu.group.text': 'Text',\n 'menu.group.block': 'Block',\n 'menu.group.list': 'List',\n 'menu.group.advanced': 'Advanced',\n\n 'menu.item.text': 'Text',\n 'menu.item.h1': 'Heading 1',\n 'menu.item.h2': 'Heading 2',\n 'menu.item.h3': 'Heading 3',\n 'menu.item.h4': 'Heading 4',\n 'menu.item.h5': 'Heading 5',\n 'menu.item.h6': 'Heading 6',\n 'menu.item.quote': 'Quote',\n 'menu.item.divider': 'Divider',\n 'menu.item.bulletList': 'Bullet List',\n 'menu.item.orderedList': 'Ordered List',\n 'menu.item.taskList': 'Task List',\n 'menu.item.image': 'Image',\n 'menu.item.attachment': 'Video or File',\n 'menu.item.code': 'Code',\n 'menu.item.table': 'Table',\n 'menu.item.math': 'Math',\n 'menu.item.bold': 'Bold',\n 'menu.item.italic': 'Italic',\n 'menu.item.strikethrough': 'Strikethrough',\n 'menu.item.underline': 'Underline',\n 'menu.item.highlight': 'Highlight',\n 'menu.item.lineCode': 'Inline Code',\n 'menu.item.link': 'Link',\n\n 'menu.tooltip.text': 'Text (Ctrl+Alt+0)',\n 'menu.tooltip.h1': 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space',\n 'menu.tooltip.h2': 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space',\n 'menu.tooltip.h3': 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space',\n 'menu.tooltip.h4': 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space',\n 'menu.tooltip.h5': 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space',\n 'menu.tooltip.h6': 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space',\n 'menu.tooltip.quote': 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space',\n 'menu.tooltip.divider': 'Divider\\nMarkdown: --- Space',\n 'menu.tooltip.bulletList':\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space',\n 'menu.tooltip.orderedList': 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space',\n 'menu.tooltip.taskList': 'Task List\\nMarkdown: - [ ] Space',\n 'menu.tooltip.image': 'Image\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter',\n 'menu.tooltip.table': 'Table\\nMarkdown: | | |',\n 'menu.tooltip.math': 'Math\\nMarkdown: $$ Enter',\n\n 'customMenu.indentAndAlign': 'Indent & Align',\n 'customMenu.color': 'Color',\n 'customMenu.cut': 'Cut',\n 'customMenu.copy': 'Copy',\n 'customMenu.delete': 'Delete',\n 'customMenu.addBelow': 'Add below',\n 'customMenu.alignLeft': 'Align Left',\n 'customMenu.alignCenter': 'Align Center',\n 'customMenu.alignRight': 'Align Right',\n 'customMenu.increaseIndent': 'Increase Indent',\n 'customMenu.decreaseIndent': 'Decrease Indent',\n 'customMenu.textColor': 'Text Color',\n 'customMenu.bgColor': 'Background Color',\n 'customMenu.restoreDefault': 'Restore Default',\n 'customMenu.colorDefault': 'Default',\n 'customMenu.colorRed': 'Red',\n 'customMenu.colorOrange': 'Orange',\n 'customMenu.colorYellow': 'Yellow',\n 'customMenu.colorGreen': 'Green',\n 'customMenu.colorBlue': 'Blue',\n 'customMenu.colorPurple': 'Purple',\n 'customMenu.colorGray': 'Gray',\n 'customMenu.insertTable': 'Insert Table',\n 'customMenu.export': 'Export',\n 'customMenu.import': 'Import',\n\n 'customMenu.fontDefault': 'Default',\n 'font.fangSong': 'FangSong',\n 'font.stFangsong': 'STFangsong',\n 'font.stSong': 'STSong',\n 'font.stKaiti': 'STKaiti',\n 'font.simSun': 'SimSun',\n 'font.microsoftYaHei': 'Microsoft YaHei',\n 'font.kaiTi': 'KaiTi',\n 'font.simHei': 'SimHei',\n\n 'latex.escToExit': 'Press ESC to finish',\n 'latex.helpDoc': 'Help Doc',\n 'latex.emptyPlaceholder': 'Add LaTeX',\n 'latex.inputPlaceholder': 'Please enter formula',\n\n 'shortcuts.title': 'Keyboard Shortcuts',\n 'shortcuts.formatting': 'Text Formatting',\n 'shortcuts.bold': 'Bold',\n 'shortcuts.italic': 'Italic',\n 'shortcuts.underline': 'Underline',\n 'shortcuts.strikethrough': 'Strikethrough',\n 'shortcuts.inlineCode': 'Inline Code',\n 'shortcuts.highlight': 'Highlight',\n 'shortcuts.paragraph': 'Paragraph',\n 'shortcuts.heading': 'Heading',\n 'shortcuts.block': 'Block Elements',\n 'shortcuts.codeBlock': 'Code Block',\n 'shortcuts.blockquote': 'Blockquote',\n 'shortcuts.orderedList': 'Ordered List',\n 'shortcuts.bulletList': 'Bullet List',\n 'shortcuts.indent': 'Indent',\n 'shortcuts.outdent': 'Outdent',\n 'shortcuts.hardBreak': 'Hard Break',\n 'shortcuts.history': 'History',\n 'shortcuts.undo': 'Undo',\n 'shortcuts.redo': 'Redo',\n\n 'inlineDiff.accept': 'Accept',\n 'inlineDiff.reject': 'Reject',\n}\n\nexport type CrepeTranslations = typeof zhCN\n\nexport const translationsCtx = createSlice<\n Record<string, Partial<CrepeTranslations>>\n>(\n {\n 'zh-CN': zhCN,\n 'en-US': enUS,\n },\n 'translationsCtx'\n)\n\nexport const localeCtx = createSlice('zh-CN', 'localeCtx')\n\nexport function i18n(ctx: Ctx, key: keyof CrepeTranslations): string {\n const translations = ctx.get(translationsCtx)\n const locale = ctx.get(localeCtx)\n return (\n translations[locale]?.[key] ??\n translations['zh-CN']?.[key] ??\n enUS[key] ??\n key\n )\n}\n","import { createSlice, type Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n\nexport { localeCtx, translationsCtx } from './locale'\n","import type { AttachmentFeatureConfig } from './attachment/config'\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { DiffBlockFeatureConfig } from './diff-block'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { InlineDiffFeatureConfig } from './inline-diff'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n\n /// Inline diff comparison between two document versions, similar to Word track changes.\n InlineDiff = 'inline-diff',\n\n /// Diff comparison block for showing code differences\n DiffBlock = 'diff-block',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n [CrepeFeature.InlineDiff]?: InlineDiffFeatureConfig\n [CrepeFeature.DiffBlock]?: DiffBlockFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n [CrepeFeature.InlineDiff]: false,\n [CrepeFeature.DiffBlock]: true,\n}\n","type Listener = () => void\nconst listeners = new Set<Listener>()\nlet _popupCount = 0\n\nexport function getIsAnyPopupOpen(): boolean {\n return _popupCount > 0\n}\n\nexport function addPopupChangeListener(fn: Listener): () => void {\n listeners.add(fn)\n return () => listeners.delete(fn)\n}\n\nexport function incrementPopupCount(): void {\n const wasZero = _popupCount === 0\n _popupCount++\n if (wasZero) {\n listeners.forEach((fn) => fn())\n }\n}\n\nexport function decrementPopupCount(): void {\n _popupCount = Math.max(0, _popupCount - 1)\n if (_popupCount === 0) {\n listeners.forEach((fn) => fn())\n }\n}\n\nexport function resetPopupCount(): void {\n _popupCount = 0\n listeners.forEach((fn) => fn())\n}\n","import type { Command } from '@jvs-milkdown/kit/prose/state'\n\nimport {\n $command,\n $markAttr,\n $markSchema,\n $remark,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkTextColorPlugin = $remark(\n 'remarkTextColor',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n textColor: (node: any, _: any, state: any) => {\n return `<span style=\"color:${node.color}\">${state.containerPhrasing(node, state)}</span>`\n },\n bgColor: (node: any, _: any, state: any) => {\n return `<span style=\"background-color:${node.color}\">${state.containerPhrasing(node, state)}</span>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value.startsWith('<span') &&\n parent &&\n index != null\n ) {\n const hasTextColor =\n node.value.includes('color:') &&\n !node.value.match(/background-color:\\s*([^\"';>]+)/)\n const hasBgColor = node.value.includes('background-color:')\n\n if (!hasTextColor && !hasBgColor) return\n\n let color = null\n let markType = null\n\n if (hasBgColor) {\n const match = node.value.match(/background-color:\\s*([^\"';>]+)/)\n color = match ? match[1].trim() : null\n markType = 'bgColor'\n } else if (hasTextColor) {\n const match = node.value.match(/color:\\s*([^\"';>]+)/)\n color = match ? match[1].trim() : null\n markType = 'textColor'\n }\n\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</span>'\n )\n\n if (endIndex !== -1 && color && markType) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n parent.children.splice(index, 0, {\n type: markType,\n color: color,\n children: content,\n })\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const textColorAttr = $markAttr('textColor')\n\nexport const textColorSchema = $markSchema('textColor', (_ctx) => ({\n inclusive: true,\n attrs: {\n color: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"color\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n if (dom.style.backgroundColor) return false // Prevent capturing background span as text color\n return { color: dom.style.color || null }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `color: ${mark.attrs.color}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'textColor',\n runner: (state, node, markType) => {\n state.openMark(markType, { color: node.color })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'textColor',\n runner: (state, mark) => {\n state.withMark(mark, 'textColor', undefined, { color: mark.attrs.color })\n },\n },\n}))\n\nexport const bgColorAttr = $markAttr('bgColor')\n\nexport const bgColorSchema = $markSchema('bgColor', (_ctx) => ({\n inclusive: true,\n attrs: {\n color: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"background-color\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n return { color: dom.style.backgroundColor || null }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `background-color: ${mark.attrs.color}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'bgColor',\n runner: (state, node, markType) => {\n state.openMark(markType, { color: node.color })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'bgColor',\n runner: (state, mark) => {\n state.withMark(mark, 'bgColor', undefined, { color: mark.attrs.color })\n },\n },\n}))\n\nexport const toggleTextColorCommand = $command(\n 'ToggleTextColor',\n (ctx) =>\n (color?: string | null): Command => {\n return (state, dispatch) => {\n const markType = textColorSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.color === color) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (color) tr = tr.addStoredMark(markType.create({ color }))\n }\n } else {\n let hasSameColor = false\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.color === color) {\n hasSameColor = true\n }\n }\n })\n }\n\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameColor && color) {\n tr = tr.addMark($from.pos, $to.pos, markType.create({ color }))\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\nexport const toggleBgColorCommand = $command(\n 'ToggleBgColor',\n (ctx) =>\n (color?: string | null): Command => {\n return (state, dispatch) => {\n const markType = bgColorSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.color === color) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (color) tr = tr.addStoredMark(markType.create({ color }))\n }\n } else {\n let hasSameColor = false\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.color === color) {\n hasSameColor = true\n }\n }\n })\n }\n\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i]\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameColor && color) {\n tr = tr.addMark($from.pos, $to.pos, markType.create({ color }))\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\nexport const colorPlugins = [\n textColorAttr,\n textColorSchema,\n toggleTextColorCommand,\n bgColorAttr,\n bgColorSchema,\n toggleBgColorCommand,\n remarkTextColorPlugin,\n]\n","export const alignCenterIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n ><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"52612\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52613\"></path><path d=\"M288 497.536c0 25.664 20.8 46.464 46.464 46.464h355.072a46.464 46.464 0 0 0 0-92.928H334.464c-25.664 0-46.464 20.8-46.464 46.464zM224 750.464c0 25.6 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H270.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#363B4C\" p-id=\"52614\"></path></svg>\n`\n\nexport const alignCenterIconActive = `\n<svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"52154\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"52155\"></path><path d=\"M288 497.536c0 25.664 20.8 46.464 46.464 46.464h355.072a46.464 46.464 0 0 0 0-92.928H334.464c-25.664 0-46.464 20.8-46.464 46.464zM224 750.464c0 25.6 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H270.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#1E6FFF\" p-id=\"52156\"></path></svg>\n`\n","export const alignLeftIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"52306\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52307\"></path><path d=\"M128 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52308\"></path><path d=\"M128 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H174.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#363B4C\" p-id=\"52309\"></path></svg>\n`\nexport const alignLeftIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"50196\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"50197\"></path><path d=\"M128 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"50198\"></path><path d=\"M128 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H174.464c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#1E6FFF\" p-id=\"50199\"></path>\n </svg>\n`\n","export const alignRightIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n ><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"52459\"></path><path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52460\"></path><path d=\"M447.99999995 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#363B4C\" p-id=\"52461\"></path><path d=\"M319.99999997 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H366.46399997c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#363B4C\" p-id=\"52462\"></path></svg>\n`\nexport const alignRightIconActive = `\n<svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"52001\"></path>\n <path d=\"M128 192m46.464 0l675.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-675.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"52002\"></path><path d=\"M447.99999995 448m46.464 0l355.072 0q46.464 0 46.464 46.464l0 0q0 46.464-46.464 46.464l-355.072 0q-46.464 0-46.464-46.464l0 0q0-46.464 46.464-46.464Z\" fill=\"#1E6FFF\" p-id=\"52003\"></path><path d=\"M319.99999997 753.536c0 25.664 20.8 46.464 46.464 46.464h483.072a46.464 46.464 0 0 0 0-92.928H366.46399997c-25.664 0-46.464 20.8-46.464 46.464z\" fill=\"#1E6FFF\" p-id=\"52004\"></path>\n </svg>\n`\n","export const boldIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"2767\"></path><path d=\"M340.032 468.032H544c62.592 0 113.28-49.28 113.28-110.08 0-60.672-50.688-109.952-113.28-109.952H340.032v220.032z m453.248 197.952c0 109.376-91.392 198.016-204.032 198.016H249.28v-704H544c112.64 0 204.032 88.64 204.032 198.016 0 52.992-21.632 101.12-56.512 136.64 60.8 34.24 101.76 98.176 101.76 171.328zM340.032 555.968v220.032h249.216c62.592 0 113.28-49.28 113.28-110.016 0-60.736-50.688-110.016-113.28-110.016H340.032z\" fill=\"#363B4C\" p-id=\"2768\"></path>\n </svg>\n`\nexport const boldIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"50045\"></path><path d=\"M340.032 468.032H544c62.592 0 113.28-49.28 113.28-110.08 0-60.672-50.688-109.952-113.28-109.952H340.032v220.032z m453.248 197.952c0 109.376-91.392 198.016-204.032 198.016H249.28v-704H544c112.64 0 204.032 88.64 204.032 198.016 0 52.992-21.632 101.12-56.512 136.64 60.8 34.24 101.76 98.176 101.76 171.328zM340.032 555.968v220.032h249.216c62.592 0 113.28-49.28 113.28-110.016 0-60.736-50.688-110.016-113.28-110.016H340.032z\" fill=\"#1E6FFF\" p-id=\"50046\"></path>\n </svg>\n`\n","export const bulletListIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M375.104 150.592h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368M170.112 128h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m0 316.224h1.024a67.776 67.776 0 0 1 0 135.552h-1.024a67.776 67.776 0 0 1 0-135.552m0 316.224h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m204.992-293.632h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368m0 316.224h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368\" fill=\"#363B4C\" p-id=\"3965\"></path>\n </svg>\n`\nexport const bulletListIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M375.104 150.592h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368M170.112 128h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m0 316.224h1.024a67.776 67.776 0 0 1 0 135.552h-1.024a67.776 67.776 0 0 1 0-135.552m0 316.224h1.024a67.776 67.776 0 1 1 0 135.552h-1.024a67.776 67.776 0 1 1 0-135.552m204.992-293.632h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368m0 316.224h501.312a45.184 45.184 0 1 1 0 90.368H375.04a45.184 45.184 0 1 1 0-90.368\" fill=\"#1E6FFF\" p-id=\"53364\"></path></svg>\n`\n","export const chevronDownIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M477.110857 689.298286l-204.068571-235.227429a73.874286 73.874286 0 0 1-12.946286-71.899428c8.630857-24.868571 29.257143-40.96 52.150857-40.813715H711.68c22.601143-0.146286 43.008 15.579429 51.785143 39.936 8.777143 24.356571 4.242286 52.516571-11.483429 71.460572L556.397714 687.981714a50.249143 50.249143 0 0 1-78.774857 0l-0.512 1.316572z\" fill=\"#363B4C\" p-id=\"18098\"></path>\n </svg>\n`\n","export const clearIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_1098_15553)\">\n <path\n d=\"M18.3007 5.70973C17.9107 5.31973 17.2807 5.31973 16.8907 5.70973L12.0007 10.5897L7.1107 5.69973C6.7207 5.30973 6.0907 5.30973 5.7007 5.69973C5.3107 6.08973 5.3107 6.71973 5.7007 7.10973L10.5907 11.9997L5.7007 16.8897C5.3107 17.2797 5.3107 17.9097 5.7007 18.2997C6.0907 18.6897 6.7207 18.6897 7.1107 18.2997L12.0007 13.4097L16.8907 18.2997C17.2807 18.6897 17.9107 18.6897 18.3007 18.2997C18.6907 17.9097 18.6907 17.2797 18.3007 16.8897L13.4107 11.9997L18.3007 7.10973C18.6807 6.72973 18.6807 6.08973 18.3007 5.70973Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1098_15553\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const codeIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M64 830.848V193.152q0-53.504 37.76-91.328Q139.712 64 193.216 64h637.696q53.504 0 91.328 37.76 37.824 37.888 37.824 91.392v637.696q0 53.504-37.76 91.328-37.888 37.824-91.392 37.824H193.152q-53.504 0-91.328-37.76Q64 884.288 64 830.784z m94.72 0q0 34.432 34.432 34.432h637.696q34.432 0 34.432-34.432V193.152q0-34.432-34.432-34.432H193.152q-34.432 0-34.432 34.432v637.696zM278.144 432q-6.592-6.592-10.24-15.296-3.584-8.704-3.584-18.176 0-4.608 0.896-9.216t2.688-8.832q1.792-4.288 4.416-8.192 2.56-3.904 5.824-7.232 3.392-3.2 7.232-5.888 3.84-2.56 8.192-4.352 4.224-1.792 8.896-2.688 4.544-0.96 9.216-0.96 9.408 0 18.112 3.584 8.704 3.648 15.36 10.304L491.968 512q6.72 6.656 10.24 15.36 3.648 8.64 3.648 18.112 0 9.408-3.584 18.112-3.584 8.704-10.24 15.36L345.216 725.76q-6.72 6.72-15.36 10.304-8.768 3.584-18.24 3.584-4.608 0-9.216-0.896-4.48-0.896-8.832-2.688-4.288-1.728-8.192-4.416-3.84-2.56-7.168-5.888-3.328-3.264-5.888-7.104-2.624-3.904-4.416-8.192-1.792-4.288-2.688-8.96-0.96-4.48-0.96-9.216 0-9.408 3.648-18.112 3.584-8.64 10.24-15.36L391.68 545.408 278.144 432z m440.832 299.2H585.472q-4.672 0-9.28-0.896-4.544-0.832-8.832-2.688-4.352-1.792-8.256-4.352-3.84-2.56-7.104-5.952-3.264-3.2-5.952-7.04-2.56-3.968-4.352-8.256-1.728-4.352-2.688-8.896-0.896-4.544-0.896-9.28 0-4.608 0.896-9.216 0.96-4.544 2.688-8.832 1.792-4.352 4.352-8.32 2.688-3.84 5.952-7.04 3.2-3.328 7.168-5.952 3.904-2.56 8.192-4.352 4.288-1.792 8.832-2.688 4.608-0.96 9.28-0.96h133.504q4.736 0 9.28 0.96 4.608 0.896 8.96 2.688 4.224 1.792 8.128 4.352 3.84 2.624 7.104 5.888 3.392 3.328 5.952 7.232 2.624 3.904 4.416 8.192 1.792 4.288 2.624 8.832 0.896 4.608 0.896 9.216 0 4.736-0.896 9.28-0.832 4.608-2.624 8.96-1.792 4.224-4.48 8.128-2.56 3.84-5.888 7.104-3.2 3.392-7.04 5.952-3.968 2.56-8.256 4.352-4.352 1.856-8.896 2.688-4.544 0.896-9.28 0.896z\" fill=\"#363B4C\" p-id=\"16577\"></path></svg>\n`\n","export const confirmIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_1013_1606)\">\n <path\n d=\"M9.00012 16.1998L5.50012 12.6998C5.11012 12.3098 4.49012 12.3098 4.10012 12.6998C3.71012 13.0898 3.71012 13.7098 4.10012 14.0998L8.29012 18.2898C8.68012 18.6798 9.31012 18.6798 9.70012 18.2898L20.3001 7.69982C20.6901 7.30982 20.6901 6.68982 20.3001 6.29982C19.9101 5.90982 19.2901 5.90982 18.9001 6.29982L9.00012 16.1998Z\"\n fill=\"#817567\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1013_1606\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const copyIcon = `\n <svg viewBox=\"0 0 1024 1024\" height=\"24px\"\n width=\"24px\">\n <path d=\"M320 128m0 0l576 0q0 0 0 0l0 576q0 0 0 0l-576 0q0 0 0 0l0-576q0 0 0 0Z\" fill=\"#FFFFFF\" p-id=\"2678\"></path><path d=\"M757.696 704h99.648q17.28 0 17.28-17.28V166.592q0-17.28-17.28-17.28H337.28q-17.28 0-17.28 17.28v98.56a42.688 42.688 0 0 1-85.376 0v-98.56q0-42.496 30.08-72.576Q294.784 64 337.28 64h520.064q42.496 0 72.576 30.08 30.08 30.08 30.08 72.576v520q0 42.56-30.08 72.64t-72.576 30.08h-99.648a42.688 42.688 0 0 1 0-85.376z\" fill=\"#333333\" p-id=\"2679\"></path><path d=\"M789.376 337.28v520.064q0 42.496-30.08 72.576-30.08 30.08-72.64 30.08H166.656q-42.496 0-72.576-30.08Q64 899.84 64 857.344V337.28q0-42.56 30.08-72.64t72.576-30.08h520q42.56 0 72.64 30.08t30.08 72.64zM704 337.28Q704 320 686.72 320H166.592q-17.28 0-17.28 17.28v520.064q0 17.28 17.28 17.28h520q17.344 0 17.344-17.28V337.28z\" fill=\"#333333\" p-id=\"2680\"></path>\n </svg>\n`\n","export const dividerIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M888.384 560H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48H888.32c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 896H452.608c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48z m316.928 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 224H452.608c-23.808 0-39.68-19.2-39.68-48S428.8 128 452.672 128h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48zM254.528 896H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m0-672H135.68c-23.808 0-39.68-19.2-39.68-48S111.872 128 135.68 128h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m633.856 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48z\" fill=\"#363B4C\" p-id=\"3671\"></path>\n </svg>\n`\nexport const dividerIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M888.384 560H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48H888.32c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 896H452.608c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48z m316.928 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48zM571.52 224H452.608c-23.808 0-39.68-19.2-39.68-48S428.8 128 452.672 128h118.848c23.744 0 39.68 19.2 39.68 48s-15.936 48-39.68 48zM254.528 896H135.68c-23.808 0-39.68-19.2-39.68-48s15.872-48 39.68-48h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m0-672H135.68c-23.808 0-39.68-19.2-39.68-48S111.872 128 135.68 128h118.848c23.744 0 39.616 19.2 39.616 48s-15.872 48-39.68 48z m633.856 0h-118.848c-23.744 0-39.616-19.2-39.616-48s15.872-48 39.68-48h118.784c23.808 0 39.68 19.2 39.68 48s-15.872 48-39.68 48z\" fill=\"#1E6FFF\" p-id=\"53064\"></path></svg>\n`\n","export const editIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_1013_1585)\">\n <path\n d=\"M14.06 9.02L14.98 9.94L5.92 19H5V18.08L14.06 9.02ZM17.66 3C17.41 3 17.15 3.1 16.96 3.29L15.13 5.12L18.88 8.87L20.71 7.04C21.1 6.65 21.1 6.02 20.71 5.63L18.37 3.29C18.17 3.09 17.92 3 17.66 3ZM14.06 6.19L3 17.25V21H6.75L17.81 9.94L14.06 6.19Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1013_1585\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const h1Icon = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\">\n <path d=\"M835.648 349.44a42.688 42.688 0 0 1 17.664 34.56v426.688a42.688 42.688 0 1 1-85.312 0V443.2l-71.872 23.936a42.688 42.688 0 1 1-26.944-80.96l128-42.688a42.752 42.752 0 0 1 38.4 5.888zM128 170.624c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2131\"></path>\n </svg>\n`\nexport const h1IconActive = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\">\n <path d=\"M835.648 349.44a42.688 42.688 0 0 1 17.664 34.56v426.688a42.688 42.688 0 1 1-85.312 0V443.2l-71.872 23.936a42.688 42.688 0 1 1-26.944-80.96l128-42.688a42.752 42.752 0 0 1 38.4 5.888zM128 170.624c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50493\"></path>\n </svg>\n`\n","export const h2Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M768 426.688c-47.104 0-85.312 38.208-85.312 85.312v21.312a42.688 42.688 0 1 1-85.376 0V512A170.688 170.688 0 0 1 768 341.312h7.36a163.328 163.328 0 0 1 115.456 278.912L743.04 768H896a42.688 42.688 0 0 1 0 85.312h-256a42.688 42.688 0 0 1-30.144-72.832l220.672-220.672a78.016 78.016 0 0 0-55.168-133.12H768z m-640-256c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2281\"></path>\n </svg>\n`\nexport const h2IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M768 426.688c-47.104 0-85.312 38.208-85.312 85.312v21.312a42.688 42.688 0 1 1-85.376 0V512A170.688 170.688 0 0 1 768 341.312h7.36a163.328 163.328 0 0 1 115.456 278.912L743.04 768H896a42.688 42.688 0 0 1 0 85.312h-256a42.688 42.688 0 0 1-30.144-72.832l220.672-220.672a78.016 78.016 0 0 0-55.168-133.12H768z m-640-256c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50643\"></path></svg>\n`\n","export const h3Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M597.312 384c0-23.552 19.136-42.688 42.688-42.688h256a42.688 42.688 0 0 1 30.144 72.832l-105.92 105.984A170.752 170.752 0 0 1 768 853.312a170.688 170.688 0 0 1-160.96-113.856 42.688 42.688 0 0 1 80.512-28.352A85.312 85.312 0 1 0 768 597.312h-42.688a42.688 42.688 0 0 1-30.144-72.832l97.856-97.792H640A42.688 42.688 0 0 1 597.312 384zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2575\"></path>\n </svg>\n`\nexport const h3IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M597.312 384c0-23.552 19.136-42.688 42.688-42.688h256a42.688 42.688 0 0 1 30.144 72.832l-105.92 105.984A170.752 170.752 0 0 1 768 853.312a170.688 170.688 0 0 1-160.96-113.856 42.688 42.688 0 0 1 80.512-28.352A85.312 85.312 0 1 0 768 597.312h-42.688a42.688 42.688 0 0 1-30.144-72.832l97.856-97.792H640A42.688 42.688 0 0 1 597.312 384zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50793\"></path></svg>\n`\n","export const h4Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M780.736 343.296c22.464 7.04 35.008 30.912 28.032 53.44l-89.408 285.952H896A42.688 42.688 0 0 1 896 768h-234.688a42.688 42.688 0 0 1-40.704-55.36L727.296 371.2a42.688 42.688 0 0 1 53.44-27.968z\" fill=\"#363B4C\" p-id=\"2725\"></path><path d=\"M853.312 554.688c23.616 0 42.688 19.072 42.688 42.624v213.376a42.688 42.688 0 1 1-85.312 0V597.312c0-23.552 19.072-42.624 42.624-42.624zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2726\"></path>\n </svg>\n`\nexport const h4IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M780.736 343.296c22.464 7.04 35.008 30.912 28.032 53.44l-89.408 285.952H896A42.688 42.688 0 0 1 896 768h-234.688a42.688 42.688 0 0 1-40.704-55.36L727.296 371.2a42.688 42.688 0 0 1 53.44-27.968z\" fill=\"#1E6FFF\" p-id=\"50943\"></path><path d=\"M853.312 554.688c23.616 0 42.688 19.072 42.688 42.624v213.376a42.688 42.688 0 1 1-85.312 0V597.312c0-23.552 19.072-42.624 42.624-42.624zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"50944\"></path></svg>\n`\n","export const h5Icon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M683.968 373.696a42.688 42.688 0 0 1 41.344-32.384H896a42.688 42.688 0 1 1 0 85.376h-137.28l-22.016 88.192c128.64-24 235.264 99.712 192.64 223.36-42.624 123.712-202.816 155.456-289.344 57.344a42.688 42.688 0 0 1 64-56.448 85.312 85.312 0 1 0 0-112.896 42.688 42.688 0 0 1-73.408-38.528l53.376-214.016zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"2876\"></path>\n </svg>\n`\nexport const h5IconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M683.968 373.696a42.688 42.688 0 0 1 41.344-32.384H896a42.688 42.688 0 1 1 0 85.376h-137.28l-22.016 88.192c128.64-24 235.264 99.712 192.64 223.36-42.624 123.712-202.816 155.456-289.344 57.344a42.688 42.688 0 0 1 64-56.448 85.312 85.312 0 1 0 0-112.896 42.688 42.688 0 0 1-73.408-38.528l53.376-214.016zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"51094\"></path></svg>\n`\n","export const h6Icon = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\">\n <path d=\"M831.296 304c20.608 11.328 28.16 37.312 16.704 57.92l-83.52 151.488c31.104-0.64 61.824 7.232 88.768 22.72a169.6 169.6 0 0 1 62.528 232.32 171.072 171.072 0 0 1-232.96 62.144 169.6 169.6 0 0 1-62.848-231.872l153.344-278.016a42.688 42.688 0 0 1 57.984-16.768z m-20.48 306.112a85.76 85.76 0 0 0-116.736 31.04 84.224 84.224 0 0 0 31.168 115.456 85.76 85.76 0 0 0 116.736-31.04 84.224 84.224 0 0 0-31.168-115.456zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"3026\"></path>\n </svg>\n`\nexport const h6IconActive = `\n <svg width=\"24\"\n height=\"24\" viewBox=\"0 0 1024 1024\"><path d=\"M831.296 304c20.608 11.328 28.16 37.312 16.704 57.92l-83.52 151.488c31.104-0.64 61.824 7.232 88.768 22.72a169.6 169.6 0 0 1 62.528 232.32 171.072 171.072 0 0 1-232.96 62.144 169.6 169.6 0 0 1-62.848-231.872l153.344-278.016a42.688 42.688 0 0 1 57.984-16.768z m-20.48 306.112a85.76 85.76 0 0 0-116.736 31.04 84.224 84.224 0 0 0 31.168 115.456 85.76 85.76 0 0 0 116.736-31.04 84.224 84.224 0 0 0-31.168-115.456zM128 170.688c23.552 0 42.688 19.072 42.688 42.624v256h256v-256a42.688 42.688 0 1 1 85.312 0v597.376a42.688 42.688 0 1 1-85.312 0v-256h-256v256a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#1E6FFF\" p-id=\"51244\"></path></svg>\n`\n","export const imageIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M320 256a64 64 0 1 1 0 128 64 64 0 0 1 0-128z m512-96H192a64 64 0 0 0-64 64v410.688l107.008-110.592a141.696 141.696 0 0 1 196.928-5.44l4.032 3.84 3.84 4.032 32.896 35.712 110.464-129.28a141.632 141.632 0 0 1 196.16-17.408c9.28 7.488 17.536 16.192 24.512 25.792l4.928 7.36L896 587.072V224a64 64 0 0 0-64-64z m-171.52 330.368l-2.88 3.136-146.24 171.264a49.28 49.28 0 0 1-69.76 4.672l-3.456-3.328-70.4-76.288-2.368-2.432a43.2 43.2 0 0 0-56.832-1.28l-3.136 2.944L128 772.48v27.584a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-32.512l-169.728-269.184a43.136 43.136 0 0 0-65.728-7.936zM832 64a160 160 0 0 1 159.872 153.088l0.128 6.912v576a160 160 0 0 1-153.088 159.872L832 960H192a160 160 0 0 1-159.872-153.088L32 800v-576a160 160 0 0 1 153.088-159.872L192 64h640z\" fill=\"#363B4C\" p-id=\"17641\"></path>\n </svg>\n`\n","export const italicIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"3068\"></path><path d=\"M595.968 864H325.504a43.968 43.968 0 1 1 0-88h87.04l94.976-528H414.976a43.968 43.968 0 1 1 0-88h270.528a43.968 43.968 0 1 1 0 88H598.4l-94.976 528h92.48a43.968 43.968 0 1 1 0 88\" fill=\"#363B4C\" p-id=\"3069\"></path></svg>\n`\nexport const italicIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"51394\"></path><path d=\"M595.968 864H325.504a43.968 43.968 0 1 1 0-88h87.04l94.976-528H414.976a43.968 43.968 0 1 1 0-88h270.528a43.968 43.968 0 1 1 0 88H598.4l-94.976 528h92.48a43.968 43.968 0 1 1 0 88\" fill=\"#1E6FFF\" p-id=\"51395\"></path></svg>\n`\n","export const linkIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M902.656 188.672l-3.392-3.328a197.184 197.184 0 0 0-278.016 0l-177.28 177.152a197.312 197.312 0 0 0 0 278.144l3.264 3.264c6.4 6.336 13.248 12.096 20.16 17.472L532.224 596.48a103.232 103.232 0 0 1-21.184-16.32l-3.264-3.2a106.624 106.624 0 0 1 0-150.656l177.28-177.28a106.496 106.496 0 0 1 150.528 0l3.264 3.264c41.6 41.6 41.6 108.992 0 150.592L758.784 483.2c13.888 34.496 20.48 71.04 19.84 107.52l124.032-123.904a197.12 197.12 0 0 0 0-278.08z m-261.888 255.36a194.752 194.752 0 0 0-20.224-17.472L555.712 491.392c7.616 4.544 14.848 9.856 21.248 16.384l3.392 3.264c41.536 41.6 41.536 109.056 0 150.656l-177.28 177.28a106.752 106.752 0 0 1-150.656 0l-3.264-3.392a106.56 106.56 0 0 1 0-150.592L329.28 604.8a274.816 274.816 0 0 1-19.84-107.52L185.408 621.12a197.312 197.312 0 0 0 0 278.208l3.2 3.328a197.376 197.376 0 0 0 278.144 0l177.28-177.28a197.376 197.376 0 0 0 0-278.144l-3.264-3.264v0.064z\" fill=\"#363B4C\" p-id=\"9910\"></path>\n </svg>\n`\n","export const orderedListIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M133.184 376.448a56.064 56.064 0 0 1 42.176 17.92 61.184 61.184 0 0 1 16.32 42.752 61.056 61.056 0 0 1-11.84 36.864l-39.872 53.888h27.328c11.776 0 21.696 7.872 23.872 18.56l0.512 4.608c0 12.8-10.88 23.168-24.32 23.168H100.352a23.04 23.04 0 0 1-23.552-22.4v-9.344c0-3.84 1.28-7.616 3.584-10.752l61.76-83.264a41.216 41.216 0 0 0 1.536-2.432l1.728-3.264c0.448-1.92 0.64-3.84 0.64-5.824a16.832 16.832 0 0 0-3.264-10.752c-1.92-2.24-4.224-3.264-7.936-3.392a9.984 9.984 0 0 0-7.808 3.2c-1.92 1.984-3.328 4.672-4.736 10.112l-1.792 3.84A18.432 18.432 0 0 1 105.088 448l-12.672-0.128a16.32 16.32 0 0 1-14.976-18.176l1.344-7.552a63.36 63.36 0 0 1 14.4-27.904 53.44 53.44 0 0 1 40-17.792z m10.24 308.864c20.608 0.192 37.632 6.272 50.432 18.304a56.704 56.704 0 0 1 13.44 65.792 44.288 44.288 0 0 1-8.32 11.264l-0.64 0.448 0.896 0.704a62.016 62.016 0 0 1 5.12 5.632l4.032 6.208c4.224 8 6.4 16.832 6.4 25.856a58.304 58.304 0 0 1-20.8 46.208c-13.184 11.456-30.08 17.28-50.24 17.408-15.872 0-30.144-4.608-42.432-13.632a61.44 61.44 0 0 1-21.952-30.912l-0.512-2.624-0.128-1.856a17.28 17.28 0 0 1 17.664-16.768h19.84l10.048 6.016 2.112 4.16 2.752 3.648 2.88 2.752c2.56 1.92 6.272 3.072 11.52 3.072A19.52 19.52 0 0 0 159.232 832c3.2-2.56 4.864-6.4 4.992-11.712-0.128-5.952-1.92-9.92-5.12-12.608a21.568 21.568 0 0 0-14.336-4.48l-4.608-0.448a21.888 21.888 0 0 1-18.432-21.248v-1.664a20.48 20.48 0 0 1 20.928-19.904c6.976 0 11.776-1.472 14.976-4.352a11.584 11.584 0 0 0 4.288-9.472 13.312 13.312 0 0 0-4.48-10.24 20.096 20.096 0 0 0-13.184-4.352 17.28 17.28 0 0 0-10.176 3.2c-2.112 1.408-3.712 3.392-5.76 7.68l-2.048 3.328a19.52 19.52 0 0 1-14.976 6.72l-19.392-0.256a15.424 15.424 0 0 1-12.736-18.816l2.048-6.784a60.544 60.544 0 0 1 17.984-25.152c12.224-10.432 27.008-15.872 44.032-16.128h0.064zM148.928 89.6c10.816 0 19.52 8.384 19.52 18.688v153.408c0 14.208-12.032 25.664-26.88 25.664a26.304 26.304 0 0 1-26.944-25.6V145.664l-8.192 4.8a20.16 20.16 0 0 1-6.592 2.368l-3.52 0.32a19.072 19.072 0 0 1-19.584-18.624v-11.328c0-7.04 4.224-13.568 10.88-16.704l31.36-14.976a20.288 20.288 0 0 1 8.768-2.048h21.184z m746.816 54.848c28.352 0 51.392 19.712 51.392 44.096 0 24.32-23.04 44.16-51.392 44.16H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.384 23.04-44.16 51.392-44.16h565.504z m0 303.36c28.352 0 51.392 19.776 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z m0 303.424c28.352 0 51.392 19.712 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z\" fill=\"#363B4C\" p-id=\"4265\"></path>\n </svg>\n`\nexport const orderedListIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M133.184 376.448a56.064 56.064 0 0 1 42.176 17.92 61.184 61.184 0 0 1 16.32 42.752 61.056 61.056 0 0 1-11.84 36.864l-39.872 53.888h27.328c11.776 0 21.696 7.872 23.872 18.56l0.512 4.608c0 12.8-10.88 23.168-24.32 23.168H100.352a23.04 23.04 0 0 1-23.552-22.4v-9.344c0-3.84 1.28-7.616 3.584-10.752l61.76-83.264a41.216 41.216 0 0 0 1.536-2.432l1.728-3.264c0.448-1.92 0.64-3.84 0.64-5.824a16.832 16.832 0 0 0-3.264-10.752c-1.92-2.24-4.224-3.264-7.936-3.392a9.984 9.984 0 0 0-7.808 3.2c-1.92 1.984-3.328 4.672-4.736 10.112l-1.792 3.84A18.432 18.432 0 0 1 105.088 448l-12.672-0.128a16.32 16.32 0 0 1-14.976-18.176l1.344-7.552a63.36 63.36 0 0 1 14.4-27.904 53.44 53.44 0 0 1 40-17.792z m10.24 308.864c20.608 0.192 37.632 6.272 50.432 18.304a56.704 56.704 0 0 1 13.44 65.792 44.288 44.288 0 0 1-8.32 11.264l-0.64 0.448 0.896 0.704a62.016 62.016 0 0 1 5.12 5.632l4.032 6.208c4.224 8 6.4 16.832 6.4 25.856a58.304 58.304 0 0 1-20.8 46.208c-13.184 11.456-30.08 17.28-50.24 17.408-15.872 0-30.144-4.608-42.432-13.632a61.44 61.44 0 0 1-21.952-30.912l-0.512-2.624-0.128-1.856a17.28 17.28 0 0 1 17.664-16.768h19.84l10.048 6.016 2.112 4.16 2.752 3.648 2.88 2.752c2.56 1.92 6.272 3.072 11.52 3.072A19.52 19.52 0 0 0 159.232 832c3.2-2.56 4.864-6.4 4.992-11.712-0.128-5.952-1.92-9.92-5.12-12.608a21.568 21.568 0 0 0-14.336-4.48l-4.608-0.448a21.888 21.888 0 0 1-18.432-21.248v-1.664a20.48 20.48 0 0 1 20.928-19.904c6.976 0 11.776-1.472 14.976-4.352a11.584 11.584 0 0 0 4.288-9.472 13.312 13.312 0 0 0-4.48-10.24 20.096 20.096 0 0 0-13.184-4.352 17.28 17.28 0 0 0-10.176 3.2c-2.112 1.408-3.712 3.392-5.76 7.68l-2.048 3.328a19.52 19.52 0 0 1-14.976 6.72l-19.392-0.256a15.424 15.424 0 0 1-12.736-18.816l2.048-6.784a60.544 60.544 0 0 1 17.984-25.152c12.224-10.432 27.008-15.872 44.032-16.128h0.064zM148.928 89.6c10.816 0 19.52 8.384 19.52 18.688v153.408c0 14.208-12.032 25.664-26.88 25.664a26.304 26.304 0 0 1-26.944-25.6V145.664l-8.192 4.8a20.16 20.16 0 0 1-6.592 2.368l-3.52 0.32a19.072 19.072 0 0 1-19.584-18.624v-11.328c0-7.04 4.224-13.568 10.88-16.704l31.36-14.976a20.288 20.288 0 0 1 8.768-2.048h21.184z m746.816 54.848c28.352 0 51.392 19.712 51.392 44.096 0 24.32-23.04 44.16-51.392 44.16H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.384 23.04-44.16 51.392-44.16h565.504z m0 303.36c28.352 0 51.392 19.776 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z m0 303.424c28.352 0 51.392 19.712 51.392 44.16 0 24.32-23.04 44.096-51.392 44.096H330.24c-28.352 0-51.392-19.84-51.392-44.16 0-24.32 23.04-44.096 51.392-44.096h565.504z\" fill=\"#1E6FFF\" p-id=\"52914\"></path></svg>\n`\n","export const plusIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_971_7676)\">\n <path\n d=\"M18 13H13V18C13 18.55 12.55 19 12 19C11.45 19 11 18.55 11 18V13H6C5.45 13 5 12.55 5 12C5 11.45 5.45 11 6 11H11V6C11 5.45 11.45 5 12 5C12.55 5 13 5.45 13 6V11H18C18.55 11 19 11.45 19 12C19 12.55 18.55 13 18 13Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_971_7676\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const quoteIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M169.856 776.832c-48.064-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.008-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92C258.368 359.104 231.936 456.256 220.8 519.488c25.088-12.992 57.856-17.536 90.048-14.528 84.16 7.808 150.528 77.12 150.528 163.2A163.52 163.52 0 0 1 298.048 832c-50.048 0-97.92-22.976-128.192-55.168z m466.56 0c-48-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.072-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92c-123.84 80.768-150.272 177.92-161.408 241.152 25.024-12.992 57.856-17.536 89.984-14.528 84.224 7.808 150.592 77.12 150.592 163.2A163.52 163.52 0 0 1 764.672 832c-50.112 0-97.92-22.976-128.256-55.168z\" fill=\"#363B4C\" p-id=\"6160\"></path>\n </svg>\n`\nexport const quoteIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M169.856 776.832c-48.064-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.008-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92C258.368 359.104 231.936 456.256 220.8 519.488c25.088-12.992 57.856-17.536 90.048-14.528 84.16 7.808 150.528 77.12 150.528 163.2A163.52 163.52 0 0 1 298.048 832c-50.048 0-97.92-22.976-128.192-55.168z m466.56 0c-48-51.2-73.856-108.608-73.856-201.728 0-153.6 100.864-292.288 251.072-368.768a37.696 37.696 0 0 1 48.64 14.08 42.24 42.24 0 0 1-13.44 57.92c-123.84 80.768-150.272 177.92-161.408 241.152 25.024-12.992 57.856-17.536 89.984-14.528 84.224 7.808 150.592 77.12 150.592 163.2A163.52 163.52 0 0 1 764.672 832c-50.112 0-97.92-22.976-128.256-55.168z\" fill=\"#1E6FFF\" p-id=\"52764\"></path>\n</svg>\n`\n","export const removeIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M7.30775 20.4997C6.81058 20.4997 6.385 20.3227 6.031 19.9687C5.677 19.6147 5.5 19.1892 5.5 18.692V5.99973H5.25C5.0375 5.99973 4.85942 5.92782 4.71575 5.78398C4.57192 5.64015 4.5 5.46198 4.5 5.24948C4.5 5.03682 4.57192 4.85873 4.71575 4.71523C4.85942 4.57157 5.0375 4.49973 5.25 4.49973H9C9 4.2549 9.08625 4.04624 9.25875 3.87374C9.43108 3.7014 9.63967 3.61523 9.8845 3.61523H14.1155C14.3603 3.61523 14.5689 3.7014 14.7413 3.87374C14.9138 4.04624 15 4.2549 15 4.49973H18.75C18.9625 4.49973 19.1406 4.57165 19.2843 4.71548C19.4281 4.85932 19.5 5.03748 19.5 5.24998C19.5 5.46265 19.4281 5.64073 19.2843 5.78423C19.1406 5.9279 18.9625 5.99973 18.75 5.99973H18.5V18.692C18.5 19.1892 18.323 19.6147 17.969 19.9687C17.615 20.3227 17.1894 20.4997 16.6923 20.4997H7.30775ZM17 5.99973H7V18.692C7 18.7818 7.02883 18.8556 7.0865 18.9132C7.14417 18.9709 7.21792 18.9997 7.30775 18.9997H16.6923C16.7821 18.9997 16.8558 18.9709 16.9135 18.9132C16.9712 18.8556 17 18.7818 17 18.692V5.99973ZM10.1543 16.9997C10.3668 16.9997 10.5448 16.9279 10.6885 16.7842C10.832 16.6404 10.9037 16.4622 10.9037 16.2497V8.74973C10.9037 8.53723 10.8318 8.35907 10.688 8.21523C10.5443 8.07157 10.3662 7.99973 10.1535 7.99973C9.941 7.99973 9.76292 8.07157 9.61925 8.21523C9.47575 8.35907 9.404 8.53723 9.404 8.74973V16.2497C9.404 16.4622 9.47583 16.6404 9.6195 16.7842C9.76333 16.9279 9.94158 16.9997 10.1543 16.9997ZM13.8465 16.9997C14.059 16.9997 14.2371 16.9279 14.3807 16.7842C14.5243 16.6404 14.596 16.4622 14.596 16.2497V8.74973C14.596 8.53723 14.5242 8.35907 14.3805 8.21523C14.2367 8.07157 14.0584 7.99973 13.8458 7.99973C13.6333 7.99973 13.4552 8.07157 13.3115 8.21523C13.168 8.35907 13.0962 8.53723 13.0962 8.74973V16.2497C13.0962 16.4622 13.1682 16.6404 13.312 16.7842C13.4557 16.9279 13.6338 16.9997 13.8465 16.9997Z\"\n fill=\"#363B4C\"\n />\n </svg>\n`\n","export const strikethroughIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"3219\"></path><path d=\"M431.296 228.8a216.512 216.512 0 0 1 91.968-15.168c30.848 1.344 60.992 9.6 88.256 24 25.664 13.952 44.864 32.448 56.704 52.672a42.688 42.688 0 0 0 73.6-43.264 230.592 230.592 0 0 0-89.536-84.352 292.928 292.928 0 0 0-124.8-34.24 301.824 301.824 0 0 0-128.448 21.312 246.272 246.272 0 0 0-100.608 73.6 190.08 190.08 0 0 0-42.304 110.976c-0.448 11.712 0.256 23.424 2.048 35.008a42.688 42.688 0 1 0 84.288-13.312 94.272 94.272 0 0 1-1.024-18.368c0.768-20.8 8.576-41.984 23.872-61.248 15.36-19.456 37.888-36.224 65.92-47.616zM170.688 469.312a42.688 42.688 0 0 0 0 85.376h341.44a212.48 212.48 0 0 1 90.24 19.648c11.648 5.44 22.592 12.16 32.704 20.032 11.072 8.576 20.736 18.752 28.8 30.272 12.8 17.92 19.392 39.68 18.752 61.696a105.152 105.152 0 0 1-23.872 61.312c-15.36 19.392-37.888 36.16-65.92 47.552a216.192 216.192 0 0 1-92.032 15.168 207.424 207.424 0 0 1-88.32-24c-25.6-13.952-44.8-32.448-56.704-52.672a42.688 42.688 0 1 0-73.536 43.264c20.672 35.136 51.968 63.936 89.6 84.352a292.928 292.928 0 0 0 124.672 34.24 301.888 301.888 0 0 0 128.512-21.312 246.208 246.208 0 0 0 100.608-73.6c25.6-32.32 40.704-70.592 42.24-110.912a186.112 186.112 0 0 0-33.728-113.408 213.312 213.312 0 0 0-17.024-21.632h136.192a42.688 42.688 0 1 0 0-85.376H170.688z\" fill=\"#363B4C\" p-id=\"3220\"></path>\n </svg>\n`\nexport const strikethroughIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"51850\"></path><path d=\"M431.296 228.8a216.512 216.512 0 0 1 91.968-15.168c30.848 1.344 60.992 9.6 88.256 24 25.664 13.952 44.864 32.448 56.704 52.672a42.688 42.688 0 0 0 73.6-43.264 230.592 230.592 0 0 0-89.536-84.352 292.928 292.928 0 0 0-124.8-34.24 301.824 301.824 0 0 0-128.448 21.312 246.272 246.272 0 0 0-100.608 73.6 190.08 190.08 0 0 0-42.304 110.976c-0.448 11.712 0.256 23.424 2.048 35.008a42.688 42.688 0 1 0 84.288-13.312 94.272 94.272 0 0 1-1.024-18.368c0.768-20.8 8.576-41.984 23.872-61.248 15.36-19.456 37.888-36.224 65.92-47.616zM170.688 469.312a42.688 42.688 0 0 0 0 85.376h341.44a212.48 212.48 0 0 1 90.24 19.648c11.648 5.44 22.592 12.16 32.704 20.032 11.072 8.576 20.736 18.752 28.8 30.272 12.8 17.92 19.392 39.68 18.752 61.696a105.152 105.152 0 0 1-23.872 61.312c-15.36 19.392-37.888 36.16-65.92 47.552a216.192 216.192 0 0 1-92.032 15.168 207.424 207.424 0 0 1-88.32-24c-25.6-13.952-44.8-32.448-56.704-52.672a42.688 42.688 0 1 0-73.536 43.264c20.672 35.136 51.968 63.936 89.6 84.352a292.928 292.928 0 0 0 124.672 34.24 301.888 301.888 0 0 0 128.512-21.312 246.208 246.208 0 0 0 100.608-73.6c25.6-32.32 40.704-70.592 42.24-110.912a186.112 186.112 0 0 0-33.728-113.408 213.312 213.312 0 0 0-17.024-21.632h136.192a42.688 42.688 0 1 0 0-85.376H170.688z\" fill=\"#1E6FFF\" p-id=\"51851\"></path></svg>\n`\n","export const tableIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M146.816 960A83.456 83.456 0 0 1 64 877.184V146.816C64 108.224 95.872 64 145.152 64h732.032C919.936 64 960 99.584 960 146.816v730.368c0 44.8-34.048 82.816-82.816 82.816H146.816z m530.56-81.92h199.68V684.16h-199.68v194.048z m-251.136 0h168.512V684.16H426.24v194.048z m-281.088 0H343.68V684.16h-198.4v194.048z m532.224-282.048h199.68V396.864h-199.68v199.168z m-251.136 0h168.512V396.864H426.24v199.168z m-281.088 0H343.68V396.864h-198.4v199.168z m0-451.136v164.992l732.032 2.432V145.28L145.152 144.96z\" fill=\"#363B4C\" p-id=\"16729\"></path>\n </svg>\n`\n","export const textIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M364.8 810.688c0-23.616 19.072-42.688 42.624-42.688h209.152a42.624 42.624 0 1 1 0 85.312H407.424a42.688 42.688 0 0 1-42.624-42.624z\" fill=\"#363B4C\" p-id=\"3176\"></path><path d=\"M512 170.688c23.552 0 42.688 19.072 42.688 42.624v597.376a42.688 42.688 0 1 1-85.376 0V213.312c0-23.552 19.136-42.624 42.688-42.624z\" fill=\"#363B4C\" p-id=\"3177\"></path><path d=\"M213.312 213.312c0-23.552 19.136-42.624 42.688-42.624h512c23.552 0 42.688 19.072 42.688 42.624V256a42.688 42.688 0 0 1-85.376 0H298.688a42.688 42.688 0 1 1-85.376 0v-42.688z\" fill=\"#363B4C\" p-id=\"3178\"></path>\n </svg>\n`\nexport const textIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\"><path d=\"M113.2544 108.8m46.7968 0l708.352 0q46.7968 0 46.7968 46.7968l0-0.0512q0 46.7968-46.7968 46.7968l-708.352 0q-46.7968 0-46.7968-46.7968l0 0.0512q0-46.7968 46.7968-46.7968Z\" fill=\"#1E6FFF\" p-id=\"51545\"></path><path d=\"M291.4816 821.6576m46.7968 0l351.9488 0q46.7968 0 46.7968 46.7968l0-0.0512q0 46.7968-46.7968 46.7968l-351.9488 0q-46.7968 0-46.7968-46.7968l0 0.0512q0-46.7968 46.7968-46.7968Z\" fill=\"#1E6FFF\" p-id=\"51546\"></path><path d=\"M558.7968 108.8m0 46.7968l0 708.352q0 46.7968-46.7968 46.7968l0.0512 0q-46.7968 0-46.7968-46.7968l0-708.352q0-46.7968 46.7968-46.7968l-0.0512 0q46.7968 0 46.7968 46.7968Z\" fill=\"#1E6FFF\" p-id=\"51547\"></path><path d=\"M202.3424 108.8m0 46.7968l0 84.6336q0 46.7968-46.7968 46.7968l0.0512 0q-46.7968 0-46.7968-46.7968l0-84.6336q0-46.7968 46.7968-46.7968l-0.0512 0q46.7968 0 46.7968 46.7968Z\" fill=\"#1E6FFF\" p-id=\"51548\"></path><path d=\"M915.2 108.8m0 46.7968l0 84.6336q0 46.7968-46.7968 46.7968l0.0512 0q-46.7968 0-46.7968-46.7968l0-84.6336q0-46.7968 46.7968-46.7968l-0.0512 0q46.7968 0 46.7968 46.7968Z\" fill=\"#1E6FFF\" p-id=\"51549\"></path></svg>\n`\n","export const todoListIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n >\n <path d=\"M102.4 193.408c0-50.304 40.704-91.008 91.008-91.008h637.12c50.304 0 91.072 40.704 91.072 91.008v637.12c0 50.304-40.768 91.072-91.072 91.072H193.408A91.008 91.008 0 0 1 102.4 830.528V193.408z m728.128 0H193.408v637.12h637.12V193.408z\" fill=\"#363B4C\" p-id=\"10098\"></path><path d=\"M341.12 485.696a42.688 42.688 0 0 0 6.272 60.032l99.52 101.952a42.688 42.688 0 0 0 56.96-2.944l207.488-211.584a42.688 42.688 0 0 0-60.16-60.48L477.312 557.824l-76.16-78.4a42.688 42.688 0 0 0-60.096 6.272z\" fill=\"#363B4C\" p-id=\"10099\"></path></svg>\n`\n","export const functionsIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n >\n <path d=\"M850.176 83.2c27.264-0.064 50.368 20.096 54.08 47.104l0.448 7.424v133.12h-109.12l-0.064-78.592H263.552l294.464 254.912c33.216 28.8 39.04 77.44 14.848 113.024l-6.208 7.872-5.312 5.632-297.6 257.92h531.776v-77.952h109.184v132.48a54.592 54.592 0 0 1-47.168 54.144l-7.36 0.448H200.96a85.76 85.76 0 0 1-63.36-143.616l7.232-7.04L466.112 512l-321.28-278.144a85.76 85.76 0 0 1-28.992-54.272l-0.64-10.624a85.76 85.76 0 0 1 76.416-85.248l9.344-0.512h649.216z\" fill=\"#363B4C\" p-id=\"17793\"></path>\n </svg>\n`\n","export const indentIncreaseIcon = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\">\n <path d=\"M120-120v-80h720v80H120Zm0-160v-80h720v80H120Zm240-160v-80h480v80H360Zm0-160v-80h480v80H360Zm-120-40L120-760l120-120 56 57-63 63 63 63-56 57Zm-120-160v-80h720v80H120Z\"/>\n </svg>\n`\n","export const indentDecreaseIcon = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\">\n <path d=\"M120-120v-80h720v80H120Zm0-160v-80h720v80H120Zm240-160v-80h480v80H360Zm0-160v-80h480v80H360Zm-40-40 56-57-63-63 63-63-56-57-120 120 120 120Zm-200-160v-80h720v80H120Z\"/>\n </svg>\n`\n","export const underlineIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#D8D8D8\" fill-opacity=\"0\" p-id=\"3370\"></path>\n <path d=\"M160 845.184c0-24.96 22.72-45.184 50.56-45.184h603.456c27.776 0 49.984 20.224 49.984 45.184 0 24.96-22.208 45.184-49.984 45.184h-603.52c-27.776 0-50.496-20.288-50.496-45.184zM328.96 200v259.328C328.96 559.168 411.072 640 512 640c100.992 0 183.04-80.896 183.04-180.672v-259.2a45.76 45.76 0 1 1 91.52 0v259.2c0 149.696-123.072 271.04-274.56 271.04S237.76 609.024 237.76 459.328V200a45.632 45.632 0 0 1 91.264 0\" fill=\"#363B4C\" p-id=\"3371\"></path>\n </svg>\n`\nexport const underlineIconActive = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M0 0m0 0l1024 0q0 0 0 0l0 1024q0 0 0 0l-1024 0q0 0 0 0l0-1024q0 0 0 0Z\" fill=\"#1E6FFF\" fill-opacity=\"0\" p-id=\"51699\"></path>\n <path d=\"M160 845.184c0-24.96 22.72-45.184 50.56-45.184h603.456c27.776 0 49.984 20.224 49.984 45.184 0 24.96-22.208 45.184-49.984 45.184h-603.52c-27.776 0-50.496-20.288-50.496-45.184zM328.96 200v259.328C328.96 559.168 411.072 640 512 640c100.992 0 183.04-80.896 183.04-180.672v-259.2a45.76 45.76 0 1 1 91.52 0v259.2c0 149.696-123.072 271.04-274.56 271.04S237.76 609.024 237.76 459.328V200a45.632 45.632 0 0 1 91.264 0\" fill=\"#1E6FFF\" p-id=\"51700\"></path>\n </svg>\n`\n","export const fontColorIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style=\"color: inherit; fill: currentColor;\"\n >\n <path d=\"M12.4 12V3.4h-1.2V12H3.4v1.2h7.8v7.8h1.2v-7.8h7.8V12z\" opacity=\"0\"/>\n <path d=\"M11 2.5L5.5 16h2.25l1.12-3h6.25l1.12 3h2.25L13 2.5h-2zm-1.38 9L12 5.67 14.38 11.5H9.62z\"/>\n <path d=\"M3 18.5v3h18v-3H3z\" opacity=\"1\"/>\n </svg>\n`\n","export const highLineCodeIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M57.728 124.928v323.264c0 27.52 20.672 48.192 48.192 48.192h825.408c27.52 0 48.128-20.672 48.128-48.192V124.928a47.04 47.04 0 0 0-48.128-48.128H105.92c-27.52 6.848-48.192 27.52-48.192 48.128z m96.32 275.136V173.056h736v227.008h-736z m685.056 257.28a47.04 47.04 0 0 0-48.128-48.192H103.168a47.04 47.04 0 0 0-48.192 48.192c0 27.52 20.672 48.128 48.192 48.128h687.808c27.52 6.848 48.128-13.76 48.128-48.128z m-274.752 240.384a47.04 47.04 0 0 0-48.128-48.192H103.488a47.04 47.04 0 0 0-48.128 48.192c0 27.52 20.608 48.128 48.128 48.128h412.736c27.52 6.912 48.128-13.76 48.128-48.128z\" fill=\"#363B4C\" p-id=\"17185\"></path>\n </svg>\n`\n// export const highLineCodeIconActive = `\n// <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M57.728 124.928v323.264c0 27.52 20.672 48.192 48.192 48.192h825.408c27.52 0 48.128-20.672 48.128-48.192V124.928a47.04 47.04 0 0 0-48.128-48.128H105.92c-27.52 6.848-48.192 27.52-48.192 48.128z m96.32 275.136V173.056h736v227.008h-736z m685.056 257.28a47.04 47.04 0 0 0-48.128-48.192H103.168a47.04 47.04 0 0 0-48.192 48.192c0 27.52 20.672 48.128 48.192 48.128h687.808c27.52 6.848 48.128-13.76 48.128-48.128z m-274.752 240.384a47.04 47.04 0 0 0-48.128-48.192H103.488a47.04 47.04 0 0 0-48.128 48.192c0 27.52 20.608 48.128 48.128 48.128h412.736c27.52 6.912 48.128-13.76 48.128-48.128z\" fill=\"#1E6FFF\" p-id=\"53514\"></path></svg>\n// `\n","export const fileLinkIcon = `\n<svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\"><path d=\"M879.36 530.048l67.84 68.608-290.368 293.76a333.376 333.376 0 0 1-475.2 0 342.528 342.528 0 0 1 0-480.448L487.04 103.04a238.08 238.08 0 0 1 339.392 0 244.608 244.608 0 0 1 0 343.232L521.024 755.2a142.912 142.912 0 0 1-203.648 0 146.816 146.816 0 0 1 0-205.888l305.472-308.992 67.84 68.672L385.28 617.856a48.96 48.96 0 0 0 0 68.672 47.616 47.616 0 0 0 67.84 0L758.592 377.6a146.816 146.816 0 0 0 0-205.888 142.912 142.912 0 0 0-203.648 0L249.472 480.576a244.608 244.608 0 0 0 0 343.232 238.08 238.08 0 0 0 339.456 0l290.432-293.76z\" fill=\"#363B4C\" p-id=\"17489\"></path></svg>\n`\n","export const linCodeIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M302.208 212.48a45.632 45.632 0 0 0-67.712 8.256l-192 259.648a55.296 55.296 0 0 0 0 64.896l192 259.584a45.504 45.504 0 0 0 66.56 6.848 54.848 54.848 0 0 0 8.32-71.68L141.44 512.512l168-227.456a54.848 54.848 0 0 0-7.168-72.704z m679.232 267.904l-192-259.648a45.504 45.504 0 0 0-66.56-6.784 54.848 54.848 0 0 0-8.32 71.68L882.56 512.64l-168 227.392a54.848 54.848 0 0 0 8.32 71.68 45.504 45.504 0 0 0 66.56-6.784l192-259.584a55.296 55.296 0 0 0 0-64.896zM594.048 97.152c-25.984-6.08-51.584 11.84-57.088 40L392.96 864c-6.912 28.8 9.984 57.984 36.928 63.872h10.048c23.04 0.576 43.2-16.64 48-40.96l144-727.04c6.272-28.8-11.008-57.344-37.888-62.72z\" fill=\"#363B4C\" p-id=\"17337\"></path></svg>\n`\n","export const mergeCellIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M853.2992 221.8496q0-51.2-51.2-51.2H632.832q-18.944 0.0512-32.3584-13.312-13.3632-13.4144-13.3632-32.3072 0-18.944 13.3632-32.3072 13.4144-13.4144 32.3584-13.3632h169.3696q58.9824 0 100.7616 41.728 41.728 41.728 41.728 100.7616v169.472q0 18.8416-13.3632 32.256-13.3632 13.312-32.256 13.312-18.944 0-32.256-13.312-13.4144-13.4144-13.4144-32.256l-0.0512-169.472z m-728.2688 215.04H124.928q-18.944 0-32.256-13.3632-13.3632-13.4144-13.3632-32.3072V221.8496q0-59.0336 41.728-100.7616t100.7616-41.728h169.3696q18.944 0 32.3072 13.312 13.4144 13.4144 13.4144 32.3584t-13.4144 32.256q-13.3632 13.4144-32.256 13.4144H221.7984q-51.1488 0-51.1488 51.1488v169.472q-0.0512 18.944-13.4656 32.256-13.312 13.312-32.256 13.312z m576.6144 251.6992l-136.8576-137.3696q-16.2304-16.1792-13.9776-39.0144V511.744q-2.2016-22.8352 13.9776-39.0144l136.8576-136.8576q14.336-14.336 34.4576-14.336 20.224 0 34.5088 14.336 14.2848 14.2336 14.2336 34.4576 0 20.1728-14.2848 34.4576l-58.4704 58.4704h183.808q20.1728 0 34.4576 14.2848t14.2848 34.4576q0 20.0192-14.1824 34.2016-14.1824 14.2336-34.304 14.2336h-184.32l58.7264 59.2384q13.9776 14.336 13.9776 34.4576 0.2048 20.1728-13.9776 34.4576-14.2336 14.336-34.4576 14.336-20.1728 0-34.4576-14.336z m-228.4544-176.384q2.2016 22.8352-13.9776 39.0144L322.304 688.64q-14.2336 14.336-34.4576 14.336-20.1728 0-34.4064-14.336-14.2336-14.2848-14.0288-34.4576-0.1536-20.1216 14.0288-34.4576l58.6752-59.2384h-184.32q-20.0704 0-34.2528-14.2336-14.1824-14.1824-14.1824-34.2016 0-20.224 14.2848-34.4576 14.2336-14.2848 34.4064-14.2848h183.808L253.44 404.7872q-14.2848-14.2848-14.2848-34.4576 0-20.224 14.2848-34.4576 14.2848-14.336 34.4576-14.336 20.224 0 34.4576 14.336L459.264 472.7296q16.1792 16.1792 13.9776 39.0144V512.2048z m-49.664 419.0208q-13.3632 13.4144-32.256 13.4144H221.7984q-59.0336 0-100.7616-41.7792-41.728-41.728-41.728-100.7616v-169.3696q0-18.944 13.312-32.256 13.3632-13.4144 32.256-13.4656 18.944 0 32.3584 13.312 13.3632 13.3632 13.4144 32.256v169.5232q0 51.2 51.2 51.2H391.168q18.944 0 32.256 13.312 13.4144 13.4144 13.4144 32.3584 0 18.8928-13.3632 32.256z m479.3856-28.3648q-41.7792 41.7792-100.7616 41.7792h-169.3696q-18.944 0-32.3072-13.4144-13.3632-13.3632-13.3632-32.256 0-18.944 13.312-32.3072 13.4144-13.4144 32.3584-13.4144h169.3696q51.1488 0 51.1488-51.1488l0.1536-169.4208q0-18.8928 13.312-32.256 13.3632-13.312 32.256-13.312 18.944 0 32.256 13.312 13.312 13.3632 13.312 32.256v169.472q0 58.9824-41.6768 100.7104z\" fill=\"#363B4C\" p-id=\"3356\"></path>\n </svg>\n`\n","export const moreIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 1024 1024\"\n >\n <path d=\"M242.5856 513.024q0 4.4032-0.4096 8.7552-0.4608 4.4032-1.28 8.704-0.8704 4.352-2.1504 8.6016-1.28 4.1984-2.9696 8.2944t-3.7888 7.936q-2.048 3.8912-4.5056 7.5776-2.4576 3.6864-5.2736 7.0656-2.7648 3.4304-5.888 6.5536-3.1232 3.072-6.5536 5.888-3.4304 2.816-7.0656 5.2736-3.6864 2.4576-7.5776 4.5056-3.8912 2.0992-7.936 3.7888-4.096 1.6896-8.2944 2.9696-4.2496 1.28-8.5504 2.1504-4.352 0.8704-8.704 1.28-4.4032 0.4096-8.8576 0.4096-4.4032 0-8.8064-0.4096-4.352-0.4096-8.704-1.28-4.3008-0.8704-8.5504-2.1504-4.1984-1.28-8.2944-2.9696t-7.936-3.7888q-3.8912-2.048-7.5776-4.5056-3.6864-2.4576-7.0656-5.2736-3.4304-2.7648-6.5536-5.888-3.072-3.1232-5.888-6.5536-2.816-3.3792-5.2736-7.0656-2.4576-3.6864-4.5056-7.5776-2.0992-3.8912-3.7888-7.936-1.6896-4.096-2.9696-8.2944-1.28-4.2496-2.1504-8.5504-0.8704-4.352-1.28-8.704-0.4608-4.4032-0.4608-8.8064 0-4.4544 0.4608-8.8064 0.4096-4.4032 1.28-8.704 0.8704-4.352 2.1504-8.6016 1.28-4.1984 2.9696-8.2944t3.7888-7.936q2.048-3.8912 4.5056-7.5776 2.4576-3.6864 5.2736-7.0656 2.7648-3.4304 5.888-6.5536 3.1232-3.072 6.5536-5.888 3.3792-2.816 7.0656-5.2736 3.6864-2.4576 7.5776-4.5056 3.8912-2.048 7.936-3.7888 4.096-1.6896 8.2944-2.9696 4.2496-1.28 8.5504-2.1504 4.352-0.8192 8.704-1.28 4.4032-0.4096 8.8064-0.4096 4.4544 0 8.8064 0.4096 4.4032 0.4608 8.704 1.28 4.352 0.8704 8.6016 2.1504 4.1984 1.28 8.2944 2.9696t7.936 3.7888q3.8912 2.048 7.5776 4.5056 3.6352 2.4576 7.0656 5.2736 3.4304 2.7648 6.5536 5.888 3.072 3.1232 5.888 6.5536 2.816 3.3792 5.2736 7.0656 2.4576 3.6864 4.5056 7.5776 2.048 3.8912 3.7888 7.936 1.6896 4.096 2.9696 8.2944 1.28 4.2496 2.1504 8.5504 0.8192 4.352 1.28 8.704 0.4096 4.4032 0.4096 8.8576zM601.8048 513.024q0 4.4032-0.4608 8.7552-0.4096 4.4032-1.28 8.704-0.8704 4.352-2.1504 8.6016-1.28 4.1984-2.9696 8.2944t-3.7376 7.936q-2.048 3.8912-4.5568 7.5776-2.4576 3.6864-5.2224 7.0656-2.816 3.4304-5.9392 6.5536-3.072 3.072-6.5024 5.888-3.4304 2.816-7.1168 5.2736-3.6352 2.4576-7.5264 4.5056-3.8912 2.0992-7.9872 3.7888-4.096 1.6896-8.2944 2.9696t-8.5504 2.1504q-4.3008 0.8704-8.704 1.28-4.4032 0.4096-8.8064 0.4096t-8.8064-0.4096q-4.4032-0.4096-8.704-1.28-4.352-0.8704-8.5504-2.1504-4.2496-1.28-8.2944-2.9696-4.096-1.6896-7.9872-3.7888-3.8912-2.048-7.5264-4.5056-3.6864-2.4576-7.1168-5.2736-3.3792-2.7648-6.5024-5.888-3.1232-3.1232-5.9392-6.5536-2.7648-3.3792-5.2224-7.0656-2.4576-3.6864-4.5568-7.5776-2.048-3.8912-3.7376-7.936-1.6896-4.096-2.9696-8.2944-1.28-4.2496-2.1504-8.5504-0.8704-4.352-1.28-8.704-0.4608-4.4032-0.4608-8.8064 0-4.4544 0.4608-8.8064 0.4096-4.4032 1.28-8.704 0.8704-4.352 2.1504-8.6016 1.28-4.1984 2.9696-8.2944t3.7376-7.936q2.048-3.8912 4.5568-7.5776 2.4576-3.6864 5.2224-7.0656 2.816-3.4304 5.9392-6.5536 3.072-3.072 6.5024-5.888 3.4304-2.816 7.1168-5.2736 3.6352-2.4576 7.5264-4.5056 3.8912-2.048 7.9872-3.7888 4.096-1.6896 8.2944-2.9696t8.5504-2.1504q4.3008-0.8192 8.704-1.28 4.4032-0.4096 8.8064-0.4096t8.8064 0.4096q4.4032 0.4608 8.704 1.28 4.352 0.8704 8.5504 2.1504 4.2496 1.28 8.2944 2.9696 4.096 1.6896 7.9872 3.7888 3.8912 2.048 7.5264 4.5056 3.6864 2.4576 7.1168 5.2736 3.3792 2.7648 6.5024 5.888 3.1232 3.1232 5.9392 6.5536 2.7648 3.3792 5.2224 7.0656 2.4576 3.6864 4.5568 7.5776 2.048 3.8912 3.7376 7.936 1.6896 4.096 2.9696 8.2944 1.28 4.2496 2.1504 8.5504 0.8704 4.352 1.28 8.704 0.4608 4.4032 0.4608 8.8576zM961.024 513.024q0 4.4032-0.4608 8.7552-0.4096 4.4032-1.28 8.704-0.8704 4.352-2.1504 8.6016-1.28 4.1984-2.9696 8.2944t-3.7888 7.936q-2.048 3.8912-4.5056 7.5776-2.4576 3.6864-5.2736 7.0656-2.7648 3.4304-5.888 6.5536-3.1232 3.072-6.5536 5.888-3.3792 2.816-7.0656 5.2736-3.6864 2.4576-7.5776 4.5056-3.8912 2.0992-7.936 3.7888-4.096 1.6896-8.2944 2.9696-4.2496 1.28-8.5504 2.1504-4.352 0.8704-8.704 1.28-4.4032 0.4096-8.8064 0.4096-4.4544 0-8.8064-0.4096-4.4032-0.4096-8.704-1.28-4.352-0.8704-8.6016-2.1504-4.1984-1.28-8.2944-2.9696t-7.936-3.7888q-3.8912-2.048-7.5776-4.5056-3.6352-2.4576-7.0656-5.2736-3.4304-2.7648-6.5536-5.888-3.072-3.1232-5.888-6.5536-2.816-3.3792-5.2736-7.0656-2.4576-3.6864-4.5056-7.5776-2.048-3.8912-3.7888-7.936-1.6896-4.096-2.9696-8.2944-1.28-4.2496-2.1504-8.5504-0.8192-4.352-1.28-8.704-0.4096-4.4032-0.4096-8.8064 0-4.4544 0.4096-8.8064 0.4608-4.4032 1.28-8.704 0.8704-4.352 2.1504-8.6016 1.28-4.1984 2.9696-8.2944t3.7888-7.936q2.048-3.8912 4.5056-7.5776 2.4576-3.6864 5.2736-7.0656 2.7648-3.4304 5.888-6.5536 3.1232-3.072 6.5536-5.888 3.4304-2.816 7.0656-5.2736 3.6864-2.4576 7.5776-4.5056 3.8912-2.048 7.936-3.7888 4.096-1.6896 8.2944-2.9696 4.2496-1.28 8.5504-2.1504 4.352-0.8192 8.704-1.28 4.4032-0.4096 8.8576-0.4096 4.4032 0 8.8064 0.4096 4.352 0.4608 8.704 1.28 4.3008 0.8704 8.5504 2.1504 4.1984 1.28 8.2944 2.9696t7.936 3.7888q3.8912 2.048 7.5776 4.5056 3.6864 2.4576 7.0656 5.2736 3.4304 2.7648 6.5536 5.888 3.072 3.1232 5.888 6.5536 2.816 3.3792 5.2736 7.0656 2.4576 3.6864 4.5056 7.5776 2.0992 3.8912 3.7888 7.936 1.6896 4.096 2.9696 8.2944 1.28 4.2496 2.1504 8.5504 0.8704 4.352 1.28 8.704 0.4608 4.4032 0.4608 8.8576z\" fill=\"#363B4C\" p-id=\"9748\"></path>\n </svg>\n`\n","export const splitCellIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\" height=\"24\">\n <path d=\"M448 405.4528a42.5472 42.5472 0 0 1-85.0944 0.1024V256q0-42.9056-42.9056-42.9056H170.5472a42.5472 42.5472 0 1 1 0-85.0944H320A128 128 0 0 1 448 256v149.4528z m0 234.5472V768a128 128 0 0 1-128 128H170.5472a42.5472 42.5472 0 1 1 0-85.0944H320q42.9056 0 42.9056-42.9056v-149.5552a42.5472 42.5472 0 1 1 85.0944 0.1024v21.4528z m448-469.4528c0 23.552-19.0464 42.5984-42.5472 42.5472H704q-42.9056 0-42.9056 42.9056v149.504a42.496 42.496 0 0 1-85.0944 0V256a128 128 0 0 1 128-128h149.4528c23.4496 0 42.5472 19.0976 42.5472 42.5472z m0 682.9056c0 23.5008-19.0464 42.5472-42.5472 42.5472H704a128 128 0 0 1-128-128v-149.504a42.496 42.496 0 0 1 85.0432 0l0.1024 149.504q0 42.9056 42.8544 42.9056h149.4528c23.4496 0 42.5472 19.0464 42.5472 42.496z\" fill=\"#363B4C\" p-id=\"3508\"></path><path d=\"M882.7392 475.8016c9.5744 9.5232 14.336 22.8352 13.0048 36.2496a45.0048 45.0048 0 0 1-13.0048 36.2496l-120.7296 121.1904a45.2096 45.2096 0 0 1-64 0 44.8 44.8 0 0 1-13.0048-32c0-11.6736 4.1984-23.04 13.0048-32l47.9744-48.384H588.8a45.0048 45.0048 0 0 1-45.056-45.056c0-24.9856 20.2752-45.2608 45.2608-45.2608h156.7744l-47.7696-47.7696a45.056 45.056 0 0 1 0-64 45.1584 45.1584 0 0 1 64 0l120.7296 120.7808z m-740.9664 0a45.0048 45.0048 0 0 0-13.0048 36.2496 45.0048 45.0048 0 0 0 13.0048 36.2496l120.7808 121.1904a45.2096 45.2096 0 0 0 64 0 44.8 44.8 0 0 0 12.9536-32 45.0048 45.0048 0 0 0-12.9536-32l-48.0256-48.384h157.2352c24.8832 0 45.056-20.224 45.0048-45.056a45.2608 45.2608 0 0 0-45.2608-45.2608H278.7328l47.8208-47.7696a45.056 45.056 0 0 0 0-64 45.2096 45.2096 0 0 0-64 0l-120.832 120.7808z\" fill=\"#363B4C\" p-id=\"3509\"></path>\n </svg>\n`\n","export const formatPainterIcon = `\n <svg viewBox=\"0 0 1024 1024\" version=\"1.1\" width=\"20\" height=\"20\">\n <path d=\"M454.698667 302.506667H323.84q-23.04 0-41.6 13.824-18.517333 13.824-25.130667 35.968l-31.36 104.704q-10.112 33.621333 10.794667 61.738666 11.52 15.445333 27.221333 22.442667 0.853333 46.165333-0.810666 105.6-1.408 51.84-58.368 138.496-23.338667 35.413333-3.413334 72.96 20.053333 37.76 62.677334 37.76h477.994666q39.509333 0 69.077334-26.325333 29.738667-26.453333 34.090666-65.962667 10.24-93.738667 10.24-155.946667 0-57.088-8.618666-103.68 20.949333-6.058667 35.285333-25.344 20.864-28.117333 10.837333-61.738666l-31.36-104.704q-6.656-22.144-25.173333-35.968-18.517333-13.781333-41.6-13.781334h-130.858667V197.802667q0-28.885333-20.437333-49.365334Q622.933333 128 594.090667 128H524.373333q-28.842667 0-49.237333 20.48-20.437333 20.437333-20.437333 49.322667v104.746666z m68.992 41.728q0.682667-3.370667 0.682666-6.784V197.802667h69.717334V337.493333q0 3.413333 0.64 6.826667 0.682667 3.370667 2.005333 6.528 1.28 3.2 3.2 6.058667 1.92 2.816 4.352 5.248 2.389333 2.474667 5.248 4.352 2.901333 1.92 6.058667 3.242666 3.157333 1.322667 6.528 1.962667 3.328 0.682667 6.826666 0.682667h165.674667l31.36 104.746666H292.48l31.36-104.746666h165.717333q3.413333 0 6.826667-0.64 3.328-0.682667 6.528-2.005334 3.157333-1.322667 5.973333-3.242666 2.858667-1.877333 5.290667-4.352 2.432-2.432 4.309333-5.248 1.92-2.901333 3.242667-6.058667 1.322667-3.157333 1.962667-6.570667z m252.501333 202.666666q9.429333 43.648 9.429333 100.864 0 58.368-9.813333 148.352-1.450667 12.757333-11.093333 21.376-9.813333 8.704-22.826667 8.704h-100.309333q22.058667-81.493333 22.058666-174.592h-69.674666q0 94.421333-24.96 174.592h-121.514667q41.941333-81.450667 41.941333-174.592H419.754667q0 94.378667-52.992 174.592H263.808q-0.725333 0-1.109333-0.725333-0.469333-0.981333 0.042666-1.749333 67.968-103.253333 69.888-175.018667 1.536-56.533333 0.938667-101.802667H776.106667z\" fill=\"currentColor\" p-id=\"11997\"></path>\n </svg>\n`\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\ntype MenuItem<T> = {\n index: number\n key: string\n onRun: (ctx: Ctx) => void\n} & T\n\ntype WithRange<T, HasIndex extends true | false = true> = HasIndex extends true\n ? T & { range: [start: number, end: number] }\n : T\n\nexport type MenuItemGroup<T, HasIndex extends true | false = true> = WithRange<\n {\n key: string\n label: string\n items: HasIndex extends true ? MenuItem<T>[] : Omit<MenuItem<T>, 'index'>[]\n },\n HasIndex\n>\n\nexport class GroupBuilder<T> {\n #groups: MenuItemGroup<T, false>[] = []\n\n clear = () => {\n this.#groups = []\n return this\n }\n\n #getGroupInstance = (group: MenuItemGroup<T, false>) => {\n const groupInstance = {\n group,\n addItem: (key: string, item: Omit<MenuItem<T>, 'key' | 'index'>) => {\n const data = { ...item, key } as MenuItem<T>\n group.items.push(data)\n return groupInstance\n },\n clear: () => {\n group.items = []\n return groupInstance\n },\n }\n return groupInstance\n }\n\n addGroup = (key: string, label: string) => {\n const items: Omit<MenuItem<T>, 'index'>[] = []\n const group: MenuItemGroup<T, false> = {\n key,\n label,\n items,\n }\n this.#groups.push(group)\n\n return this.#getGroupInstance(group)\n }\n\n getGroup = (key: string) => {\n const group = this.#groups.find((group) => group.key === key)\n if (!group) throw new Error(`Group with key ${key} not found`)\n\n return this.#getGroupInstance(group)\n }\n\n build = () => {\n return this.#groups\n }\n}\n","import { $ctx } from '@jvs-milkdown/kit/utils'\n\nexport interface MenuAPI {\n show: (\n pos: number,\n isClick?: boolean,\n triggerElement?: HTMLElement,\n mode?: 'list' | 'block'\n ) => void\n hide: () => void\n onHoverDelayHide: () => void\n cancelHide: () => void\n isProgrammatic: () => boolean\n getPos: () => number | null\n isShow: () => boolean\n getMode: () => 'list' | 'block' | null\n}\n\nexport const menuAPI = $ctx(\n {\n show: () => {},\n hide: () => {},\n onHoverDelayHide: () => {},\n cancelHide: () => {},\n isProgrammatic: () => false,\n getPos: () => null,\n isShow: () => false,\n getMode: () => null,\n } as MenuAPI,\n 'menuAPICtx'\n)\n","import { $nodeSchema } from '@jvs-milkdown/kit/utils'\n\nexport const ATTACHMENT_DATA_TYPE = 'attachment-block'\n\nexport const attachmentSchema = $nodeSchema('attachment', () => {\n return {\n inline: false,\n group: 'block',\n selectable: true,\n draggable: true,\n isolating: true,\n marks: '',\n atom: true,\n priority: 100,\n attrs: {\n src: { default: '', validate: 'string' },\n name: { default: '', validate: 'string' },\n size: { default: 0, validate: 'number' },\n videoWidth: { default: 0, validate: 'number' },\n },\n parseDOM: [\n {\n tag: `a[data-type=\"${ATTACHMENT_DATA_TYPE}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement))\n throw new TypeError('Expect dom to be HTMLElement')\n return {\n src: dom.getAttribute('href') || '',\n name: dom.getAttribute('data-name') || '',\n size: Number(dom.getAttribute('data-size') || 0),\n videoWidth: Number(dom.getAttribute('data-video-width') || 0),\n }\n },\n },\n ],\n toDOM: (node) => [\n 'a',\n {\n 'data-type': ATTACHMENT_DATA_TYPE,\n href: node.attrs.src,\n 'data-name': node.attrs.name,\n 'data-size': String(node.attrs.size),\n 'data-video-width': String(node.attrs.videoWidth || 0),\n class: 'attachment',\n },\n node.attrs.name,\n ],\n parseMarkdown: {\n match: (node) => {\n // A custom attachment block might be parsed from an HTML block or standard link.\n // We'll map standard links with the \"attachment\" class if using remark-directive\n // or just rely on DOM string parsing for this specific milkdown environment.\n // Since milkdown parses Markdown -> MDAST, we need to instruct it.\n // For simplicity, we can hook into markdown `link` node parsing conditionally if it matches our shape,\n // or a custom remark node `attachment`. We'll just define the structural match here.\n return node.type === 'attachment'\n },\n runner: (state, node, type) => {\n state.addNode(type, {\n src: node.url,\n name: node.name || '',\n size: Number(node.size || 0),\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'attachment',\n runner: (state, node) => {\n state.openNode('paragraph')\n // Using html node to preserve data-size natively since mdast 'link' doesn't have data-attributes\n state.addNode(\n 'html',\n undefined,\n `<a href=\"${node.attrs.src}\" data-size=\"${node.attrs.size}\" data-name=\"${node.attrs.name}\" data-video-width=\"${node.attrs.videoWidth || 0}\" data-type=\"${ATTACHMENT_DATA_TYPE}\" class=\"attachment\">${node.attrs.name}</a>`\n )\n state.closeNode()\n },\n },\n }\n})\n","import { $nodeSchema } from '@jvs-milkdown/kit/utils'\nimport katex from 'katex'\n\nexport const mathInlineId = 'math_inline'\n\n/// Schema for inline math node.\n/// Add support for:\n///\n/// ```markdown\n/// $a^2 + b^2 = c^2$\n/// ```\nexport const mathInlineSchema = $nodeSchema(mathInlineId, () => ({\n group: 'inline',\n inline: true,\n draggable: true,\n selectable: true,\n atom: true,\n attrs: {\n value: {\n default: '',\n },\n },\n parseDOM: [\n {\n tag: `span[data-type=\"${mathInlineId}\"]`,\n getAttrs: (dom) => {\n return {\n value: (dom as HTMLElement).dataset.value ?? '',\n }\n },\n },\n ],\n toDOM: (node) => {\n const code: string = node.attrs.value\n const dom = document.createElement('span')\n dom.dataset.type = mathInlineId\n dom.dataset.value = code\n if (!code) {\n dom.classList.add('empty-math-inline')\n dom.textContent = '添加 LaTeX 公式'\n dom.contentEditable = 'false'\n dom.style.userSelect = 'none'\n dom.style.cursor = 'pointer'\n } else {\n dom.classList.remove('empty-math-inline')\n katex.render(code, dom, {\n throwOnError: false,\n })\n }\n\n return dom\n },\n parseMarkdown: {\n match: (node) => node.type === 'inlineMath',\n runner: (state, node, type) => {\n state.addNode(type, { value: node.value as string })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === mathInlineId,\n runner: (state, node) => {\n state.addNode('inlineMath', undefined, node.attrs.value)\n },\n },\n}))\n","import type { Node } from '@jvs-milkdown/kit/prose/model'\n\nimport { findNodeInSelection } from '@jvs-milkdown/kit/prose'\nimport { NodeSelection, TextSelection } from '@jvs-milkdown/kit/prose/state'\nimport { $command } from '@jvs-milkdown/kit/utils'\n\nimport { mathInlineSchema } from './inline-latex'\n\nexport const toggleLatexCommand = $command('ToggleLatex', (ctx) => {\n return () => (state, dispatch) => {\n const {\n hasNode: hasLatex,\n pos: latexPos,\n target: latexNode,\n } = findNodeInSelection(state, mathInlineSchema.type(ctx))\n\n const { selection, doc, tr } = state\n if (!hasLatex) {\n const text = doc.textBetween(selection.from, selection.to)\n let _tr = tr.replaceSelectionWith(\n mathInlineSchema.type(ctx).create({\n value: text,\n })\n )\n if (dispatch) {\n dispatch(\n _tr.setSelection(NodeSelection.create(_tr.doc, selection.from))\n )\n }\n return true\n }\n\n const { from, to } = selection\n if (!latexNode || latexPos < 0) return false\n\n let _tr = tr.delete(latexPos, latexPos + 1)\n const content = (latexNode as Node).attrs.value\n _tr = _tr.insertText(content, latexPos)\n if (dispatch) {\n dispatch(\n _tr.setSelection(\n TextSelection.create(_tr.doc, from, to + content.length - 1)\n )\n )\n }\n return true\n }\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { Node as ProseNode } from '@jvs-milkdown/kit/prose/model'\n\nimport { imageBlockSchema } from '@jvs-milkdown/kit/component/image-block'\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/kit/core'\nimport {\n addBlockTypeCommand,\n blockquoteSchema,\n bulletListSchema,\n clearTextInCurrentBlockCommand,\n codeBlockSchema,\n headingSchema,\n hrSchema,\n listItemSchema,\n orderedListSchema,\n paragraphSchema,\n selectTextNearPosCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n wrapInBulletListCommand,\n wrapInHeadingCommand,\n wrapInOrderedListCommand,\n liftListItemCommand,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport { createTable } from '@jvs-milkdown/kit/preset/gfm'\nimport { findNodeInSelection } from '@jvs-milkdown/kit/prose'\nimport { lift } from '@jvs-milkdown/kit/prose/commands'\nimport { wrapInList } from '@jvs-milkdown/kit/prose/schema-list'\nimport { TextSelection } from '@jvs-milkdown/kit/prose/state'\n\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { SlashMenuItem } from './utils'\n\nimport { i18n, type CrepeTranslations } from '../../../core/locale'\nimport { useCrepeFeatures } from '../../../core/slice'\nimport { CrepeFeature } from '../../../feature'\nimport {\n bulletListIcon,\n codeIcon,\n dividerIcon,\n functionsIcon,\n fileLinkIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n imageIcon,\n orderedListIcon,\n quoteIcon,\n tableIcon,\n textIcon,\n todoListIcon,\n} from '../../../icons'\nimport { GroupBuilder, type MenuItemGroup } from '../../../utils/group-builder'\nimport { attachmentSchema } from '../../attachment/schema'\nimport { toggleLatexCommand } from '../../latex/command'\nimport { menuAPI } from './api'\n\n/**\n * If the cursor is currently inside a code_block, expand the selection\n * to cover the entire code_block. This ensures that when changing the block type\n * (e.g. to heading or paragraph), the entire multi-line content of the code block\n * is converted properly, rather than splitting and converting just one line.\n */\nfunction selectEntireCodeBlockIfNeeded(ctx: Ctx) {\n const view = ctx.get(editorViewCtx)\n const { state, dispatch } = view\n const { $from, $to } = state.selection\n\n if (state.selection instanceof TextSelection) {\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (node.type.name === 'code_block') {\n const fromPos = $from.start(d)\n const toPos = $from.end(d)\n const textContent = node.textContent\n\n if (textContent.includes('\\n')) {\n let tr = state.tr\n // Iterate backwards to avoid index shifting issues\n for (let i = textContent.length - 1; i >= 0; i--) {\n if (textContent[i] === '\\n') {\n const pos = fromPos + i\n // Delete the newline character\n tr = tr.delete(pos, pos + 1)\n // Split the code_block into separate blocks\n tr = tr.split(pos)\n }\n }\n // The mapping keeps track of our positions smoothly\n const newStart = tr.mapping.map(fromPos, -1)\n const newEnd = tr.mapping.map(toPos, 1)\n tr = tr.setSelection(TextSelection.create(tr.doc, newStart, newEnd))\n dispatch(tr)\n } else {\n if ($from.pos !== fromPos || $to.pos !== toPos) {\n dispatch(\n state.tr.setSelection(\n TextSelection.create(state.doc, fromPos, toPos)\n )\n )\n }\n }\n break\n }\n }\n }\n}\n\n/**\n * If the cursor is inside a list_item, lift it (and any ancestors) out\n * so the resulting paragraph is no longer wrapped by a list.\n * This is needed because list_item schema requires 'paragraph' as first child,\n * preventing direct setBlockType → heading conversion.\n */\nfunction liftOutOfListItem(ctx: Ctx) {\n const commands = ctx.get(commandsCtx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n\n for (let safety = 0; safety < 10; safety++) {\n const { $from } = view.state.selection\n let inListItem = false\n for (let d = $from.depth; d > 0; d--) {\n if ($from.node(d).type === listItem) {\n inListItem = true\n break\n }\n }\n if (!inListItem) break\n commands.call(liftListItemCommand.key)\n }\n}\n\n/**\n * Convert any headings in the selection to paragraphs before wrapping in a list.\n * This is needed because list_item schema requires 'paragraph' as first child,\n * so a heading cannot be directly placed inside a list_item.\n */\nfunction convertHeadingToParagraphIfNeeded(ctx: Ctx) {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const heading = headingSchema.type(ctx)\n const { from, to } = view.state.selection\n\n let hasHeading = false\n view.state.doc.nodesBetween(from, to, (node) => {\n if (node.type === heading) hasHeading = true\n })\n\n if (hasHeading) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n }\n}\n\nexport function getGroups(\n filter?: string,\n config?: BlockEditFeatureConfig,\n ctx?: Ctx\n) {\n const flags = ctx && useCrepeFeatures(ctx).get()\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n const isImageBlockEnabled = flags?.includes(CrepeFeature.ImageBlock)\n const isTableEnabled = flags?.includes(CrepeFeature.Table)\n const isAttachmentEnabled = flags?.includes(CrepeFeature.Attachment)\n\n const t = (key: keyof CrepeTranslations, fallback: string) =>\n ctx ? i18n(ctx, key) : fallback\n\n const groupBuilder = new GroupBuilder<SlashMenuItem>()\n if (config?.textGroup !== null) {\n const textGroup = groupBuilder.addGroup(\n 'text',\n config?.textGroup?.label ?? t('menu.group.text', 'Text')\n )\n if (config?.textGroup?.text !== null) {\n textGroup.addItem('text', {\n label: config?.textGroup?.text?.label ?? t('menu.item.text', 'Text'),\n icon: config?.textGroup?.text?.icon ?? textIcon,\n tooltip: t('menu.tooltip.text', 'Text (Ctrl+Alt+0)'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const paragraph = paragraphSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraph,\n })\n },\n })\n }\n\n if (config?.textGroup?.h1 !== null) {\n textGroup.addItem('h1', {\n label: config?.textGroup?.h1?.label ?? t('menu.item.h1', 'Heading 1'),\n icon: config?.textGroup?.h1?.icon ?? h1Icon,\n tooltip: t(\n 'menu.tooltip.h1',\n 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 1\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 1)\n }\n },\n })\n }\n\n if (config?.textGroup?.h2 !== null) {\n textGroup.addItem('h2', {\n label: config?.textGroup?.h2?.label ?? t('menu.item.h2', 'Heading 2'),\n icon: config?.textGroup?.h2?.icon ?? h2Icon,\n tooltip: t(\n 'menu.tooltip.h2',\n 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 2\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 2)\n }\n },\n })\n }\n\n if (config?.textGroup?.h3 !== null) {\n textGroup.addItem('h3', {\n label: config?.textGroup?.h3?.label ?? t('menu.item.h3', 'Heading 3'),\n icon: config?.textGroup?.h3?.icon ?? h3Icon,\n tooltip: t(\n 'menu.tooltip.h3',\n 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 3\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 3)\n }\n },\n })\n }\n\n if (config?.textGroup?.h4 !== null) {\n textGroup.addItem('h4', {\n label: config?.textGroup?.h4?.label ?? t('menu.item.h4', 'Heading 4'),\n icon: config?.textGroup?.h4?.icon ?? h4Icon,\n tooltip: t(\n 'menu.tooltip.h4',\n 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 4\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 4)\n }\n },\n })\n }\n\n if (config?.textGroup?.h5 !== null) {\n textGroup.addItem('h5', {\n label: config?.textGroup?.h5?.label ?? t('menu.item.h5', 'Heading 5'),\n icon: config?.textGroup?.h5?.icon ?? h5Icon,\n tooltip: t(\n 'menu.tooltip.h5',\n 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 5\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 5)\n }\n },\n })\n }\n\n if (config?.textGroup?.h6 !== null) {\n textGroup.addItem('h6', {\n label: config?.textGroup?.h6?.label ?? t('menu.item.h6', 'Heading 6'),\n icon: config?.textGroup?.h6?.icon ?? h6Icon,\n tooltip: t(\n 'menu.tooltip.h6',\n 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const heading = headingSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive =\n findNodeInSelection(view.state, heading).target?.attrs?.level === 6\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n liftOutOfListItem(ctx)\n commands.call(wrapInHeadingCommand.key, 6)\n }\n },\n })\n }\n }\n\n if (config?.blockGroup !== null) {\n const blockGroup = groupBuilder.addGroup(\n 'block',\n config?.blockGroup?.label ?? t('menu.group.block', 'Block')\n )\n\n if (config?.blockGroup?.quote !== null) {\n blockGroup.addItem('quote', {\n label:\n config?.blockGroup?.quote?.label ?? t('menu.item.quote', 'Quote'),\n icon: config?.blockGroup?.quote?.icon ?? quoteIcon,\n tooltip: t(\n 'menu.tooltip.quote',\n 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const blockquote = blockquoteSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const isActive = findNodeInSelection(view.state, blockquote).hasNode\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n if (isActive) {\n lift(view.state, view.dispatch)\n } else {\n commands.call(wrapInBlockTypeCommand.key, {\n nodeType: blockquote,\n })\n }\n },\n })\n }\n\n if (config?.blockGroup?.divider !== null) {\n blockGroup.addItem('divider', {\n label:\n config?.blockGroup?.divider?.label ??\n t('menu.item.divider', 'Divider'),\n icon: config?.blockGroup?.divider?.icon ?? dividerIcon,\n tooltip: t('menu.tooltip.divider', 'Divider\\nMarkdown: --- Space'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const hr = hrSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n commands.call(addBlockTypeCommand.key, {\n nodeType: hr,\n })\n },\n })\n }\n }\n\n if (config?.listGroup !== null) {\n const listGroup = groupBuilder.addGroup(\n 'list',\n config?.listGroup?.label ?? t('menu.group.list', 'List')\n )\n if (config?.listGroup?.bulletList !== null) {\n listGroup.addItem('bullet-list', {\n label:\n config?.listGroup?.bulletList?.label ??\n t('menu.item.bulletList', 'Bullet List'),\n icon: config?.listGroup?.bulletList?.icon ?? bulletListIcon,\n tooltip: t(\n 'menu.tooltip.bulletList',\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const bulletList = bulletListSchema.type(ctx)\n const orderedList = orderedListSchema.type(ctx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n\n let hasBulletItem = false\n let hasTaskItem = false\n let hasOrderedItem = false\n let hasUnlisted = false\n\n const { from, to } = view.state.selection\n view.state.doc.nodesBetween(from, to, (node, _pos, parent) => {\n if (node.type === listItem) {\n if (parent?.type === bulletList) {\n if (node.attrs.checked != null) hasTaskItem = true\n else hasBulletItem = true\n } else if (parent?.type === orderedList) {\n hasOrderedItem = true\n }\n } else if (\n ['paragraph', 'heading'].includes(node.type.name) &&\n parent?.type !== listItem\n ) {\n hasUnlisted = true\n }\n })\n\n const isActive =\n hasBulletItem && !hasTaskItem && !hasOrderedItem && !hasUnlisted\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n\n if (isActive) {\n // Toggle off: lift out of list\n commands.call(liftListItemCommand.key)\n return\n }\n\n const listsToChange: { pos: number; node: ProseNode }[] = []\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === orderedList || node.type === bulletList) {\n listsToChange.push({ pos, node })\n }\n })\n\n if (listsToChange.length > 0) {\n const tr = view.state.tr\n listsToChange\n .sort((a, b) => b.pos - a.pos)\n .forEach(({ pos, node }) => {\n tr.setNodeMarkup(pos, bulletList, {\n spread: node.attrs.spread || false,\n })\n node.forEach((child: ProseNode, offset: number) => {\n if (child.type === listItem) {\n tr.setNodeMarkup(pos + 1 + offset, undefined, {\n ...child.attrs,\n checked: null,\n listType: 'bullet',\n label: '•',\n })\n }\n })\n })\n view.dispatch(tr)\n return\n }\n\n // Not in any list → wrap (convert heading to paragraph first)\n convertHeadingToParagraphIfNeeded(ctx)\n commands.call(wrapInBulletListCommand.key)\n },\n })\n }\n\n if (config?.listGroup?.orderedList !== null) {\n listGroup.addItem('ordered-list', {\n label:\n config?.listGroup?.orderedList?.label ??\n t('menu.item.orderedList', 'Ordered List'),\n icon: config?.listGroup?.orderedList?.icon ?? orderedListIcon,\n tooltip: t(\n 'menu.tooltip.orderedList',\n 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const orderedList = orderedListSchema.type(ctx)\n const bulletList = bulletListSchema.type(ctx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const { from, to } = view.state.selection\n\n let hasOrderedList = false\n let hasNonOrderedList = false\n let hasUnlisted = false\n\n view.state.doc.nodesBetween(from, to, (node, _pos, parent) => {\n if (node.type === listItem) {\n if (parent?.type === orderedList) hasOrderedList = true\n else hasNonOrderedList = true\n } else if (\n ['paragraph', 'heading'].includes(node.type.name) &&\n parent?.type !== listItem\n ) {\n hasUnlisted = true\n }\n })\n\n const isActive = hasOrderedList && !hasNonOrderedList && !hasUnlisted\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n\n if (isActive) {\n commands.call(liftListItemCommand.key)\n return\n }\n\n const listsToChange: { pos: number; node: ProseNode }[] = []\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === orderedList || node.type === bulletList) {\n listsToChange.push({ pos, node })\n }\n })\n\n if (listsToChange.length > 0) {\n const tr = view.state.tr\n listsToChange\n .sort((a, b) => b.pos - a.pos)\n .forEach(({ pos, node }) => {\n tr.setNodeMarkup(pos, orderedList, {\n spread: node.attrs.spread || false,\n order: 1,\n })\n let idx = 1\n node.forEach((child: ProseNode, offset: number) => {\n if (child.type === listItem) {\n tr.setNodeMarkup(pos + 1 + offset, undefined, {\n ...child.attrs,\n checked: null,\n listType: 'ordered',\n label: `${idx}.`,\n })\n idx++\n }\n })\n })\n view.dispatch(tr)\n return\n }\n\n // Convert heading to paragraph first, then wrap\n convertHeadingToParagraphIfNeeded(ctx)\n commands.call(wrapInOrderedListCommand.key)\n },\n })\n }\n\n if (config?.listGroup?.taskList !== null) {\n listGroup.addItem('task-list', {\n label:\n config?.listGroup?.taskList?.label ??\n t('menu.item.taskList', 'Task List'),\n icon: config?.listGroup?.taskList?.icon ?? todoListIcon,\n tooltip: t('menu.tooltip.taskList', 'Task List\\nMarkdown: - [ ] Space'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const bulletList = bulletListSchema.type(ctx)\n const orderedList = orderedListSchema.type(ctx)\n const listItem = listItemSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const { from, to } = view.state.selection\n\n let hasTaskList = false\n let hasNonTaskList = false\n let hasUnlisted = false\n\n view.state.doc.nodesBetween(from, to, (node, _pos, parent) => {\n if (node.type === listItem) {\n if (node.attrs.checked != null) hasTaskList = true\n else hasNonTaskList = true\n } else if (\n ['paragraph', 'heading'].includes(node.type.name) &&\n parent?.type !== listItem\n ) {\n hasUnlisted = true\n }\n })\n\n const isActive = hasTaskList && !hasNonTaskList && !hasUnlisted\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n selectEntireCodeBlockIfNeeded(ctx)\n\n if (isActive) {\n commands.call(liftListItemCommand.key)\n return\n }\n\n const listsToChange: { pos: number; node: ProseNode }[] = []\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === orderedList || node.type === bulletList) {\n listsToChange.push({ pos, node })\n }\n })\n\n if (listsToChange.length > 0) {\n const tr = view.state.tr\n listsToChange\n .sort((a, b) => b.pos - a.pos)\n .forEach(({ pos, node }) => {\n tr.setNodeMarkup(pos, bulletList, {\n spread: node.attrs.spread || false,\n })\n node.forEach((child: ProseNode, offset: number) => {\n if (child.type === listItem) {\n tr.setNodeMarkup(pos + 1 + offset, undefined, {\n ...child.attrs,\n checked:\n child.attrs.checked != null\n ? child.attrs.checked\n : false,\n listType: 'bullet',\n label: '•',\n })\n }\n })\n })\n view.dispatch(tr)\n return\n }\n\n // Convert heading to paragraph first, then wrap\n convertHeadingToParagraphIfNeeded(ctx)\n const result = wrapInList(bulletList)(view.state, (tr) => {\n // Set checked attribute on each list item\n tr.doc.nodesBetween(\n tr.mapping.map(from),\n tr.mapping.map(to),\n (node, pos) => {\n if (node.type === listItem) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n checked: false,\n listType: 'bullet',\n label: '•',\n })\n }\n }\n )\n view.dispatch(tr)\n })\n if (result) return\n },\n })\n }\n }\n\n if (config?.advancedGroup !== null) {\n const advancedGroup = groupBuilder.addGroup(\n 'advanced',\n config?.advancedGroup?.label ?? t('menu.group.advanced', 'Advanced')\n )\n\n if (config?.advancedGroup?.image !== null && isImageBlockEnabled) {\n advancedGroup.addItem('image', {\n label:\n config?.advancedGroup?.image?.label ?? t('menu.item.image', 'Image'),\n icon: config?.advancedGroup?.image?.icon ?? imageIcon,\n tooltip: t('menu.tooltip.image', 'Image\\nMarkdown: ![alt](url)'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const imageBlock = imageBlockSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n commands.call(addBlockTypeCommand.key, {\n nodeType: imageBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.attachment !== null && isAttachmentEnabled) {\n advancedGroup.addItem('attachment', {\n label:\n config?.advancedGroup?.attachment?.label ??\n t('menu.item.attachment', 'Video or File'),\n icon: config?.advancedGroup?.attachment?.icon ?? fileLinkIcon,\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const attachBlock = attachmentSchema.type(ctx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n commands.call(addBlockTypeCommand.key, {\n nodeType: attachBlock,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.codeBlock !== null) {\n advancedGroup.addItem('code', {\n label:\n config?.advancedGroup?.codeBlock?.label ??\n t('menu.item.code', 'Code'),\n icon: config?.advancedGroup?.codeBlock?.icon ?? codeIcon,\n tooltip: t(\n 'menu.tooltip.code',\n 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter'\n ),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const codeBlock = codeBlockSchema.type(ctx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, codeBlock)\n const isActive =\n result.hasNode && result.target?.attrs?.language !== 'LaTex'\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(setBlockTypeCommand.key, {\n nodeType: codeBlock,\n })\n }\n },\n })\n }\n\n if (config?.advancedGroup?.table !== null && isTableEnabled) {\n advancedGroup.addItem('table', {\n label:\n config?.advancedGroup?.table?.label ?? t('menu.item.table', 'Table'),\n icon: config?.advancedGroup?.table?.icon ?? tableIcon,\n tooltip: t('menu.tooltip.table', 'Table\\nMarkdown: | | |'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n // record the position before the table is inserted\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, 3, 3),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n },\n })\n }\n\n if (config?.advancedGroup?.math !== null && isLatexEnabled) {\n advancedGroup.addItem('math', {\n label:\n config?.advancedGroup?.math?.label ?? t('menu.item.math', 'Math'),\n icon: config?.advancedGroup?.math?.icon ?? functionsIcon,\n tooltip: t('menu.tooltip.math', 'Math\\nMarkdown: $$ Enter'),\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n if (!ctx.get(menuAPI.key)?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n commands.call(toggleLatexCommand.key)\n\n requestAnimationFrame(() => {\n view.dispatch(view.state.tr)\n })\n },\n })\n }\n }\n\n config?.buildMenu?.(groupBuilder)\n\n let groups = groupBuilder.build()\n\n if (filter) {\n groups = groups\n .map((group) => {\n const items = group.items.filter((item) =>\n item.label.toLowerCase().includes(filter.toLowerCase())\n )\n\n return {\n ...group,\n items,\n }\n })\n .filter((group) => group.items.length > 0)\n }\n\n const items = groups.flatMap((groups) => groups.items)\n items.forEach((item, index) => {\n Object.assign(item, { index })\n })\n\n groups.reduce((acc, group) => {\n const end = acc + group.items.length\n Object.assign(group, {\n range: [acc, end],\n })\n return end\n }, 0)\n\n return {\n groups: groups as MenuItemGroup<SlashMenuItem>[],\n size: items.length,\n }\n}\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\nimport { editorViewCtx, commandsCtx, schemaCtx } from '@jvs-milkdown/kit/core'\nimport {\n clearTextInCurrentBlockCommand,\n addBlockTypeCommand,\n selectTextNearPosCommand,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport { createTable } from '@jvs-milkdown/kit/preset/gfm'\nimport { TextSelection, NodeSelection } from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport {\n computed,\n defineComponent,\n onUnmounted,\n ref,\n watch,\n watchEffect,\n type Ref,\n type PropType,\n h,\n} from 'vue'\n\nimport type { BlockEditFeatureConfig } from '..'\n\nimport { i18n } from '../../../core/locale'\nimport {\n alignLeftIcon,\n alignCenterIcon,\n alignRightIcon,\n indentIncreaseIcon,\n indentDecreaseIcon,\n confirmIcon,\n editIcon,\n clearIcon,\n copyIcon,\n removeIcon,\n plusIcon,\n chevronDownIcon,\n} from '../../../icons'\nimport { keepAlive } from '../../../utils/keep-alive'\nimport { textColorSchema, bgColorSchema } from '../../toolbar/color'\nimport { menuAPI } from './api'\nimport { getGroups } from './config'\n\nkeepAlive(h)\n\ntype MenuProps = {\n ctx: Ctx\n show: Ref<boolean>\n filter: Ref<string>\n hide: () => void\n config?: BlockEditFeatureConfig\n activeKey: Ref<string>\n}\n\nexport const Menu = defineComponent<MenuProps>({\n props: {\n ctx: {\n type: Object,\n required: true,\n },\n activeKey: {\n type: Object as PropType<Ref<string>>,\n required: true,\n },\n show: {\n type: Object,\n required: true,\n },\n filter: {\n type: Object,\n required: true,\n },\n hide: {\n type: Function,\n required: true,\n },\n config: {\n type: Object,\n required: false,\n },\n },\n setup({ ctx, show, filter, hide, config, activeKey }: any) {\n const host = ref<HTMLElement>()\n const groupInfo = computed(() => getGroups(filter.value, config, ctx))\n const hoverIndex = ref(0)\n const prevMousePosition = ref({ x: -999, y: -999 })\n\n const showIndentAlignMenu = ref(false)\n const indentAlignMenuPos = ref({ top: 0, left: 0 })\n let hideMenuTimer: ReturnType<typeof setTimeout> | null = null\n\n const handleIndentAlignEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n indentAlignMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showColorMenu.value = false\n showAddBelowMenu.value = false\n showIndentAlignMenu.value = true\n }\n\n const handleIndentAlignLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = false\n }, 150)\n }\n\n const showColorMenu = ref(false)\n const colorMenuPos = ref({ top: 0, left: 0 })\n\n const handleColorEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n colorMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showIndentAlignMenu.value = false\n showAddBelowMenu.value = false\n showColorMenu.value = true\n }\n\n const handleColorLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = false\n }, 150)\n }\n\n const showAddBelowMenu = ref(false)\n const addBelowMenuPos = ref({ top: 0, left: 0 })\n\n const handleAddBelowEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n addBelowMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = true\n }\n\n const handleAddBelowLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showColorMenu.value = false\n showAddBelowMenu.value = false\n showTableMenu.value = false\n }, 150)\n }\n\n const showTableMenu = ref(false)\n const tableMenuPos = ref({ top: 0, left: 0 })\n const tableHoverIndices = ref({ r: 0, c: 0 })\n\n const handleTableEnter = (e: MouseEvent) => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n const target = e.currentTarget as HTMLElement\n const rect = target.getBoundingClientRect()\n tableMenuPos.value = { top: rect.top, left: rect.right + 4 }\n showIndentAlignMenu.value = false\n showAddBelowMenu.value = false\n showColorMenu.value = false\n showTableMenu.value = true\n }\n\n const handleTableLeave = () => {\n hideMenuTimer = setTimeout(() => {\n showIndentAlignMenu.value = false\n showAddBelowMenu.value = false\n showColorMenu.value = false\n showTableMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n }, 150)\n }\n\n const runTableInsert = (rows: number, cols: number) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const api = ctx.get(menuAPI.key)\n\n if (api) {\n const pos = api.getPos()\n if (pos !== null && pos !== undefined) {\n const { tr } = view.state\n const node = tr.doc.nodeAt(pos)\n if (node) {\n const endPos = pos + node.nodeSize - 1\n const $endPos = tr.doc.resolve(endPos)\n view.dispatch(tr.setSelection(TextSelection.near($endPos, -1)))\n } else {\n const $pos = tr.doc.resolve(pos)\n view.dispatch(tr.setSelection(TextSelection.near($pos)))\n }\n }\n }\n\n if (!api?.isProgrammatic?.()) {\n commands.call(clearTextInCurrentBlockCommand.key)\n }\n\n const { $from } = view.state.selection\n let tableEndPos: number | null = null\n for (let d = $from.depth; d > 0; d--) {\n if ($from.node(d).type.name === 'table') {\n tableEndPos = $from.after(d)\n break\n }\n }\n\n if (tableEndPos !== null) {\n const { tr } = view.state\n const tableNode = createTable(ctx, rows, cols)\n view.dispatch(tr.insert(tableEndPos, tableNode))\n commands.call(selectTextNearPosCommand.key, {\n pos: tableEndPos,\n })\n } else {\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, rows, cols),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n }\n\n showTableMenu.value = false\n hide()\n }\n\n const onPointerMove = (e: MouseEvent) => {\n const { x, y } = e\n prevMousePosition.value = { x, y }\n }\n\n watch(\n [groupInfo, show],\n ([newGroupInfo, newShow]: any, [oldGroupInfo, oldShow]: any) => {\n const { size } = newGroupInfo\n if (size === 0 && newShow) {\n hide()\n return\n }\n\n if (newShow && newShow !== oldShow) {\n const items = newGroupInfo.groups.flatMap((g: any) => g.items)\n const api = ctx.get(menuAPI.key)\n const isSlash = api?.getMode() === 'list' || !api?.isProgrammatic()\n\n if (isSlash) {\n hoverIndex.value = 0\n setTimeout(() => {\n const scrollRoot =\n host.value?.querySelector<HTMLElement>('.menu-groups')\n if (scrollRoot) {\n scrollRoot.scrollTop = 0\n }\n }, 0)\n } else {\n const target = items.find((i: any) => i.key === activeKey.value)\n hoverIndex.value = target ? target.index : 0\n setTimeout(() => scrollToIndex(hoverIndex.value), 0)\n }\n } else if (newGroupInfo !== oldGroupInfo) {\n hoverIndex.value = 0\n setTimeout(() => {\n const scrollRoot =\n host.value?.querySelector<HTMLElement>('.menu-groups')\n if (scrollRoot) {\n scrollRoot.scrollTop = 0\n }\n }, 0)\n } else if (hoverIndex.value >= size) {\n hoverIndex.value = 0\n }\n }\n )\n\n const onHover = (\n index: number | ((prev: number) => number),\n after?: (index: number) => void\n ) => {\n const prevHoverIndex = hoverIndex.value\n const next = typeof index === 'function' ? index(prevHoverIndex) : index\n after?.(next)\n hoverIndex.value = next\n }\n\n const scrollToIndex = (index: number) => {\n const target = host.value?.querySelector<HTMLElement>(\n `[data-index=\"${index}\"]`\n )\n const scrollRoot = host.value?.querySelector<HTMLElement>('.menu-groups')\n\n if (!target || !scrollRoot) return\n\n scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop\n }\n\n const runByIndex = (index: number) => {\n const item = groupInfo.value.groups\n .flatMap((group: any) => group.items)\n .at(index)\n if (item && ctx) {\n const api = ctx.get(menuAPI.key)\n if (api) {\n const pos = api.getPos()\n if (pos !== null && pos !== undefined) {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n const node = tr.doc.nodeAt(pos)\n if (node) {\n const endPos = pos + node.nodeSize - 1\n const $endPos = tr.doc.resolve(endPos)\n view.dispatch(tr.setSelection(TextSelection.near($endPos, -1)))\n } else {\n const $pos = tr.doc.resolve(pos)\n view.dispatch(tr.setSelection(TextSelection.near($pos)))\n }\n }\n }\n item.onRun(ctx)\n }\n\n hide()\n }\n\n const runByIndexForAddBelow = (index: number) => {\n const item = groupInfo.value.groups\n .flatMap((group: any) => group.items)\n .at(index)\n if (item && ctx) {\n const api = ctx.get(menuAPI.key)\n const pos = api?.getPos()\n if (pos !== null && pos !== undefined) {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (targetNode) {\n const endPos = pos + targetNode.nodeSize\n const paragraphType = view.state.schema.nodes.paragraph\n if (paragraphType) {\n view.dispatch(tr.insert(endPos, paragraphType.createAndFill()!))\n view.dispatch(\n view.state.tr.setSelection(\n TextSelection.create(view.state.doc, endPos + 1)\n )\n )\n view.focus()\n }\n }\n }\n item.onRun(ctx)\n }\n\n showAddBelowMenu.value = false\n hide()\n }\n\n const onKeydown = (e: KeyboardEvent) => {\n const { size, groups } = groupInfo.value\n if (e.key === 'Escape') {\n e.preventDefault()\n hide?.()\n return\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return onHover(\n (index) => (index < size - 1 ? index + 1 : index),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return onHover(\n (index) => (index <= 0 ? index : index - 1),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group: any) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const prevGroup = groups[groups.indexOf(group) - 1]\n if (!prevGroup) return index\n\n return prevGroup.range[1] - 1\n }, scrollToIndex)\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group: any) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const nextGroup = groups[groups.indexOf(group) + 1]\n if (!nextGroup) return index\n\n return nextGroup.range[0]\n }, scrollToIndex)\n }\n\n if (e.key === 'Enter') {\n e.preventDefault()\n runByIndex(hoverIndex.value)\n }\n }\n\n const getOnPointerEnter = (index: number) => (e: MouseEvent) => {\n const prevPos = prevMousePosition.value\n if (!prevPos) return\n\n const { x, y } = e\n if (x === prevPos.x && y === prevPos.y) return\n\n onHover(index)\n }\n\n watchEffect(() => {\n const isShown = show.value\n if (isShown) {\n window.addEventListener('keydown', onKeydown, { capture: true })\n } else {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n }\n })\n onUnmounted(() => {\n window.removeEventListener('keydown', onKeydown, { capture: true })\n })\n\n return () => {\n // Force vue to track the `show` ref so it correctly re-evaluates `api.isProgrammatic()`\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n void show.value\n const api = ctx.get(menuAPI.key)\n const showListMenu =\n api?.getMode() === 'list' ||\n !api?.isProgrammatic() ||\n filter.value !== ''\n\n if (showListMenu) {\n return (\n <div ref={host} onPointerdown={(e: any) => e.preventDefault()}>\n <div class=\"menu-groups\" onPointermove={onPointerMove}>\n {groupInfo.value.groups.map((group: any) => (\n <div key={group.key} class=\"menu-group\">\n <h6>{group.label}</h6>\n <ul>\n {group.items.map((item: any) => (\n <li\n key={item.key}\n data-index={item.index}\n data-key={item.key}\n title={item.tooltip || item.label}\n class={[\n hoverIndex.value === item.index ? 'hover' : '',\n item.key === activeKey.value ? 'selected' : '',\n ]}\n onPointerenter={(e: any) => {\n getOnPointerEnter(item.index)(e)\n if (item.key === 'table') handleTableEnter(e)\n else {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n showTableMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n }\n }}\n onPointerleave={() => {\n if (item.key === 'table') handleTableLeave()\n }}\n onPointerdown={(e: any) => {\n if (item.key === 'table') {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }}\n onPointerup={(e: any) => {\n if (item.key === 'table') {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n >\n <Icon icon={item.icon} />\n <span style={item.key === 'table' ? { flex: 1 } : {}}>\n {item.label}\n </span>\n {item.key === 'table' ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n opacity: 0.5,\n transform: 'rotate(-90deg)',\n }}\n >\n <Icon icon={chevronDownIcon} />\n </div>\n ) : null}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n {showTableMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${tableMenuPos.value.top}px`,\n left: `${tableMenuPos.value.left}px`,\n zIndex: 9999,\n width: 'max-content',\n padding: '12px',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n display: 'flex',\n flexDirection: 'column',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleTableLeave}\n >\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginBottom: '8px',\n }}\n >\n {i18n(ctx, 'customMenu.insertTable')}\n </div>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(9, 1fr)',\n gap: '4px',\n width: 'max-content',\n }}\n >\n {Array.from({ length: 9 }).map((_, r) =>\n Array.from({ length: 9 }).map((_, c) => {\n const isHovered =\n r < tableHoverIndices.value.r &&\n c < tableHoverIndices.value.c\n return (\n <div\n key={`cell-${r}-${c}`}\n style={{\n width: '20px',\n height: '20px',\n backgroundColor: isHovered\n ? 'color-mix(in srgb, var(--crepe-color-primary), transparent 85%)'\n : 'var(--crepe-color-surface-low, #f5f5f5)',\n border: isHovered\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n onPointerenter={() => {\n tableHoverIndices.value = { r: r + 1, c: c + 1 }\n }}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n runTableInsert(r + 1, c + 1)\n }}\n />\n )\n })\n )}\n </div>\n {tableHoverIndices.value.r > 0 ? (\n <div\n style={{\n fontSize: '12px',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n {tableHoverIndices.value.r} x {tableHoverIndices.value.c}\n </div>\n ) : (\n <div\n style={{\n fontSize: '12px',\n color: 'transparent',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n 0 x 0\n </div>\n )}\n </div>\n ) : null}\n </div>\n )\n }\n\n const allItems = groupInfo.value.groups.flatMap((g: any) => g.items)\n const findItem = (key: string) => allItems.find((i: any) => i.key === key)\n\n const allGridKeys = [\n 'text',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'bullet-list',\n 'ordered-list',\n 'task-list',\n 'code',\n 'quote',\n ]\n\n const view = ctx.get(editorViewCtx)\n const pos = api?.getPos()\n const node =\n pos !== null && pos !== undefined ? view.state.doc.nodeAt(pos) : null\n\n const isImageBlock = node?.type.name === 'image-block'\n const isAttachmentBlock = node?.type.name.includes('attachment')\n\n let hasImageChild = false\n if (node?.type.name === 'paragraph') {\n node.content.forEach((child: any) => {\n if (child.type.name.includes('image')) {\n hasImageChild = true\n }\n })\n }\n\n const isImageParagraph =\n node?.type.name === 'paragraph' &&\n node.textContent.length === 0 &&\n hasImageChild\n const isTableBlock = node?.type.name === 'table'\n const isMedia =\n node?.type.name?.includes('image') ||\n isAttachmentBlock ||\n isImageParagraph ||\n node?.type.name === 'hr' ||\n isTableBlock\n const showAlign = !isMedia || isImageBlock\n\n const isEmpty = node\n ? node.type.name === 'paragraph' &&\n node.textContent.length === 0 &&\n node.content.size <= 2 &&\n !isMedia\n : false\n\n const currentAlign = node?.attrs?.align || 'left'\n const currentIndent = node?.attrs?.indent || 0\n\n const setAlign = (alignValue: string) => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n view.dispatch(\n tr.setNodeMarkup(pos, undefined, {\n ...targetNode.attrs,\n align: alignValue,\n })\n )\n showIndentAlignMenu.value = false\n hide()\n }\n\n const setIndent = (adjustment: number) => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n const newIndent = Math.max(\n 0,\n (targetNode.attrs.indent || 0) + adjustment\n )\n view.dispatch(\n tr.setNodeMarkup(pos, undefined, {\n ...targetNode.attrs,\n indent: newIndent,\n })\n )\n showIndentAlignMenu.value = false\n hide()\n }\n\n let activeTextColor: string | null = null\n let activeBgColor: string | null = null\n\n if (node && node.nodeSize > 2) {\n const schema = ctx.get(schemaCtx)\n const tcHasMark = schema.marks[textColorSchema.id]\n const bcHasMark = schema.marks[bgColorSchema.id]\n\n if (tcHasMark || bcHasMark) {\n node.descendants((childNode: any) => {\n if (childNode.isText) {\n if (tcHasMark && !activeTextColor) {\n const tcType = textColorSchema.type(ctx)\n const tcMark = childNode.marks.find(\n (m: any) => m.type === tcType\n )\n if (tcMark) activeTextColor = tcMark.attrs.color\n }\n if (bcHasMark && !activeBgColor) {\n const bcType = bgColorSchema.type(ctx)\n const bcMark = childNode.marks.find(\n (m: any) => m.type === bcType\n )\n if (bcMark) activeBgColor = bcMark.attrs.color\n }\n }\n return false\n })\n }\n }\n\n const setBlockColor = (colorValue: string | null, isBg: boolean) => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n const schema = ctx.get(schemaCtx)\n const hasMark = isBg\n ? schema.marks[bgColorSchema.id]\n : schema.marks[textColorSchema.id]\n if (!hasMark) return\n\n const markType = isBg\n ? bgColorSchema.type(ctx)\n : textColorSchema.type(ctx)\n const start = pos + 1\n const end = pos + targetNode.nodeSize - 1\n\n tr.removeMark(start, end, markType)\n\n if (colorValue) {\n tr.addMark(start, end, markType.create({ color: colorValue }))\n }\n\n view.dispatch(tr)\n\n showColorMenu.value = false\n hide()\n }\n\n const setTextColor = (color: string | null) => setBlockColor(color, false)\n const setBgColor = (color: string | null) => setBlockColor(color, true)\n\n const clearColor = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n const schema = ctx.get(schemaCtx)\n const tcHasMark = schema.marks[textColorSchema.id]\n const bcHasMark = schema.marks[bgColorSchema.id]\n\n const start = pos + 1\n const end = pos + targetNode.nodeSize - 1\n\n if (tcHasMark) {\n tr.removeMark(start, end, textColorSchema.type(ctx))\n }\n if (bcHasMark) {\n tr.removeMark(start, end, bgColorSchema.type(ctx))\n }\n\n view.dispatch(tr)\n showColorMenu.value = false\n hide()\n }\n\n const applyDelete = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n view.dispatch(tr.delete(pos, pos + targetNode.nodeSize))\n hide()\n }\n\n const applyCopy = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n view.dispatch(tr.setSelection(NodeSelection.create(tr.doc, pos)))\n view.focus()\n document.execCommand('copy')\n hide()\n }\n\n const applyCut = () => {\n if (pos === null || pos === undefined) return\n const { tr } = view.state\n const targetNode = tr.doc.nodeAt(pos)\n if (!targetNode) return\n\n view.dispatch(tr.setSelection(NodeSelection.create(tr.doc, pos)))\n view.focus()\n document.execCommand('cut')\n hide()\n }\n\n if (isEmpty) {\n allGridKeys.push('divider', 'image')\n }\n\n const gridRows = []\n for (let i = 0; i < allGridKeys.length; i += 6) {\n gridRows.push(allGridKeys.slice(i, i + 6))\n }\n\n const renderGridBtn = (key: string) => {\n const item = findItem(key)\n if (!item) return null\n return (\n <div\n title={item.label}\n class={[\n 'menu-grid-btn',\n hoverIndex.value === item.index ? 'hover' : '',\n item.key === activeKey.value ? 'selected' : '',\n ]}\n onPointerenter={getOnPointerEnter(item.index)}\n onPointerdown={() =>\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }\n onPointerup={() => {\n host.value\n ?.querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n data-index={item.index}\n >\n <Icon icon={item.icon} />\n </div>\n )\n }\n\n const renderCustomRow = (\n iconHtml: string,\n label: string,\n hasArrow?: boolean,\n onPointerEnter?: (e: MouseEvent) => void,\n onPointerLeave?: (e: MouseEvent) => void,\n onClick?: () => void\n ) => {\n return (\n <div\n class=\"custom-menu-row\"\n onPointerenter={onPointerEnter}\n onPointerleave={onPointerLeave}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n onClick?.()\n }}\n >\n <div class=\"custom-menu-row-left\">\n <Icon icon={iconHtml} />\n <span>{label}</span>\n </div>\n {hasArrow ? <Icon icon={chevronDownIcon} /> : null}\n </div>\n )\n }\n\n const renderSubMenuItem = (\n iconHtml: string,\n label: string,\n isActive: boolean,\n onClick: () => void,\n disabled = false\n ) => {\n return (\n <div\n class={['custom-menu-row', disabled ? 'disabled' : '']}\n style={{\n opacity: disabled ? 0.5 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) onClick()\n }}\n >\n <div class=\"custom-menu-row-left\">\n <Icon icon={iconHtml} />\n <span\n style={{\n color: isActive ? 'var(--crepe-color-primary)' : '#363B4C',\n }}\n >\n {label}\n </span>\n </div>\n {isActive ? (\n <span style={{ color: 'var(--crepe-color-primary)' }}>\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n )\n }\n\n return (\n <div\n ref={host}\n onPointerdown={(e: any) => e.preventDefault()}\n class=\"custom-block-menu\"\n >\n {!isMedia ? (\n <div class=\"custom-grid-container\">\n {gridRows.map((rowKeys: any, rIndex: any) => (\n <div class=\"custom-grid-row\" key={'row-' + rIndex}>\n {rowKeys.map(renderGridBtn)}\n </div>\n ))}\n </div>\n ) : null}\n\n {showAlign ? <div class=\"custom-divider\"></div> : null}\n {showAlign &&\n renderCustomRow(\n alignLeftIcon,\n i18n(ctx, 'customMenu.indentAndAlign'),\n true,\n handleIndentAlignEnter,\n handleIndentAlignLeave\n )}\n {showIndentAlignMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${indentAlignMenuPos.value.top}px`,\n left: `${indentAlignMenuPos.value.left}px`,\n zIndex: 9999,\n width: '180px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleIndentAlignLeave}\n >\n {renderSubMenuItem(\n alignLeftIcon,\n i18n(ctx, 'customMenu.alignLeft'),\n currentAlign === 'left',\n () => setAlign('left')\n )}\n {renderSubMenuItem(\n alignCenterIcon,\n i18n(ctx, 'customMenu.alignCenter'),\n currentAlign === 'center',\n () => setAlign('center')\n )}\n {renderSubMenuItem(\n alignRightIcon,\n i18n(ctx, 'customMenu.alignRight'),\n currentAlign === 'right',\n () => setAlign('right')\n )}\n <div class=\"custom-divider\"></div>\n {renderSubMenuItem(\n indentIncreaseIcon,\n i18n(ctx, 'customMenu.increaseIndent'),\n false,\n () => setIndent(1)\n )}\n {renderSubMenuItem(\n indentDecreaseIcon,\n i18n(ctx, 'customMenu.decreaseIndent'),\n false,\n () => setIndent(-1),\n currentIndent <= 0\n )}\n </div>\n ) : null}\n {!isMedia &&\n renderCustomRow(\n editIcon,\n i18n(ctx, 'customMenu.color'),\n true,\n handleColorEnter,\n handleColorLeave\n )}\n {showColorMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${colorMenuPos.value.top}px`,\n left: `${colorMenuPos.value.left}px`,\n zIndex: 9999,\n width: '246px',\n padding: '12px',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n gap: '8px',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleColorLeave}\n >\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n }}\n >\n {i18n(ctx, 'customMenu.textColor')}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n '#000000',\n '#8C8C8C',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color: any) => (\n <div\n key={color}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n setTextColor(color)\n }}\n style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n borderRadius: '4px',\n border:\n activeTextColor === color\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid #eeeff0',\n backgroundColor: '#ffffff',\n color: color,\n fontWeight: 'bold',\n fontSize: '14px',\n }}\n >\n A\n </div>\n ))}\n </div>\n\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '4px',\n }}\n >\n {i18n(ctx, 'customMenu.bgColor')}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n 'transparent',\n '#F5F5F5',\n '#FFCCC7',\n '#FFE7BA',\n '#FFF1B8',\n '#D9F7BE',\n '#D6E4FF',\n '#EFDBFF',\n ].map((color: any) => (\n <div\n key={color}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n setBgColor(color === 'transparent' ? null : color)\n }}\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n border:\n activeBgColor === color ||\n (color === 'transparent' && !activeBgColor)\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid var(--crepe-color-outline-variant)',\n backgroundColor:\n color === 'transparent' ? '#ffffff' : color,\n position: 'relative',\n overflow: 'hidden',\n }}\n >\n {color === 'transparent' ? (\n <div\n style={{\n position: 'absolute',\n top: '-2px',\n left: 0,\n width: '141%',\n height: '1px',\n backgroundColor: '#ff4d4f',\n transform: 'rotate(45deg)',\n transformOrigin: 'top left',\n }}\n ></div>\n ) : null}\n </div>\n ))}\n {[\n '#BFBFBF',\n '#595959',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color: any) => (\n <div\n key={color}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n setBgColor(color)\n }}\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n border:\n activeBgColor === color\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n backgroundColor: color,\n }}\n ></div>\n ))}\n </div>\n\n <button\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n clearColor()\n }}\n style={{\n width: '100%',\n marginTop: '8px',\n padding: '4px 0',\n border: '1px solid #eeeff0',\n borderRadius: '4px',\n background: 'transparent',\n color: '#363b4c',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n {i18n(ctx, 'customMenu.restoreDefault')}\n </button>\n </div>\n ) : null}\n\n {!isMedia ? <div class=\"custom-divider\"></div> : null}\n {renderCustomRow(\n clearIcon,\n i18n(ctx, 'customMenu.cut'),\n false,\n undefined,\n undefined,\n applyCut\n )}\n {renderCustomRow(\n copyIcon,\n i18n(ctx, 'customMenu.copy'),\n false,\n undefined,\n undefined,\n applyCopy\n )}\n {renderCustomRow(\n removeIcon,\n i18n(ctx, 'customMenu.delete'),\n false,\n undefined,\n undefined,\n applyDelete\n )}\n\n <div class=\"custom-divider\"></div>\n {renderCustomRow(\n plusIcon,\n i18n(ctx, 'customMenu.addBelow'),\n true,\n handleAddBelowEnter,\n handleAddBelowLeave\n )}\n {showAddBelowMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${addBelowMenuPos.value.top}px`,\n left: `${addBelowMenuPos.value.left}px`,\n zIndex: 9999,\n width: 'max-content',\n minWidth: '220px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n }}\n onPointerenter={() => {\n if (hideMenuTimer) clearTimeout(hideMenuTimer)\n }}\n onPointerleave={handleAddBelowLeave}\n >\n <div\n class=\"menu-groups\"\n onPointermove={onPointerMove}\n style={{ maxHeight: '300px', overflowY: 'auto' }}\n >\n {groupInfo.value.groups.map((group: any) => (\n <div key={group.key} class=\"menu-group\">\n <h6>{group.label}</h6>\n <ul>\n {group.items.map((item: any) => (\n <li\n key={item.key}\n data-index={item.index}\n data-key={item.key}\n class={[\n hoverIndex.value === item.index ? 'hover' : '',\n item.key === activeKey.value ? 'selected' : '',\n ]}\n onPointerenter={getOnPointerEnter(item.index)}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n host.value\n ?.querySelectorAll(`[data-index=\"${item.index}\"]`)\n .forEach((el: any) => el.classList.add('active'))\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n host.value\n ?.querySelectorAll(`[data-index=\"${item.index}\"]`)\n .forEach((el: any) =>\n el.classList.remove('active')\n )\n runByIndexForAddBelow(item.index)\n }}\n >\n <Icon icon={item.icon} />\n <span>{item.label}</span>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n ) : null}\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { Node } from '@jvs-milkdown/kit/prose/model'\nimport type { EditorView } from '@jvs-milkdown/kit/prose/view'\n\nimport { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { SlashProvider, slashFactory } from '@jvs-milkdown/kit/plugin/slash'\nimport {\n TextSelection,\n type PluginView,\n type Selection,\n} from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport { createApp, ref, type App, type Ref } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport { isInCodeBlock, isInList } from '../../../utils'\nimport { Menu } from './component'\n\nexport const menu = slashFactory('CREPE_MENU')\n\nimport { menuAPI, type MenuAPI } from './api'\n\nexport { menuAPI, type MenuAPI }\n\nexport function configureMenu(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(menu.key, {\n view: (view) => new MenuView(ctx, view, config),\n })\n}\n\nclass MenuView implements PluginView {\n readonly #content: HTMLElement\n readonly #app: App\n readonly #filter: Ref<string>\n readonly #slashProvider: SlashProvider\n readonly #activeKey: Ref<string>\n readonly #view: EditorView\n #programmaticallyPos: number | null = null\n #mode: 'list' | 'block' | null = null\n #hideTimeout: number | undefined\n #isMenuHovered = false\n #keepOpenUntilClickOutside = false\n\n constructor(ctx: Ctx, view: EditorView, config?: BlockEditFeatureConfig) {\n this.#view = view\n const content = document.createElement('div')\n content.classList.add('milkdown-slash-menu')\n const show = ref(false)\n\n const filter = ref('')\n this.#filter = filter\n\n const activeKey = ref('text')\n this.#activeKey = activeKey\n\n const hide = this.hide\n\n const app = createApp(Menu, {\n ctx,\n config,\n show,\n filter,\n hide,\n activeKey,\n })\n this.#app = app\n app.mount(content)\n\n this.#content = content\n\n this.#content.addEventListener('pointerenter', () => {\n this.#isMenuHovered = true\n this.cancelHide()\n })\n this.#content.addEventListener('pointerleave', () => {\n this.#isMenuHovered = false\n this.onHoverDelayHide()\n })\n\n // oxlint-disable-next-line ts/no-this-alias\n const self = this\n this.#slashProvider = new SlashProvider({\n content: this.#content,\n debounce: 20,\n shouldShow(this: SlashProvider, view: EditorView) {\n if (\n isInCodeBlock(view.state.selection) ||\n isInList(view.state.selection)\n )\n return false\n\n const currentText = this.getContent(view, (node) =>\n ['paragraph', 'heading'].includes(node.type.name)\n )\n\n if (currentText == null) return false\n\n if (!isSelectionAtEndOfNode(view.state.selection)) {\n return false\n }\n\n const pos = self.#programmaticallyPos\n\n filter.value = currentText.startsWith('/')\n ? currentText.slice(1)\n : currentText\n\n if (typeof pos === 'number') {\n const maxSize = view.state.doc.nodeSize - 2\n const validPos = Math.min(pos, maxSize)\n if (\n view.state.doc.resolve(validPos).node() !==\n view.state.doc.resolve(view.state.selection.from).node()\n ) {\n self.#programmaticallyPos = null\n\n return false\n }\n\n return true\n }\n\n if (!currentText.startsWith('/')) return false\n\n return true\n },\n offset: 10,\n })\n\n this.#slashProvider.onShow = () => {\n show.value = true\n }\n this.#slashProvider.onHide = () => {\n show.value = false\n this.#keepOpenUntilClickOutside = false\n }\n this.update(view)\n\n ctx.set(menuAPI.key, {\n show: (pos, isClick = false, triggerElement, mode) => {\n this.show(pos, isClick, triggerElement, mode)\n this.cancelHide()\n },\n hide: () => this.hide(),\n onHoverDelayHide: () => this.onHoverDelayHide(),\n cancelHide: () => this.cancelHide(),\n isProgrammatic: () => this.#programmaticallyPos !== null,\n getPos: () => this.#programmaticallyPos,\n isShow: () => show.value,\n getMode: () => this.#mode,\n })\n }\n\n onHoverDelayHide = () => {\n window.clearTimeout(this.#hideTimeout)\n this.#hideTimeout = window.setTimeout(() => {\n if (\n !this.#isMenuHovered &&\n !this.#keepOpenUntilClickOutside &&\n this.#programmaticallyPos !== null\n ) {\n this.hide()\n }\n }, 150)\n }\n\n cancelHide = () => {\n window.clearTimeout(this.#hideTimeout)\n }\n\n update = (view: EditorView) => {\n this.#slashProvider.update(view)\n }\n\n show = (\n pos: number,\n isClick = false,\n triggerElement?: HTMLElement,\n mode: 'list' | 'block' = 'block'\n ) => {\n if (isClick) {\n this.#keepOpenUntilClickOutside = true\n } else {\n this.#keepOpenUntilClickOutside = false\n }\n this.#programmaticallyPos = pos\n this.#mode = mode\n this.#filter.value = ''\n\n const node = this.#view.state.doc.nodeAt(pos)\n if (node) {\n this.#activeKey.value = getBlockKey(node)\n } else {\n this.#activeKey.value = 'text'\n }\n\n this.#slashProvider.show()\n this.#content.dataset.mode = mode\n\n if (triggerElement) {\n void computePosition(triggerElement, this.#content, {\n placement: 'bottom-start',\n middleware: [\n flip(),\n shift({ padding: 10 }),\n offset(({ placement }) => {\n let margin = 10\n const handle = triggerElement.closest('.milkdown-block-handle')\n if (handle) {\n const handleRect = handle.getBoundingClientRect()\n const refRect = triggerElement.getBoundingClientRect()\n if (placement.startsWith('right')) {\n margin += handleRect.right - refRect.right\n } else if (placement.startsWith('left')) {\n margin += refRect.left - handleRect.left\n }\n }\n return margin\n }),\n ],\n }).then(({ x, y }) => {\n Object.assign(this.#content.style, {\n left: `${x}px`,\n top: `${y}px`,\n })\n })\n }\n }\n\n hide = () => {\n this.#programmaticallyPos = null\n this.#mode = null\n this.#content.removeAttribute('data-mode')\n this.cancelHide()\n this.#slashProvider.hide()\n }\n\n destroy = () => {\n this.#slashProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n}\n\nfunction isSelectionAtEndOfNode(selection: Selection) {\n if (!(selection instanceof TextSelection)) return false\n\n const { $head } = selection\n const parent = $head.parent\n const offset = $head.parentOffset\n\n return offset === parent.content.size\n}\n\nfunction getBlockKey(node: Node): string {\n if (node.type.name.includes('image')) return 'image'\n if (node.type.name.includes('attachment')) return 'attachment'\n switch (node.type.name) {\n case 'heading': {\n const level = node.attrs.level\n return `h${level}`\n }\n case 'blockquote':\n return 'quote'\n case 'code_block':\n return 'code'\n case 'math_display':\n case 'math_inline':\n return 'math'\n case 'hr':\n return 'divider'\n case 'table':\n return 'table'\n case 'list_item':\n if (node.attrs.checked != null) {\n return 'task-list'\n } else {\n return 'bullet-list'\n }\n case 'bullet_list':\n return 'bullet-list'\n case 'paragraph': {\n let hasImageChild = false\n node.content.forEach((child) => {\n if (child.type.name.includes('image')) hasImageChild = true\n })\n if (hasImageChild && node.textContent.length === 0) return 'image'\n return 'text'\n }\n default:\n return 'text'\n }\n}\n","import { commandsCtx } from '@jvs-milkdown/kit/core'\nimport { Plugin, PluginKey, TextSelection } from '@jvs-milkdown/kit/prose/state'\nimport { Decoration, DecorationSet } from '@jvs-milkdown/kit/prose/view'\nimport {\n $command,\n $markAttr,\n $markSchema,\n $prose,\n $remark,\n $useKeymap,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkHighlightMarkPlugin = $remark(\n 'remarkHighlightMark',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n highlightMark: (node: any, _: any, state: any) => {\n const idAttr = node.id ? ` data-id=\"${node.id}\"` : ''\n return `<mark${idAttr}>${state.containerPhrasing(node, state)}</mark>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value.startsWith('<mark') &&\n parent &&\n index != null\n ) {\n const idMatch = node.value.match(/data-id=\"([^\"]+)\"/)\n const id = idMatch ? idMatch[1] : null\n\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</mark>'\n )\n if (endIndex !== -1) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n parent.children.splice(index, 0, {\n type: 'highlightMark',\n id,\n children: content,\n })\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const highlightMarkAttr = $markAttr('highlightMark')\n\nexport const highlightMarkSchema = $markSchema('highlightMark', (ctx) => ({\n inclusive: true,\n attrs: {\n id: { default: null },\n },\n parseDOM: [\n {\n tag: 'mark',\n getAttrs: (dom) => ({\n id: (dom as HTMLElement).getAttribute('data-id') || null,\n }),\n },\n ],\n toDOM: (mark) => {\n const attrs = { ...ctx.get(highlightMarkAttr.key)(mark) } as any\n if (mark.attrs.id) {\n attrs['data-id'] = mark.attrs.id\n }\n return ['mark', attrs, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'highlightMark',\n runner: (state, node, markType) => {\n state.openMark(markType, { id: node.id })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'highlightMark',\n runner: (state, mark) => {\n state.withMark(mark, 'highlightMark', undefined, { id: mark.attrs.id })\n },\n },\n}))\n\nexport const toggleHighlightMarkCommand = $command(\n 'ToggleHighlightMark',\n (ctx) => () => (state, dispatch) => {\n const markType = highlightMarkSchema.type(ctx)\n const { $cursor, ranges, $from, $to } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n const newId = Math.random().toString(36).substring(2, 9)\n const creatMark = () => markType.create({ id: newId })\n\n if ($cursor) {\n const isEmptyBlock = $cursor.parent.content.size === 0\n if (isEmptyBlock) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark) {\n tr = tr.removeStoredMark(markType)\n } else {\n const zwsp = '\\u200B'\n tr = tr.insertText(zwsp, $cursor.pos)\n tr = tr.addMark($cursor.pos, $cursor.pos + 1, creatMark())\n tr = tr.setSelection(TextSelection.create(tr.doc, $cursor.pos))\n }\n } else {\n const start = $cursor.start()\n const end = $cursor.end()\n\n const hasMark = state.doc.rangeHasMark(start, end, markType)\n if (hasMark) {\n tr = tr.removeMark(start, end, markType)\n if (\n $cursor.parent.content.size === 1 &&\n $cursor.parent.textContent === '\\u200B'\n ) {\n tr = tr.delete(start, end)\n }\n } else {\n tr = tr.addMark(start, end, creatMark())\n }\n }\n } else {\n let hasMark = false\n for (const range of ranges) {\n const { $from, $to } = range\n if (state.doc.rangeHasMark($from.pos, $to.pos, markType)) {\n hasMark = true\n break\n }\n }\n\n if (hasMark) {\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n }\n } else {\n // Remove existing marks of the same type to prevent messy overlaps before adding a unified new id\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n }\n\n let canFlatten = true\n let blockCount = 0\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isTextblock) {\n blockCount++\n }\n if (node.isBlock) {\n const name = node.type.name\n if (\n name !== 'paragraph' &&\n name !== 'doc' &&\n name !== 'blockquote'\n ) {\n canFlatten = false\n }\n }\n })\n\n if (canFlatten && blockCount > 1) {\n const nodes: any[] = []\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isTextblock) {\n const hardbreakType = state.schema.nodes.hardbreak\n if (hardbreakType && nodes.length > 0) {\n nodes.push(hardbreakType.create())\n }\n node.forEach((child: any) => nodes.push(child))\n }\n })\n\n const paragraphType = state.schema.nodes.paragraph\n const range = $from.blockRange($to)\n if (paragraphType && range) {\n const p = paragraphType.create({}, nodes)\n tr = tr.replaceWith(range.start, range.end, p)\n tr = tr.addMark(\n range.start,\n range.start + p.nodeSize,\n creatMark()\n )\n }\n } else {\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.addMark($from.pos, $to.pos, creatMark())\n }\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n\n return true\n }\n)\n\nexport const highlightMarkKeymap = $useKeymap('highlightMarkKeymap', {\n ToggleHighlightMark: {\n shortcuts: 'Mod-Shift-h',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleHighlightMarkCommand.key)\n },\n },\n HighlightMarkEnter: {\n shortcuts: 'Enter',\n command: (ctx) => {\n return (state, dispatch) => {\n const markType = highlightMarkSchema.type(ctx)\n const { $from, empty } = state.selection\n\n if (!empty) return false\n\n const marks = state.storedMarks || $from.marks()\n if (!markType.isInSet(marks)) return false\n\n if (dispatch) {\n const hardbreak = state.schema.nodes.hardbreak\n if (hardbreak) {\n // inherit marks by passing true to replaceSelectionWith\n // and do not setMeta 'hardbreak' so the clear mark plugin ignores it.\n let tr = state.tr.replaceSelectionWith(hardbreak.create(), true)\n\n dispatch(tr.scrollIntoView())\n }\n }\n return true\n }\n },\n },\n HighlightMarkArrowDown: {\n shortcuts: 'ArrowDown',\n command: (ctx) => {\n return (state, dispatch, view) => {\n if (!view) return false\n\n const markType = highlightMarkSchema.type(ctx)\n const { selection } = state\n const { $from, empty } = selection\n\n if (!empty) return false\n\n const isTextblock = $from.parent.isTextblock\n if (!isTextblock) return false\n\n let hasNodeAfter = false\n state.doc.nodesBetween(\n $from.after(),\n state.doc.content.size,\n (node) => {\n if (node.isTextblock) hasNodeAfter = true\n }\n )\n if (hasNodeAfter) return false\n\n let hasHighlight = false\n if ($from.parent.content.size === 0) {\n const marks = state.storedMarks || $from.marks()\n if (markType.isInSet(marks)) {\n hasHighlight = true\n }\n } else if (\n $from.parent.content.size === 1 &&\n $from.parent.textContent === '\\u200B'\n ) {\n const child = $from.parent.child(0)\n if (child.marks.some((m: any) => m.type === markType)) {\n hasHighlight = true\n }\n } else {\n $from.parent.descendants((node) => {\n if (\n node.isText &&\n node.marks.some((m: any) => m.type === markType)\n ) {\n hasHighlight = true\n }\n })\n }\n\n if (!hasHighlight) return false\n\n if (!view.endOfTextblock('down')) return false\n\n const paragraphType = state.schema.nodes.paragraph\n if (!paragraphType) return false\n\n if (dispatch) {\n const p = paragraphType.create()\n const insertPos = state.doc.content.size\n let tr = state.tr.insert(insertPos, p)\n const newPos = insertPos + 1\n tr = tr.setSelection(TextSelection.create(tr.doc, newPos))\n tr = tr.removeStoredMark(markType)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n },\n },\n HighlightMarkBackspace: {\n shortcuts: 'Backspace',\n command: (ctx) => {\n return (state, dispatch) => {\n const markType = highlightMarkSchema.type(ctx)\n const { selection } = state\n const { $from, empty } = selection\n\n if (!empty) return false\n\n const isTextblock = $from.parent.isTextblock\n if (!isTextblock) return false\n\n if ($from.parentOffset === 0) {\n const prevBlockPos = $from.before() - 1\n if (prevBlockPos > 0) {\n const $prev = state.doc.resolve(prevBlockPos)\n const prevBlock = $prev.parent\n\n if (prevBlock && prevBlock.isTextblock) {\n let prevHasHighlight = false\n\n prevBlock.descendants((node) => {\n if (node.marks.some((m: any) => m.type === markType)) {\n prevHasHighlight = true\n }\n })\n\n if (prevHasHighlight) {\n if (dispatch) {\n let tr = state.tr\n tr = tr.delete($prev.start() - 1, $prev.end() + 1)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n }\n }\n\n let hasHighlight = false\n let isPlaceholder = false\n\n if ($from.parent.content.size === 0) {\n const marks = state.storedMarks || $from.marks()\n if (markType.isInSet(marks)) {\n hasHighlight = true\n }\n } else if (\n $from.parent.content.size === 1 &&\n $from.parent.textContent === '\\u200B'\n ) {\n const child = $from.parent.child(0)\n if (child.marks.some((m: any) => m.type === markType)) {\n hasHighlight = true\n isPlaceholder = true\n }\n }\n\n if (hasHighlight) {\n if (dispatch) {\n let tr = state.tr\n if (isPlaceholder) {\n const start = $from.start()\n const end = $from.end()\n tr = tr.delete(start, end)\n }\n tr = tr.removeStoredMark(markType)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n\n return false\n }\n },\n },\n})\n\nexport const highlightEmptyBlockPlugin = $prose((ctx) => {\n return new Plugin({\n key: new PluginKey('highlightEmptyBlock'),\n props: {\n decorations(state) {\n const markType = highlightMarkSchema.type(ctx)\n const decorations: Decoration[] = []\n\n state.doc.descendants((node, pos) => {\n if (node.isTextblock) {\n if (node.content.size === 1 && node.textContent === '\\u200B') {\n const child = node.child(0)\n if (child.marks.some((m: any) => m.type === markType)) {\n decorations.push(\n Decoration.node(pos, pos + node.nodeSize, {\n class: 'crepe-placeholder crepe-highlight-empty',\n 'data-placeholder': '请输入内容',\n })\n )\n }\n }\n }\n })\n\n const { selection } = state\n const { $from, empty } = selection\n\n if (\n empty &&\n $from.parent.isTextblock &&\n $from.parent.content.size === 0\n ) {\n const marks = state.storedMarks || $from.marks()\n if (markType.isInSet(marks)) {\n const start = $from.start() - 1\n decorations.push(\n Decoration.node(start, start + $from.parent.nodeSize, {\n class: 'crepe-placeholder crepe-highlight-empty',\n 'data-placeholder': '请输入内容',\n })\n )\n }\n }\n\n return DecorationSet.create(state.doc, decorations)\n },\n },\n appendTransaction(transactions, _oldState, newState) {\n const markType = highlightMarkSchema.type(ctx)\n if (!transactions.some((t) => t.docChanged)) return null\n\n const { empty, $from } = newState.selection\n if (!empty || !$from.parent.isTextblock) return null\n if ($from.parent.content.size !== 0) return null\n\n const marks = newState.storedMarks || $from.marks()\n if (!markType.isInSet(marks)) return null\n\n const id = Math.random().toString(36).substring(2, 9)\n const mark = markType.create({ id })\n return newState.tr.insert($from.pos, newState.schema.text('​', [mark]))\n },\n })\n})\n\nexport const highlightMark = [\n highlightMarkAttr,\n highlightMarkSchema,\n toggleHighlightMarkCommand,\n highlightMarkKeymap,\n remarkHighlightMarkPlugin,\n highlightEmptyBlockPlugin,\n]\n","import { commandsCtx } from '@jvs-milkdown/kit/core'\nimport { toggleMark } from '@jvs-milkdown/kit/prose/commands'\nimport {\n $command,\n $markAttr,\n $markSchema,\n $remark,\n $useKeymap,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkUnderlinePlugin = $remark(\n 'remarkUnderline',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n underline: (node: any, _: any, state: any) => {\n return `<u>${state.containerPhrasing(node, state)}</u>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value === '<u>' &&\n parent &&\n index != null\n ) {\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</u>'\n )\n if (endIndex !== -1) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n parent.children.splice(index, 0, {\n type: 'underline',\n children: content,\n })\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const underlineAttr = $markAttr('underline')\n\nexport const underlineSchema = $markSchema('underline', (ctx) => ({\n inclusive: true,\n parseDOM: [\n { tag: 'u' },\n {\n style: 'text-decoration',\n getAttrs: (value) => (value === 'underline' ? null : false),\n },\n ],\n toDOM: (mark) => ['u', ctx.get(underlineAttr.key)(mark), 0],\n parseMarkdown: {\n match: (node) => node.type === 'underline',\n runner: (state, node, markType) => {\n state.openMark(markType)\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'underline',\n runner: (state, mark) => {\n state.withMark(mark, 'underline')\n },\n },\n}))\n\nexport const toggleUnderlineCommand = $command(\n 'ToggleUnderline',\n (ctx) => () => toggleMark(underlineSchema.type(ctx))\n)\n\nexport const underlineKeymap = $useKeymap('underlineKeymap', {\n ToggleUnderline: {\n shortcuts: 'Mod-u',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleUnderlineCommand.key)\n },\n },\n})\n\nexport const underline = [\n underlineAttr,\n underlineSchema,\n toggleUnderlineCommand,\n underlineKeymap,\n remarkUnderlinePlugin,\n]\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { toggleLinkCommand } from '@jvs-milkdown/kit/component/link-tooltip'\nimport { commandsCtx, editorViewCtx } from '@jvs-milkdown/kit/core'\nimport {\n emphasisSchema,\n headingSchema,\n inlineCodeSchema,\n isMarkSelectedCommand,\n linkSchema,\n strongSchema,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n wrapInHeadingCommand,\n setBlockTypeCommand,\n paragraphSchema,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport {\n strikethroughSchema,\n toggleStrikethroughCommand,\n} from '@jvs-milkdown/kit/preset/gfm'\nimport { findNodeInSelection } from '@jvs-milkdown/kit/prose'\n\nimport type { ToolbarFeatureConfig } from '.'\n\nimport { i18n } from '../../core/locale'\nimport {\n boldIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n italicIcon,\n linkIcon,\n strikethroughIcon,\n underlineIcon,\n linCodeIcon,\n highLineCodeIcon,\n} from '../../icons'\nimport { GroupBuilder } from '../../utils/group-builder'\nimport {\n toggleHighlightMarkCommand,\n highlightMarkSchema,\n} from './highlight-mark'\nimport { toggleUnderlineCommand, underlineSchema } from './underline'\n\nexport type ToolbarItem = {\n active: (ctx: Ctx) => boolean\n icon: string\n label: string\n}\n\nexport function getGroups(config?: ToolbarFeatureConfig, ctx?: Ctx) {\n const groupBuilder = new GroupBuilder<ToolbarItem>()\n\n groupBuilder\n .addGroup('heading', ctx ? i18n(ctx, 'toolbar.heading') : 'Heading')\n .addItem('h1', {\n label: ctx ? i18n(ctx, 'menu.item.h1') : 'Heading 1',\n icon: config?.h1Icon ?? h1Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 1\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 1\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 1)\n }\n },\n })\n .addItem('h2', {\n label: ctx ? i18n(ctx, 'menu.item.h2') : 'Heading 2',\n icon: config?.h2Icon ?? h2Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 2\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 2\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 2)\n }\n },\n })\n .addItem('h3', {\n label: ctx ? i18n(ctx, 'menu.item.h3') : 'Heading 3',\n icon: config?.h3Icon ?? h3Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 3\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 3\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 3)\n }\n },\n })\n .addItem('h4', {\n label: ctx ? i18n(ctx, 'menu.item.h4') : 'Heading 4',\n icon: config?.h4Icon ?? h4Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 4\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 4\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 4)\n }\n },\n })\n .addItem('h5', {\n label: ctx ? i18n(ctx, 'menu.item.h5') : 'Heading 5',\n icon: config?.h5Icon ?? h5Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 5\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 5\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 5)\n }\n },\n })\n .addItem('h6', {\n label: ctx ? i18n(ctx, 'menu.item.h6') : 'Heading 6',\n icon: config?.h6Icon ?? h6Icon,\n active: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n return (\n result.hasNode && !!result.target && result.target.attrs.level === 6\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n const result = findNodeInSelection(view.state, headingSchema.type(ctx))\n const isActive =\n result.hasNode && !!result.target && result.target.attrs.level === 6\n\n if (isActive) {\n commands.call(setBlockTypeCommand.key, {\n nodeType: paragraphSchema.type(ctx),\n })\n } else {\n commands.call(wrapInHeadingCommand.key, 6)\n }\n },\n })\n\n groupBuilder\n .addGroup(\n 'formatting',\n ctx ? i18n(ctx, 'toolbar.formatting') : 'Formatting'\n )\n .addItem('bold', {\n label: ctx ? i18n(ctx, 'menu.item.bold') : 'Bold',\n icon: config?.boldIcon ?? boldIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(isMarkSelectedCommand.key, strongSchema.type(ctx))\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrongCommand.key)\n },\n })\n .addItem('italic', {\n label: ctx ? i18n(ctx, 'menu.item.italic') : 'Italic',\n icon: config?.italicIcon ?? italicIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n emphasisSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleEmphasisCommand.key)\n },\n })\n .addItem('strikethrough', {\n label: ctx ? i18n(ctx, 'menu.item.strikethrough') : 'Strikethrough',\n icon: config?.strikethroughIcon ?? strikethroughIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n strikethroughSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrikethroughCommand.key)\n },\n })\n .addItem('underline', {\n label: ctx ? i18n(ctx, 'menu.item.underline') : 'Underline',\n icon: config?.underlineIcon ?? underlineIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n underlineSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleUnderlineCommand.key)\n },\n })\n const functionGroup = groupBuilder.addGroup(\n 'function',\n ctx ? i18n(ctx, 'toolbar.function') : 'Function'\n )\n functionGroup.addItem('highlight', {\n label: ctx ? i18n(ctx, 'menu.item.highlight') : 'Highlight',\n icon: config?.highlightIcon ?? highLineCodeIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n highlightMarkSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleHighlightMarkCommand.key)\n },\n })\n functionGroup.addItem('code', {\n label: ctx ? i18n(ctx, 'menu.item.lineCode') : 'Inline Code',\n icon: config?.codeIcon ?? linCodeIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(\n isMarkSelectedCommand.key,\n inlineCodeSchema.type(ctx)\n )\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleInlineCodeCommand.key)\n },\n })\n\n functionGroup.addItem('link', {\n label: ctx ? i18n(ctx, 'menu.item.link') : 'Link',\n icon: config?.linkIcon ?? linkIcon,\n active: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return commands.call(isMarkSelectedCommand.key, linkSchema.type(ctx))\n },\n onRun: (ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleLinkCommand.key)\n },\n })\n\n config?.buildToolbar?.(groupBuilder)\n\n return groupBuilder.build()\n}\n","import type { Command } from '@jvs-milkdown/kit/prose/state'\n\nimport {\n $command,\n $markAttr,\n $markSchema,\n $remark,\n} from '@jvs-milkdown/kit/utils'\nimport { visit } from 'unist-util-visit'\n\nexport const supportedFontsCache = new Map<string, boolean>()\n\nexport const isFontSupported = (fontFamily: string | null): boolean => {\n if (!fontFamily) return true\n const normalizedFont = fontFamily.replace(/['\"]/g, '')\n if (supportedFontsCache.has(normalizedFont)) {\n return supportedFontsCache.get(normalizedFont)!\n }\n\n if (typeof document === 'undefined') return true\n\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n if (!context) return true\n\n const text = 'abcdefghijklmnopqrstuvwxyz0123456789'\n const size = '72px'\n\n context.font = `${size} monospace`\n const baseMono = context.measureText(text).width\n\n context.font = `${size} sans-serif`\n const baseSans = context.measureText(text).width\n\n context.font = `${size} \"${normalizedFont}\", monospace`\n const testMono = context.measureText(text).width\n\n context.font = `${size} \"${normalizedFont}\", sans-serif`\n const testSans = context.measureText(text).width\n\n const supported = testMono !== baseMono || testSans !== baseSans\n supportedFontsCache.set(normalizedFont, supported)\n return supported\n}\n\nexport const remarkFontPlugin = $remark(\n 'remarkFont',\n () =>\n function (this: any) {\n const data = this.data()\n function add(key: string, value: unknown) {\n if (Array.isArray(data[key])) {\n data[key].push(value)\n } else {\n data[key] = [value]\n }\n }\n\n add('toMarkdownExtensions', {\n handlers: {\n fontFamily: (node: any, _: any, state: any) => {\n return `<span style=\"font-family:${node.fontFamily}\">${state.containerPhrasing(node, state)}</span>`\n },\n fontSize: (node: any, _: any, state: any) => {\n return `<span style=\"font-size:${node.fontSize}\">${state.containerPhrasing(node, state)}</span>`\n },\n },\n })\n\n return (ast: any) => {\n visit(ast, (node: any, index?: number, parent?: any) => {\n if (\n node?.type === 'html' &&\n node.value.startsWith('<span') &&\n parent &&\n index != null\n ) {\n const hasFontFamily = node.value.match(/font-family:\\s*([^\"';>]+)/)\n const hasFontSize = node.value.match(/font-size:\\s*([^\"';>]+)/)\n\n if (!hasFontFamily && !hasFontSize) return\n\n let fontFamily = null\n let fontSize = null\n let markType = null\n\n // Prioritize correctly, they should ideally be serialized into separate spans by prose to DOM\n if (hasFontFamily) {\n fontFamily = hasFontFamily[1].trim()\n markType = 'fontFamily'\n } else if (hasFontSize) {\n fontSize = hasFontSize[1].trim()\n markType = 'fontSize'\n }\n\n const endIndex = parent.children.findIndex(\n (n: any, i: number) =>\n i > index && n.type === 'html' && n.value === '</span>'\n )\n\n if (endIndex !== -1 && markType && (fontFamily || fontSize)) {\n const children = parent.children.splice(\n index,\n endIndex - index + 1\n )\n const content = children.slice(1, -1)\n const payload: any = {\n type: markType,\n children: content,\n }\n if (fontFamily) payload.fontFamily = fontFamily\n if (fontSize) payload.fontSize = fontSize\n\n parent.children.splice(index, 0, payload)\n return index + 1\n }\n }\n return\n })\n }\n }\n)\n\nexport const fontFamilyAttr = $markAttr('fontFamily')\n\nexport const fontFamilySchema = $markSchema('fontFamily', (_ctx) => ({\n inclusive: true,\n attrs: {\n fontFamily: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"font-family\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n const fontFamily = dom.style.fontFamily || null\n if (!isFontSupported(fontFamily)) return false\n return { fontFamily }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `font-family: ${mark.attrs.fontFamily}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'fontFamily',\n runner: (state, node, markType) => {\n state.openMark(markType, { fontFamily: node.fontFamily })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'fontFamily',\n runner: (state, mark) => {\n state.withMark(mark, 'fontFamily', undefined, {\n fontFamily: mark.attrs.fontFamily,\n })\n },\n },\n}))\n\nexport const fontSizeAttr = $markAttr('fontSize')\n\nexport const fontSizeSchema = $markSchema('fontSize', (_ctx) => ({\n inclusive: true,\n attrs: {\n fontSize: { default: null },\n },\n parseDOM: [\n {\n tag: 'span[style*=\"font-size\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) return false\n return { fontSize: dom.style.fontSize || null }\n },\n },\n ],\n toDOM: (mark) => {\n return ['span', { style: `font-size: ${mark.attrs.fontSize}` }, 0]\n },\n parseMarkdown: {\n match: (node) => node.type === 'fontSize',\n runner: (state, node, markType) => {\n state.openMark(markType, { fontSize: node.fontSize })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'fontSize',\n runner: (state, mark) => {\n state.withMark(mark, 'fontSize', undefined, {\n fontSize: mark.attrs.fontSize,\n })\n },\n },\n}))\n\nexport const toggleFontFamilyCommand = $command(\n 'ToggleFontFamily',\n (ctx) =>\n (fontFamily?: string | null): Command => {\n return (state, dispatch) => {\n const markType = fontFamilySchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.fontFamily === fontFamily) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (fontFamily)\n tr = tr.addStoredMark(markType.create({ fontFamily }))\n }\n } else {\n let hasSameFontFamily = false\n for (const range of ranges) {\n const { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.fontFamily === fontFamily) {\n hasSameFontFamily = true\n }\n }\n })\n }\n\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameFontFamily && fontFamily) {\n tr = tr.addMark(\n $from.pos,\n $to.pos,\n markType.create({ fontFamily })\n )\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\nexport const toggleFontSizeCommand = $command(\n 'ToggleFontSize',\n (ctx) =>\n (fontSize?: string | null): Command => {\n return (state, dispatch) => {\n const markType = fontSizeSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if (dispatch) {\n let tr = state.tr\n if ($cursor) {\n const marks = state.storedMarks || $cursor.marks()\n const currentMark = markType.isInSet(marks)\n\n if (currentMark && currentMark.attrs.fontSize === fontSize) {\n tr = tr.removeStoredMark(markType)\n } else {\n tr = tr.removeStoredMark(markType)\n if (fontSize) tr = tr.addStoredMark(markType.create({ fontSize }))\n }\n } else {\n let hasSameFontSize = false\n for (const range of ranges) {\n const { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.isText) {\n const mark = markType.isInSet(node.marks)\n if (mark && mark.attrs.fontSize === fontSize) {\n hasSameFontSize = true\n }\n }\n })\n }\n\n for (const range of ranges) {\n const { $from, $to } = range\n tr = tr.removeMark($from.pos, $to.pos, markType)\n if (!hasSameFontSize && fontSize) {\n tr = tr.addMark(\n $from.pos,\n $to.pos,\n markType.create({ fontSize })\n )\n }\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n)\n\n/**\n * Strip all font-family from external pasted HTML.\n * Internal paste (from the same editor) is detected via `data-pm-slice`\n * and left untouched so that editor-set fonts are preserved.\n */\nexport function stripFontFamilyFromExternalHTML(html: string): string {\n // ProseMirror adds data-pm-slice for internal copy-paste — skip those\n if (html.includes('data-pm-slice')) return html\n\n try {\n const template = document.createElement('template')\n template.innerHTML = html\n\n // Remove font-family from any element with inline font-family\n const styledElements = template.content.querySelectorAll(\n '[style*=\"font-family\"]'\n )\n styledElements.forEach((el) => {\n if (el instanceof HTMLElement) {\n el.style.removeProperty('font-family')\n }\n })\n\n // Remove legacy <font face=\"...\">\n const fontElements = template.content.querySelectorAll('font[face]')\n fontElements.forEach((el) => {\n if (el instanceof HTMLElement) {\n el.removeAttribute('face')\n }\n })\n\n html = template.innerHTML\n template.remove()\n } catch {\n // If HTML parsing fails, return as-is\n }\n\n return html\n}\n\nexport const fontPlugins = [\n fontFamilyAttr,\n fontFamilySchema,\n toggleFontFamilyCommand,\n fontSizeAttr,\n fontSizeSchema,\n toggleFontSizeCommand,\n remarkFontPlugin,\n]\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { Mark } from '@jvs-milkdown/kit/prose/model'\nimport type { EditorState } from '@jvs-milkdown/kit/prose/state'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\nimport {\n editorCtx,\n EditorStatus,\n editorViewCtx,\n commandsCtx,\n schemaCtx,\n} from '@jvs-milkdown/kit/core'\nimport {\n addBlockTypeCommand,\n selectTextNearPosCommand,\n} from '@jvs-milkdown/kit/preset/commonmark'\nimport { createTable, mergeCellsCommand } from '@jvs-milkdown/kit/preset/gfm'\nimport { TextSelection, NodeSelection } from '@jvs-milkdown/kit/prose/state'\nimport {\n mergeCells,\n splitCell,\n splitCellWithType,\n CellSelection,\n selectedRect,\n} from '@jvs-milkdown/kit/prose/tables'\nimport clsx from 'clsx'\n// @ts-ignore\nimport {\n defineComponent,\n type Ref,\n type ShallowRef,\n h,\n Fragment,\n computed,\n ref,\n onUnmounted,\n onMounted,\n watch,\n} from 'vue'\n\nimport type { ToolbarFeatureConfig } from '.'\n\nimport { i18n } from '../../core/locale'\nimport {\n textIcon,\n chevronDownIcon,\n alignLeftIcon,\n alignCenterIcon,\n alignRightIcon,\n indentIncreaseIcon,\n indentDecreaseIcon,\n confirmIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n quoteIcon,\n quoteIconActive,\n codeIcon,\n bulletListIcon,\n bulletListIconActive,\n orderedListIcon,\n orderedListIconActive,\n linkIcon,\n fontColorIcon,\n boldIconActive,\n alignLeftIconActive,\n alignCenterIconActive,\n alignRightIconActive,\n h1IconActive,\n boldIcon,\n h2IconActive,\n h3IconActive,\n h4IconActive,\n h5IconActive,\n h6IconActive,\n italicIcon,\n italicIconActive,\n textIconActive,\n underlineIcon,\n underlineIconActive,\n strikethroughIcon,\n strikethroughIconActive,\n dividerIcon,\n dividerIconActive,\n tableIcon,\n moreIcon,\n mergeCellIcon,\n splitCellIcon,\n formatPainterIcon,\n} from '../../icons'\nimport {\n incrementPopupCount,\n decrementPopupCount,\n} from '../../utils/fixed-toolbar-popup-state'\nimport { keepAlive } from '../../utils/keep-alive'\nimport { menuAPI } from '../block-edit/menu'\nimport { getGroups as getBlockGroups } from '../block-edit/menu/config'\nimport {\n toggleTextColorCommand,\n toggleBgColorCommand,\n textColorSchema,\n bgColorSchema,\n} from './color'\nimport { getGroups as getToolbarGroups, type ToolbarItem } from './config'\nimport {\n toggleFontFamilyCommand,\n toggleFontSizeCommand,\n fontFamilySchema,\n fontSizeSchema,\n isFontSupported,\n} from './font'\n\nconst activeIconMap: Record<string, string> = {\n [boldIcon]: boldIconActive,\n [alignLeftIcon]: alignLeftIconActive,\n [alignCenterIcon]: alignCenterIconActive,\n [alignRightIcon]: alignRightIconActive,\n [h1Icon]: h1IconActive,\n [h2Icon]: h2IconActive,\n [h3Icon]: h3IconActive,\n [h4Icon]: h4IconActive,\n [h5Icon]: h5IconActive,\n [h6Icon]: h6IconActive,\n [italicIcon]: italicIconActive,\n [textIcon]: textIconActive,\n [underlineIcon]: underlineIconActive,\n [strikethroughIcon]: strikethroughIconActive,\n [quoteIcon]: quoteIconActive,\n [orderedListIcon]: orderedListIconActive,\n [bulletListIcon]: bulletListIconActive,\n [dividerIcon]: dividerIconActive,\n // [highLineCodeIcon]: highLineCodeIconActive,\n}\n\nkeepAlive(h, Fragment)\n\ntype ToolbarProps = {\n ctx: Ctx\n hide: () => void\n show: Ref<boolean>\n state: ShallowRef<EditorState>\n config?: ToolbarFeatureConfig\n isFixed?: boolean\n}\n\ninterface FormatPainterState {\n marks: Mark[]\n align?: string | null\n blockType?: string | null\n blockAttrs?: Record<string, any> | null\n isPersistent: boolean\n}\n\nconst formatPainterStates = new WeakMap<any, Ref<FormatPainterState | null>>()\nconst formatPainterHandlers = new WeakMap<any, (ev: MouseEvent) => void>()\nconst formatPainterIgnoreNext = new WeakMap<any, { value: boolean }>()\nconst cursorStyleEls = new WeakMap<any, HTMLStyleElement>()\n\nexport const Toolbar = defineComponent<ToolbarProps>({\n props: {\n ctx: { type: Object as any, required: true },\n hide: { type: Function as any, required: true },\n show: { type: Object as any, required: true },\n state: { type: Object as any, required: true },\n config: { type: Object as any, required: false },\n isFixed: { type: Boolean, required: false },\n },\n setup(props: any) {\n const { ctx, config, isFixed } = props\n\n const showBlockMenu = ref(false)\n const blockMenuPos = ref({ top: 0, left: 0 })\n let hideBlockTimer: ReturnType<typeof setTimeout> | null = null\n\n const showAlignMenu = ref(false)\n const alignMenuPos = ref({ top: 0, left: 0 })\n let hideAlignTimer: ReturnType<typeof setTimeout> | null = null\n\n const showColorMenu = ref(false)\n const colorMenuPos = ref({ top: 0, left: 0 })\n let hideColorTimer: ReturnType<typeof setTimeout> | null = null\n\n const showFontFamilyMenu = ref(false)\n const fontFamilyMenuPos = ref({ top: 0, left: 0 })\n let hideFontFamilyTimer: ReturnType<typeof setTimeout> | null = null\n\n const showFontSizeMenu = ref(false)\n const fontSizeMenuPos = ref({ top: 0, left: 0 })\n let hideFontSizeTimer: ReturnType<typeof setTimeout> | null = null\n\n const showTableMenu = ref(false)\n const tableMenuPos = ref({ top: 0, left: 0 })\n const tableHoverIndices = ref({ r: 0, c: 0 })\n let hideTableTimer: ReturnType<typeof setTimeout> | null = null\n\n // --- Format Painter ---\n let formatPainterState = formatPainterStates.get(ctx)\n if (!formatPainterState) {\n formatPainterState = ref<FormatPainterState | null>(null)\n formatPainterStates.set(ctx, formatPainterState)\n }\n\n let formatPainterIgnore = formatPainterIgnoreNext.get(ctx)\n if (!formatPainterIgnore) {\n formatPainterIgnore = { value: false }\n formatPainterIgnoreNext.set(ctx, formatPainterIgnore)\n }\n\n let formatPainterHandler = formatPainterHandlers.get(ctx)\n if (!formatPainterHandler) {\n formatPainterHandler = (ev: MouseEvent) => {\n if (!formatPainterState!.value) return\n\n if (formatPainterIgnore!.value) {\n formatPainterIgnore!.value = false\n return\n }\n\n const currentView = ctx.get(editorViewCtx)\n\n // Ignore if clicked on the toolbar itself\n const targetElement =\n ev.target instanceof Element\n ? ev.target\n : (ev.target as Node).parentElement\n if (\n targetElement &&\n targetElement.closest('.milkdown-toolbar, .milkdown-fixed-toolbar')\n ) {\n return\n }\n\n // Delay to let ProseMirror update its internal state.selection based on the new DOM selection\n setTimeout(() => {\n if (!formatPainterState!.value) return\n\n const { state: curState, dispatch } = currentView\n const { selection: curSelection, tr } = curState\n const {\n marks: savedMarks,\n align: savedAlign,\n blockType: savedBlockType,\n blockAttrs: savedBlockAttrs,\n isPersistent,\n } = formatPainterState!.value\n\n let applied = false\n if (!curSelection.empty) {\n savedMarks.forEach((m: any) => {\n tr.addMark(curSelection.from, curSelection.to, m)\n })\n if (savedAlign) {\n curState.doc.nodesBetween(\n curSelection.from,\n curSelection.to,\n (node: any, pos: number) => {\n if (\n node.type.name === 'paragraph' ||\n node.type.name === 'heading'\n ) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n align: savedAlign,\n })\n }\n }\n )\n }\n if (savedBlockType) {\n curState.doc.nodesBetween(\n curSelection.from,\n curSelection.to,\n (node: any, pos: number) => {\n if (node.type.name === 'paragraph') {\n tr.setNodeMarkup(\n pos,\n curState.schema.nodes[savedBlockType],\n {\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n }\n )\n } else if (node.type.name === 'heading' && savedBlockAttrs) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n })\n }\n }\n )\n }\n dispatch(tr)\n applied = true\n } else {\n if (savedMarks.length > 0) {\n const $pos = curSelection.$from\n if ($pos.parent.isTextblock) {\n const text = $pos.parent.textContent\n const offset = $pos.parentOffset\n let start = offset\n let end = offset\n const isWordChar = (char: string) =>\n !/[\\s,.\\-!?;:()[\\]{}\"'“”‘’,。!?;:()【】《》、\\n\\r]/.test(\n char\n )\n while (start > 0 && isWordChar(text[start - 1])) start--\n while (end < text.length && isWordChar(text[end])) end++\n\n if (start < end) {\n savedMarks.forEach((m: any) => {\n tr.addMark($pos.start() + start, $pos.start() + end, m)\n })\n }\n }\n }\n\n if (savedAlign) {\n const pos = curSelection.$from.before(curSelection.$from.depth)\n const node = curState.doc.nodeAt(pos)\n if (\n node &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n align: savedAlign,\n })\n }\n }\n\n if (savedBlockType) {\n const pos = curSelection.$from.before(curSelection.$from.depth)\n const node = curState.doc.nodeAt(pos)\n if (node && node.type.name === 'paragraph') {\n tr.setNodeMarkup(pos, curState.schema.nodes[savedBlockType], {\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n })\n } else if (\n node &&\n node.type.name === 'heading' &&\n savedBlockAttrs\n ) {\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n ...savedBlockAttrs,\n ...(savedAlign ? { align: savedAlign } : {}),\n })\n }\n }\n\n tr.setStoredMarks(savedMarks)\n dispatch(tr)\n applied = true\n }\n\n if (applied && !isPersistent) {\n formatPainterState!.value = null\n document.removeEventListener('pointerup', formatPainterHandler!)\n }\n }, 50)\n }\n formatPainterHandlers.set(ctx, formatPainterHandler)\n }\n\n const toggleFormatPainter = (isPersistent: boolean) => {\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { selection } = state\n\n let marks: Mark[] = []\n if (selection.empty) {\n marks = state.storedMarks\n ? [...state.storedMarks]\n : [...selection.$from.marks()]\n } else {\n let foundMarks: Mark[] | null = null\n state.doc.nodesBetween(selection.from, selection.to, (node: any) => {\n if (foundMarks) return false\n if (node.isInline) {\n foundMarks = [...node.marks]\n return false\n }\n return undefined\n })\n marks = foundMarks || []\n }\n\n let align: string | null = null\n let foundAlign: string | null = null\n state.doc.nodesBetween(selection.from, selection.to, (node: any) => {\n if (foundAlign) return false\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n foundAlign = node.attrs.align || null\n return false\n }\n return undefined\n })\n\n if (!foundAlign) {\n const parent = selection.$from.parent\n if (\n parent &&\n (parent.type.name === 'paragraph' || parent.type.name === 'heading')\n ) {\n foundAlign = parent.attrs.align || null\n }\n }\n align = foundAlign\n\n // Capture block type (heading level) if selection is within a heading\n let blockType: string | null = null\n let blockAttrs: Record<string, any> | null = null\n {\n const parent = selection.$from.parent\n if (parent.type.name === 'heading') {\n blockType = 'heading'\n blockAttrs = { level: parent.attrs.level }\n }\n }\n\n formatPainterState!.value = {\n marks,\n align,\n blockType,\n blockAttrs,\n isPersistent,\n }\n document.removeEventListener('pointerup', formatPainterHandler!)\n\n setTimeout(() => {\n document.addEventListener('pointerup', formatPainterHandler!)\n }, 0)\n }\n\n const handleFormatPainterClick = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (formatPainterState!.value) {\n formatPainterState!.value = null\n document.removeEventListener('pointerup', formatPainterHandler!)\n } else {\n formatPainterIgnore!.value = true\n toggleFormatPainter(false)\n }\n }\n\n const handleFormatPainterDblClick = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n toggleFormatPainter(true)\n }\n\n watch(\n () => formatPainterState!.value,\n (newVal: any) => {\n if (newVal) {\n let cursorStyleEl = cursorStyleEls.get(ctx)\n if (!cursorStyleEl) {\n cursorStyleEl = document.createElement('style')\n // We must replace currentColor with a valid color for data URI (e.g., black or #363B4C)\n const encodedSvg = encodeURIComponent(\n formatPainterIcon.replace(/currentColor/g, '#363B4C')\n )\n cursorStyleEl.innerHTML = `.milkdown .ProseMirror, .milkdown .ProseMirror * { cursor: url(\"data:image/svg+xml;utf8,${encodedSvg}\") 0 16, auto !important; }`\n document.head.appendChild(cursorStyleEl)\n cursorStyleEls.set(ctx, cursorStyleEl)\n }\n } else {\n const cursorStyleEl = cursorStyleEls.get(ctx)\n if (cursorStyleEl) {\n cursorStyleEl.remove()\n cursorStyleEls.delete(ctx)\n }\n }\n }\n )\n\n onUnmounted(() => {\n // Clean up pointerup listener only if it's the last toolbar instance?\n // Actually, keep it simple, let it be cleaned up when format painter is turned off.\n // But if the component unmounts, maybe we should remove the style to be safe.\n })\n\n // --- Overflow menu (fixed toolbar only) ---\n const toolbarContainerRef = ref<HTMLElement | null>(null)\n const overflowVisibleCount = ref(Infinity)\n const totalSectionCount = ref(Infinity)\n const showOverflowMenu = ref(false)\n const overflowMenuPos = ref<{\n top: number\n left?: number\n right?: number\n }>({ top: 0 })\n const cachedWidths = new Map<number, number>()\n\n // Track popup state for fixed toolbar → notify floating toolbar\n const anyFixedPopup = computed(\n () =>\n !!isFixed &&\n (showBlockMenu.value ||\n showAlignMenu.value ||\n showColorMenu.value ||\n showFontFamilyMenu.value ||\n showFontSizeMenu.value ||\n showTableMenu.value ||\n showOverflowMenu.value)\n )\n watch(anyFixedPopup, (val) => {\n if (val) incrementPopupCount()\n else decrementPopupCount()\n })\n\n const getMenuLeftPos = (rect: DOMRect, menuWidth: number) => {\n let left = rect.left\n if (left + menuWidth > window.innerWidth) {\n left = Math.max(10, window.innerWidth - menuWidth - 10)\n }\n return left\n }\n\n const measureChild = (child: HTMLElement, index: number): number => {\n const w = child.offsetWidth\n if (w > 0) {\n const style = window.getComputedStyle(child)\n const total =\n w + parseFloat(style.marginLeft) + parseFloat(style.marginRight)\n cachedWidths.set(index, total)\n return total\n }\n return cachedWidths.get(index) || 0\n }\n\n let lastContainerWidth = 0\n\n const computeOverflow = () => {\n if (!toolbarContainerRef.value) return\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return\n const view = ctx.get(editorViewCtx)\n if (!view || !view.dom) return\n\n const container = toolbarContainerRef.value\n\n if (!isFixed) {\n const containerDOM =\n view.dom.closest('.milkdown-editor-container') ||\n view.dom.closest('.milkdown') ||\n view.dom\n if (containerDOM) {\n container.style.maxWidth = `${containerDOM.clientWidth - 32}px`\n }\n }\n\n // For fixed toolbar: use available space in parent (minus MenuBar & separator)\n // instead of container's own width, since container is no longer flex:1\n let containerWidth: number\n if (isFixed) {\n const parent = container.parentElement\n if (parent) {\n const siblings = Array.from(parent.children) as HTMLElement[]\n let siblingsWidth = 0\n for (const s of siblings) {\n if (s !== container) {\n siblingsWidth += s.offsetWidth\n }\n }\n // Account for gaps (12px per gap, n-1 gaps for n children)\n const gapCount = Math.max(0, siblings.length)\n containerWidth = parent.clientWidth - siblingsWidth - gapCount * 12\n } else {\n containerWidth = container.clientWidth\n }\n } else {\n const containerDOM =\n view.dom.closest('.milkdown-editor-container') ||\n view.dom.closest('.milkdown') ||\n view.dom\n containerWidth = containerDOM ? containerDOM.clientWidth - 32 : 0\n }\n\n if (showOverflowMenu.value) {\n showOverflowMenu.value = false\n }\n const MORE_BUTTON_WIDTH = 56\n const children = Array.from(container.children) as HTMLElement[]\n const toolbarChildren = children.filter(\n (el): el is HTMLElement =>\n el.style.position !== 'fixed' && el.dataset.overflowButton !== 'true'\n )\n\n // Total width using cached widths for hidden items\n let totalWidth = 0\n for (let i = 0; i < toolbarChildren.length; i++) {\n const child = toolbarChildren[i]!\n totalWidth += measureChild(child, i)\n }\n\n if (totalWidth === 0) {\n return\n }\n\n if (containerWidth === lastContainerWidth) {\n return\n }\n lastContainerWidth = containerWidth\n\n if (totalWidth <= containerWidth) {\n overflowVisibleCount.value = Infinity\n totalSectionCount.value = toolbarChildren.length\n cachedWidths.clear()\n return\n }\n\n // Calculate how many fit with more button reservation\n const availableWidth = containerWidth - MORE_BUTTON_WIDTH\n let accumulated = 0\n let visibleCount = 0\n for (let i = 0; i < toolbarChildren.length; i++) {\n const child = toolbarChildren[i]!\n accumulated += measureChild(child, i)\n if (accumulated <= availableWidth) {\n visibleCount++\n } else {\n break\n }\n }\n overflowVisibleCount.value = visibleCount\n totalSectionCount.value = toolbarChildren.length\n }\n\n const handleTableEnter = (e: MouseEvent) => {\n if (hideTableTimer) clearTimeout(hideTableTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n tableMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 250),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = true\n }\n const handleTableLeave = () => {\n hideTableTimer = setTimeout(() => {\n showTableMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n }, 150)\n }\n\n const runTableInsert = (rows: number, cols: number) => {\n const commands = ctx.get(commandsCtx)\n const view = ctx.get(editorViewCtx)\n\n const { $from } = view.state.selection\n let tableEndPos: number | null = null\n for (let d = $from.depth; d > 0; d--) {\n if ($from.node(d).type.name === 'table') {\n tableEndPos = $from.after(d)\n break\n }\n }\n\n if (tableEndPos !== null) {\n const { tr } = view.state\n const tableNode = createTable(ctx, rows, cols)\n view.dispatch(tr.insert(tableEndPos, tableNode))\n commands.call(selectTextNearPosCommand.key, {\n pos: tableEndPos,\n })\n } else {\n const { from } = view.state.selection\n commands.call(addBlockTypeCommand.key, {\n nodeType: createTable(ctx, rows, cols),\n })\n\n commands.call(selectTextNearPosCommand.key, {\n pos: from,\n })\n }\n\n showTableMenu.value = false\n showOverflowMenu.value = false\n tableHoverIndices.value = { r: 0, c: 0 }\n props.hide()\n }\n\n const handleBlockEnter = (e: MouseEvent) => {\n if (hideBlockTimer) clearTimeout(hideBlockTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n blockMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 200),\n }\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showBlockMenu.value = true\n }\n const handleBlockLeave = () => {\n hideBlockTimer = setTimeout(() => {\n showBlockMenu.value = false\n }, 150)\n }\n\n const handleAlignEnter = (e: MouseEvent) => {\n if (hideAlignTimer) clearTimeout(hideAlignTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n alignMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 180),\n }\n showBlockMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showAlignMenu.value = true\n }\n const handleAlignLeave = () => {\n hideAlignTimer = setTimeout(() => {\n showAlignMenu.value = false\n }, 150)\n }\n\n const handleColorEnter = (e: MouseEvent) => {\n if (hideColorTimer) clearTimeout(hideColorTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n colorMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 246),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showFontFamilyMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showColorMenu.value = true\n }\n const handleColorLeave = () => {\n hideColorTimer = setTimeout(() => {\n showColorMenu.value = false\n }, 150)\n }\n\n const handleFontFamilyEnter = (e: MouseEvent) => {\n if (hideFontFamilyTimer) clearTimeout(hideFontFamilyTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n fontFamilyMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 180),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontSizeMenu.value = false\n showTableMenu.value = false\n showFontFamilyMenu.value = true\n }\n const handleFontFamilyLeave = () => {\n hideFontFamilyTimer = setTimeout(() => {\n showFontFamilyMenu.value = false\n }, 150)\n }\n\n const handleFontSizeEnter = (e: MouseEvent) => {\n if (hideFontSizeTimer) clearTimeout(hideFontSizeTimer)\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n fontSizeMenuPos.value = {\n top: rect.bottom + 4,\n left: getMenuLeftPos(rect, 120),\n }\n showBlockMenu.value = false\n showAlignMenu.value = false\n showColorMenu.value = false\n showFontFamilyMenu.value = false\n showTableMenu.value = false\n showFontSizeMenu.value = true\n }\n const handleFontSizeLeave = () => {\n hideFontSizeTimer = setTimeout(() => {\n showFontSizeMenu.value = false\n }, 150)\n }\n\n onUnmounted(() => {\n if (hideBlockTimer) clearTimeout(hideBlockTimer)\n if (hideAlignTimer) clearTimeout(hideAlignTimer)\n if (hideColorTimer) clearTimeout(hideColorTimer)\n if (hideFontFamilyTimer) clearTimeout(hideFontFamilyTimer)\n if (hideFontSizeTimer) clearTimeout(hideFontSizeTimer)\n if (hideTableTimer) clearTimeout(hideTableTimer)\n if (anyFixedPopup.value) decrementPopupCount()\n })\n\n // --- Overflow lifecycle (fixed toolbar only) ---\n let overflowResizeObserver: ResizeObserver | null = null\n let overflowSetupDone = false\n\n const setupOverflowObserver = () => {\n if (!toolbarContainerRef.value || overflowSetupDone) return\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) {\n setTimeout(setupOverflowObserver, 50)\n return\n }\n const view = ctx.get(editorViewCtx)\n if (!view || !view.dom) {\n setTimeout(setupOverflowObserver, 50)\n return\n }\n overflowSetupDone = true\n overflowResizeObserver = new ResizeObserver(() => {\n computeOverflow()\n })\n overflowResizeObserver.observe(toolbarContainerRef.value)\n if (isFixed) {\n // Also observe parent so resize is detected when window grows\n const parent = toolbarContainerRef.value.parentElement\n if (parent) overflowResizeObserver.observe(parent)\n } else {\n overflowResizeObserver.observe(view.dom)\n\n const containerDOM = view.dom.closest('.milkdown-editor-container')\n if (containerDOM) {\n overflowResizeObserver.observe(containerDOM)\n }\n\n const rootDOM = view.dom.closest('.milkdown')\n if (rootDOM) {\n overflowResizeObserver.observe(rootDOM)\n }\n }\n computeOverflow()\n }\n\n const handleOverflowDocumentClick = (e: MouseEvent) => {\n if (!showOverflowMenu.value) return\n const target = e.target as HTMLElement\n if (\n !target.closest('.overflow-menu-popup') &&\n !target.closest('[data-overflow-button]')\n ) {\n showOverflowMenu.value = false\n }\n }\n\n onMounted(() => {\n document.addEventListener('click', handleOverflowDocumentClick, true)\n // Defer to ensure element is in the document and layout is computed.\n // Vue mounts to a detached div first, then FixedToolbarView inserts it\n // into the document after the constructor runs. setTimeout(0) ensures\n // we run after the entire constructor has completed.\n setTimeout(setupOverflowObserver, 0)\n })\n\n onUnmounted(() => {\n if (overflowResizeObserver) {\n overflowResizeObserver.disconnect()\n overflowResizeObserver = null\n }\n document.removeEventListener('click', handleOverflowDocumentClick, true)\n })\n\n const toolbarGroupInfo = computed(() => getToolbarGroups(config, ctx))\n\n watch(toolbarGroupInfo, () => {\n cachedWidths.clear()\n overflowVisibleCount.value = Infinity\n lastContainerWidth = 0\n setTimeout(computeOverflow, 0)\n })\n\n watch(\n () => props.show?.value,\n (val) => {\n if (val) {\n cachedWidths.clear()\n overflowVisibleCount.value = Infinity\n lastContainerWidth = 0\n setTimeout(computeOverflow, 0)\n }\n }\n )\n\n const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {\n e.preventDefault()\n if (ctx) fn(ctx)\n }\n\n function checkActive(checker: ToolbarItem['active']) {\n keepAlive(props.state, props.state?.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return false\n return checker(ctx)\n }\n\n const blockGroups = computed(() => getBlockGroups('', undefined, ctx))\n\n const activeBlockItem = computed(() => {\n keepAlive(props.state, props.state?.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return null\n\n const view = ctx.get(editorViewCtx)\n const { $from } = view.state.selection\n let activeNodeName = 'paragraph'\n let level = 0\n\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (node.isBlock) {\n activeNodeName = node.type.name\n if (activeNodeName === 'heading') level = node.attrs.level || 0\n // When inside a list_item, check the parent list type\n if (activeNodeName === 'list_item' && d > 1) {\n const parent = $from.node(d - 1)\n activeNodeName = parent.type.name\n }\n break\n }\n }\n\n let targetIcon = textIcon\n if (activeNodeName === 'heading') {\n if (level === 1) targetIcon = h1Icon\n else if (level === 2) targetIcon = h2Icon\n else if (level === 3) targetIcon = h3Icon\n else if (level === 4) targetIcon = h4Icon\n else if (level === 5) targetIcon = h5Icon\n else if (level === 6) targetIcon = h6Icon\n } else if (activeNodeName === 'blockquote') {\n targetIcon = quoteIcon\n } else if (activeNodeName === 'code_block') {\n targetIcon = codeIcon\n } else if (activeNodeName === 'bullet_list') {\n targetIcon = bulletListIcon\n } else if (activeNodeName === 'ordered_list') {\n targetIcon = orderedListIcon\n }\n\n return targetIcon\n })\n\n const currentAlignIndent = computed(() => {\n keepAlive(props.state, props.state?.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created) return { align: 'left', indent: 0 }\n const view = ctx.get(editorViewCtx)\n let align = 'left'\n let indent = 0\n const { selection } = view.state\n // Handle image-block selected via NodeSelection\n if (\n selection instanceof NodeSelection &&\n selection.node.type.name === 'image-block'\n ) {\n align = selection.node.attrs.align || 'center'\n return { align, indent }\n }\n const { $from } = selection\n for (let d = $from.depth; d > 0; d--) {\n const node = $from.node(d)\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n align = node.attrs.align || 'left'\n indent = node.attrs.indent || 0\n break\n }\n }\n return { align, indent }\n })\n\n const setAlign = (alignValue: string) => {\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { from, to } = state.selection\n const tr = state.tr\n let modified = false\n\n // Handle image-block selected via NodeSelection\n if (\n state.selection instanceof NodeSelection &&\n state.selection.node.type.name === 'image-block'\n ) {\n tr.setNodeMarkup(from, undefined, {\n ...state.selection.node.attrs,\n align: alignValue,\n })\n modified = true\n } else {\n state.doc.nodesBetween(from, to, (node: any, pos: number) => {\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n align: alignValue,\n })\n modified = true\n }\n })\n }\n\n if (modified) {\n view.dispatch(tr)\n }\n showAlignMenu.value = false\n }\n\n const setIndent = (adjustment: number) => {\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const { from, to } = state.selection\n const tr = state.tr\n let modified = false\n\n state.doc.nodesBetween(from, to, (node: any, pos: number) => {\n if (\n node.isBlock &&\n (node.type.name === 'paragraph' || node.type.name === 'heading')\n ) {\n const newIndent = Math.max(0, (node.attrs.indent || 0) + adjustment)\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n indent: newIndent,\n })\n modified = true\n }\n })\n\n if (modified) {\n view.dispatch(tr)\n }\n }\n\n const canMerge = computed(() => {\n keepAlive(props.state, props.state?.value)\n const view = ctx?.get(editorViewCtx)\n if (!view) return false\n return mergeCells(view.state)\n })\n\n const canSplit = computed(() => {\n keepAlive(props.state, props.state?.value)\n const view = ctx?.get(editorViewCtx)\n if (!view) return false\n return splitCell(view.state)\n })\n\n const onMergeCells = () => {\n if (!ctx) return\n const view = ctx.get(editorViewCtx)\n if (!view || !view.editable) return\n const commands = ctx.get(commandsCtx)\n commands.call(mergeCellsCommand.key)\n requestAnimationFrame(() => view.focus())\n showAlignMenu.value = false\n }\n\n const onSplitCell = () => {\n if (!ctx) return\n const view = ctx.get(editorViewCtx)\n if (!view || !view.editable) return\n\n const { state } = view\n const { selection } = state\n\n let cellNode: any = null\n let cellPos: number | null = null\n\n if (selection instanceof CellSelection) {\n selection.forEachCell((cell: any, pos: number) => {\n if (\n !cellNode &&\n ((cell.attrs.rowspan ?? 1) > 1 || (cell.attrs.colspan ?? 1) > 1)\n ) {\n cellNode = cell\n cellPos = pos\n }\n })\n } else {\n const { $from } = selection as any\n for (let d = $from.depth; d > 0; d--) {\n const n = $from.node(d)\n if (n.type.name === 'table_cell' || n.type.name === 'table_header') {\n cellNode = n\n cellPos = $from.before(d)\n break\n }\n }\n }\n\n if (!cellNode || cellPos == null) return\n if (\n (cellNode.attrs.colspan ?? 1) == 1 &&\n (cellNode.attrs.rowspan ?? 1) == 1\n )\n return\n\n const $cellPos = state.doc.resolve(cellPos + 2)\n view.dispatch(state.tr.setSelection(TextSelection.near($cellPos)))\n\n const newState = view.state\n const { table } = selectedRect(newState)\n const { schema } = newState\n\n splitCellWithType(({ row }) => {\n const rowNode = table.child(row)\n return rowNode.type.name === 'table_header_row'\n ? schema.nodes.table_header!\n : schema.nodes.table_cell!\n })(newState, (tr) => {\n view.dispatch(tr)\n })\n\n requestAnimationFrame(() => view.focus())\n showAlignMenu.value = false\n }\n\n const currentColorState = computed(() => {\n keepAlive(props.state, props.state?.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created)\n return { textColor: null, bgColor: null }\n\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const schema = ctx.get(schemaCtx)\n\n const tcHasMark = schema.marks['textColor']\n const bcHasMark = schema.marks['bgColor']\n\n if (!tcHasMark || !bcHasMark) return { textColor: null, bgColor: null }\n\n const tcType = textColorSchema.type(ctx)\n const bcType = bgColorSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n if ($cursor) {\n let textColor = null\n let bgColor = null\n const marks = state.storedMarks || $cursor.marks()\n for (const mark of marks) {\n if (mark.type === tcType) textColor = mark.attrs.color\n if (mark.type === bcType) bgColor = mark.attrs.color\n }\n return { textColor, bgColor }\n } else {\n const textColors = new Set<string | null>()\n const bgColors = new Set<string | null>()\n\n for (const range of ranges) {\n let { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node: any) => {\n if (node.isText) {\n const tcMark = tcType.isInSet(node.marks)\n const bcMark = bcType.isInSet(node.marks)\n textColors.add(tcMark ? tcMark.attrs.color : null)\n bgColors.add(bcMark ? bcMark.attrs.color : null)\n }\n })\n }\n\n const textColor =\n textColors.size === 1 ? Array.from(textColors)[0] : 'mixed'\n const bgColor = bgColors.size === 1 ? Array.from(bgColors)[0] : 'mixed'\n\n return { textColor, bgColor }\n }\n })\n\n const setTextColor = (color: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleTextColorCommand.key, color)\n }\n\n const setBgColor = (color: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleBgColorCommand.key, color)\n }\n\n const clearColor = () => {\n const view = ctx.get(editorViewCtx)\n const { state, dispatch } = view\n const { tr } = state\n const { from, to, empty } = state.selection\n const schema = ctx.get(schemaCtx)\n\n const tcHasMark = schema.marks['textColor']\n const bcHasMark = schema.marks['bgColor']\n\n if (!tcHasMark || !bcHasMark) return\n\n const textColorType = textColorSchema.type(ctx)\n const bgColorType = bgColorSchema.type(ctx)\n\n if (empty) {\n dispatch(\n tr.removeStoredMark(textColorType).removeStoredMark(bgColorType)\n )\n } else {\n dispatch(\n tr\n .removeMark(from, to, textColorType)\n .removeMark(from, to, bgColorType)\n )\n }\n showColorMenu.value = false\n }\n\n const currentFontState = computed(() => {\n keepAlive(props.state, props.state?.value)\n const status = ctx?.get(editorCtx)?.status\n if (status !== EditorStatus.Created)\n return { fontFamily: null, fontSize: null }\n\n const view = ctx.get(editorViewCtx)\n const { state } = view\n const schema = ctx.get(schemaCtx)\n\n const ffHasMark = schema.marks['fontFamily']\n const fsHasMark = schema.marks['fontSize']\n\n if (!ffHasMark || !fsHasMark) {\n return { fontFamily: null, fontSize: null }\n }\n\n const ffType = fontFamilySchema.type(ctx)\n const fsType = fontSizeSchema.type(ctx)\n const { $cursor, ranges } = state.selection as any\n\n let result: { fontFamily: string | null; fontSize: string | null } = {\n fontFamily: null,\n fontSize: null,\n }\n if ($cursor) {\n let fontFamily: string | null = null\n let fontSize: string | null = null\n const marks = state.storedMarks || $cursor.marks()\n for (const mark of marks) {\n if (mark.type === ffType)\n fontFamily = (mark.attrs.fontFamily as string | null) || null\n if (mark.type === fsType)\n fontSize = (mark.attrs.fontSize as string | null) || null\n }\n result = { fontFamily, fontSize }\n } else {\n const fontFamilies = new Set<string | null>()\n const fontSizes = new Set<string | null>()\n\n for (const range of ranges) {\n let { $from, $to } = range\n state.doc.nodesBetween($from.pos, $to.pos, (node: any) => {\n if (node.isText) {\n const ffMark = ffType.isInSet(node.marks)\n const fsMark = fsType.isInSet(node.marks)\n fontFamilies.add(\n ffMark ? (ffMark.attrs.fontFamily as string | null) : null\n )\n fontSizes.add(\n fsMark ? (fsMark.attrs.fontSize as string | null) : null\n )\n }\n })\n }\n\n const fontFamily =\n fontFamilies.size === 1 ? Array.from(fontFamilies)[0]! : 'mixed'\n const fontSize =\n fontSizes.size === 1 ? Array.from(fontSizes)[0]! : 'mixed'\n\n result = { fontFamily, fontSize }\n }\n return result\n })\n\n const setFontFamily = (fontFamily: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleFontFamilyCommand.key, fontFamily)\n showFontFamilyMenu.value = false\n }\n\n const setFontSize = (fontSize: string | null) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleFontSizeCommand.key, fontSize)\n showFontSizeMenu.value = false\n }\n\n const renderSubMenuItem = (\n iconHtml: string,\n label: string,\n isActive: boolean,\n onClick: () => void,\n disabled = false\n ) => {\n return (\n <div\n class={['custom-menu-row', disabled ? 'disabled' : '']}\n style={{\n opacity: disabled ? 0.5 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n padding: '4px 12px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '14px',\n borderRadius: '4px',\n margin: '2px 8px',\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) onClick()\n }}\n onMouseenter={(e: MouseEvent) => {\n if (!disabled)\n (e.currentTarget as HTMLElement).style.backgroundColor =\n 'var(--crepe-color-hover)'\n }}\n onMouseleave={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'transparent'\n }}\n >\n <div\n class=\"custom-menu-row-left\"\n style={{ display: 'flex', alignItems: 'center', gap: '8px' }}\n >\n <span\n style={{\n width: '16px',\n height: '16px',\n display: 'flex',\n alignItems: 'center',\n }}\n innerHTML={iconHtml}\n />\n <span\n style={{\n color: isActive ? 'var(--crepe-color-primary)' : '#363B4C',\n userSelect: 'none',\n }}\n >\n {label}\n </span>\n </div>\n {isActive ? (\n <span\n style={{\n width: '16px',\n height: '16px',\n color: 'var(--crepe-color-primary)',\n }}\n >\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n )\n }\n\n return () => {\n // Find the formatting items\n const formatItems: ToolbarItem[] = []\n toolbarGroupInfo.value.forEach((group: any) => {\n if (group.items) {\n // We only want inline format items: bold, italic, strikethrough, underline, link, code\n group.items.forEach((item: any) => {\n // Add logic if it's formatting or inline. We know exactly what's inside.\n // But actually we injected underline in functionGroup and formattingGroup.\n if (\n [\n 'bold',\n 'italic',\n 'strikethrough',\n 'underline',\n 'link',\n 'code',\n ].includes(item.label.toLowerCase()) ||\n item.icon === textIcon ||\n item.icon === linkIcon\n ) {\n // Heuristic: check label or icon\n }\n formatItems.push(item)\n })\n }\n })\n\n // Ensure proper formatting tools are visible\n const nonHeadingGroups = toolbarGroupInfo.value.filter((group: any) => {\n if ((group as any).key === 'heading') return false\n if (props.isFixed && (group as any).key === 'function') return false\n return true\n })\n\n const isSectionOverflowed = (idx: number) =>\n idx >= overflowVisibleCount.value\n\n const hasOverflow = overflowVisibleCount.value < totalSectionCount.value\n\n return (\n <div\n ref={toolbarContainerRef}\n style={{\n display: 'flex',\n alignItems: 'stretch',\n minWidth: 0,\n overflow: 'hidden',\n }}\n >\n {/* Section 0: Block Type Dropdown */}\n <div\n class=\"toolbar-item\"\n onMouseenter={handleBlockEnter}\n onMouseleave={handleBlockLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(0) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n flexShrink: 0,\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={activeBlockItem.value || textIcon}\n />\n <span\n style={{ width: '20px', display: 'flex', alignItems: 'center' }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Format Painter */}\n <div\n style={{\n position: 'relative',\n display: isSectionOverflowed(1) ? 'none' : 'flex',\n flexShrink: 0,\n }}\n >\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n formatPainterState!.value && 'active'\n )}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n handleFormatPainterClick(e as any)\n }}\n onDblclick={handleFormatPainterDblClick}\n title={i18n(ctx, 'toolbar.formatPainter') || 'Format Painter'}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: formatPainterState!.value\n ? 'var(--crepe-color-selected, var(--crepe-color-hover))'\n : undefined,\n }}\n >\n <span\n style={\n {\n display: 'inline-flex',\n alignItems: 'center',\n '--toolbar-icon-color': formatPainterState!.value\n ? 'var(--crepe-color-primary)'\n : '#363B4C',\n } as any\n }\n innerHTML={formatPainterIcon}\n />\n </button>\n </div>\n\n {/* Section 1: Divider */}\n <div\n class=\"divider\"\n style={{\n margin: '0 4px',\n alignSelf: 'center',\n display: isSectionOverflowed(2) ? 'none' : undefined,\n flexShrink: 0,\n }}\n ></div>\n\n {/* Section 2: Font Family Dropdown */}\n <div\n class=\"toolbar-item custom-font-family-item\"\n onMouseenter={handleFontFamilyEnter}\n onMouseleave={handleFontFamilyLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(3) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n minWidth: '50px',\n flexShrink: 0,\n }}\n >\n <span\n style={{\n fontSize: '13px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '80px',\n color: '#363B4C',\n }}\n >\n {(() => {\n const fontState = currentFontState.value\n const fontFamily = fontState?.fontFamily\n return fontFamily && fontFamily !== 'mixed'\n ? fontFamily.split(',')[0]!.replace(/['\"]/g, '') ||\n (ctx\n ? i18n(ctx, 'customMenu.fontDefault' as any)\n : '默认')\n : ctx\n ? i18n(ctx, 'customMenu.fontDefault' as any)\n : '默认'\n })()}\n </span>\n <span\n style={{\n width: '16px',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '4px',\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Section 3: Font Size Dropdown */}\n <div\n class=\"toolbar-item custom-font-size-item\"\n onMouseenter={handleFontSizeEnter}\n onMouseleave={handleFontSizeLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(4) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n minWidth: '40px',\n flexShrink: 0,\n }}\n >\n <span style={{ fontSize: '13px', color: '#363B4C' }}>\n {(() => {\n const fs = currentFontState.value.fontSize\n return fs && fs !== 'mixed' ? fs : '16px'\n })()}\n </span>\n <span\n style={{\n width: '16px',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '4px',\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Section 4: Divider */}\n <div\n class=\"divider\"\n style={{\n margin: '0 4px',\n alignSelf: 'center',\n display: isSectionOverflowed(5) ? 'none' : undefined,\n flexShrink: 0,\n }}\n ></div>\n\n {/* Section 5: Alignment Dropdown */}\n <div\n class=\"toolbar-item\"\n onMouseenter={handleAlignEnter}\n onMouseleave={handleAlignLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(6) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 6px',\n flexShrink: 0,\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={\n currentAlignIndent.value.align === 'center'\n ? alignCenterIcon\n : currentAlignIndent.value.align === 'right'\n ? alignRightIcon\n : alignLeftIcon\n }\n />\n <span\n style={{ width: '20px', display: 'flex', alignItems: 'center' }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Section 6: Color Dropdown */}\n <div\n class=\"toolbar-item\"\n onMouseenter={handleColorEnter}\n onMouseleave={handleColorLeave}\n style={{\n position: 'relative',\n display: isSectionOverflowed(7) ? 'none' : 'flex',\n alignItems: 'center',\n padding: '0 4px',\n flexShrink: 0,\n }}\n >\n <span\n class=\"milkdown-icon\"\n innerHTML={fontColorIcon}\n style={{\n display: 'inline-flex',\n color:\n currentColorState.value.textColor &&\n currentColorState.value.textColor !== 'mixed'\n ? currentColorState.value.textColor\n : '#363B4C',\n backgroundColor:\n currentColorState.value.bgColor &&\n currentColorState.value.bgColor !== 'mixed'\n ? currentColorState.value.bgColor\n : undefined,\n borderRadius: '4px',\n }}\n />\n <span\n style={{ width: '20px', display: 'flex', alignItems: 'center' }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n </div>\n\n {/* Formatting Tools (sections 7+) */}\n {(() => {\n let sectionIdx = 8\n return nonHeadingGroups.map((group: any, groupIndex: number) => {\n const items = group.items.map((item: any) => {\n const idx = sectionIdx\n sectionIdx++\n const isTable = item.icon === tableIcon\n return (\n <div\n key={item.label}\n style={{\n position: 'relative',\n display: isSectionOverflowed(idx) ? 'none' : 'flex',\n flexShrink: 0,\n }}\n onMouseenter={isTable ? handleTableEnter : undefined}\n onMouseleave={isTable ? handleTableLeave : undefined}\n >\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && checkActive(item.active) && 'active'\n )}\n data-key={item.key}\n onPointerdown={(e: PointerEvent) => {\n if (isTable) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n onClick(item.onRun)(e)\n }}\n title={item.label}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={\n ctx && checkActive(item.active)\n ? activeIconMap[item.icon] || item.icon\n : item.icon\n }\n />\n {isTable ? (\n <span\n style={{\n width: '16px',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '2px',\n opacity: 0.5,\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n ) : null}\n </button>\n </div>\n )\n })\n const dividerIdx = sectionIdx\n if (\n groupIndex < nonHeadingGroups.length - 1 &&\n group.items.length > 0\n ) {\n sectionIdx++\n }\n return (\n <Fragment key={(group as any).key}>\n {items}\n {groupIndex < nonHeadingGroups.length - 1 &&\n group.items.length > 0 ? (\n <div\n class=\"divider\"\n style={{\n display: isSectionOverflowed(dividerIdx)\n ? 'none'\n : undefined,\n flexShrink: 0,\n }}\n ></div>\n ) : null}\n </Fragment>\n )\n })\n })()}\n\n {/* More button */}\n {hasOverflow ? (\n <div\n data-overflow-button=\"true\"\n class=\"toolbar-item\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n cursor: 'pointer',\n }}\n onClick={(e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (showOverflowMenu.value) {\n showOverflowMenu.value = false\n return\n }\n const rect = (\n e.currentTarget as HTMLElement\n ).getBoundingClientRect()\n overflowMenuPos.value = {\n top: rect.bottom + 4,\n right: window.innerWidth - rect.right,\n }\n showOverflowMenu.value = true\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={moreIcon}\n />\n </div>\n ) : null}\n\n {/* Submenus rendered conditionally in fixed portals or overlays to escape overflow */}\n {showBlockMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${blockMenuPos.value.top}px`,\n left: `${blockMenuPos.value.left}px`,\n zIndex: 9999,\n width: '200px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n maxHeight: '300px',\n overflowY: 'auto',\n }}\n onMouseenter={() => {\n if (hideBlockTimer) clearTimeout(hideBlockTimer)\n }}\n onMouseleave={handleBlockLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {blockGroups.value.groups\n .flatMap((group: any) => group.items)\n .filter((item: any) => {\n const key = (item as any).key\n if (isFixed) {\n return [\n 'text',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n ].includes(key)\n }\n return [\n 'text',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'quote',\n 'bullet-list',\n 'ordered-list',\n 'task-list',\n 'code',\n ].includes(key)\n })\n .map((item: any) => {\n const isActive =\n activeBlockItem.value === item.icon ||\n (activeBlockItem.value === null && item.icon === textIcon)\n return renderSubMenuItem(\n isActive\n ? activeIconMap[item.icon] || item.icon\n : item.icon,\n item.label,\n isActive,\n () => {\n // Mark as programmatic to skip clearTextInCurrentBlockCommand\n // which is only needed for slash menu text clearing\n const api = ctx.get(menuAPI.key)\n const origFn = api.isProgrammatic\n api.isProgrammatic = () => true\n item.onRun(ctx)\n api.isProgrammatic = origFn\n showBlockMenu.value = false\n }\n )\n })}\n </div>\n ) : null}\n\n {showAlignMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${alignMenuPos.value.top}px`,\n left: `${alignMenuPos.value.left}px`,\n zIndex: 9999,\n width: '180px',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n }}\n onMouseenter={() => {\n if (hideAlignTimer) clearTimeout(hideAlignTimer)\n }}\n onMouseleave={handleAlignLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {renderSubMenuItem(\n currentAlignIndent.value.align === 'left'\n ? activeIconMap[alignLeftIcon] || alignLeftIcon\n : alignLeftIcon,\n ctx ? i18n(ctx, 'customMenu.alignLeft') : 'Left',\n currentAlignIndent.value.align === 'left',\n () => setAlign('left')\n )}\n {renderSubMenuItem(\n currentAlignIndent.value.align === 'center'\n ? activeIconMap[alignCenterIcon] || alignCenterIcon\n : alignCenterIcon,\n ctx ? i18n(ctx, 'customMenu.alignCenter') : 'Center',\n currentAlignIndent.value.align === 'center',\n () => setAlign('center')\n )}\n {renderSubMenuItem(\n currentAlignIndent.value.align === 'right'\n ? activeIconMap[alignRightIcon] || alignRightIcon\n : alignRightIcon,\n ctx ? i18n(ctx, 'customMenu.alignRight') : 'Right',\n currentAlignIndent.value.align === 'right',\n () => setAlign('right')\n )}\n <div\n style={{\n margin: '4px 0',\n borderBottom:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n }}\n ></div>\n {renderSubMenuItem(\n indentIncreaseIcon,\n ctx\n ? i18n(ctx, 'customMenu.increaseIndent')\n : 'Increase Indent',\n false,\n () => setIndent(1)\n )}\n {renderSubMenuItem(\n indentDecreaseIcon,\n ctx\n ? i18n(ctx, 'customMenu.decreaseIndent')\n : 'Decrease Indent',\n false,\n () => setIndent(-1),\n currentAlignIndent.value.indent <= 0\n )}\n {canMerge.value || canSplit.value ? (\n <>\n <div\n style={{\n margin: '4px 0',\n borderBottom:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n }}\n ></div>\n {canMerge.value &&\n renderSubMenuItem(\n mergeCellIcon,\n ctx\n ? i18n(ctx, 'customMenu.mergeCells' as any) ||\n '合并单元格'\n : '合并单元格',\n false,\n onMergeCells\n )}\n {canSplit.value &&\n renderSubMenuItem(\n splitCellIcon,\n ctx\n ? i18n(ctx, 'customMenu.splitCell' as any) ||\n '拆分单元格'\n : '拆分单元格',\n false,\n onSplitCell\n )}\n </>\n ) : null}\n </div>\n ) : null}\n\n {showColorMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${colorMenuPos.value.top}px`,\n left: `${colorMenuPos.value.left}px`,\n zIndex: 9999,\n width: '246px',\n padding: '12px',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n gap: '8px',\n }}\n onMouseenter={() => {\n if (hideColorTimer) clearTimeout(hideColorTimer)\n }}\n onMouseleave={handleColorLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n }}\n >\n {ctx ? i18n(ctx, 'customMenu.textColor') : '字体颜色'}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n '#000000',\n '#8C8C8C',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color) => (\n <div\n key={color}\n onClick={() => setTextColor(color)}\n style={{\n width: '24px',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n borderRadius: '4px',\n boxSizing: 'border-box',\n border:\n currentColorState.value.textColor === color\n ? '2px solid var(--crepe-color-primary)'\n : '1px solid #eeeff0',\n backgroundColor:\n currentColorState.value.textColor === color\n ? 'var(--crepe-color-hover)'\n : '#ffffff',\n color: color,\n fontWeight: 'bold',\n fontSize: '14px',\n }}\n >\n A\n </div>\n ))}\n </div>\n\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '4px',\n }}\n >\n {ctx ? i18n(ctx, 'customMenu.bgColor') : '背景颜色'}\n </div>\n <div style={{ display: 'flex', gap: '4px', flexWrap: 'wrap' }}>\n {[\n 'transparent',\n '#F5F5F5',\n '#FFCCC7',\n '#FFE7BA',\n '#FFF1B8',\n '#D9F7BE',\n '#D6E4FF',\n '#EFDBFF',\n ].map((color) => (\n <div\n key={color}\n onClick={() =>\n setBgColor(color === 'transparent' ? null : color)\n }\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n boxSizing: 'border-box',\n border:\n currentColorState.value.bgColor === color ||\n (color === 'transparent' &&\n !currentColorState.value.bgColor &&\n currentColorState.value.bgColor !== 'mixed')\n ? '2px solid var(--crepe-color-primary)'\n : '1px solid var(--crepe-color-outline-variant)',\n backgroundColor:\n color === 'transparent' ? '#ffffff' : color,\n position: 'relative',\n overflow: 'hidden',\n }}\n >\n {color === 'transparent' ? (\n <div\n style={{\n position: 'absolute',\n top: '-2px',\n left: 0,\n width: '141%',\n height: '1px',\n backgroundColor: '#ff4d4f',\n transform: 'rotate(45deg)',\n transformOrigin: 'top left',\n }}\n ></div>\n ) : null}\n </div>\n ))}\n {[\n '#BFBFBF',\n '#595959',\n '#F5222D',\n '#FA541C',\n '#FAAD14',\n '#52C41A',\n '#1677FF',\n '#722ED1',\n ].map((color) => (\n <div\n key={color}\n onClick={() => setBgColor(color)}\n style={{\n width: '24px',\n height: '24px',\n cursor: 'pointer',\n borderRadius: '4px',\n boxSizing: 'border-box',\n border:\n currentColorState.value.bgColor === color\n ? '2px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n backgroundColor: color,\n }}\n ></div>\n ))}\n </div>\n\n <button\n onClick={clearColor}\n style={{\n width: '100%',\n marginTop: '8px',\n padding: '4px 0',\n border: '1px solid #eeeff0',\n borderRadius: '4px',\n background: 'transparent',\n color: '#363B4C',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n {ctx ? i18n(ctx, 'customMenu.restoreDefault') : '恢复默认'}\n </button>\n </div>\n ) : null}\n\n {showFontFamilyMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${fontFamilyMenuPos.value.top}px`,\n left: `${fontFamilyMenuPos.value.left}px`,\n zIndex: 9999,\n width: '180px',\n maxHeight: '300px',\n overflowY: 'auto',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n }}\n onMouseenter={() => {\n if (hideFontFamilyTimer) clearTimeout(hideFontFamilyTimer)\n }}\n onMouseleave={handleFontFamilyLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {[\n {\n label: ctx\n ? i18n(ctx, 'customMenu.fontDefault' as any)\n : '默认',\n value: null,\n },\n { label: 'Arial', value: 'Arial' },\n { label: 'Comic Sans MS', value: '\"Comic Sans MS\"' },\n { label: 'Courier New', value: '\"Courier New\"' },\n { label: 'Georgia', value: 'Georgia' },\n { label: 'Helvetica', value: 'Helvetica' },\n { label: 'Impact', value: 'Impact' },\n { label: 'Times New Roman', value: '\"Times New Roman\"' },\n { label: 'Trebuchet MS', value: '\"Trebuchet MS\"' },\n { label: 'Verdana', value: 'Verdana' },\n {\n label: ctx ? i18n(ctx, 'font.fangSong' as any) : '仿宋',\n value: 'FangSong',\n },\n {\n label: ctx ? i18n(ctx, 'font.stFangsong' as any) : '华文仿宋',\n value: 'STFangsong',\n },\n {\n label: ctx ? i18n(ctx, 'font.stSong' as any) : '华文宋体',\n value: 'STSong',\n },\n {\n label: ctx ? i18n(ctx, 'font.stKaiti' as any) : '华文楷体',\n value: 'STKaiti',\n },\n {\n label: ctx ? i18n(ctx, 'font.simSun' as any) : '宋体',\n value: 'SimSun',\n },\n {\n label: ctx\n ? i18n(ctx, 'font.microsoftYaHei' as any)\n : '微软雅黑',\n value: '\"Microsoft YaHei\"',\n },\n {\n label: ctx ? i18n(ctx, 'font.kaiTi' as any) : '楷体',\n value: 'KaiTi',\n },\n {\n label: ctx ? i18n(ctx, 'font.simHei' as any) : '黑体',\n value: 'SimHei',\n },\n ].map((font) => {\n const supported = isFontSupported(font.value)\n return (\n <div\n key={font.label}\n class={['custom-menu-row']}\n style={{\n cursor: supported ? 'pointer' : 'not-allowed',\n padding: '6px 12px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '14px',\n fontFamily: font.value || 'inherit',\n borderRadius: '4px',\n margin: '2px 8px',\n opacity: supported ? 1 : 0.45,\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (supported) {\n setFontFamily(font.value)\n }\n }}\n onMouseenter={(e: MouseEvent) => {\n if (supported) {\n ;(\n e.currentTarget as HTMLElement\n ).style.backgroundColor = 'var(--crepe-color-hover)'\n }\n }}\n onMouseleave={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'transparent'\n }}\n >\n <span\n style={{\n color:\n currentFontState.value.fontFamily === font.value\n ? 'var(--crepe-color-primary)'\n : '#363B4C',\n userSelect: 'none',\n }}\n >\n {font.label}\n </span>\n {currentFontState.value.fontFamily === font.value ? (\n <span\n style={{\n width: '16px',\n height: '16px',\n color: 'var(--crepe-color-primary)',\n }}\n >\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n )\n })}\n </div>\n ) : null}\n\n {showFontSizeMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${fontSizeMenuPos.value.top}px`,\n left: `${fontSizeMenuPos.value.left}px`,\n zIndex: 9999,\n width: '120px',\n maxHeight: '300px',\n overflowY: 'auto',\n padding: '8px 0',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n }}\n onMouseenter={() => {\n if (hideFontSizeTimer) clearTimeout(hideFontSizeTimer)\n }}\n onMouseleave={handleFontSizeLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n {[\n { label: '12px', value: '12px' },\n { label: '13px', value: '13px' },\n { label: '14px', value: '14px' },\n { label: '15px', value: '15px' },\n { label: '16px', value: null },\n { label: '18px', value: '18px' },\n { label: '20px', value: '20px' },\n { label: '24px', value: '24px' },\n { label: '28px', value: '28px' },\n { label: '32px', value: '32px' },\n { label: '36px', value: '36px' },\n ].map((size) => (\n <div\n key={size.label}\n class={['custom-menu-row']}\n style={{\n cursor: 'pointer',\n padding: '6px 12px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '14px',\n borderRadius: '4px',\n margin: '2px 8px',\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setFontSize(size.value)\n }}\n onMouseenter={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'var(--crepe-color-hover)'\n }}\n onMouseleave={(e: MouseEvent) => {\n ;(e.currentTarget as HTMLElement).style.backgroundColor =\n 'transparent'\n }}\n >\n <span\n style={{\n color:\n currentFontState.value.fontSize === size.value\n ? 'var(--crepe-color-primary)'\n : '#363B4C',\n userSelect: 'none',\n }}\n >\n {size.label}\n </span>\n {currentFontState.value.fontSize === size.value ? (\n <span\n style={{\n width: '16px',\n height: '16px',\n color: 'var(--crepe-color-primary)',\n }}\n >\n <Icon icon={confirmIcon} />\n </span>\n ) : null}\n </div>\n ))}\n </div>\n ) : null}\n\n {showTableMenu.value ? (\n <div\n class=\"milkdown-slash-menu custom-submenu\"\n style={{\n position: 'fixed',\n top: `${tableMenuPos.value.top}px`,\n left: `${tableMenuPos.value.left}px`,\n zIndex: 9999,\n width: 'max-content',\n padding: '12px',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n display: 'flex',\n flexDirection: 'column',\n }}\n onMouseenter={() => {\n if (hideTableTimer) clearTimeout(hideTableTimer)\n }}\n onMouseleave={handleTableLeave}\n >\n <div\n style={{\n position: 'absolute',\n top: '-6px',\n left: 0,\n right: 0,\n height: '6px',\n background: 'transparent',\n }}\n />\n <div\n style={{\n fontSize: '12px',\n fontWeight: 'bold',\n color: 'var(--crepe-color-on-surface-variant)',\n marginBottom: '8px',\n }}\n >\n {i18n(ctx, 'customMenu.insertTable')}\n </div>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(9, 1fr)',\n gap: '4px',\n width: 'max-content',\n }}\n >\n {Array.from({ length: 9 }).map((_, r) =>\n Array.from({ length: 9 }).map((_, c) => {\n const isHovered =\n r < tableHoverIndices.value.r &&\n c < tableHoverIndices.value.c\n return (\n <div\n key={`cell-${r}-${c}`}\n style={{\n width: '20px',\n height: '20px',\n backgroundColor: isHovered\n ? 'color-mix(in srgb, var(--crepe-color-primary), transparent 85%)'\n : 'var(--crepe-color-surface-low, #f5f5f5)',\n border: isHovered\n ? '1px solid var(--crepe-color-primary)'\n : '1px solid transparent',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n onPointerenter={() => {\n tableHoverIndices.value = { r: r + 1, c: c + 1 }\n }}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onPointerup={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n runTableInsert(r + 1, c + 1)\n }}\n />\n )\n })\n )}\n </div>\n {tableHoverIndices.value.r > 0 ? (\n <div\n style={{\n fontSize: '12px',\n color: 'var(--crepe-color-on-surface-variant)',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n {tableHoverIndices.value.r} x {tableHoverIndices.value.c}\n </div>\n ) : (\n <div\n style={{\n fontSize: '12px',\n color: 'transparent',\n marginTop: '8px',\n textAlign: 'center',\n }}\n >\n 0 x 0\n </div>\n )}\n </div>\n ) : null}\n\n {/* Overflow Menu Popup — horizontal icon-only layout with flex-wrap */}\n {showOverflowMenu.value ? (\n <div\n class=\"overflow-menu-popup\"\n style={{\n position: 'fixed',\n top: `${overflowMenuPos.value.top}px`,\n left:\n overflowMenuPos.value.left !== undefined\n ? `${overflowMenuPos.value.left}px`\n : 'auto',\n right:\n overflowMenuPos.value.right !== undefined\n ? `${overflowMenuPos.value.right}px`\n : 'auto',\n zIndex: 9998,\n padding: '6px',\n display: 'flex',\n flexWrap: 'wrap',\n backgroundColor: 'var(--crepe-color-surface)',\n border:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline), transparent 80%))',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.1)',\n maxWidth: '360px',\n width: 'max-content',\n }}\n onClick={(e: MouseEvent) => e.stopPropagation()}\n >\n {(() => {\n const cutoff = overflowVisibleCount.value\n const items: any[] = []\n\n const renderIconButton = (\n iconHtml: string,\n title: string,\n isActive: boolean,\n onClick: ((e: MouseEvent) => void) | undefined,\n hasDropdown = false,\n onMouseEnter?: (e: MouseEvent) => void,\n onMouseLeave?: (e: MouseEvent) => void,\n key?: string\n ) => (\n <button\n type=\"button\"\n class={clsx('toolbar-item', isActive && 'active')}\n data-key={key}\n title={title}\n onPointerdown={(e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n onClick={(e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (onClick) onClick(e)\n }}\n onMouseenter={onMouseEnter}\n onMouseleave={onMouseLeave}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <span\n style={{ display: 'inline-flex', alignItems: 'center' }}\n innerHTML={iconHtml}\n />\n {hasDropdown ? (\n <span\n style={{\n width: '12px',\n display: 'flex',\n alignItems: 'center',\n opacity: 0.5,\n }}\n >\n <Icon icon={chevronDownIcon} />\n </span>\n ) : null}\n </button>\n )\n\n // Section 0: Block Type\n if (0 >= cutoff) {\n items.push(\n renderIconButton(\n activeBlockItem.value || textIcon,\n ctx ? i18n(ctx, 'customMenu.blockType' as any) : '段落',\n false,\n undefined,\n true,\n handleBlockEnter,\n handleBlockLeave\n )\n )\n }\n // Section 2: Font Family\n if (3 >= cutoff) {\n items.push(\n renderIconButton(\n textIcon,\n ctx ? i18n(ctx, 'customMenu.fontDefault' as any) : '字体',\n false,\n undefined,\n true,\n handleFontFamilyEnter,\n handleFontFamilyLeave\n )\n )\n }\n // Section 3: Font Size\n if (4 >= cutoff) {\n items.push(\n renderIconButton(\n textIcon,\n ctx ? i18n(ctx, 'customMenu.fontSize' as any) : '字号',\n false,\n undefined,\n true,\n handleFontSizeEnter,\n handleFontSizeLeave\n )\n )\n }\n // Section 5: Alignment\n if (6 >= cutoff) {\n items.push(\n renderIconButton(\n currentAlignIndent.value.align === 'center'\n ? alignCenterIcon\n : currentAlignIndent.value.align === 'right'\n ? alignRightIcon\n : alignLeftIcon,\n ctx ? i18n(ctx, 'customMenu.align' as any) : '对齐',\n false,\n undefined,\n true,\n handleAlignEnter,\n handleAlignLeave\n )\n )\n }\n // Section 6: Color\n if (7 >= cutoff) {\n items.push(\n renderIconButton(\n fontColorIcon,\n ctx ? i18n(ctx, 'customMenu.color' as any) : '颜色',\n false,\n undefined,\n true,\n handleColorEnter,\n handleColorLeave\n )\n )\n }\n // Formatting buttons (section 7+)\n let fmtIdx = 8\n for (const group of nonHeadingGroups) {\n for (const item of group.items) {\n const idx = fmtIdx\n fmtIdx++\n if (idx >= cutoff) {\n const isTable = item.icon === tableIcon\n items.push(\n renderIconButton(\n ctx && checkActive(item.active)\n ? activeIconMap[item.icon] || item.icon\n : item.icon,\n item.label,\n ctx ? checkActive(item.active) : false,\n isTable\n ? undefined\n : (_e: MouseEvent) => {\n item.onRun(ctx)\n showOverflowMenu.value = false\n },\n isTable,\n isTable ? handleTableEnter : undefined,\n isTable ? handleTableLeave : undefined,\n item.key\n )\n )\n }\n }\n fmtIdx++\n }\n return items\n })()}\n </div>\n ) : null}\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { EditorState, PluginView } from '@jvs-milkdown/kit/prose/state'\nimport type { EditorView } from '@jvs-milkdown/kit/prose/view'\n\nimport { editorViewOptionsCtx } from '@jvs-milkdown/kit/core'\nimport {\n TooltipProvider,\n tooltipFactory,\n} from '@jvs-milkdown/kit/plugin/tooltip'\nimport { TextSelection, AllSelection } from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport { createApp, ref, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { GroupBuilder } from '../../utils'\nimport type { DefineFeature } from '../shared'\nimport type { ToolbarItem } from './config'\n\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { CrepeFeature } from '../../feature'\nimport {\n getIsAnyPopupOpen,\n addPopupChangeListener,\n} from '../../utils/fixed-toolbar-popup-state'\nimport { colorPlugins } from './color'\nimport { Toolbar } from './component'\nimport { highlightMark } from './highlight-mark'\nimport { underline } from './underline'\n\ninterface ToolbarConfig {\n boldIcon: string\n codeIcon: string\n italicIcon: string\n linkIcon: string\n strikethroughIcon: string\n underlineIcon: string\n highlightIcon: string\n latexIcon: string\n h1Icon: string\n h2Icon: string\n h3Icon: string\n h4Icon: string\n h5Icon: string\n h6Icon: string\n buildToolbar: (builder: GroupBuilder<ToolbarItem>) => void\n}\n\nexport type ToolbarFeatureConfig = Partial<ToolbarConfig>\n\nconst toolbarTooltip = tooltipFactory('CREPE_TOOLBAR')\n\nclass ToolbarView implements PluginView {\n #tooltipProvider: TooltipProvider\n #content: HTMLElement\n #app: App\n #state: ShallowRef<EditorState>\n #show = ref(false)\n #mousePressed = false\n #removePopupListener: (() => void) | undefined\n #onDocumentMouseUp: ((ev: MouseEvent) => void) | undefined\n\n constructor(ctx: Ctx, view: EditorView, config?: ToolbarFeatureConfig) {\n const content = document.createElement('div')\n content.className = 'milkdown-toolbar'\n this.#state = shallowRef(view.state)\n const app = createApp(Toolbar, {\n ctx,\n hide: this.hide,\n config,\n state: this.#state,\n show: this.#show,\n })\n app.mount(content)\n this.#content = content\n this.#app = app\n\n view.dom.addEventListener('mousedown', () => {\n this.#mousePressed = true\n })\n view.dom.addEventListener('mouseup', () => {\n this.#mousePressed = false\n // Defer to ensure ProseMirror selection is finalized,\n // then manually trigger tooltip update\n setTimeout(() => {\n this.update(view)\n }, 0)\n })\n\n // Handle mouseup outside the editor view (finish selection outside)\n const onDocumentMouseUp = () => {\n if (this.#mousePressed) {\n this.#mousePressed = false\n setTimeout(() => {\n this.update(view)\n }, 0)\n }\n }\n document.addEventListener('mouseup', onDocumentMouseUp)\n this.#onDocumentMouseUp = onDocumentMouseUp\n\n this.#tooltipProvider = new TooltipProvider({\n content: this.#content,\n debounce: 20,\n offset: 10,\n shouldShow: (view: EditorView) => {\n if (this.#mousePressed) return false\n if (getIsAnyPopupOpen()) return false\n\n const { doc, selection } = view.state\n const { empty, from, to } = selection\n\n const isEmptyTextBlock =\n !doc.textBetween(from, to).length &&\n selection instanceof TextSelection\n\n const isNotTextBlock =\n !(selection instanceof TextSelection) &&\n !(selection instanceof AllSelection)\n\n const activeElement = (view.dom.getRootNode() as ShadowRoot | Document)\n .activeElement\n const isTooltipChildren = content.contains(activeElement)\n\n const notHasFocus = !view.hasFocus() && !isTooltipChildren\n\n const isReadonly = !view.editable\n\n if (\n notHasFocus ||\n isNotTextBlock ||\n empty ||\n isEmptyTextBlock ||\n isReadonly\n )\n return false\n\n return true\n },\n })\n this.#tooltipProvider.onShow = () => {\n this.#show.value = true\n }\n this.#tooltipProvider.onHide = () => {\n this.#show.value = false\n }\n\n // React to fixed toolbar popup state changes\n this.#removePopupListener = addPopupChangeListener(() => {\n if (getIsAnyPopupOpen()) {\n this.#tooltipProvider.hide()\n } else {\n this.#tooltipProvider.update(view)\n }\n })\n\n this.update(view)\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#tooltipProvider.update(view, prevState)\n this.#state.value = view.state\n }\n\n destroy = () => {\n this.#removePopupListener?.()\n if (this.#onDocumentMouseUp) {\n document.removeEventListener('mouseup', this.#onDocumentMouseUp)\n }\n this.#tooltipProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n\n hide = () => {\n this.#tooltipProvider.hide()\n }\n}\n\nimport { fontPlugins, stripFontFamilyFromExternalHTML } from './font'\n\nexport const toolbar: DefineFeature<ToolbarFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.Toolbar))\n .config((ctx) => {\n ctx.set(toolbarTooltip.key, {\n view: (view) => new ToolbarView(ctx, view, config),\n })\n })\n .config((ctx) => {\n // Register a transformPastedHTML handler that strips font-family\n // from content pasted from external sources (other web pages).\n // Internal copy-paste (data-pm-slice) is left untouched.\n ctx.update(editorViewOptionsCtx, (prev) => {\n const prevTransform = prev.transformPastedHTML\n return {\n ...prev,\n transformPastedHTML: (html: string, view: EditorView) => {\n if (prevTransform) html = prevTransform(html, view)\n return stripFontFamilyFromExternalHTML(html)\n },\n }\n })\n })\n .use(underline as any)\n .use(highlightMark as any)\n .use(colorPlugins as any)\n .use(fontPlugins as any)\n .use(toolbarTooltip)\n}\n"],"names":["CrepeFeature","__privateAdd","__privateSet","__privateGet","group","_tr","getGroups","ctx","_a","_b","_c","_d","items","groups","_","$from","$to","getToolbarGroups","getBlockGroups","onClick","view"],"mappings":"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"}