@jvs-milkdown/crepe 1.2.13 → 1.2.15

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 (100) hide show
  1. package/lib/cjs/builder.js +41 -2
  2. package/lib/cjs/builder.js.map +1 -1
  3. package/lib/cjs/feature/block-edit/index.js +9 -2
  4. package/lib/cjs/feature/block-edit/index.js.map +1 -1
  5. package/lib/cjs/feature/code-mirror/index.js +9 -2
  6. package/lib/cjs/feature/code-mirror/index.js.map +1 -1
  7. package/lib/cjs/feature/cursor/index.js +9 -2
  8. package/lib/cjs/feature/cursor/index.js.map +1 -1
  9. package/lib/cjs/feature/image-block/index.js +9 -2
  10. package/lib/cjs/feature/image-block/index.js.map +1 -1
  11. package/lib/cjs/feature/inline-diff/index.js +1298 -0
  12. package/lib/cjs/feature/inline-diff/index.js.map +1 -0
  13. package/lib/cjs/feature/latex/index.js +9 -2
  14. package/lib/cjs/feature/latex/index.js.map +1 -1
  15. package/lib/cjs/feature/link-tooltip/index.js +9 -2
  16. package/lib/cjs/feature/link-tooltip/index.js.map +1 -1
  17. package/lib/cjs/feature/list-item/index.js +9 -2
  18. package/lib/cjs/feature/list-item/index.js.map +1 -1
  19. package/lib/cjs/feature/placeholder/index.js +9 -2
  20. package/lib/cjs/feature/placeholder/index.js.map +1 -1
  21. package/lib/cjs/feature/table/index.js +9 -2
  22. package/lib/cjs/feature/table/index.js.map +1 -1
  23. package/lib/cjs/feature/toolbar/index.js +14 -6
  24. package/lib/cjs/feature/toolbar/index.js.map +1 -1
  25. package/lib/cjs/index.js +1280 -260
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/esm/builder.js +41 -2
  28. package/lib/esm/builder.js.map +1 -1
  29. package/lib/esm/feature/block-edit/index.js +9 -2
  30. package/lib/esm/feature/block-edit/index.js.map +1 -1
  31. package/lib/esm/feature/code-mirror/index.js +9 -2
  32. package/lib/esm/feature/code-mirror/index.js.map +1 -1
  33. package/lib/esm/feature/cursor/index.js +9 -2
  34. package/lib/esm/feature/cursor/index.js.map +1 -1
  35. package/lib/esm/feature/image-block/index.js +9 -2
  36. package/lib/esm/feature/image-block/index.js.map +1 -1
  37. package/lib/esm/feature/inline-diff/index.js +1274 -0
  38. package/lib/esm/feature/inline-diff/index.js.map +1 -0
  39. package/lib/esm/feature/latex/index.js +9 -2
  40. package/lib/esm/feature/latex/index.js.map +1 -1
  41. package/lib/esm/feature/link-tooltip/index.js +9 -2
  42. package/lib/esm/feature/link-tooltip/index.js.map +1 -1
  43. package/lib/esm/feature/list-item/index.js +9 -2
  44. package/lib/esm/feature/list-item/index.js.map +1 -1
  45. package/lib/esm/feature/placeholder/index.js +9 -2
  46. package/lib/esm/feature/placeholder/index.js.map +1 -1
  47. package/lib/esm/feature/table/index.js +9 -2
  48. package/lib/esm/feature/table/index.js.map +1 -1
  49. package/lib/esm/feature/toolbar/index.js +14 -6
  50. package/lib/esm/feature/toolbar/index.js.map +1 -1
  51. package/lib/esm/index.js +1262 -261
  52. package/lib/esm/index.js.map +1 -1
  53. package/lib/theme/common/diff-block.css +41 -0
  54. package/lib/theme/common/inline-diff.css +142 -0
  55. package/lib/theme/common/list-item.css +113 -0
  56. package/lib/theme/common/style.css +2 -0
  57. package/lib/tsconfig.tsbuildinfo +1 -1
  58. package/lib/types/core/builder.d.ts +2 -0
  59. package/lib/types/core/builder.d.ts.map +1 -1
  60. package/lib/types/core/locale.d.ts +4 -0
  61. package/lib/types/core/locale.d.ts.map +1 -1
  62. package/lib/types/feature/diff-block/index.d.ts +10 -0
  63. package/lib/types/feature/diff-block/index.d.ts.map +1 -0
  64. package/lib/types/feature/fixed-toolbar/index.d.ts.map +1 -1
  65. package/lib/types/feature/fixed-toolbar/outline-panel.d.ts.map +1 -1
  66. package/lib/types/feature/index.d.ts +7 -1
  67. package/lib/types/feature/index.d.ts.map +1 -1
  68. package/lib/types/feature/inline-diff/change-panel.d.ts +4 -0
  69. package/lib/types/feature/inline-diff/change-panel.d.ts.map +1 -0
  70. package/lib/types/feature/inline-diff/config.d.ts +12 -0
  71. package/lib/types/feature/inline-diff/config.d.ts.map +1 -0
  72. package/lib/types/feature/inline-diff/diff-engine.d.ts +20 -0
  73. package/lib/types/feature/inline-diff/diff-engine.d.ts.map +1 -0
  74. package/lib/types/feature/inline-diff/diff-view.d.ts +2 -0
  75. package/lib/types/feature/inline-diff/diff-view.d.ts.map +1 -0
  76. package/lib/types/feature/inline-diff/doc-builder.d.ts +21 -0
  77. package/lib/types/feature/inline-diff/doc-builder.d.ts.map +1 -0
  78. package/lib/types/feature/inline-diff/index.d.ts +9 -0
  79. package/lib/types/feature/inline-diff/index.d.ts.map +1 -0
  80. package/lib/types/feature/loader.d.ts.map +1 -1
  81. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  82. package/package.json +15 -4
  83. package/src/core/builder.ts +19 -0
  84. package/src/core/locale.ts +7 -0
  85. package/src/feature/diff-block/index.ts +48 -0
  86. package/src/feature/fixed-toolbar/index.ts +62 -23
  87. package/src/feature/fixed-toolbar/outline-panel.tsx +5 -3
  88. package/src/feature/index.ts +12 -0
  89. package/src/feature/inline-diff/change-panel.ts +280 -0
  90. package/src/feature/inline-diff/config.ts +28 -0
  91. package/src/feature/inline-diff/diff-engine.ts +181 -0
  92. package/src/feature/inline-diff/diff-view.ts +2 -0
  93. package/src/feature/inline-diff/doc-builder.ts +139 -0
  94. package/src/feature/inline-diff/index.ts +514 -0
  95. package/src/feature/loader.ts +8 -0
  96. package/src/feature/toolbar/component.tsx +3 -2
  97. package/src/theme/common/diff-block.css +43 -0
  98. package/src/theme/common/inline-diff.css +148 -0
  99. package/src/theme/common/list-item.css +122 -0
  100. package/src/theme/common/style.css +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/icons/align-center.ts","../../../../src/icons/align-left.ts","../../../../src/icons/align-right.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/drag-handle.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/menu.ts","../../../../src/icons/ordered-list.ts","../../../../src/icons/plus.ts","../../../../src/icons/quote.ts","../../../../src/icons/remove.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/file-link.ts","../../../../src/utils/checker.ts","../../../../src/utils/group-builder.ts","../../../../src/utils/keep-alive.ts","../../../../src/feature/toolbar/color.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/block-edit/handle/component.tsx","../../../../src/feature/block-edit/handle/index.ts","../../../../src/feature/block-edit/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\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\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\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\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 { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\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\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}\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}\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 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 dragHandleIcon = `\n <svg viewBox=\"0 0 1024 1024\"xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"height=\"16\">\n <path d=\"M663.744 737.92q3.84 0 7.68 0.384t7.68 1.088q3.84 0.768 7.488 1.92 3.712 1.152 7.296 2.56 3.52 1.536 6.976 3.392 3.392 1.792 6.592 3.968 3.2 2.176 6.208 4.608 3.008 2.496 5.76 5.184 2.688 2.752 5.12 5.76 2.496 3.008 4.608 6.272 2.176 3.2 3.968 6.656 1.856 3.392 3.328 7.04 1.472 3.52 2.56 7.232 1.152 3.712 1.92 7.552 0.768 3.84 1.088 7.68 0.384 3.84 0.384 7.68 0 3.968-0.384 7.808-0.32 3.84-1.088 7.68t-1.92 7.488q-1.088 3.712-2.56 7.36-1.472 3.584-3.328 7.04-1.792 3.392-3.968 6.592-2.112 3.2-4.608 6.208-2.432 3.008-5.12 5.76-2.752 2.752-5.76 5.248-3.008 2.432-6.208 4.608-3.2 2.176-6.592 3.968-3.456 1.856-7.04 3.328-3.52 1.472-7.232 2.56-3.712 1.152-7.488 1.92-3.84 0.768-7.68 1.152-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.776-0.768-7.488-1.92-3.712-1.088-7.232-2.56-3.584-1.472-7.04-3.328-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-2.944-2.496-5.76-5.248-2.688-2.752-5.12-5.76-2.432-2.944-4.608-6.208-2.176-3.2-3.968-6.656-1.792-3.392-3.328-7.04-1.472-3.584-2.56-7.296-1.152-3.712-1.92-7.488-0.704-3.84-1.088-7.68-0.384-3.84-0.384-7.744 0-3.84 0.384-7.744 0.384-3.84 1.088-7.68 0.768-3.84 1.92-7.552 1.088-3.712 2.56-7.296 1.536-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.176-3.2 4.608-6.272 2.432-3.008 5.12-5.76 2.816-2.688 5.76-5.12 3.008-2.56 6.208-4.672 3.2-2.176 6.656-3.968 3.392-1.856 6.976-3.328 3.52-1.472 7.232-2.624 3.712-1.152 7.488-1.92 3.84-0.704 7.68-1.088 3.84-0.384 7.68-0.384z m0-304.96q3.84 0 7.68 0.384t7.68 1.152q3.84 0.768 7.488 1.92 3.712 1.088 7.296 2.56 3.52 1.536 6.976 3.328 3.392 1.856 6.592 3.968 3.2 2.176 6.208 4.672 3.008 2.432 5.76 5.184 2.688 2.752 5.12 5.76 2.496 3.008 4.608 6.208 2.176 3.2 3.968 6.656 1.856 3.456 3.328 7.04 1.472 3.584 2.56 7.296 1.152 3.712 1.92 7.488 0.768 3.84 1.088 7.68 0.384 3.84 0.384 7.744t-0.384 7.808q-0.32 3.84-1.088 7.68-0.768 3.776-1.92 7.488-1.088 3.712-2.56 7.296t-3.328 7.04q-1.792 3.392-3.968 6.656-2.112 3.2-4.608 6.208-2.432 3.008-5.12 5.76-2.752 2.752-5.76 5.184-3.008 2.496-6.208 4.608-3.2 2.176-6.592 4.032-3.456 1.792-7.04 3.328-3.52 1.472-7.232 2.56-3.712 1.152-7.488 1.92-3.84 0.768-7.68 1.152-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.776-0.768-7.488-1.92-3.712-1.088-7.232-2.56-3.584-1.536-7.04-3.328-3.392-1.856-6.592-4.032-3.2-2.112-6.208-4.608-2.944-2.432-5.76-5.184-2.688-2.752-5.12-5.76t-4.608-6.208q-2.176-3.2-3.968-6.656-1.792-3.456-3.328-7.04-1.472-3.584-2.56-7.296-1.152-3.712-1.92-7.552-0.704-3.84-1.088-7.68-0.384-3.84-0.384-7.68 0-3.904 0.384-7.808 0.384-3.84 1.088-7.68 0.768-3.776 1.92-7.488 1.088-3.712 2.56-7.296 1.536-3.584 3.328-7.04 1.792-3.392 3.968-6.656 2.176-3.2 4.608-6.208 2.432-3.008 5.12-5.76 2.816-2.752 5.76-5.184 3.008-2.496 6.208-4.672 3.2-2.112 6.656-3.968 3.392-1.792 6.976-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152 3.84-0.384 7.68-0.384z m0-304.96q3.84 0 7.68 0.384t7.68 1.152q3.84 0.768 7.488 1.92 3.712 1.088 7.296 2.56 3.52 1.472 6.976 3.328 3.392 1.792 6.592 3.968 3.2 2.176 6.208 4.608 3.008 2.496 5.76 5.248 2.688 2.752 5.12 5.76 2.496 2.944 4.608 6.208 2.176 3.2 3.968 6.656 1.856 3.392 3.328 7.04 1.472 3.584 2.56 7.296 1.152 3.712 1.92 7.488 0.768 3.84 1.088 7.68 0.384 3.84 0.384 7.744 0 3.84-0.384 7.744-0.32 3.84-1.088 7.68t-1.92 7.552q-1.088 3.712-2.56 7.296t-3.328 7.04q-1.792 3.392-3.968 6.592-2.112 3.2-4.608 6.272-2.432 3.008-5.12 5.76-2.752 2.688-5.76 5.12-3.008 2.56-6.208 4.672-3.2 2.176-6.592 3.968-3.456 1.856-7.04 3.328-3.52 1.472-7.232 2.624-3.712 1.152-7.488 1.92-3.84 0.704-7.68 1.088-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.088-3.776-0.768-7.488-1.92-3.712-1.152-7.232-2.56-3.584-1.536-7.04-3.392-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-2.944-2.496-5.76-5.184-2.688-2.752-5.12-5.76t-4.608-6.272q-2.176-3.2-3.968-6.656-1.792-3.392-3.328-7.04-1.472-3.52-2.56-7.232-1.152-3.712-1.92-7.552-0.704-3.84-1.088-7.68-0.384-3.84-0.384-7.68 0-3.968 0.384-7.808t1.088-7.68q0.768-3.84 1.92-7.488 1.088-3.712 2.56-7.36 1.536-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.176-3.2 4.608-6.208 2.432-3.008 5.12-5.76 2.816-2.752 5.76-5.248 3.008-2.432 6.208-4.608 3.2-2.176 6.656-3.968 3.392-1.856 6.976-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152 3.84-0.384 7.68-0.384zM360.32 737.92q3.84 0 7.68 0.384t7.68 1.088q3.776 0.768 7.424 1.92 3.712 1.152 7.296 2.56 3.584 1.536 7.04 3.392 3.328 1.792 6.592 3.968 3.2 2.176 6.144 4.608 3.008 2.496 5.76 5.184 2.752 2.752 5.12 5.76 2.56 3.008 4.672 6.272 2.112 3.2 3.968 6.656 1.792 3.392 3.264 7.04 1.472 3.52 2.624 7.232 1.152 3.712 1.92 7.552 0.704 3.84 1.088 7.68 0.384 3.84 0.384 7.68 0 3.968-0.384 7.808t-1.152 7.68q-0.704 3.84-1.856 7.488-1.152 3.712-2.56 7.36-1.536 3.584-3.328 7.04-1.856 3.392-3.968 6.592-2.176 3.2-4.608 6.208-2.432 3.008-5.184 5.76-2.752 2.752-5.76 5.248-2.944 2.432-6.144 4.608-3.2 2.176-6.656 3.968-3.392 1.856-6.976 3.328-3.584 1.472-7.296 2.56-3.648 1.152-7.488 1.92-3.776 0.768-7.616 1.152-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.84-0.768-7.488-1.92-3.712-1.088-7.296-2.56t-6.976-3.328q-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-3.008-2.496-5.76-5.248-2.688-2.752-5.12-5.76-2.496-2.944-4.608-6.208-2.176-3.2-3.968-6.656-1.856-3.392-3.328-7.04-1.472-3.584-2.56-7.296-1.152-3.712-1.92-7.488-0.768-3.84-1.152-7.68-0.384-3.84-0.384-7.744 0-3.84 0.384-7.744 0.384-3.84 1.152-7.68 0.768-3.84 1.92-7.552 1.088-3.712 2.56-7.296t3.328-7.04q1.792-3.392 3.968-6.592 2.112-3.2 4.544-6.272 2.496-3.008 5.184-5.76 2.752-2.688 5.76-5.12 2.944-2.56 6.208-4.672 3.2-2.176 6.592-3.968 3.392-1.856 7.04-3.328 3.52-1.472 7.232-2.624 3.712-1.152 7.488-1.92 3.84-0.704 7.68-1.088 3.84-0.384 7.68-0.384z m0-304.96q3.84 0 7.68 0.384t7.68 1.152q3.776 0.768 7.424 1.92 3.712 1.088 7.296 2.56t7.04 3.328q3.328 1.792 6.592 3.968 3.2 2.176 6.144 4.608 3.008 2.496 5.76 5.248 2.752 2.752 5.12 5.76 2.56 2.944 4.672 6.208 2.112 3.2 3.968 6.656 1.792 3.392 3.264 7.04 1.472 3.52 2.624 7.296 1.152 3.712 1.92 7.488 0.704 3.84 1.088 7.68 0.384 3.84 0.384 7.744 0 3.84-0.384 7.744-0.384 3.84-1.152 7.68-0.704 3.84-1.856 7.552-1.152 3.712-2.56 7.296-1.536 3.584-3.328 7.04-1.856 3.392-3.968 6.592-2.176 3.2-4.608 6.272-2.432 3.008-5.184 5.76-2.752 2.688-5.76 5.12-2.944 2.56-6.144 4.672-3.2 2.176-6.656 3.968-3.392 1.856-6.976 3.328-3.584 1.472-7.296 2.624-3.648 1.152-7.488 1.92-3.776 0.704-7.616 1.088-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.84-0.704-7.488-1.856-3.712-1.152-7.296-2.56-3.584-1.536-6.976-3.392-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-3.008-2.496-5.76-5.248-2.688-2.688-5.12-5.76-2.496-2.944-4.608-6.208-2.176-3.2-3.968-6.656-1.856-3.392-3.328-7.04-1.472-3.52-2.56-7.232-1.152-3.712-1.92-7.552-0.768-3.84-1.152-7.68-0.384-3.84-0.384-7.68 0-3.968 0.384-7.808t1.152-7.68q0.768-3.84 1.92-7.488 1.088-3.776 2.56-7.36 1.472-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.112-3.2 4.544-6.208 2.496-3.008 5.184-5.76 2.752-2.752 5.76-5.248 2.944-2.432 6.208-4.608 3.2-2.176 6.592-3.968 3.392-1.856 7.04-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152 3.84-0.384 7.68-0.384zM360.32 128q3.84 0 7.68 0.384t7.68 1.152q3.776 0.768 7.424 1.92 3.712 1.088 7.296 2.56t7.04 3.328q3.328 1.792 6.592 3.968 3.2 2.176 6.144 4.608 3.008 2.496 5.76 5.248 2.752 2.752 5.12 5.76 2.56 2.944 4.672 6.208 2.112 3.2 3.968 6.656 1.792 3.392 3.264 7.04 1.472 3.584 2.624 7.296 1.152 3.712 1.92 7.488 0.704 3.84 1.088 7.68 0.384 3.84 0.384 7.744 0 3.84-0.384 7.744-0.384 3.84-1.152 7.68-0.704 3.84-1.856 7.552-1.152 3.712-2.56 7.296-1.536 3.584-3.328 7.04-1.856 3.392-3.968 6.592-2.176 3.2-4.608 6.272-2.432 3.008-5.184 5.76-2.752 2.688-5.76 5.12-2.944 2.56-6.144 4.672-3.2 2.176-6.656 3.968-3.392 1.856-6.976 3.328-3.584 1.472-7.296 2.624-3.648 1.152-7.488 1.92-3.776 0.704-7.616 1.088-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.088-3.84-0.768-7.488-1.92-3.712-1.152-7.296-2.56-3.584-1.536-6.976-3.392-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-3.008-2.496-5.76-5.184-2.688-2.752-5.12-5.76-2.496-3.008-4.608-6.272-2.176-3.2-3.968-6.656-1.856-3.392-3.328-7.04-1.472-3.52-2.56-7.232-1.152-3.712-1.92-7.552-0.768-3.84-1.152-7.68-0.384-3.84-0.384-7.68 0-3.968 0.384-7.808t1.152-7.68q0.768-3.84 1.92-7.488 1.088-3.712 2.56-7.36 1.472-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.112-3.2 4.544-6.208 2.496-3.008 5.184-5.76 2.752-2.752 5.76-5.248 2.944-2.432 6.208-4.608 3.2-2.176 6.592-3.968 3.392-1.856 7.04-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152Q356.48 128 360.32 128z\" fill=\"#6F7588\" p-id=\"19748\"></path>\n </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 menuIcon = `\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=\"M736 960h-448A224.64 224.64 0 0 1 64 736v-448A224.64 224.64 0 0 1 288 64h448A224.64 224.64 0 0 1 960 288v448a224.64 224.64 0 0 1-224 224z\" fill=\"#1E6FFF\" p-id=\"17945\"></path><path d=\"M356.288 550.4h113.024c19.2 0 32 12.8 32 32v145.088c0 19.2-19.2 32-38.4 32H324.288c-19.2 0-32-12.8-32-32V582.4c0-19.2 12.8-32 32-32h32z m241.024 0H742.4c19.2 0 32 17.088 32 36.288v138.624c0 19.2-14.912 34.176-34.112 34.176H601.6c-19.2 0-36.288-12.8-36.288-32V582.4c0-19.2 17.088-32 36.288-32h-4.288z m0-273.088H742.4c19.2 0 32 10.688 32 29.888v145.088c0 19.2-12.8 32-32 32H597.312c-19.2 0-32-12.8-32-32V307.2c0-17.088 12.8-29.888 32-29.888zM268.8 354.112L366.912 256c12.8-12.8 36.288-12.8 49.088 0l98.112 98.112c12.8 12.8 12.8 36.288 0 49.088L416 501.312c-12.8 12.8-36.288 12.8-49.088 0L268.8 403.2c-12.8-14.912-12.8-36.288 0-49.088z\" fill=\"#FFFFFF\" p-id=\"17946\"></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 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 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","import type { Selection } from '@jvs-milkdown/kit/prose/state'\n\nexport function isInCodeBlock(selection: Selection) {\n const type = selection.$from.parent.type\n return type.name === 'code_block'\n}\n\nexport function isInList(selection: Selection) {\n const type = selection.$from.node(selection.$from.depth - 1)?.type\n return type?.name === 'list_item'\n}\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","// 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 { 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","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 } 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.textContent.length === 0 && node.content.size <= 2 && !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 node.descendants((childNode: any) => {\n if (childNode.isText) {\n const tcType = textColorSchema.type(ctx)\n const bcType = bgColorSchema.type(ctx)\n if (!activeTextColor) {\n const tcMark = childNode.marks.find((m: any) => m.type === tcType)\n if (tcMark) activeTextColor = tcMark.attrs.color\n }\n if (!activeBgColor) {\n const bcMark = childNode.marks.find((m: any) => m.type === bcType)\n if (bcMark) activeBgColor = bcMark.attrs.color\n }\n }\n return false\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 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 start = pos + 1\n const end = pos + targetNode.nodeSize - 1\n\n tr.removeMark(start, end, textColorSchema.type(ctx))\n tr.removeMark(start, end, bgColorSchema.type(ctx))\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 type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\n// @ts-ignore\nimport { defineComponent, ref, h, Fragment, type PropType } from 'vue'\n\nimport { i18n } from '../../../core/locale'\nimport { keepAlive } from '../../../utils/keep-alive'\n\nkeepAlive(h, Fragment)\n\nimport { dragHandleIcon } from '../../../icons'\n\ninterface BlockHandleProps {\n onAdd: (el?: HTMLDivElement) => void\n onOpenMenu: (el?: HTMLDivElement) => void\n onHoverAdd: (el?: HTMLDivElement) => void\n onLeaveAdd: () => void\n onHoverMenu: (el?: HTMLDivElement) => void\n onLeaveMenu: () => void\n addIcon: string\n handleIcon: string\n ctx: Ctx\n state: { icon: string }\n}\n\nexport const BlockHandle = defineComponent<BlockHandleProps>({\n props: {\n onAdd: {\n type: Function,\n required: true,\n },\n onOpenMenu: {\n type: Function,\n required: true,\n },\n onHoverAdd: {\n type: Function,\n required: true,\n },\n onLeaveAdd: {\n type: Function,\n required: true,\n },\n onHoverMenu: {\n type: Function,\n required: true,\n },\n onLeaveMenu: {\n type: Function,\n required: true,\n },\n addIcon: {\n type: String,\n required: true,\n },\n handleIcon: {\n type: String,\n required: true,\n },\n ctx: {\n type: Object as PropType<Ctx>,\n required: true,\n },\n state: {\n type: Object as PropType<{ icon: string }>,\n required: true,\n },\n },\n setup(props: any) {\n const addButton = ref<HTMLDivElement>()\n const menuButton = ref<HTMLDivElement>()\n\n return () => {\n return (\n <>\n <div\n ref={addButton}\n class=\"operation-item add-button\"\n title={i18n(props.ctx, 'handle.add')}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.add('active')\n }}\n onPointerenter={() => {\n props.onHoverAdd(addButton.value)\n }}\n onPointerleave={() => {\n props.onLeaveAdd()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.remove('active')\n props.onAdd(addButton.value)\n }}\n >\n <Icon icon={props.addIcon} />\n </div>\n <div\n ref={menuButton}\n class=\"operation-item menu-item\"\n title={i18n(props.ctx, 'handle.menu')}\n onClick={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n props.onOpenMenu(menuButton.value)\n }}\n onPointerenter={() => {\n props.onHoverMenu(menuButton.value)\n }}\n onPointerleave={() => {\n props.onLeaveMenu()\n }}\n >\n <Icon icon={props.state.icon} />\n </div>\n <div class=\"divider\"></div>\n <div\n class=\"operation-item drag-item\"\n title={i18n(props.ctx, 'handle.drag')}\n >\n <Icon icon={dragHandleIcon} />\n </div>\n </>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { PluginView } from '@jvs-milkdown/kit/prose/state'\n\nimport { editorViewCtx } from '@jvs-milkdown/kit/core'\nimport {\n BlockProvider,\n block,\n blockConfig,\n type BlockProviderOptions,\n} from '@jvs-milkdown/kit/plugin/block'\nimport { findParent } from '@jvs-milkdown/kit/prose'\nimport { NodeSelection } from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport { createApp, reactive, type App } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport {\n menuIcon,\n plusIcon,\n textIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n quoteIcon,\n bulletListIcon,\n orderedListIcon,\n todoListIcon,\n codeIcon,\n dividerIcon,\n tableIcon,\n functionsIcon,\n fileLinkIcon,\n imageIcon,\n} from '../../../icons'\nimport { menuAPI } from '../menu'\nimport { BlockHandle } from './component'\n\nclass BlockHandleView implements PluginView {\n #content: HTMLElement\n #provider: BlockProvider\n #state = reactive({ icon: textIcon })\n #app: App\n readonly #ctx: Ctx\n constructor(ctx: Ctx, config?: BlockEditFeatureConfig) {\n this.#ctx = ctx\n const content = document.createElement('div')\n content.classList.add('milkdown-block-handle')\n\n // Singleton check: ensure no other handles exist in the DOM\n document.querySelectorAll('.milkdown-block-handle').forEach((el) => {\n el.remove()\n })\n\n const app = createApp(BlockHandle, {\n onAdd: this.onAdd,\n onOpenMenu: this.onOpenMenu,\n onHoverAdd: this.onHoverAdd,\n onLeaveAdd: this.onLeaveAdd,\n onHoverMenu: this.onHoverMenu,\n onLeaveMenu: this.onLeaveMenu,\n addIcon: config?.handleAddIcon ?? plusIcon,\n handleIcon: config?.handleDragIcon ?? menuIcon,\n ctx: this.#ctx,\n state: this.#state,\n })\n app.mount(content)\n this.#app = app\n this.#content = content\n const blockProviderOptions = config?.blockHandle ?? {}\n this.#provider = new BlockProvider({\n ctx,\n content,\n getOffset: () => 16,\n getPlacement: ({ active, blockDom }) => {\n // Synchronize state on hover since PluginView.update only fires on ProseMirror state transactions\n const node = active.node\n let hasMediaChild = false\n if (node.type.name === 'paragraph') {\n node.content.forEach((child: any) => {\n if (\n child.type.name.includes('image') ||\n child.type.name.includes('math')\n ) {\n hasMediaChild = true\n }\n })\n }\n const isMedia =\n node.type.name.includes('image') ||\n node.type.name.includes('attachment') ||\n node.type.name === 'hr' ||\n node.type.name.includes('math') ||\n hasMediaChild\n const isEmpty =\n node.textContent.length === 0 && node.content.size <= 2 && !isMedia\n if (isEmpty) {\n this.#content.classList.add('empty-block')\n } else {\n this.#content.classList.remove('empty-block')\n }\n\n this.#syncIcon(active.node)\n\n let totalDescendant = 0\n active.node.descendants((node) => {\n totalDescendant += node.childCount\n })\n const dom = active.el\n const domRect = dom.getBoundingClientRect()\n const handleRect = blockDom.getBoundingClientRect()\n const style = window.getComputedStyle(dom)\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n const height = domRect.height - paddingTop - paddingBottom\n const handleHeight = handleRect.height\n\n if (active.node.type.name === 'heading') {\n let lineHeight = Number.parseFloat(style.lineHeight)\n if (Number.isNaN(lineHeight)) {\n lineHeight = Number.parseFloat(style.fontSize) * 1.2 || 24\n }\n const isMultiline = height > lineHeight * 1.5\n return isMultiline ? 'left-start' : 'left'\n }\n\n return totalDescendant > 2 || handleHeight < height\n ? 'left-start'\n : 'left'\n },\n ...(blockProviderOptions as Partial<BlockProviderOptions>),\n })\n this.update()\n }\n\n update = () => {\n this.#provider.update()\n if (this.#provider.active) {\n const node = this.#provider.active.node\n let hasMediaChild = false\n if (node.type.name === 'paragraph') {\n node.content.forEach((child: any) => {\n if (\n child.type.name.includes('image') ||\n child.type.name.includes('math')\n ) {\n hasMediaChild = true\n }\n })\n }\n const isMedia =\n node.type.name.includes('image') ||\n node.type.name.includes('attachment') ||\n node.type.name === 'hr' ||\n node.type.name.includes('math') ||\n hasMediaChild\n const isEmpty =\n node.textContent.length === 0 && node.content.size <= 2 && !isMedia\n if (isEmpty) {\n this.#content.classList.add('empty-block')\n } else {\n this.#content.classList.remove('empty-block')\n }\n\n this.#syncIcon(node)\n } else {\n this.#content.classList.remove('empty-block')\n this.#state.icon = textIcon\n }\n }\n\n #syncIcon = (node: any) => {\n if (node.type.name.includes('image')) {\n this.#state.icon = imageIcon\n return\n }\n if (node.type.name.includes('attachment')) {\n this.#state.icon = fileLinkIcon\n return\n }\n switch (node.type.name) {\n case 'heading': {\n const level = node.attrs.level\n const headingIcons = [\n h1Icon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n ]\n this.#state.icon = headingIcons[level] ?? textIcon\n break\n }\n case 'blockquote':\n this.#state.icon = quoteIcon\n break\n case 'code_block':\n this.#state.icon = codeIcon\n break\n case 'math_display':\n case 'math_inline':\n this.#state.icon = functionsIcon\n break\n case 'hr':\n this.#state.icon = dividerIcon\n break\n case 'table':\n this.#state.icon = tableIcon\n break\n case 'list_item':\n if (node.attrs.checked != null) {\n this.#state.icon = todoListIcon\n } else {\n this.#state.icon = bulletListIcon\n }\n break\n case 'bullet_list':\n this.#state.icon = bulletListIcon\n break\n case 'ordered_list':\n this.#state.icon = orderedListIcon\n break\n default:\n this.#state.icon = textIcon\n }\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n this.#app.unmount()\n }\n\n onAdd = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n const view = ctx.get(editorViewCtx)\n if (!view.hasFocus()) view.focus()\n\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, true, el, 'list')\n }\n\n onOpenMenu = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, true, el, 'block')\n }\n\n onHoverAdd = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, false, el, 'list')\n }\n\n onLeaveAdd = () => {\n const ctx = this.#ctx\n ctx.get(menuAPI.key).onHoverDelayHide()\n }\n\n onHoverMenu = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, false, el, 'block')\n }\n\n onLeaveMenu = () => {\n const ctx = this.#ctx\n ctx.get(menuAPI.key).onHoverDelayHide()\n }\n}\n\nexport function configureBlockHandle(\n ctx: Ctx,\n config?: BlockEditFeatureConfig\n) {\n ctx.set(blockConfig.key, {\n filterNodes: (pos) => {\n const menuApi = ctx.get(menuAPI.key)\n if (menuApi.isShow() && !menuApi.isProgrammatic()) {\n return false\n }\n\n if (\n document.querySelector('.milkdown-latex-inline-edit[data-show=\"true\"]')\n ) {\n return false\n }\n\n const view = ctx.get(editorViewCtx)\n const { selection } = view.state\n if (\n selection instanceof NodeSelection &&\n selection.node.type.name === 'math_inline'\n ) {\n return false\n }\n\n if (!selection.empty && !(selection instanceof NodeSelection)) {\n const { $from, $to } = selection\n // Hide block handle if selection spans multiple blocks or is an AllSelection\n if ($from.parent !== $to.parent || !$from.parent.isTextblock) {\n return false\n }\n }\n\n const filter = findParent((node) =>\n ['table', 'blockquote', 'math_inline'].includes(node.type.name)\n )(pos)\n if (filter) return false\n\n return true\n },\n })\n ctx.set(block.key, {\n view: () => new BlockHandleView(ctx, config),\n })\n}\n","import {\n block,\n type BlockProviderOptions,\n} from '@jvs-milkdown/kit/plugin/block'\n\nimport type { DeepPartial } from '../../utils'\nimport type { GroupBuilder } from '../../utils/group-builder'\nimport type { DefineFeature } from '../shared'\nimport type { SlashMenuItem } from './menu/utils'\n\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { CrepeFeature } from '../index'\nimport { configureBlockHandle } from './handle'\nimport { configureMenu, menu, menuAPI } from './menu'\n\ninterface BlockEditConfig {\n handleAddIcon: string\n handleDragIcon: string\n buildMenu: (builder: GroupBuilder<SlashMenuItem>) => void\n\n blockHandle: Pick<\n BlockProviderOptions,\n | 'shouldShow'\n | 'getOffset'\n | 'getPosition'\n | 'getPlacement'\n | 'middleware'\n | 'floatingUIOptions'\n | 'root'\n >\n\n textGroup: {\n label: string\n text: {\n label: string\n icon: string\n } | null\n h1: {\n label: string\n icon: string\n } | null\n h2: {\n label: string\n icon: string\n } | null\n h3: {\n label: string\n icon: string\n } | null\n h4: {\n label: string\n icon: string\n } | null\n h5: {\n label: string\n icon: string\n } | null\n h6: {\n label: string\n icon: string\n } | null\n } | null\n\n blockGroup: {\n label: string\n quote: {\n label: string\n icon: string\n } | null\n divider: {\n label: string\n icon: string\n } | null\n } | null\n\n listGroup: {\n label: string\n bulletList: {\n label: string\n icon: string\n } | null\n orderedList: {\n label: string\n icon: string\n } | null\n taskList: {\n label: string\n icon: string\n } | null\n } | null\n\n advancedGroup: {\n label: string\n image: {\n label: string\n icon: string\n } | null\n codeBlock: {\n label: string\n icon: string\n } | null\n table: {\n label: string\n icon: string\n } | null\n math: {\n label: string\n icon: string\n } | null\n attachment: {\n label: string\n icon: string\n } | null\n } | null\n}\n\nexport type BlockEditFeatureConfig = DeepPartial<BlockEditConfig>\n\nexport const blockEdit: DefineFeature<BlockEditFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.BlockEdit))\n .config((ctx) => configureBlockHandle(ctx, config))\n .config((ctx) => configureMenu(ctx, config))\n .use(menuAPI)\n .use(block)\n .use(menu)\n}\n"],"names":["createSlice","CrepeFeature","__privateAdd","__privateSet","__privateGet","group","$remark","visit","$markAttr","$markSchema","$command","$ctx","$nodeSchema","state","findNodeInSelection","_tr","NodeSelection","TextSelection","editorViewCtx","commandsCtx","listItemSchema","liftListItemCommand","headingSchema","setBlockTypeCommand","paragraphSchema","ctx","_a","_b","clearTextInCurrentBlockCommand","_c","_d","wrapInHeadingCommand","commands","blockquoteSchema","lift","wrapInBlockTypeCommand","hrSchema","addBlockTypeCommand","bulletListSchema","orderedListSchema","wrapInBulletListCommand","wrapInOrderedListCommand","wrapInList","imageBlock","imageBlockSchema","codeBlockSchema","createTable","selectTextNearPosCommand","items","groups","h","defineComponent","ref","computed","watch","watchEffect","onUnmounted","Icon","_","_content","_app","slashFactory","computePosition","flip","shift","offset","createApp","SlashProvider","view","Fragment","reactive","BlockProvider","node","blockConfig","findParent","block"],"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/icons/align-center.ts","../../../../src/icons/align-left.ts","../../../../src/icons/align-right.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/drag-handle.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/menu.ts","../../../../src/icons/ordered-list.ts","../../../../src/icons/plus.ts","../../../../src/icons/quote.ts","../../../../src/icons/remove.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/file-link.ts","../../../../src/utils/checker.ts","../../../../src/utils/group-builder.ts","../../../../src/utils/keep-alive.ts","../../../../src/feature/toolbar/color.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/block-edit/handle/component.tsx","../../../../src/feature/block-edit/handle/index.ts","../../../../src/feature/block-edit/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\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\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","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 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 dragHandleIcon = `\n <svg viewBox=\"0 0 1024 1024\"xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"height=\"16\">\n <path d=\"M663.744 737.92q3.84 0 7.68 0.384t7.68 1.088q3.84 0.768 7.488 1.92 3.712 1.152 7.296 2.56 3.52 1.536 6.976 3.392 3.392 1.792 6.592 3.968 3.2 2.176 6.208 4.608 3.008 2.496 5.76 5.184 2.688 2.752 5.12 5.76 2.496 3.008 4.608 6.272 2.176 3.2 3.968 6.656 1.856 3.392 3.328 7.04 1.472 3.52 2.56 7.232 1.152 3.712 1.92 7.552 0.768 3.84 1.088 7.68 0.384 3.84 0.384 7.68 0 3.968-0.384 7.808-0.32 3.84-1.088 7.68t-1.92 7.488q-1.088 3.712-2.56 7.36-1.472 3.584-3.328 7.04-1.792 3.392-3.968 6.592-2.112 3.2-4.608 6.208-2.432 3.008-5.12 5.76-2.752 2.752-5.76 5.248-3.008 2.432-6.208 4.608-3.2 2.176-6.592 3.968-3.456 1.856-7.04 3.328-3.52 1.472-7.232 2.56-3.712 1.152-7.488 1.92-3.84 0.768-7.68 1.152-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.776-0.768-7.488-1.92-3.712-1.088-7.232-2.56-3.584-1.472-7.04-3.328-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-2.944-2.496-5.76-5.248-2.688-2.752-5.12-5.76-2.432-2.944-4.608-6.208-2.176-3.2-3.968-6.656-1.792-3.392-3.328-7.04-1.472-3.584-2.56-7.296-1.152-3.712-1.92-7.488-0.704-3.84-1.088-7.68-0.384-3.84-0.384-7.744 0-3.84 0.384-7.744 0.384-3.84 1.088-7.68 0.768-3.84 1.92-7.552 1.088-3.712 2.56-7.296 1.536-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.176-3.2 4.608-6.272 2.432-3.008 5.12-5.76 2.816-2.688 5.76-5.12 3.008-2.56 6.208-4.672 3.2-2.176 6.656-3.968 3.392-1.856 6.976-3.328 3.52-1.472 7.232-2.624 3.712-1.152 7.488-1.92 3.84-0.704 7.68-1.088 3.84-0.384 7.68-0.384z m0-304.96q3.84 0 7.68 0.384t7.68 1.152q3.84 0.768 7.488 1.92 3.712 1.088 7.296 2.56 3.52 1.536 6.976 3.328 3.392 1.856 6.592 3.968 3.2 2.176 6.208 4.672 3.008 2.432 5.76 5.184 2.688 2.752 5.12 5.76 2.496 3.008 4.608 6.208 2.176 3.2 3.968 6.656 1.856 3.456 3.328 7.04 1.472 3.584 2.56 7.296 1.152 3.712 1.92 7.488 0.768 3.84 1.088 7.68 0.384 3.84 0.384 7.744t-0.384 7.808q-0.32 3.84-1.088 7.68-0.768 3.776-1.92 7.488-1.088 3.712-2.56 7.296t-3.328 7.04q-1.792 3.392-3.968 6.656-2.112 3.2-4.608 6.208-2.432 3.008-5.12 5.76-2.752 2.752-5.76 5.184-3.008 2.496-6.208 4.608-3.2 2.176-6.592 4.032-3.456 1.792-7.04 3.328-3.52 1.472-7.232 2.56-3.712 1.152-7.488 1.92-3.84 0.768-7.68 1.152-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.776-0.768-7.488-1.92-3.712-1.088-7.232-2.56-3.584-1.536-7.04-3.328-3.392-1.856-6.592-4.032-3.2-2.112-6.208-4.608-2.944-2.432-5.76-5.184-2.688-2.752-5.12-5.76t-4.608-6.208q-2.176-3.2-3.968-6.656-1.792-3.456-3.328-7.04-1.472-3.584-2.56-7.296-1.152-3.712-1.92-7.552-0.704-3.84-1.088-7.68-0.384-3.84-0.384-7.68 0-3.904 0.384-7.808 0.384-3.84 1.088-7.68 0.768-3.776 1.92-7.488 1.088-3.712 2.56-7.296 1.536-3.584 3.328-7.04 1.792-3.392 3.968-6.656 2.176-3.2 4.608-6.208 2.432-3.008 5.12-5.76 2.816-2.752 5.76-5.184 3.008-2.496 6.208-4.672 3.2-2.112 6.656-3.968 3.392-1.792 6.976-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152 3.84-0.384 7.68-0.384z m0-304.96q3.84 0 7.68 0.384t7.68 1.152q3.84 0.768 7.488 1.92 3.712 1.088 7.296 2.56 3.52 1.472 6.976 3.328 3.392 1.792 6.592 3.968 3.2 2.176 6.208 4.608 3.008 2.496 5.76 5.248 2.688 2.752 5.12 5.76 2.496 2.944 4.608 6.208 2.176 3.2 3.968 6.656 1.856 3.392 3.328 7.04 1.472 3.584 2.56 7.296 1.152 3.712 1.92 7.488 0.768 3.84 1.088 7.68 0.384 3.84 0.384 7.744 0 3.84-0.384 7.744-0.32 3.84-1.088 7.68t-1.92 7.552q-1.088 3.712-2.56 7.296t-3.328 7.04q-1.792 3.392-3.968 6.592-2.112 3.2-4.608 6.272-2.432 3.008-5.12 5.76-2.752 2.688-5.76 5.12-3.008 2.56-6.208 4.672-3.2 2.176-6.592 3.968-3.456 1.856-7.04 3.328-3.52 1.472-7.232 2.624-3.712 1.152-7.488 1.92-3.84 0.704-7.68 1.088-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.088-3.776-0.768-7.488-1.92-3.712-1.152-7.232-2.56-3.584-1.536-7.04-3.392-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-2.944-2.496-5.76-5.184-2.688-2.752-5.12-5.76t-4.608-6.272q-2.176-3.2-3.968-6.656-1.792-3.392-3.328-7.04-1.472-3.52-2.56-7.232-1.152-3.712-1.92-7.552-0.704-3.84-1.088-7.68-0.384-3.84-0.384-7.68 0-3.968 0.384-7.808t1.088-7.68q0.768-3.84 1.92-7.488 1.088-3.712 2.56-7.36 1.536-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.176-3.2 4.608-6.208 2.432-3.008 5.12-5.76 2.816-2.752 5.76-5.248 3.008-2.432 6.208-4.608 3.2-2.176 6.656-3.968 3.392-1.856 6.976-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152 3.84-0.384 7.68-0.384zM360.32 737.92q3.84 0 7.68 0.384t7.68 1.088q3.776 0.768 7.424 1.92 3.712 1.152 7.296 2.56 3.584 1.536 7.04 3.392 3.328 1.792 6.592 3.968 3.2 2.176 6.144 4.608 3.008 2.496 5.76 5.184 2.752 2.752 5.12 5.76 2.56 3.008 4.672 6.272 2.112 3.2 3.968 6.656 1.792 3.392 3.264 7.04 1.472 3.52 2.624 7.232 1.152 3.712 1.92 7.552 0.704 3.84 1.088 7.68 0.384 3.84 0.384 7.68 0 3.968-0.384 7.808t-1.152 7.68q-0.704 3.84-1.856 7.488-1.152 3.712-2.56 7.36-1.536 3.584-3.328 7.04-1.856 3.392-3.968 6.592-2.176 3.2-4.608 6.208-2.432 3.008-5.184 5.76-2.752 2.752-5.76 5.248-2.944 2.432-6.144 4.608-3.2 2.176-6.656 3.968-3.392 1.856-6.976 3.328-3.584 1.472-7.296 2.56-3.648 1.152-7.488 1.92-3.776 0.768-7.616 1.152-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.84-0.768-7.488-1.92-3.712-1.088-7.296-2.56t-6.976-3.328q-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-3.008-2.496-5.76-5.248-2.688-2.752-5.12-5.76-2.496-2.944-4.608-6.208-2.176-3.2-3.968-6.656-1.856-3.392-3.328-7.04-1.472-3.584-2.56-7.296-1.152-3.712-1.92-7.488-0.768-3.84-1.152-7.68-0.384-3.84-0.384-7.744 0-3.84 0.384-7.744 0.384-3.84 1.152-7.68 0.768-3.84 1.92-7.552 1.088-3.712 2.56-7.296t3.328-7.04q1.792-3.392 3.968-6.592 2.112-3.2 4.544-6.272 2.496-3.008 5.184-5.76 2.752-2.688 5.76-5.12 2.944-2.56 6.208-4.672 3.2-2.176 6.592-3.968 3.392-1.856 7.04-3.328 3.52-1.472 7.232-2.624 3.712-1.152 7.488-1.92 3.84-0.704 7.68-1.088 3.84-0.384 7.68-0.384z m0-304.96q3.84 0 7.68 0.384t7.68 1.152q3.776 0.768 7.424 1.92 3.712 1.088 7.296 2.56t7.04 3.328q3.328 1.792 6.592 3.968 3.2 2.176 6.144 4.608 3.008 2.496 5.76 5.248 2.752 2.752 5.12 5.76 2.56 2.944 4.672 6.208 2.112 3.2 3.968 6.656 1.792 3.392 3.264 7.04 1.472 3.52 2.624 7.296 1.152 3.712 1.92 7.488 0.704 3.84 1.088 7.68 0.384 3.84 0.384 7.744 0 3.84-0.384 7.744-0.384 3.84-1.152 7.68-0.704 3.84-1.856 7.552-1.152 3.712-2.56 7.296-1.536 3.584-3.328 7.04-1.856 3.392-3.968 6.592-2.176 3.2-4.608 6.272-2.432 3.008-5.184 5.76-2.752 2.688-5.76 5.12-2.944 2.56-6.144 4.672-3.2 2.176-6.656 3.968-3.392 1.856-6.976 3.328-3.584 1.472-7.296 2.624-3.648 1.152-7.488 1.92-3.776 0.704-7.616 1.088-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.152-3.84-0.704-7.488-1.856-3.712-1.152-7.296-2.56-3.584-1.536-6.976-3.392-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-3.008-2.496-5.76-5.248-2.688-2.688-5.12-5.76-2.496-2.944-4.608-6.208-2.176-3.2-3.968-6.656-1.856-3.392-3.328-7.04-1.472-3.52-2.56-7.232-1.152-3.712-1.92-7.552-0.768-3.84-1.152-7.68-0.384-3.84-0.384-7.68 0-3.968 0.384-7.808t1.152-7.68q0.768-3.84 1.92-7.488 1.088-3.776 2.56-7.36 1.472-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.112-3.2 4.544-6.208 2.496-3.008 5.184-5.76 2.752-2.752 5.76-5.248 2.944-2.432 6.208-4.608 3.2-2.176 6.592-3.968 3.392-1.856 7.04-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152 3.84-0.384 7.68-0.384zM360.32 128q3.84 0 7.68 0.384t7.68 1.152q3.776 0.768 7.424 1.92 3.712 1.088 7.296 2.56t7.04 3.328q3.328 1.792 6.592 3.968 3.2 2.176 6.144 4.608 3.008 2.496 5.76 5.248 2.752 2.752 5.12 5.76 2.56 2.944 4.672 6.208 2.112 3.2 3.968 6.656 1.792 3.392 3.264 7.04 1.472 3.584 2.624 7.296 1.152 3.712 1.92 7.488 0.704 3.84 1.088 7.68 0.384 3.84 0.384 7.744 0 3.84-0.384 7.744-0.384 3.84-1.152 7.68-0.704 3.84-1.856 7.552-1.152 3.712-2.56 7.296-1.536 3.584-3.328 7.04-1.856 3.392-3.968 6.592-2.176 3.2-4.608 6.272-2.432 3.008-5.184 5.76-2.752 2.688-5.76 5.12-2.944 2.56-6.144 4.672-3.2 2.176-6.656 3.968-3.392 1.856-6.976 3.328-3.584 1.472-7.296 2.624-3.648 1.152-7.488 1.92-3.776 0.704-7.616 1.088-3.84 0.384-7.68 0.384t-7.68-0.384q-3.84-0.384-7.68-1.088-3.84-0.768-7.488-1.92-3.712-1.152-7.296-2.56-3.584-1.536-6.976-3.392-3.392-1.792-6.592-3.968-3.2-2.176-6.208-4.608-3.008-2.496-5.76-5.184-2.688-2.752-5.12-5.76-2.496-3.008-4.608-6.272-2.176-3.2-3.968-6.656-1.856-3.392-3.328-7.04-1.472-3.52-2.56-7.232-1.152-3.712-1.92-7.552-0.768-3.84-1.152-7.68-0.384-3.84-0.384-7.68 0-3.968 0.384-7.808t1.152-7.68q0.768-3.84 1.92-7.488 1.088-3.712 2.56-7.36 1.472-3.584 3.328-7.04 1.792-3.392 3.968-6.592 2.112-3.2 4.544-6.208 2.496-3.008 5.184-5.76 2.752-2.752 5.76-5.248 2.944-2.432 6.208-4.608 3.2-2.176 6.592-3.968 3.392-1.856 7.04-3.328 3.52-1.472 7.232-2.56 3.712-1.152 7.488-1.92 3.84-0.768 7.68-1.152Q356.48 128 360.32 128z\" fill=\"#6F7588\" p-id=\"19748\"></path>\n </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 menuIcon = `\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=\"M736 960h-448A224.64 224.64 0 0 1 64 736v-448A224.64 224.64 0 0 1 288 64h448A224.64 224.64 0 0 1 960 288v448a224.64 224.64 0 0 1-224 224z\" fill=\"#1E6FFF\" p-id=\"17945\"></path><path d=\"M356.288 550.4h113.024c19.2 0 32 12.8 32 32v145.088c0 19.2-19.2 32-38.4 32H324.288c-19.2 0-32-12.8-32-32V582.4c0-19.2 12.8-32 32-32h32z m241.024 0H742.4c19.2 0 32 17.088 32 36.288v138.624c0 19.2-14.912 34.176-34.112 34.176H601.6c-19.2 0-36.288-12.8-36.288-32V582.4c0-19.2 17.088-32 36.288-32h-4.288z m0-273.088H742.4c19.2 0 32 10.688 32 29.888v145.088c0 19.2-12.8 32-32 32H597.312c-19.2 0-32-12.8-32-32V307.2c0-17.088 12.8-29.888 32-29.888zM268.8 354.112L366.912 256c12.8-12.8 36.288-12.8 49.088 0l98.112 98.112c12.8 12.8 12.8 36.288 0 49.088L416 501.312c-12.8 12.8-36.288 12.8-49.088 0L268.8 403.2c-12.8-14.912-12.8-36.288 0-49.088z\" fill=\"#FFFFFF\" p-id=\"17946\"></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 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 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","import type { Selection } from '@jvs-milkdown/kit/prose/state'\n\nexport function isInCodeBlock(selection: Selection) {\n const type = selection.$from.parent.type\n return type.name === 'code_block'\n}\n\nexport function isInList(selection: Selection) {\n const type = selection.$from.node(selection.$from.depth - 1)?.type\n return type?.name === 'list_item'\n}\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","// 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 { 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","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 } 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.textContent.length === 0 && node.content.size <= 2 && !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 node.descendants((childNode: any) => {\n if (childNode.isText) {\n const tcType = textColorSchema.type(ctx)\n const bcType = bgColorSchema.type(ctx)\n if (!activeTextColor) {\n const tcMark = childNode.marks.find((m: any) => m.type === tcType)\n if (tcMark) activeTextColor = tcMark.attrs.color\n }\n if (!activeBgColor) {\n const bcMark = childNode.marks.find((m: any) => m.type === bcType)\n if (bcMark) activeBgColor = bcMark.attrs.color\n }\n }\n return false\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 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 start = pos + 1\n const end = pos + targetNode.nodeSize - 1\n\n tr.removeMark(start, end, textColorSchema.type(ctx))\n tr.removeMark(start, end, bgColorSchema.type(ctx))\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 type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\n// @ts-ignore\nimport { defineComponent, ref, h, Fragment, type PropType } from 'vue'\n\nimport { i18n } from '../../../core/locale'\nimport { keepAlive } from '../../../utils/keep-alive'\n\nkeepAlive(h, Fragment)\n\nimport { dragHandleIcon } from '../../../icons'\n\ninterface BlockHandleProps {\n onAdd: (el?: HTMLDivElement) => void\n onOpenMenu: (el?: HTMLDivElement) => void\n onHoverAdd: (el?: HTMLDivElement) => void\n onLeaveAdd: () => void\n onHoverMenu: (el?: HTMLDivElement) => void\n onLeaveMenu: () => void\n addIcon: string\n handleIcon: string\n ctx: Ctx\n state: { icon: string }\n}\n\nexport const BlockHandle = defineComponent<BlockHandleProps>({\n props: {\n onAdd: {\n type: Function,\n required: true,\n },\n onOpenMenu: {\n type: Function,\n required: true,\n },\n onHoverAdd: {\n type: Function,\n required: true,\n },\n onLeaveAdd: {\n type: Function,\n required: true,\n },\n onHoverMenu: {\n type: Function,\n required: true,\n },\n onLeaveMenu: {\n type: Function,\n required: true,\n },\n addIcon: {\n type: String,\n required: true,\n },\n handleIcon: {\n type: String,\n required: true,\n },\n ctx: {\n type: Object as PropType<Ctx>,\n required: true,\n },\n state: {\n type: Object as PropType<{ icon: string }>,\n required: true,\n },\n },\n setup(props: any) {\n const addButton = ref<HTMLDivElement>()\n const menuButton = ref<HTMLDivElement>()\n\n return () => {\n return (\n <>\n <div\n ref={addButton}\n class=\"operation-item add-button\"\n title={i18n(props.ctx, 'handle.add')}\n onPointerdown={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.add('active')\n }}\n onPointerenter={() => {\n props.onHoverAdd(addButton.value)\n }}\n onPointerleave={() => {\n props.onLeaveAdd()\n }}\n onPointerup={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n addButton.value?.classList.remove('active')\n props.onAdd(addButton.value)\n }}\n >\n <Icon icon={props.addIcon} />\n </div>\n <div\n ref={menuButton}\n class=\"operation-item menu-item\"\n title={i18n(props.ctx, 'handle.menu')}\n onClick={(e: any) => {\n e.preventDefault()\n e.stopPropagation()\n props.onOpenMenu(menuButton.value)\n }}\n onPointerenter={() => {\n props.onHoverMenu(menuButton.value)\n }}\n onPointerleave={() => {\n props.onLeaveMenu()\n }}\n >\n <Icon icon={props.state.icon} />\n </div>\n <div class=\"divider\"></div>\n <div\n class=\"operation-item drag-item\"\n title={i18n(props.ctx, 'handle.drag')}\n >\n <Icon icon={dragHandleIcon} />\n </div>\n </>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { PluginView } from '@jvs-milkdown/kit/prose/state'\n\nimport { editorViewCtx } from '@jvs-milkdown/kit/core'\nimport {\n BlockProvider,\n block,\n blockConfig,\n type BlockProviderOptions,\n} from '@jvs-milkdown/kit/plugin/block'\nimport { findParent } from '@jvs-milkdown/kit/prose'\nimport { NodeSelection } from '@jvs-milkdown/kit/prose/state'\n// @ts-ignore\nimport { createApp, reactive, type App } from 'vue'\n\nimport type { BlockEditFeatureConfig } from '../index'\n\nimport {\n menuIcon,\n plusIcon,\n textIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n quoteIcon,\n bulletListIcon,\n orderedListIcon,\n todoListIcon,\n codeIcon,\n dividerIcon,\n tableIcon,\n functionsIcon,\n fileLinkIcon,\n imageIcon,\n} from '../../../icons'\nimport { menuAPI } from '../menu'\nimport { BlockHandle } from './component'\n\nclass BlockHandleView implements PluginView {\n #content: HTMLElement\n #provider: BlockProvider\n #state = reactive({ icon: textIcon })\n #app: App\n readonly #ctx: Ctx\n constructor(ctx: Ctx, config?: BlockEditFeatureConfig) {\n this.#ctx = ctx\n const content = document.createElement('div')\n content.classList.add('milkdown-block-handle')\n\n // Singleton check: ensure no other handles exist in the DOM\n document.querySelectorAll('.milkdown-block-handle').forEach((el) => {\n el.remove()\n })\n\n const app = createApp(BlockHandle, {\n onAdd: this.onAdd,\n onOpenMenu: this.onOpenMenu,\n onHoverAdd: this.onHoverAdd,\n onLeaveAdd: this.onLeaveAdd,\n onHoverMenu: this.onHoverMenu,\n onLeaveMenu: this.onLeaveMenu,\n addIcon: config?.handleAddIcon ?? plusIcon,\n handleIcon: config?.handleDragIcon ?? menuIcon,\n ctx: this.#ctx,\n state: this.#state,\n })\n app.mount(content)\n this.#app = app\n this.#content = content\n const blockProviderOptions = config?.blockHandle ?? {}\n this.#provider = new BlockProvider({\n ctx,\n content,\n getOffset: () => 16,\n getPlacement: ({ active, blockDom }) => {\n // Synchronize state on hover since PluginView.update only fires on ProseMirror state transactions\n const node = active.node\n let hasMediaChild = false\n if (node.type.name === 'paragraph') {\n node.content.forEach((child: any) => {\n if (\n child.type.name.includes('image') ||\n child.type.name.includes('math')\n ) {\n hasMediaChild = true\n }\n })\n }\n const isMedia =\n node.type.name.includes('image') ||\n node.type.name.includes('attachment') ||\n node.type.name === 'hr' ||\n node.type.name.includes('math') ||\n hasMediaChild\n const isEmpty =\n node.textContent.length === 0 && node.content.size <= 2 && !isMedia\n if (isEmpty) {\n this.#content.classList.add('empty-block')\n } else {\n this.#content.classList.remove('empty-block')\n }\n\n this.#syncIcon(active.node)\n\n let totalDescendant = 0\n active.node.descendants((node) => {\n totalDescendant += node.childCount\n })\n const dom = active.el\n const domRect = dom.getBoundingClientRect()\n const handleRect = blockDom.getBoundingClientRect()\n const style = window.getComputedStyle(dom)\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n const height = domRect.height - paddingTop - paddingBottom\n const handleHeight = handleRect.height\n\n if (active.node.type.name === 'heading') {\n let lineHeight = Number.parseFloat(style.lineHeight)\n if (Number.isNaN(lineHeight)) {\n lineHeight = Number.parseFloat(style.fontSize) * 1.2 || 24\n }\n const isMultiline = height > lineHeight * 1.5\n return isMultiline ? 'left-start' : 'left'\n }\n\n return totalDescendant > 2 || handleHeight < height\n ? 'left-start'\n : 'left'\n },\n ...(blockProviderOptions as Partial<BlockProviderOptions>),\n })\n this.update()\n }\n\n update = () => {\n this.#provider.update()\n if (this.#provider.active) {\n const node = this.#provider.active.node\n let hasMediaChild = false\n if (node.type.name === 'paragraph') {\n node.content.forEach((child: any) => {\n if (\n child.type.name.includes('image') ||\n child.type.name.includes('math')\n ) {\n hasMediaChild = true\n }\n })\n }\n const isMedia =\n node.type.name.includes('image') ||\n node.type.name.includes('attachment') ||\n node.type.name === 'hr' ||\n node.type.name.includes('math') ||\n hasMediaChild\n const isEmpty =\n node.textContent.length === 0 && node.content.size <= 2 && !isMedia\n if (isEmpty) {\n this.#content.classList.add('empty-block')\n } else {\n this.#content.classList.remove('empty-block')\n }\n\n this.#syncIcon(node)\n } else {\n this.#content.classList.remove('empty-block')\n this.#state.icon = textIcon\n }\n }\n\n #syncIcon = (node: any) => {\n if (node.type.name.includes('image')) {\n this.#state.icon = imageIcon\n return\n }\n if (node.type.name.includes('attachment')) {\n this.#state.icon = fileLinkIcon\n return\n }\n switch (node.type.name) {\n case 'heading': {\n const level = node.attrs.level\n const headingIcons = [\n h1Icon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n ]\n this.#state.icon = headingIcons[level] ?? textIcon\n break\n }\n case 'blockquote':\n this.#state.icon = quoteIcon\n break\n case 'code_block':\n this.#state.icon = codeIcon\n break\n case 'math_display':\n case 'math_inline':\n this.#state.icon = functionsIcon\n break\n case 'hr':\n this.#state.icon = dividerIcon\n break\n case 'table':\n this.#state.icon = tableIcon\n break\n case 'list_item':\n if (node.attrs.checked != null) {\n this.#state.icon = todoListIcon\n } else {\n this.#state.icon = bulletListIcon\n }\n break\n case 'bullet_list':\n this.#state.icon = bulletListIcon\n break\n case 'ordered_list':\n this.#state.icon = orderedListIcon\n break\n default:\n this.#state.icon = textIcon\n }\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n this.#app.unmount()\n }\n\n onAdd = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n const view = ctx.get(editorViewCtx)\n if (!view.hasFocus()) view.focus()\n\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, true, el, 'list')\n }\n\n onOpenMenu = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, true, el, 'block')\n }\n\n onHoverAdd = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, false, el, 'list')\n }\n\n onLeaveAdd = () => {\n const ctx = this.#ctx\n ctx.get(menuAPI.key).onHoverDelayHide()\n }\n\n onHoverMenu = (el?: HTMLDivElement) => {\n const ctx = this.#ctx\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n ctx.get(menuAPI.key).show($pos.pos, false, el, 'block')\n }\n\n onLeaveMenu = () => {\n const ctx = this.#ctx\n ctx.get(menuAPI.key).onHoverDelayHide()\n }\n}\n\nexport function configureBlockHandle(\n ctx: Ctx,\n config?: BlockEditFeatureConfig\n) {\n ctx.set(blockConfig.key, {\n filterNodes: (pos) => {\n const menuApi = ctx.get(menuAPI.key)\n if (menuApi.isShow() && !menuApi.isProgrammatic()) {\n return false\n }\n\n if (\n document.querySelector('.milkdown-latex-inline-edit[data-show=\"true\"]')\n ) {\n return false\n }\n\n const view = ctx.get(editorViewCtx)\n const { selection } = view.state\n if (\n selection instanceof NodeSelection &&\n selection.node.type.name === 'math_inline'\n ) {\n return false\n }\n\n if (!selection.empty && !(selection instanceof NodeSelection)) {\n const { $from, $to } = selection\n // Hide block handle if selection spans multiple blocks or is an AllSelection\n if ($from.parent !== $to.parent || !$from.parent.isTextblock) {\n return false\n }\n }\n\n const filter = findParent((node) =>\n ['table', 'blockquote', 'math_inline'].includes(node.type.name)\n )(pos)\n if (filter) return false\n\n return true\n },\n })\n ctx.set(block.key, {\n view: () => new BlockHandleView(ctx, config),\n })\n}\n","import {\n block,\n type BlockProviderOptions,\n} from '@jvs-milkdown/kit/plugin/block'\n\nimport type { DeepPartial } from '../../utils'\nimport type { GroupBuilder } from '../../utils/group-builder'\nimport type { DefineFeature } from '../shared'\nimport type { SlashMenuItem } from './menu/utils'\n\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { CrepeFeature } from '../index'\nimport { configureBlockHandle } from './handle'\nimport { configureMenu, menu, menuAPI } from './menu'\n\ninterface BlockEditConfig {\n handleAddIcon: string\n handleDragIcon: string\n buildMenu: (builder: GroupBuilder<SlashMenuItem>) => void\n\n blockHandle: Pick<\n BlockProviderOptions,\n | 'shouldShow'\n | 'getOffset'\n | 'getPosition'\n | 'getPlacement'\n | 'middleware'\n | 'floatingUIOptions'\n | 'root'\n >\n\n textGroup: {\n label: string\n text: {\n label: string\n icon: string\n } | null\n h1: {\n label: string\n icon: string\n } | null\n h2: {\n label: string\n icon: string\n } | null\n h3: {\n label: string\n icon: string\n } | null\n h4: {\n label: string\n icon: string\n } | null\n h5: {\n label: string\n icon: string\n } | null\n h6: {\n label: string\n icon: string\n } | null\n } | null\n\n blockGroup: {\n label: string\n quote: {\n label: string\n icon: string\n } | null\n divider: {\n label: string\n icon: string\n } | null\n } | null\n\n listGroup: {\n label: string\n bulletList: {\n label: string\n icon: string\n } | null\n orderedList: {\n label: string\n icon: string\n } | null\n taskList: {\n label: string\n icon: string\n } | null\n } | null\n\n advancedGroup: {\n label: string\n image: {\n label: string\n icon: string\n } | null\n codeBlock: {\n label: string\n icon: string\n } | null\n table: {\n label: string\n icon: string\n } | null\n math: {\n label: string\n icon: string\n } | null\n attachment: {\n label: string\n icon: string\n } | null\n } | null\n}\n\nexport type BlockEditFeatureConfig = DeepPartial<BlockEditConfig>\n\nexport const blockEdit: DefineFeature<BlockEditFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.BlockEdit))\n .config((ctx) => configureBlockHandle(ctx, config))\n .config((ctx) => configureMenu(ctx, config))\n .use(menuAPI)\n .use(block)\n .use(menu)\n}\n"],"names":["createSlice","CrepeFeature","__privateAdd","__privateSet","__privateGet","group","$remark","visit","$markAttr","$markSchema","$command","$ctx","$nodeSchema","state","findNodeInSelection","_tr","NodeSelection","TextSelection","editorViewCtx","commandsCtx","listItemSchema","liftListItemCommand","headingSchema","setBlockTypeCommand","paragraphSchema","ctx","_a","_b","clearTextInCurrentBlockCommand","_c","_d","wrapInHeadingCommand","commands","blockquoteSchema","lift","wrapInBlockTypeCommand","hrSchema","addBlockTypeCommand","bulletListSchema","orderedListSchema","wrapInBulletListCommand","wrapInOrderedListCommand","wrapInList","imageBlock","imageBlockSchema","codeBlockSchema","createTable","selectTextNearPosCommand","items","groups","h","defineComponent","ref","computed","watch","watchEffect","onUnmounted","Icon","_","_content","_app","slashFactory","computePosition","flip","shift","offset","createApp","SlashProvider","view","Fragment","reactive","BlockProvider","node","blockConfig","findParent","block"],"mappings":"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"}