@jvs-milkdown/crepe 1.2.16 → 1.2.18

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 (93) hide show
  1. package/lib/cjs/builder.js +4 -0
  2. package/lib/cjs/builder.js.map +1 -1
  3. package/lib/cjs/feature/block-edit/index.js +39 -16
  4. package/lib/cjs/feature/block-edit/index.js.map +1 -1
  5. package/lib/cjs/feature/code-mirror/index.js +4 -0
  6. package/lib/cjs/feature/code-mirror/index.js.map +1 -1
  7. package/lib/cjs/feature/cursor/index.js +4 -0
  8. package/lib/cjs/feature/cursor/index.js.map +1 -1
  9. package/lib/cjs/feature/image-block/index.js +4 -0
  10. package/lib/cjs/feature/image-block/index.js.map +1 -1
  11. package/lib/cjs/feature/inline-diff/index.js +4 -0
  12. package/lib/cjs/feature/inline-diff/index.js.map +1 -1
  13. package/lib/cjs/feature/latex/index.js +4 -0
  14. package/lib/cjs/feature/latex/index.js.map +1 -1
  15. package/lib/cjs/feature/link-tooltip/index.js +4 -0
  16. package/lib/cjs/feature/link-tooltip/index.js.map +1 -1
  17. package/lib/cjs/feature/list-item/index.js +4 -0
  18. package/lib/cjs/feature/list-item/index.js.map +1 -1
  19. package/lib/cjs/feature/placeholder/index.js +4 -0
  20. package/lib/cjs/feature/placeholder/index.js.map +1 -1
  21. package/lib/cjs/feature/table/index.js +4 -0
  22. package/lib/cjs/feature/table/index.js.map +1 -1
  23. package/lib/cjs/feature/toolbar/index.js +56 -18
  24. package/lib/cjs/feature/toolbar/index.js.map +1 -1
  25. package/lib/cjs/index.js +604 -135
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/esm/builder.js +4 -0
  28. package/lib/esm/builder.js.map +1 -1
  29. package/lib/esm/feature/block-edit/index.js +40 -17
  30. package/lib/esm/feature/block-edit/index.js.map +1 -1
  31. package/lib/esm/feature/code-mirror/index.js +4 -0
  32. package/lib/esm/feature/code-mirror/index.js.map +1 -1
  33. package/lib/esm/feature/cursor/index.js +4 -0
  34. package/lib/esm/feature/cursor/index.js.map +1 -1
  35. package/lib/esm/feature/image-block/index.js +4 -0
  36. package/lib/esm/feature/image-block/index.js.map +1 -1
  37. package/lib/esm/feature/inline-diff/index.js +4 -0
  38. package/lib/esm/feature/inline-diff/index.js.map +1 -1
  39. package/lib/esm/feature/latex/index.js +4 -0
  40. package/lib/esm/feature/latex/index.js.map +1 -1
  41. package/lib/esm/feature/link-tooltip/index.js +4 -0
  42. package/lib/esm/feature/link-tooltip/index.js.map +1 -1
  43. package/lib/esm/feature/list-item/index.js +4 -0
  44. package/lib/esm/feature/list-item/index.js.map +1 -1
  45. package/lib/esm/feature/placeholder/index.js +4 -0
  46. package/lib/esm/feature/placeholder/index.js.map +1 -1
  47. package/lib/esm/feature/table/index.js +4 -0
  48. package/lib/esm/feature/table/index.js.map +1 -1
  49. package/lib/esm/feature/toolbar/index.js +57 -19
  50. package/lib/esm/feature/toolbar/index.js.map +1 -1
  51. package/lib/esm/index.js +604 -135
  52. package/lib/esm/index.js.map +1 -1
  53. package/lib/theme/common/toolbar.css +6 -0
  54. package/lib/tsconfig.tsbuildinfo +1 -1
  55. package/lib/types/core/crepe.d.ts +1 -1
  56. package/lib/types/core/crepe.d.ts.map +1 -1
  57. package/lib/types/core/locale.d.ts +4 -0
  58. package/lib/types/core/locale.d.ts.map +1 -1
  59. package/lib/types/feature/block-edit/menu/component.d.ts.map +1 -1
  60. package/lib/types/feature/fixed-toolbar/component.d.ts +2 -0
  61. package/lib/types/feature/fixed-toolbar/component.d.ts.map +1 -1
  62. package/lib/types/feature/fixed-toolbar/config.d.ts.map +1 -1
  63. package/lib/types/feature/fixed-toolbar/index.d.ts +16 -0
  64. package/lib/types/feature/fixed-toolbar/index.d.ts.map +1 -1
  65. package/lib/types/feature/fixed-toolbar/menu-bar.d.ts.map +1 -1
  66. package/lib/types/feature/fixed-toolbar/outline-panel.d.ts.map +1 -1
  67. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  68. package/lib/types/icons/export.d.ts +2 -0
  69. package/lib/types/icons/export.d.ts.map +1 -0
  70. package/lib/types/icons/import.d.ts +2 -0
  71. package/lib/types/icons/import.d.ts.map +1 -0
  72. package/lib/types/icons/index.d.ts +4 -0
  73. package/lib/types/icons/index.d.ts.map +1 -1
  74. package/lib/types/icons/redo.d.ts +2 -0
  75. package/lib/types/icons/redo.d.ts.map +1 -0
  76. package/lib/types/icons/undo.d.ts +2 -0
  77. package/lib/types/icons/undo.d.ts.map +1 -0
  78. package/package.json +4 -4
  79. package/src/core/crepe.ts +60 -7
  80. package/src/core/locale.ts +4 -0
  81. package/src/feature/block-edit/menu/component.tsx +41 -17
  82. package/src/feature/fixed-toolbar/component.tsx +155 -51
  83. package/src/feature/fixed-toolbar/config.ts +70 -2
  84. package/src/feature/fixed-toolbar/index.ts +86 -1
  85. package/src/feature/fixed-toolbar/menu-bar.tsx +18 -3
  86. package/src/feature/fixed-toolbar/outline-panel.tsx +219 -32
  87. package/src/feature/toolbar/component.tsx +25 -2
  88. package/src/icons/export.ts +5 -0
  89. package/src/icons/import.ts +6 -0
  90. package/src/icons/index.ts +4 -0
  91. package/src/icons/redo.ts +5 -0
  92. package/src/icons/undo.ts +5 -0
  93. package/src/theme/common/toolbar.css +16 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/icons/confirm.ts","../../../../src/icons/help.ts","../../../../src/feature/latex/block-latex.ts","../../../../src/feature/latex/inline-latex.ts","../../../../src/feature/latex/command.ts","../../../../src/feature/latex/inline-tooltip/tooltip.ts","../../../../src/utils/keep-alive.ts","../../../../src/feature/latex/inline-tooltip/component.tsx","../../../../src/feature/latex/inline-tooltip/view.ts","../../../../src/feature/latex/input-rule.ts","../../../../src/feature/latex/remark.ts","../../../../src/feature/latex/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 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 helpIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-6 h-6\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z\"\n />\n </svg>\n`\n","import { codeBlockSchema } from '@jvs-milkdown/kit/preset/commonmark'\n\nexport const blockLatexSchema = codeBlockSchema.extendSchema((prev) => {\n return (ctx) => {\n const baseSchema = prev(ctx)\n return {\n ...baseSchema,\n toMarkdown: {\n match: baseSchema.toMarkdown.match,\n runner: (state, node) => {\n const language = node.attrs.language ?? ''\n if (language.toLowerCase() === 'latex') {\n state.addNode(\n 'math',\n undefined,\n node.content.firstChild?.text || ''\n )\n } else {\n return baseSchema.toMarkdown.runner(state, node)\n }\n },\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 { tooltipFactory } from '@jvs-milkdown/kit/plugin/tooltip'\n\nexport const inlineLatexTooltip = tooltipFactory('INLINE_LATEX')\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { EditorView } from '@jvs-milkdown/kit/prose/view'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\n// @ts-ignore\nimport {\n defineComponent,\n type ShallowRef,\n type VNodeRef,\n h,\n type PropType,\n} from 'vue'\n\nimport type { LatexConfig } from '..'\n\nimport { i18n } from '../../../core/locale'\nimport { helpIcon } from '../../../icons'\nimport { keepAlive } from '../../../utils/keep-alive'\n\nkeepAlive(h)\n\ntype LatexTooltipProps = {\n ctx: Ctx\n config: Partial<LatexConfig>\n innerView: ShallowRef<EditorView | null>\n updateValue: ShallowRef<(close?: boolean) => void>\n}\n\nexport const LatexTooltip = defineComponent<LatexTooltipProps>({\n props: {\n ctx: {\n type: Object as PropType<Ctx>,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n innerView: {\n type: Object,\n required: true,\n },\n updateValue: {\n type: Object,\n required: true,\n },\n },\n setup(props: any) {\n const innerViewRef: VNodeRef = (el: any) => {\n if (!el || !(el instanceof HTMLElement)) return\n while (el.firstChild) {\n el.removeChild(el.firstChild)\n }\n if (props.innerView.value) {\n el.appendChild(props.innerView.value.dom)\n requestAnimationFrame(() => {\n if (props.innerView.value && !props.innerView.value.hasFocus()) {\n props.innerView.value.focus()\n }\n })\n }\n }\n // Capture ESC key event if needed, but innerView already handles Enter\n // Usually ESC is captured by tooltip provider or innerView, but here we just show the helper text.\n\n return () => {\n return (\n <div class=\"container container-large\">\n <div class=\"input-container\">\n {props.innerView ? <div ref={innerViewRef} /> : null}\n </div>\n <div class=\"footer\">\n <span class=\"left\">{i18n(props.ctx, 'latex.escToExit')}</span>\n <a\n class=\"right\"\n href=\"https://katex.org/docs/supported.html\"\n target=\"_blank\"\n style=\"display: none;\"\n >\n <Icon icon={helpIcon} /> {i18n(props.ctx, 'latex.helpDoc')}\n </a>\n </div>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { PluginView } from '@jvs-milkdown/kit/prose/state'\n\nimport { TooltipProvider } from '@jvs-milkdown/kit/plugin/tooltip'\nimport { redo, undo } from '@jvs-milkdown/kit/prose/history'\nimport { keymap } from '@jvs-milkdown/kit/prose/keymap'\nimport { Schema } from '@jvs-milkdown/kit/prose/model'\nimport {\n EditorState,\n NodeSelection,\n TextSelection,\n Plugin,\n} from '@jvs-milkdown/kit/prose/state'\nimport {\n Decoration,\n DecorationSet,\n EditorView,\n} from '@jvs-milkdown/kit/prose/view'\n// @ts-ignore\nimport { createApp, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { LatexConfig } from '..'\n\nimport { i18n } from '../../../core/locale'\nimport { mathInlineId } from '../inline-latex'\nimport { LatexTooltip } from './component'\n\nexport class LatexInlineTooltip implements PluginView {\n #content: HTMLElement\n #provider: TooltipProvider\n #dom: HTMLElement\n #innerView: ShallowRef<EditorView | null> = shallowRef(null)\n #updateValue: ShallowRef<(close?: boolean) => void> = shallowRef(() => {})\n #activePos: number | null = null\n #app: App\n #debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n constructor(\n readonly ctx: Ctx,\n view: EditorView,\n config: Partial<LatexConfig>\n ) {\n const content = document.createElement('div')\n content.className = 'milkdown-latex-inline-edit'\n this.#content = content\n this.#app = createApp(LatexTooltip, {\n ctx: this.ctx,\n config,\n innerView: this.#innerView,\n updateValue: this.#updateValue,\n })\n this.#app.mount(content)\n this.#provider = new TooltipProvider({\n debounce: 0,\n content: this.#content,\n shouldShow: this.#shouldShow,\n offset: 10,\n floatingUIOptions: {\n placement: 'bottom-start',\n },\n })\n this.#provider.update(view)\n this.#dom = document.createElement('div')\n }\n\n #onHide = () => {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n this.#debounceTimer = null\n this.#updateValue.value(false)\n }\n if (this.#innerView.value) {\n this.#innerView.value.destroy()\n this.#innerView.value = null\n }\n this.#activePos = null\n }\n\n #shouldShow = (view: EditorView) => {\n const shouldShow = () => {\n const { selection } = view.state\n if (selection.empty) return false\n if (!(selection instanceof NodeSelection)) return false\n const node = selection.node\n if (node.type.name !== mathInlineId) return false\n\n const textFrom = selection.from\n\n if (this.#innerView.value && this.#activePos === textFrom) {\n return true\n }\n this.#activePos = textFrom\n\n const innerSchema = new Schema({\n nodes: {\n doc: {\n content: 'block+',\n },\n paragraph: {\n content: 'inline*',\n group: 'block',\n parseDOM: [{ tag: 'p' }],\n toDOM() {\n return ['p', 0]\n },\n },\n text: {\n group: 'inline',\n },\n },\n })\n\n const innerDoc = innerSchema.nodes.doc.create(\n null,\n innerSchema.nodes.paragraph.create(\n null,\n node.attrs.value ? innerSchema.text(node.attrs.value) : undefined\n )\n )\n\n const innerView = new EditorView(this.#dom, {\n state: EditorState.create({\n doc: innerDoc,\n plugins: [\n keymap({\n 'Mod-z': undo,\n 'Mod-Z': redo,\n 'Mod-y': redo,\n Enter: () => {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n this.#debounceTimer = null\n }\n this.#updateValue.value(true)\n return true\n },\n Escape: () => {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n this.#debounceTimer = null\n }\n this.#updateValue.value(true)\n return true\n },\n }),\n new Plugin({\n props: {\n decorations: (state) => {\n if (state.doc.textContent !== '') return DecorationSet.empty\n const text = i18n(this.ctx, 'latex.inputPlaceholder' as any)\n const deco = Decoration.node(0, state.doc.content.size, {\n class: 'crepe-placeholder',\n 'data-placeholder': text,\n })\n return DecorationSet.create(state.doc, [deco])\n },\n },\n }),\n ],\n }),\n dispatchTransaction: (tr) => {\n const nextState = innerView.state.apply(tr)\n innerView.updateState(nextState)\n if (tr.docChanged) {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n }\n this.#debounceTimer = setTimeout(() => {\n this.#debounceTimer = null\n this.#updateValue.value(false)\n }, 32)\n }\n },\n })\n\n this.#innerView.value = innerView\n this.#updateValue.value = (close = false) => {\n const { tr } = view.state\n tr.setNodeAttribute(textFrom, 'value', innerView.state.doc.textContent)\n if (close) {\n tr.setSelection(TextSelection.create(tr.doc, textFrom + 1))\n }\n view.dispatch(tr)\n if (close) {\n requestAnimationFrame(() => {\n view.focus()\n })\n }\n }\n return true\n }\n\n const show = shouldShow()\n if (!show) this.#onHide()\n return show\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#provider.update(view, prevState)\n }\n\n destroy = () => {\n this.#app.unmount()\n this.#provider.destroy()\n this.#content.remove()\n }\n}\n","import { codeBlockSchema } from '@jvs-milkdown/kit/preset/commonmark'\nimport { nodeRule } from '@jvs-milkdown/kit/prose'\nimport { textblockTypeInputRule } from '@jvs-milkdown/kit/prose/inputrules'\nimport { $inputRule } from '@jvs-milkdown/kit/utils'\n\nimport { mathInlineSchema } from './inline-latex'\n\n/// Input rule for inline math.\n/// When you type $E=MC^2$, it will create an inline math node.\nexport const mathInlineInputRule = $inputRule((ctx) =>\n nodeRule(/(?:\\$)([^$]+)(?:\\$)$/, mathInlineSchema.type(ctx), {\n getAttr: (match) => {\n return {\n value: match[1] ?? '',\n }\n },\n })\n)\n\n/// A input rule for creating block math.\n/// For example, `$$ ` will create a code block with language javascript.\nexport const mathBlockInputRule = $inputRule((ctx) =>\n textblockTypeInputRule(/^\\$\\$[\\s\\n]$/, codeBlockSchema.type(ctx), () => ({\n language: 'LaTeX',\n }))\n)\n","import type { Node } from '@jvs-milkdown/kit/transformer'\n\nimport { $remark } from '@jvs-milkdown/kit/utils'\nimport remarkMath from 'remark-math'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkMathPlugin = $remark<'remarkMath', undefined>(\n 'remarkMath',\n () => remarkMath\n)\n\nfunction visitMathBlock(ast: Node) {\n return visit(\n ast,\n 'math',\n (\n node: Node & { value: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n const { value } = node as Node & { value: string }\n const newNode = {\n type: 'code',\n lang: 'LaTeX',\n value,\n }\n parent.children.splice(index, 1, newNode)\n }\n )\n}\n\n/// Turn math block into code block with language LaTeX.\nexport const remarkMathBlockPlugin = $remark(\n 'remarkMathBlock',\n () => () => visitMathBlock\n)\n","import type { KatexOptions } from 'katex'\n\nimport { codeBlockConfig } from '@jvs-milkdown/kit/component/code-block'\nimport katex from 'katex'\n\nimport type { DefineFeature } from '../shared'\n\nimport { crepeFeatureConfig, useCrepeFeatures } from '../../core/slice'\nimport { CrepeFeature } from '../../feature'\nimport { confirmIcon } from '../../icons'\nimport { blockLatexSchema } from './block-latex'\nimport { toggleLatexCommand } from './command'\nimport { mathInlineSchema } from './inline-latex'\nimport { inlineLatexTooltip } from './inline-tooltip/tooltip'\nimport { LatexInlineTooltip } from './inline-tooltip/view'\nimport { mathBlockInputRule, mathInlineInputRule } from './input-rule'\nimport { remarkMathBlockPlugin, remarkMathPlugin } from './remark'\n\nexport interface LatexConfig {\n katexOptions: KatexOptions\n inlineEditConfirm: string\n}\n\nexport type LatexFeatureConfig = Partial<LatexConfig>\n\nexport const latex: DefineFeature<LatexFeatureConfig> = (editor, config) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.Latex))\n .config((ctx) => {\n const flags = useCrepeFeatures(ctx).get()\n const isCodeMirrorEnabled = flags.includes(CrepeFeature.CodeMirror)\n if (!isCodeMirrorEnabled) {\n throw new Error('You need to enable CodeMirror to use LaTeX feature')\n }\n\n ctx.update(codeBlockConfig.key, (prev) => ({\n ...prev,\n renderPreview: (language, content, applyPreview) => {\n if (language.toLowerCase() === 'latex' && content.length > 0) {\n return renderLatex(content, config?.katexOptions)\n }\n const renderPreview = prev.renderPreview\n return renderPreview(language, content, applyPreview)\n },\n }))\n\n ctx.set(inlineLatexTooltip.key, {\n view: (view) => {\n return new LatexInlineTooltip(ctx, view, {\n inlineEditConfirm: config?.inlineEditConfirm ?? confirmIcon,\n ...config,\n })\n },\n })\n })\n .use(remarkMathPlugin)\n .use(remarkMathBlockPlugin)\n .use(mathInlineSchema)\n .use(inlineLatexTooltip)\n .use(mathInlineInputRule)\n .use(mathBlockInputRule)\n .use(blockLatexSchema)\n .use(toggleLatexCommand)\n}\n\nfunction renderLatex(content: string, options?: KatexOptions) {\n const html = katex.renderToString(content, {\n ...options,\n throwOnError: false,\n displayMode: true,\n })\n return html\n}\n"],"names":["CrepeFeature","_tr"],"mappings":";;;;;;;;;;;;;;;;;;AAIO,MAAM,IAAA,GAAO;AAAA;AAAA,EAElB,YAAA,EAAc,0BAAA;AAAA,EACd,aAAA,EAAe,sCAAA;AAAA,EACf,aAAA,EAAe,sCAAA;AAAA;AAAA,EAEf,kBAAA,EAAoB,yEAAA;AAAA;AAAA,EAGpB,iBAAA,EAAmB,cAAA;AAAA,EACnB,oBAAA,EAAsB,cAAA;AAAA,EACtB,kBAAA,EAAoB,cAAA;AAAA,EACpB,uBAAA,EAAyB,oBAAA;AAAA;AAAA,EAGzB,cAAA,EAAgB,cAAA;AAAA,EAChB,cAAA,EAAgB,cAAA;AAAA,EAChB,cAAA,EAAgB,cAAA;AAAA,EAChB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,cAAA,EAAgB,0BAAA;AAAA,EAChB,kBAAA,EAAoB,gCAAA;AAAA,EACpB,mBAAA,EAAqB,gCAAA;AAAA,EACrB,oBAAA,EAAsB,gCAAA;AAAA,EACtB,YAAA,EAAc,0BAAA;AAAA,EACd,YAAA,EAAc,0BAAA;AAAA,EACd,kBAAA,EAAoB,0BAAA;AAAA,EACpB,mBAAA,EAAqB,cAAA;AAAA,EACrB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,8BAAA,EAAgC,0BAAA;AAAA,EAChC,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,oCAAA,EAAsC,cAAA;AAAA,EACtC,oCAAA,EAAsC,cAAA;AAAA,EACtC,yBAAA,EAA2B,cAAA;AAAA,EAC3B,qBAAA,EAAuB,0BAAA;AAAA;AAAA,EAGvB,uBAAA,EAAyB,6BAAA;AAAA;AAAA,EAGzB,+BAAA,EAAiC,cAAA;AAAA,EACjC,oCAAA,EAAsC,gCAAA;AAAA,EACtC,8BAAA,EAAgC,0BAAA;AAAA,EAChC,mCAAA,EAAqC,gCAAA;AAAA,EACrC,oCAAA,EAAsC,yCAAA;AAAA,EACtC,+BAAA,EAAiC,cAAA;AAAA;AAAA,EAGjC,8BAAA,EAAgC,0BAAA;AAAA,EAChC,uCAAA,EAAyC,gCAAA;AAAA,EACzC,0BAAA,EAA4B,cAAA;AAAA;AAAA,EAG5B,iBAAA,EAAmB,cAAA;AAAA,EACnB,kBAAA,EAAoB,cAAA;AAAA,EACpB,iBAAA,EAAmB,cAAA;AAAA,EACnB,qBAAA,EAAuB,cAAA;AAAA;AAAA,EAGvB,gBAAA,EAAkB,0BAAA;AAAA,EAClB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,iBAAA,EAAmB,cAAA;AAAA,EACnB,mBAAA,EAAqB,oBAAA;AAAA,EACrB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,uBAAA,EAAyB,0BAAA;AAAA,EACzB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,iBAAA,EAAmB,cAAA;AAAA,EACnB,sBAAA,EAAwB,gCAAA;AAAA,EACxB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,iBAAA,EAAmB,cAAA;AAAA,EACnB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA,EAClB,kBAAA,EAAoB,cAAA;AAAA,EACpB,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,qBAAA,EAAuB,oBAAA;AAAA,EACvB,qBAAA,EAAuB,cAAA;AAAA,EACvB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,mBAAA,EAAqB,uCAAA;AAAA,EACrB,iBAAA,EAAmB,uDAAA;AAAA,EACnB,iBAAA,EAAmB,wDAAA;AAAA,EACnB,iBAAA,EAAmB,yDAAA;AAAA,EACnB,iBAAA,EAAmB,0DAAA;AAAA,EACnB,iBAAA,EAAmB,2DAAA;AAAA,EACnB,iBAAA,EAAmB,4DAAA;AAAA,EACnB,oBAAA,EAAsB,uDAAA;AAAA,EACtB,sBAAA,EAAwB,gDAAA;AAAA,EACxB,yBAAA,EACE,yFAAA;AAAA,EACF,0BAAA,EAA4B,oEAAA;AAAA,EAC5B,uBAAA,EAAyB,wDAAA;AAAA,EACzB,oBAAA,EAAsB,qCAAA;AAAA,EACtB,mBAAA,EAAqB,gEAAA;AAAA,EACrB,oBAAA,EAAsB,+BAAA;AAAA,EACtB,mBAAA,EAAqB,yCAAA;AAAA;AAAA,EAGrB,2BAAA,EAA6B,gCAAA;AAAA,EAC7B,kBAAA,EAAoB,cAAA;AAAA,EACpB,gBAAA,EAAkB,cAAA;AAAA,EAClB,iBAAA,EAAmB,cAAA;AAAA,EACnB,mBAAA,EAAqB,cAAA;AAAA,EACrB,qBAAA,EAAuB,gCAAA;AAAA,EACvB,sBAAA,EAAwB,oBAAA;AAAA,EACxB,wBAAA,EAA0B,0BAAA;AAAA,EAC1B,uBAAA,EAAyB,oBAAA;AAAA,EACzB,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,sBAAA,EAAwB,0BAAA;AAAA,EACxB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,yBAAA,EAA2B,cAAA;AAAA,EAC3B,qBAAA,EAAuB,cAAA;AAAA,EACvB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,wBAAA,EAA0B,cAAA;AAAA,EAC1B,uBAAA,EAAyB,cAAA;AAAA,EACzB,sBAAA,EAAwB,cAAA;AAAA,EACxB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,sBAAA,EAAwB,cAAA;AAAA,EACxB,wBAAA,EAA0B,8DAAA;AAAA,EAE1B,wBAAA,EAA0B,cAAA;AAAA,EAC1B,eAAA,EAAiB,cAAA;AAAA,EACjB,iBAAA,EAAmB,0BAAA;AAAA,EACnB,aAAA,EAAe,0BAAA;AAAA,EACf,cAAA,EAAgB,0BAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA,EACf,qBAAA,EAAuB,0BAAA;AAAA,EACvB,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe,cAAA;AAAA;AAAA,EAGf,iBAAA,EAAmB,qCAAA;AAAA,EACnB,eAAA,EAAiB,sCAAA;AAAA,EACjB,wBAAA,EAA0B,iCAAA;AAAA,EAC1B,wBAAA,EAA0B,gCAAA;AAAA;AAAA,EAG1B,iBAAA,EAAmB,gCAAA;AAAA,EACnB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,gBAAA,EAAkB,cAAA;AAAA,EAClB,kBAAA,EAAoB,cAAA;AAAA,EACpB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,sBAAA,EAAwB,0BAAA;AAAA,EACxB,qBAAA,EAAuB,cAAA;AAAA,EACvB,qBAAA,EAAuB,cAAA;AAAA,EACvB,mBAAA,EAAqB,cAAA;AAAA,EACrB,iBAAA,EAAmB,0BAAA;AAAA,EACnB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,sBAAA,EAAwB,cAAA;AAAA,EACxB,uBAAA,EAAyB,0BAAA;AAAA,EACzB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,kBAAA,EAAoB,0BAAA;AAAA,EACpB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,qBAAA,EAAuB,cAAA;AAAA,EACvB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,mBAAA,EAAqB,cAAA;AAAA,EACrB,mBAAA,EAAqB;AACvB,CAAA;AAEO,MAAM,IAAA,GAAoB;AAAA,EAC/B,YAAA,EAAc,aAAA;AAAA,EACd,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe,cAAA;AAAA,EACf,kBAAA,EAAoB,4BAAA;AAAA,EAEpB,iBAAA,EAAmB,SAAA;AAAA,EACnB,oBAAA,EAAsB,YAAA;AAAA,EACtB,kBAAA,EAAoB,UAAA;AAAA,EACpB,uBAAA,EAAyB,gBAAA;AAAA,EAEzB,cAAA,EAAgB,MAAA;AAAA,EAChB,cAAA,EAAgB,MAAA;AAAA,EAChB,cAAA,EAAgB,MAAA;AAAA,EAChB,gBAAA,EAAkB,QAAA;AAAA,EAClB,gBAAA,EAAkB,QAAA;AAAA,EAElB,cAAA,EAAgB,eAAA;AAAA,EAChB,kBAAA,EAAoB,cAAA;AAAA,EACpB,mBAAA,EAAqB,eAAA;AAAA,EACrB,oBAAA,EAAsB,qBAAA;AAAA,EACtB,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,kBAAA,EAAoB,eAAA;AAAA,EACpB,mBAAA,EAAqB,SAAA;AAAA,EACrB,gBAAA,EAAkB,MAAA;AAAA,EAClB,gBAAA,EAAkB,YAAA;AAAA,EAElB,8BAAA,EAAgC,iBAAA;AAAA,EAChC,yBAAA,EAA2B,WAAA;AAAA,EAC3B,oCAAA,EAAsC,MAAA;AAAA,EACtC,oCAAA,EAAsC,MAAA;AAAA,EACtC,yBAAA,EAA2B,SAAA;AAAA,EAC3B,qBAAA,EAAuB,MAAA;AAAA,EAEvB,uBAAA,EAAyB,eAAA;AAAA,EAEzB,+BAAA,EAAiC,QAAA;AAAA,EACjC,oCAAA,EAAsC,eAAA;AAAA,EACtC,8BAAA,EAAgC,aAAA;AAAA,EAChC,mCAAA,EAAqC,eAAA;AAAA,EACrC,oCAAA,EAAsC,qBAAA;AAAA,EACtC,+BAAA,EAAiC,SAAA;AAAA,EAEjC,8BAAA,EAAgC,aAAA;AAAA,EAChC,uCAAA,EAAyC,oBAAA;AAAA,EACzC,0BAAA,EAA4B,UAAA;AAAA,EAE5B,iBAAA,EAAmB,MAAA;AAAA,EACnB,kBAAA,EAAoB,OAAA;AAAA,EACpB,iBAAA,EAAmB,MAAA;AAAA,EACnB,qBAAA,EAAuB,UAAA;AAAA,EAEvB,gBAAA,EAAkB,MAAA;AAAA,EAClB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,iBAAA,EAAmB,OAAA;AAAA,EACnB,mBAAA,EAAqB,SAAA;AAAA,EACrB,sBAAA,EAAwB,aAAA;AAAA,EACxB,uBAAA,EAAyB,cAAA;AAAA,EACzB,oBAAA,EAAsB,WAAA;AAAA,EACtB,iBAAA,EAAmB,OAAA;AAAA,EACnB,sBAAA,EAAwB,eAAA;AAAA,EACxB,gBAAA,EAAkB,MAAA;AAAA,EAClB,iBAAA,EAAmB,OAAA;AAAA,EACnB,gBAAA,EAAkB,MAAA;AAAA,EAClB,gBAAA,EAAkB,MAAA;AAAA,EAClB,kBAAA,EAAoB,QAAA;AAAA,EACpB,yBAAA,EAA2B,eAAA;AAAA,EAC3B,qBAAA,EAAuB,WAAA;AAAA,EACvB,qBAAA,EAAuB,WAAA;AAAA,EACvB,oBAAA,EAAsB,aAAA;AAAA,EACtB,gBAAA,EAAkB,MAAA;AAAA,EAElB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,iBAAA,EAAmB,2CAAA;AAAA,EACnB,iBAAA,EAAmB,4CAAA;AAAA,EACnB,iBAAA,EAAmB,6CAAA;AAAA,EACnB,iBAAA,EAAmB,8CAAA;AAAA,EACnB,iBAAA,EAAmB,+CAAA;AAAA,EACnB,iBAAA,EAAmB,gDAAA;AAAA,EACnB,oBAAA,EAAsB,yCAAA;AAAA,EACtB,sBAAA,EAAwB,8BAAA;AAAA,EACxB,yBAAA,EACE,0DAAA;AAAA,EACF,0BAAA,EAA4B,iDAAA;AAAA,EAC5B,uBAAA,EAAyB,kCAAA;AAAA,EACzB,oBAAA,EAAsB,8BAAA;AAAA,EACtB,mBAAA,EAAqB,iDAAA;AAAA,EACrB,oBAAA,EAAsB,wBAAA;AAAA,EACtB,mBAAA,EAAqB,0BAAA;AAAA,EAErB,2BAAA,EAA6B,gBAAA;AAAA,EAC7B,kBAAA,EAAoB,OAAA;AAAA,EACpB,gBAAA,EAAkB,KAAA;AAAA,EAClB,iBAAA,EAAmB,MAAA;AAAA,EACnB,mBAAA,EAAqB,QAAA;AAAA,EACrB,qBAAA,EAAuB,WAAA;AAAA,EACvB,sBAAA,EAAwB,YAAA;AAAA,EACxB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,uBAAA,EAAyB,aAAA;AAAA,EACzB,2BAAA,EAA6B,iBAAA;AAAA,EAC7B,2BAAA,EAA6B,iBAAA;AAAA,EAC7B,sBAAA,EAAwB,YAAA;AAAA,EACxB,oBAAA,EAAsB,kBAAA;AAAA,EACtB,2BAAA,EAA6B,iBAAA;AAAA,EAC7B,yBAAA,EAA2B,SAAA;AAAA,EAC3B,qBAAA,EAAuB,KAAA;AAAA,EACvB,wBAAA,EAA0B,QAAA;AAAA,EAC1B,wBAAA,EAA0B,QAAA;AAAA,EAC1B,uBAAA,EAAyB,OAAA;AAAA,EACzB,sBAAA,EAAwB,MAAA;AAAA,EACxB,wBAAA,EAA0B,QAAA;AAAA,EAC1B,sBAAA,EAAwB,MAAA;AAAA,EACxB,wBAAA,EAA0B,cAAA;AAAA,EAE1B,wBAAA,EAA0B,SAAA;AAAA,EAC1B,eAAA,EAAiB,UAAA;AAAA,EACjB,iBAAA,EAAmB,YAAA;AAAA,EACnB,aAAA,EAAe,QAAA;AAAA,EACf,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,QAAA;AAAA,EACf,qBAAA,EAAuB,iBAAA;AAAA,EACvB,YAAA,EAAc,OAAA;AAAA,EACd,aAAA,EAAe,QAAA;AAAA,EAEf,iBAAA,EAAmB,qBAAA;AAAA,EACnB,eAAA,EAAiB,UAAA;AAAA,EACjB,wBAAA,EAA0B,WAAA;AAAA,EAC1B,wBAAA,EAA0B,sBAAA;AAAA,EAE1B,iBAAA,EAAmB,oBAAA;AAAA,EACnB,sBAAA,EAAwB,iBAAA;AAAA,EACxB,gBAAA,EAAkB,MAAA;AAAA,EAClB,kBAAA,EAAoB,QAAA;AAAA,EACpB,qBAAA,EAAuB,WAAA;AAAA,EACvB,yBAAA,EAA2B,eAAA;AAAA,EAC3B,sBAAA,EAAwB,aAAA;AAAA,EACxB,qBAAA,EAAuB,WAAA;AAAA,EACvB,qBAAA,EAAuB,WAAA;AAAA,EACvB,mBAAA,EAAqB,SAAA;AAAA,EACrB,iBAAA,EAAmB,gBAAA;AAAA,EACnB,qBAAA,EAAuB,YAAA;AAAA,EACvB,sBAAA,EAAwB,YAAA;AAAA,EACxB,uBAAA,EAAyB,cAAA;AAAA,EACzB,sBAAA,EAAwB,aAAA;AAAA,EACxB,kBAAA,EAAoB,QAAA;AAAA,EACpB,mBAAA,EAAqB,SAAA;AAAA,EACrB,qBAAA,EAAuB,YAAA;AAAA,EACvB,mBAAA,EAAqB,SAAA;AAAA,EACrB,gBAAA,EAAkB,MAAA;AAAA,EAClB,gBAAA,EAAkB,MAAA;AAAA,EAElB,mBAAA,EAAqB,QAAA;AAAA,EACrB,mBAAA,EAAqB;AACvB,CAAA;AAIO,MAAM,eAAA,GAAkB,WAAA;AAAA,EAG7B;AAAA,IACE,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACX;AAAA,EACA;AACF,CAAA;AAEO,MAAM,SAAA,GAAY,WAAA,CAAY,OAAA,EAAS,WAAW,CAAA;AAElD,SAAS,IAAA,CAAK,KAAU,GAAA,EAAsC;AApWrE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAqWE,EAAA,MAAM,YAAA,GAAe,GAAA,CAAI,GAAA,CAAI,eAAe,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,GAAA,CAAI,SAAS,CAAA;AAChC,EAAA,OAAA,CACE,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,MAAM,CAAA,KAAnB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAuB,SAAvB,IAAA,GAAA,EAAA,GAAA,CACA,EAAA,GAAA,YAAA,CAAa,OAAO,CAAA,KAApB,mBAAwB,GAAA,CAAA,KADxB,IAAA,GAAA,EAAA,GAEA,IAAA,CAAK,GAAG,MAFR,IAAA,GAAA,EAAA,GAGA,GAAA;AAEJ;;ACrW2B,WAAA,CAAY,EAAC,EAAqB,aAAa;AAKlD,WAAA,CAAY,EAAC,EAAmB,UAAU;AA2B3D,SAAS,iBAAiB,GAAA,EAAU;AAEzC,EAAA,OAAO,GAAA,CAAI,IAAmC,aAAa,CAAA;AAC7D;AAGO,SAAS,mBAAmB,OAAA,EAAuB;AACxD,EAAA,OAAO,CAAC,GAAA,KAAa;AACnB,IAAA,gBAAA,CAAiB,GAAG,CAAA,CAAE,MAAA,CAAO,CAAC,QAAA,KAAa;AACzC,MAAA,IAAI,QAAA,CAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AAC9B,QAAA,OAAO,QAAA;AAAA,MACT;AACA,MAAA,OAAO,CAAC,GAAG,QAAA,EAAU,OAAO,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACH,CAAA;AACF;;ACrCO,IAAK,YAAA,qBAAAA,aAAAA,KAAL;AAEL,EAAAA,cAAA,YAAA,CAAA,GAAa,aAAA;AAGb,EAAAA,cAAA,UAAA,CAAA,GAAW,WAAA;AAGX,EAAAA,cAAA,aAAA,CAAA,GAAc,cAAA;AAGd,EAAAA,cAAA,QAAA,CAAA,GAAS,QAAA;AAGT,EAAAA,cAAA,YAAA,CAAA,GAAa,aAAA;AAGb,EAAAA,cAAA,WAAA,CAAA,GAAY,YAAA;AAGZ,EAAAA,cAAA,SAAA,CAAA,GAAU,SAAA;AAGV,EAAAA,cAAA,cAAA,CAAA,GAAe,eAAA;AAGf,EAAAA,cAAA,aAAA,CAAA,GAAc,aAAA;AAGd,EAAAA,cAAA,OAAA,CAAA,GAAQ,OAAA;AAGR,EAAAA,cAAA,OAAA,CAAA,GAAQ,OAAA;AAGR,EAAAA,cAAA,YAAA,CAAA,GAAa,YAAA;AAGb,EAAAA,cAAA,YAAA,CAAA,GAAa,aAAA;AAGb,EAAAA,cAAA,WAAA,CAAA,GAAY,YAAA;AAzCF,EAAA,OAAAA,aAAAA;AAAA,CAAA,EAAA,YAAA,IAAA,EAAA,CAAA;;AClBL,MAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACApB,MAAM,QAAA,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACEjB,MAAM,gBAAA,GAAmB,eAAA,CAAgB,YAAA,CAAa,CAAC,IAAA,KAAS;AACrE,EAAA,OAAO,CAAC,GAAA,KAAQ;AACd,IAAA,MAAM,UAAA,GAAa,KAAK,GAAG,CAAA;AAC3B,IAAA,OAAO;AAAA,MACL,GAAG,UAAA;AAAA,MACH,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,WAAW,UAAA,CAAW,KAAA;AAAA,QAC7B,MAAA,EAAQ,CAAC,KAAA,EAAO,IAAA,KAAS;AATjC,UAAA,IAAA,EAAA,EAAA,EAAA;AAUU,UAAA,MAAM,QAAA,GAAA,CAAW,EAAA,GAAA,IAAA,CAAK,KAAA,CAAM,QAAA,KAAX,IAAA,GAAA,EAAA,GAAuB,EAAA;AACxC,UAAA,IAAI,QAAA,CAAS,WAAA,EAAY,KAAM,OAAA,EAAS;AACtC,YAAA,KAAA,CAAM,OAAA;AAAA,cACJ,MAAA;AAAA,cACA,MAAA;AAAA,cAAA,CAAA,CACA,EAAA,GAAA,IAAA,CAAK,OAAA,CAAQ,UAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,IAAA,KAAQ;AAAA,aACnC;AAAA,UACF,CAAA,MAAO;AACL,YAAA,OAAO,UAAA,CAAW,UAAA,CAAW,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA;AAAA,UACjD;AAAA,QACF;AAAA;AACF,KACF;AAAA,EACF,CAAA;AACF,CAAC,CAAA;;ACrBM,MAAM,YAAA,GAAe,aAAA;AAQrB,MAAM,gBAAA,GAAmB,WAAA,CAAY,YAAA,EAAc,OAAO;AAAA,EAC/D,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,IAAA;AAAA,EACR,SAAA,EAAW,IAAA;AAAA,EACX,UAAA,EAAY,IAAA;AAAA,EACZ,IAAA,EAAM,IAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR;AAAA,MACE,GAAA,EAAK,mBAAmB,YAAY,CAAA,EAAA,CAAA;AAAA,MACpC,QAAA,EAAU,CAAC,GAAA,KAAQ;AAzBzB,QAAA,IAAA,EAAA;AA0BQ,QAAA,OAAO;AAAA,UACL,KAAA,EAAA,CAAQ,EAAA,GAAA,GAAA,CAAoB,OAAA,CAAQ,KAAA,KAA5B,IAAA,GAAA,EAAA,GAAqC;AAAA,SAC/C;AAAA,MACF;AAAA;AACF,GACF;AAAA,EACA,KAAA,EAAO,CAAC,IAAA,KAAS;AACf,IAAA,MAAM,IAAA,GAAe,KAAK,KAAA,CAAM,KAAA;AAChC,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,aAAA,CAAc,MAAM,CAAA;AACzC,IAAA,GAAA,CAAI,QAAQ,IAAA,GAAO,YAAA;AACnB,IAAA,GAAA,CAAI,QAAQ,KAAA,GAAQ,IAAA;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,GAAA,CAAI,SAAA,CAAU,IAAI,mBAAmB,CAAA;AACrC,MAAA,GAAA,CAAI,WAAA,GAAc,iCAAA;AAClB,MAAA,GAAA,CAAI,eAAA,GAAkB,OAAA;AACtB,MAAA,GAAA,CAAI,MAAM,UAAA,GAAa,MAAA;AACvB,MAAA,GAAA,CAAI,MAAM,MAAA,GAAS,SAAA;AAAA,IACrB,CAAA,MAAO;AACL,MAAA,GAAA,CAAI,SAAA,CAAU,OAAO,mBAAmB,CAAA;AACxC,MAAA,KAAA,CAAM,MAAA,CAAO,MAAM,GAAA,EAAK;AAAA,QACtB,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA;AAAA,EACA,aAAA,EAAe;AAAA,IACb,KAAA,EAAO,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,YAAA;AAAA,IAC/B,MAAA,EAAQ,CAAC,KAAA,EAAO,IAAA,EAAM,IAAA,KAAS;AAC7B,MAAA,KAAA,CAAM,QAAQ,IAAA,EAAM,EAAE,KAAA,EAAO,IAAA,CAAK,OAAiB,CAAA;AAAA,IACrD;AAAA,GACF;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,CAAC,IAAA,KAAS,IAAA,CAAK,KAAK,IAAA,KAAS,YAAA;AAAA,IACpC,MAAA,EAAQ,CAAC,KAAA,EAAO,IAAA,KAAS;AACvB,MAAA,KAAA,CAAM,OAAA,CAAQ,YAAA,EAAc,MAAA,EAAW,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,IACzD;AAAA;AAEJ,CAAA,CAAE,CAAA;;ACxDK,MAAM,kBAAA,GAAqB,QAAA,CAAS,aAAA,EAAe,CAAC,GAAA,KAAQ;AACjE,EAAA,OAAO,MAAM,CAAC,KAAA,EAAO,QAAA,KAAa;AAChC,IAAA,MAAM;AAAA,MACJ,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAK,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,QACN,mBAAA,CAAoB,KAAA,EAAO,gBAAA,CAAiB,IAAA,CAAK,GAAG,CAAC,CAAA;AAEzD,IAAA,MAAM,EAAE,SAAA,EAAW,GAAA,EAAK,EAAA,EAAG,GAAI,KAAA;AAC/B,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,OAAO,GAAA,CAAI,WAAA,CAAY,SAAA,CAAU,IAAA,EAAM,UAAU,EAAE,CAAA;AACzD,MAAA,IAAIC,OAAM,EAAA,CAAG,oBAAA;AAAA,QACX,gBAAA,CAAiB,IAAA,CAAK,GAAG,CAAA,CAAE,MAAA,CAAO;AAAA,UAChC,KAAA,EAAO;AAAA,SACR;AAAA,OACH;AACA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA;AAAA,UACEA,IAAAA,CAAI,aAAa,aAAA,CAAc,MAAA,CAAOA,KAAI,GAAA,EAAK,SAAA,CAAU,IAAI,CAAC;AAAA,SAChE;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,EAAE,IAAA,EAAM,EAAA,EAAG,GAAI,SAAA;AACrB,IAAA,IAAI,CAAC,SAAA,IAAa,QAAA,GAAW,CAAA,EAAG,OAAO,KAAA;AAEvC,IAAA,IAAI,GAAA,GAAM,EAAA,CAAG,MAAA,CAAO,QAAA,EAAU,WAAW,CAAC,CAAA;AAC1C,IAAA,MAAM,OAAA,GAAW,UAAmB,KAAA,CAAM,KAAA;AAC1C,IAAA,GAAA,GAAM,GAAA,CAAI,UAAA,CAAW,OAAA,EAAS,QAAQ,CAAA;AACtC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA;AAAA,QACE,GAAA,CAAI,YAAA;AAAA,UACF,aAAA,CAAc,OAAO,GAAA,CAAI,GAAA,EAAK,MAAM,EAAA,GAAK,OAAA,CAAQ,SAAS,CAAC;AAAA;AAC7D,OACF;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AACF,CAAC,CAAA;;AC7CM,MAAM,kBAAA,GAAqB,eAAe,cAAc,CAAA;;ACAxD,SAAS,aAAa,KAAA,EAAkB;AAAC;;ACiBhD,SAAA,CAAU,CAAC,CAAA;AASJ,MAAM,eAAe,eAAA,CAAmC;AAAA,EAC7D,KAAA,EAAO;AAAA,IACL,GAAA,EAAK;AAAA,MACH,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,MAAM,KAAA,EAAY;AAChB,IAAA,MAAM,YAAA,GAAyB,CAAC,EAAA,KAAY;AAC1C,MAAA,IAAI,CAAC,EAAA,IAAM,EAAE,EAAA,YAAc,WAAA,CAAA,EAAc;AACzC,MAAA,OAAO,GAAG,UAAA,EAAY;AACpB,QAAA,EAAA,CAAG,WAAA,CAAY,GAAG,UAAU,CAAA;AAAA,MAC9B;AACA,MAAA,IAAI,KAAA,CAAM,UAAU,KAAA,EAAO;AACzB,QAAA,EAAA,CAAG,WAAA,CAAY,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,GAAG,CAAA;AACxC,QAAA,qBAAA,CAAsB,MAAM;AAC1B,UAAA,IAAI,KAAA,CAAM,UAAU,KAAA,IAAS,CAAC,MAAM,SAAA,CAAU,KAAA,CAAM,UAAS,EAAG;AAC9D,YAAA,KAAA,CAAM,SAAA,CAAU,MAAM,KAAA,EAAM;AAAA,UAC9B;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAIA,IAAA,OAAO,MAAM;AACX,MAAA,uBACE,CAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,2BAAA,EAAA,kBACT,CAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,iBAAA,EAAA,EACR,KAAA,CAAM,SAAA,mBAAY,CAAA,CAAC,KAAA,EAAA,EAAI,KAAK,YAAA,EAAc,CAAA,GAAK,IAClD,CAAA,kBACA,CAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,QAAA,EAAA,kBACT,CAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAM,MAAA,EAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,EAAK,iBAAiB,CAAE,CAAA,kBACvD,CAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAK,uCAAA;AAAA,UACL,MAAA,EAAO,QAAA;AAAA,UACP,KAAA,EAAM;AAAA,SAAA;AAAA,wBAEN,CAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,QAAE,GAAA;AAAA,QAAE,IAAA,CAAK,KAAA,CAAM,GAAA,EAAK,eAAe;AAAA,OAE7D,CACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EACF;AACF,CAAC,CAAA;;;;;;;;;ACtFD,IAAA,QAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA;AA2BO,MAAM,kBAAA,CAAyC;AAAA,EAUpD,WAAA,CACW,GAAA,EACT,IAAA,EACA,MAAA,EACA;AAHS,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAVX,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,EAA4C,WAAW,IAAI,CAAA,CAAA;AAC3D,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,EAAsD,WAAW,MAAM;AAAA,IAAC,CAAC,CAAA,CAAA;AACzE,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,EAA4B,IAAA,CAAA;AAC5B,IAAA,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,cAAA,EAAuD,IAAA,CAAA;AA8BvD,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,EAAU,MAAM;AACd,MAAA,IAAI,mBAAK,cAAA,CAAA,EAAgB;AACvB,QAAA,YAAA,CAAa,mBAAK,cAAA,CAAc,CAAA;AAChC,QAAA,YAAA,CAAA,IAAA,EAAK,cAAA,EAAiB,IAAA,CAAA;AACtB,QAAA,YAAA,CAAA,IAAA,EAAK,YAAA,CAAA,CAAa,MAAM,KAAK,CAAA;AAAA,MAC/B;AACA,MAAA,IAAI,YAAA,CAAA,IAAA,EAAK,YAAW,KAAA,EAAO;AACzB,QAAA,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,MAAM,OAAA,EAAQ;AAC9B,QAAA,YAAA,CAAA,IAAA,EAAK,YAAW,KAAA,GAAQ,IAAA;AAAA,MAC1B;AACA,MAAA,YAAA,CAAA,IAAA,EAAK,UAAA,EAAa,IAAA,CAAA;AAAA,IACpB,CAAA,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,EAAc,CAAC,IAAA,KAAqB;AAClC,MAAA,MAAM,aAAa,MAAM;AACvB,QAAA,MAAM,EAAE,SAAA,EAAU,GAAI,IAAA,CAAK,KAAA;AAC3B,QAAA,IAAI,SAAA,CAAU,OAAO,OAAO,KAAA;AAC5B,QAAA,IAAI,EAAE,SAAA,YAAqB,aAAA,CAAA,EAAgB,OAAO,KAAA;AAClD,QAAA,MAAM,OAAO,SAAA,CAAU,IAAA;AACvB,QAAA,IAAI,IAAA,CAAK,IAAA,CAAK,IAAA,KAAS,YAAA,EAAc,OAAO,KAAA;AAE5C,QAAA,MAAM,WAAW,SAAA,CAAU,IAAA;AAE3B,QAAA,IAAI,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAW,KAAA,IAAS,YAAA,CAAA,IAAA,EAAK,gBAAe,QAAA,EAAU;AACzD,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,YAAA,CAAA,IAAA,EAAK,UAAA,EAAa,QAAA,CAAA;AAElB,QAAA,MAAM,WAAA,GAAc,IAAI,MAAA,CAAO;AAAA,UAC7B,KAAA,EAAO;AAAA,YACL,GAAA,EAAK;AAAA,cACH,OAAA,EAAS;AAAA,aACX;AAAA,YACA,SAAA,EAAW;AAAA,cACT,OAAA,EAAS,SAAA;AAAA,cACT,KAAA,EAAO,OAAA;AAAA,cACP,QAAA,EAAU,CAAC,EAAE,GAAA,EAAK,KAAK,CAAA;AAAA,cACvB,KAAA,GAAQ;AACN,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAA;AAAA,cAChB;AAAA,aACF;AAAA,YACA,IAAA,EAAM;AAAA,cACJ,KAAA,EAAO;AAAA;AACT;AACF,SACD,CAAA;AAED,QAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,GAAA,CAAI,MAAA;AAAA,UACrC,IAAA;AAAA,UACA,WAAA,CAAY,MAAM,SAAA,CAAU,MAAA;AAAA,YAC1B,IAAA;AAAA,YACA,IAAA,CAAK,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAK,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI;AAAA;AAC1D,SACF;AAEA,QAAA,MAAM,SAAA,GAAY,IAAI,UAAA,CAAW,YAAA,CAAA,IAAA,EAAK,IAAA,CAAA,EAAM;AAAA,UAC1C,KAAA,EAAO,YAAY,MAAA,CAAO;AAAA,YACxB,GAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS;AAAA,cACP,MAAA,CAAO;AAAA,gBACL,OAAA,EAAS,IAAA;AAAA,gBACT,OAAA,EAAS,IAAA;AAAA,gBACT,OAAA,EAAS,IAAA;AAAA,gBACT,OAAO,MAAM;AACX,kBAAA,IAAI,mBAAK,cAAA,CAAA,EAAgB;AACvB,oBAAA,YAAA,CAAa,mBAAK,cAAA,CAAc,CAAA;AAChC,oBAAA,YAAA,CAAA,IAAA,EAAK,cAAA,EAAiB,IAAA,CAAA;AAAA,kBACxB;AACA,kBAAA,YAAA,CAAA,IAAA,EAAK,YAAA,CAAA,CAAa,MAAM,IAAI,CAAA;AAC5B,kBAAA,OAAO,IAAA;AAAA,gBACT,CAAA;AAAA,gBACA,QAAQ,MAAM;AACZ,kBAAA,IAAI,mBAAK,cAAA,CAAA,EAAgB;AACvB,oBAAA,YAAA,CAAa,mBAAK,cAAA,CAAc,CAAA;AAChC,oBAAA,YAAA,CAAA,IAAA,EAAK,cAAA,EAAiB,IAAA,CAAA;AAAA,kBACxB;AACA,kBAAA,YAAA,CAAA,IAAA,EAAK,YAAA,CAAA,CAAa,MAAM,IAAI,CAAA;AAC5B,kBAAA,OAAO,IAAA;AAAA,gBACT;AAAA,eACD,CAAA;AAAA,cACD,IAAI,MAAA,CAAO;AAAA,gBACT,KAAA,EAAO;AAAA,kBACL,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,oBAAA,IAAI,KAAA,CAAM,GAAA,CAAI,WAAA,KAAgB,EAAA,SAAW,aAAA,CAAc,KAAA;AACvD,oBAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,wBAA+B,CAAA;AAC3D,oBAAA,MAAM,OAAO,UAAA,CAAW,IAAA,CAAK,GAAG,KAAA,CAAM,GAAA,CAAI,QAAQ,IAAA,EAAM;AAAA,sBACtD,KAAA,EAAO,mBAAA;AAAA,sBACP,kBAAA,EAAoB;AAAA,qBACrB,CAAA;AACD,oBAAA,OAAO,cAAc,MAAA,CAAO,KAAA,CAAM,GAAA,EAAK,CAAC,IAAI,CAAC,CAAA;AAAA,kBAC/C;AAAA;AACF,eACD;AAAA;AACH,WACD,CAAA;AAAA,UACD,mBAAA,EAAqB,CAAC,EAAA,KAAO;AAC3B,YAAA,MAAM,SAAA,GAAY,SAAA,CAAU,KAAA,CAAM,KAAA,CAAM,EAAE,CAAA;AAC1C,YAAA,SAAA,CAAU,YAAY,SAAS,CAAA;AAC/B,YAAA,IAAI,GAAG,UAAA,EAAY;AACjB,cAAA,IAAI,mBAAK,cAAA,CAAA,EAAgB;AACvB,gBAAA,YAAA,CAAa,mBAAK,cAAA,CAAc,CAAA;AAAA,cAClC;AACA,cAAA,YAAA,CAAA,IAAA,EAAK,cAAA,EAAiB,WAAW,MAAM;AACrC,gBAAA,YAAA,CAAA,IAAA,EAAK,cAAA,EAAiB,IAAA,CAAA;AACtB,gBAAA,YAAA,CAAA,IAAA,EAAK,YAAA,CAAA,CAAa,MAAM,KAAK,CAAA;AAAA,cAC/B,GAAG,EAAE,CAAA,CAAA;AAAA,YACP;AAAA,UACF;AAAA,SACD,CAAA;AAED,QAAA,YAAA,CAAA,IAAA,EAAK,YAAW,KAAA,GAAQ,SAAA;AACxB,QAAA,YAAA,CAAA,IAAA,EAAK,YAAA,CAAA,CAAa,KAAA,GAAQ,CAAC,KAAA,GAAQ,KAAA,KAAU;AAC3C,UAAA,MAAM,EAAE,EAAA,EAAG,GAAI,IAAA,CAAK,KAAA;AACpB,UAAA,EAAA,CAAG,iBAAiB,QAAA,EAAU,OAAA,EAAS,SAAA,CAAU,KAAA,CAAM,IAAI,WAAW,CAAA;AACtE,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,EAAA,CAAG,aAAa,aAAA,CAAc,MAAA,CAAO,GAAG,GAAA,EAAK,QAAA,GAAW,CAAC,CAAC,CAAA;AAAA,UAC5D;AACA,UAAA,IAAA,CAAK,SAAS,EAAE,CAAA;AAChB,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,qBAAA,CAAsB,MAAM;AAC1B,cAAA,IAAA,CAAK,KAAA,EAAM;AAAA,YACb,CAAC,CAAA;AAAA,UACH;AAAA,QACF,CAAA;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAEA,MAAA,MAAM,OAAO,UAAA,EAAW;AACxB,MAAA,IAAI,CAAC,IAAA,EAAM,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AACX,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAS,CAAC,MAAkB,SAAA,KAA4B;AACtD,MAAA,YAAA,CAAA,IAAA,EAAK,SAAA,CAAA,CAAU,MAAA,CAAO,IAAA,EAAM,SAAS,CAAA;AAAA,IACvC,CAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAU,MAAM;AACd,MAAA,YAAA,CAAA,IAAA,EAAK,MAAK,OAAA,EAAQ;AAClB,MAAA,YAAA,CAAA,IAAA,EAAK,WAAU,OAAA,EAAQ;AACvB,MAAA,YAAA,CAAA,IAAA,EAAK,UAAS,MAAA,EAAO;AAAA,IACvB,CAAA;AAnKE,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC5C,IAAA,OAAA,CAAQ,SAAA,GAAY,4BAAA;AACpB,IAAA,YAAA,CAAA,IAAA,EAAK,QAAA,EAAW,OAAA,CAAA;AAChB,IAAA,YAAA,CAAA,IAAA,EAAK,IAAA,EAAO,UAAU,YAAA,EAAc;AAAA,MAClC,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,MAAA;AAAA,MACA,WAAW,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA;AAAA,MAChB,aAAa,YAAA,CAAA,IAAA,EAAK,YAAA;AAAA,KACnB,CAAA,CAAA;AACD,IAAA,YAAA,CAAA,IAAA,EAAK,IAAA,CAAA,CAAK,MAAM,OAAO,CAAA;AACvB,IAAA,YAAA,CAAA,IAAA,EAAK,SAAA,EAAY,IAAI,eAAA,CAAgB;AAAA,MACnC,QAAA,EAAU,CAAA;AAAA,MACV,SAAS,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA;AAAA,MACd,YAAY,YAAA,CAAA,IAAA,EAAK,WAAA,CAAA;AAAA,MACjB,MAAA,EAAQ,EAAA;AAAA,MACR,iBAAA,EAAmB;AAAA,QACjB,SAAA,EAAW;AAAA;AACb,KACD,CAAA,CAAA;AACD,IAAA,YAAA,CAAA,IAAA,EAAK,SAAA,CAAA,CAAU,OAAO,IAAI,CAAA;AAC1B,IAAA,YAAA,CAAA,IAAA,EAAK,IAAA,EAAO,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,EAC1C;AA+IF;AAlLE,QAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,IAAA,GAAA,IAAA,OAAA,EAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;AACA,IAAA,GAAA,IAAA,OAAA,EAAA;AACA,cAAA,GAAA,IAAA,OAAA,EAAA;AA8BA,OAAA,GAAA,IAAA,OAAA,EAAA;AAaA,WAAA,GAAA,IAAA,OAAA,EAAA;;ACrEK,MAAM,mBAAA,GAAsB,UAAA;AAAA,EAAW,CAAC,GAAA,KAC7C,QAAA,CAAS,wBAAwB,gBAAA,CAAiB,IAAA,CAAK,GAAG,CAAA,EAAG;AAAA,IAC3D,OAAA,EAAS,CAAC,KAAA,KAAU;AAXxB,MAAA,IAAA,EAAA;AAYM,MAAA,OAAO;AAAA,QACL,KAAA,EAAA,CAAO,EAAA,GAAA,KAAA,CAAM,CAAC,CAAA,KAAP,IAAA,GAAA,EAAA,GAAY;AAAA,OACrB;AAAA,IACF;AAAA,GACD;AACH,CAAA;AAIO,MAAM,kBAAA,GAAqB,UAAA;AAAA,EAAW,CAAC,QAC5C,sBAAA,CAAuB,cAAA,EAAgB,gBAAgB,IAAA,CAAK,GAAG,GAAG,OAAO;AAAA,IACvE,QAAA,EAAU;AAAA,GACZ,CAAE;AACJ,CAAA;;ACnBO,MAAM,gBAAA,GAAmB,OAAA;AAAA,EAC9B,YAAA;AAAA,EACA,MAAM;AACR,CAAA;AAEA,SAAS,eAAe,GAAA,EAAW;AACjC,EAAA,OAAO,KAAA;AAAA,IACL,GAAA;AAAA,IACA,MAAA;AAAA,IACA,CACE,IAAA,EACA,KAAA,EACA,MAAA,KACG;AACH,MAAA,MAAM,EAAE,OAAM,GAAI,IAAA;AAClB,MAAA,MAAM,OAAA,GAAU;AAAA,QACd,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,OAAA;AAAA,QACN;AAAA,OACF;AACA,MAAA,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA;AAAA,IAC1C;AAAA,GACF;AACF;AAGO,MAAM,qBAAA,GAAwB,OAAA;AAAA,EACnC,iBAAA;AAAA,EACA,MAAM,MAAM;AACd,CAAA;;ACVO,MAAM,KAAA,GAA2C,CAAC,MAAA,EAAQ,MAAA,KAAW;AAC1E,EAAA,MAAA,CACG,MAAA,CAAO,mBAAmB,YAAA,CAAa,KAAK,CAAC,CAAA,CAC7C,MAAA,CAAO,CAAC,GAAA,KAAQ;AACf,IAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,GAAG,CAAA,CAAE,GAAA,EAAI;AACxC,IAAA,MAAM,mBAAA,GAAsB,KAAA,CAAM,QAAA,CAAS,YAAA,CAAa,UAAU,CAAA;AAClE,IAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,MAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,IACtE;AAEA,IAAA,GAAA,CAAI,MAAA,CAAO,eAAA,CAAgB,GAAA,EAAK,CAAC,IAAA,MAAU;AAAA,MACzC,GAAG,IAAA;AAAA,MACH,aAAA,EAAe,CAAC,QAAA,EAAU,OAAA,EAAS,YAAA,KAAiB;AAClD,QAAA,IAAI,SAAS,WAAA,EAAY,KAAM,OAAA,IAAW,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC5D,UAAA,OAAO,WAAA,CAAY,OAAA,EAAS,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,YAAY,CAAA;AAAA,QAClD;AACA,QAAA,MAAM,gBAAgB,IAAA,CAAK,aAAA;AAC3B,QAAA,OAAO,aAAA,CAAc,QAAA,EAAU,OAAA,EAAS,YAAY,CAAA;AAAA,MACtD;AAAA,KACF,CAAE,CAAA;AAEF,IAAA,GAAA,CAAI,GAAA,CAAI,mBAAmB,GAAA,EAAK;AAAA,MAC9B,IAAA,EAAM,CAAC,IAAA,KAAS;AA/CxB,QAAA,IAAA,EAAA;AAgDU,QAAA,OAAO,IAAI,kBAAA,CAAmB,GAAA,EAAK,IAAA,EAAM;AAAA,UACvC,iBAAA,EAAA,CAAmB,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,iBAAA,KAAR,IAAA,GAAA,EAAA,GAA6B,WAAA;AAAA,UAChD,GAAG;AAAA,SACJ,CAAA;AAAA,MACH;AAAA,KACD,CAAA;AAAA,EACH,CAAC,CAAA,CACA,GAAA,CAAI,gBAAgB,CAAA,CACpB,IAAI,qBAAqB,CAAA,CACzB,GAAA,CAAI,gBAAgB,CAAA,CACpB,GAAA,CAAI,kBAAkB,CAAA,CACtB,GAAA,CAAI,mBAAmB,CAAA,CACvB,GAAA,CAAI,kBAAkB,EACtB,GAAA,CAAI,gBAAgB,CAAA,CACpB,GAAA,CAAI,kBAAkB,CAAA;AAC3B;AAEA,SAAS,WAAA,CAAY,SAAiB,OAAA,EAAwB;AAC5D,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,cAAA,CAAe,OAAA,EAAS;AAAA,IACzC,GAAG,OAAA;AAAA,IACH,YAAA,EAAc,KAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACd,CAAA;AACD,EAAA,OAAO,IAAA;AACT;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/icons/confirm.ts","../../../../src/icons/help.ts","../../../../src/feature/latex/block-latex.ts","../../../../src/feature/latex/inline-latex.ts","../../../../src/feature/latex/command.ts","../../../../src/feature/latex/inline-tooltip/tooltip.ts","../../../../src/utils/keep-alive.ts","../../../../src/feature/latex/inline-tooltip/component.tsx","../../../../src/feature/latex/inline-tooltip/view.ts","../../../../src/feature/latex/input-rule.ts","../../../../src/feature/latex/remark.ts","../../../../src/feature/latex/index.ts"],"sourcesContent":["import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { createSlice } from '@jvs-milkdown/kit/ctx'\n\nexport const zhCN = {\n // block handle\n 'handle.add': '插入内容',\n 'handle.menu': '点击打开菜单',\n 'handle.drag': '拖拽移动位置',\n // placeholder\n 'placeholder.text': \"输入正文或 '/' 快速插入内容\",\n\n // toolbar\n 'toolbar.heading': '标题',\n 'toolbar.formatting': '格式',\n 'toolbar.function': '功能',\n 'toolbar.formatPainter': '格式刷',\n\n // menu bar\n 'menuBar.file': '文件',\n 'menuBar.edit': '编辑',\n 'menuBar.view': '视图',\n 'menuBar.insert': '插入',\n 'menuBar.format': '格式',\n\n // view menu\n 'view.outline': '大纲面板',\n 'view.outlineLeft': '在左侧显示',\n 'view.outlineRight': '在右侧显示',\n 'view.docBackground': '文档背景色',\n 'view.title': '显示标题',\n 'view.cover': '显示封面',\n 'view.editorWidth': '内容宽度',\n 'view.widthDefault': '默认',\n 'view.widthWide': '较宽',\n 'view.widthFull': '全宽',\n\n // code-mirror\n 'codeMirror.searchPlaceholder': '搜索语言',\n 'codeMirror.noResultText': '无结果',\n 'codeMirror.previewToggleOptionEdit': '编辑',\n 'codeMirror.previewToggleOptionHide': '隐藏',\n 'codeMirror.previewLabel': '预览',\n 'codeMirror.wrapText': '自动换行',\n\n // link-tooltip\n 'linkTooltip.pasteLink': '粘贴链接...',\n\n // image-block\n 'imageBlock.inlineUploadButton': '上传',\n 'imageBlock.inlineUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockUploadButton': '上传文件',\n 'imageBlock.blockUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockCaptionPlaceholder': '写下图片描述...',\n 'imageBlock.blockConfirmButton': '确定',\n\n // attachment-block\n 'attachmentBlock.uploadButton': '上传文件',\n 'attachmentBlock.uploadPlaceholderText': '或点击上传',\n 'attachmentBlock.download': '下载',\n\n // menu categories\n 'menu.group.text': '正文',\n 'menu.group.block': '段落',\n 'menu.group.list': '列表',\n 'menu.group.advanced': '高级',\n\n // menu items\n 'menu.item.text': '普通文本',\n 'menu.item.h1': '标题 1',\n 'menu.item.h2': '标题 2',\n 'menu.item.h3': '标题 3',\n 'menu.item.h4': '标题 4',\n 'menu.item.h5': '标题 5',\n 'menu.item.h6': '标题 6',\n 'menu.item.quote': '引用',\n 'menu.item.divider': '分割线',\n 'menu.item.bulletList': '无序列表',\n 'menu.item.orderedList': '有序列表',\n 'menu.item.taskList': '任务列表',\n 'menu.item.image': '图片',\n 'menu.item.attachment': '视频或文件',\n 'menu.item.code': '代码块',\n 'menu.item.table': '表格',\n 'menu.item.math': '公式',\n 'menu.item.bold': '加粗',\n 'menu.item.italic': '斜体',\n 'menu.item.strikethrough': '删除线',\n 'menu.item.underline': '下划线',\n 'menu.item.highlight': '高亮',\n 'menu.item.lineCode': '行内代码',\n 'menu.item.link': '链接',\n\n // menu tooltips\n 'menu.tooltip.text': '普通文本 (Ctrl+Alt+0)',\n 'menu.tooltip.h1': '标题 1 (Ctrl+Alt+1)\\nMarkdown: # 空格',\n 'menu.tooltip.h2': '标题 2 (Ctrl+Alt+2)\\nMarkdown: ## 空格',\n 'menu.tooltip.h3': '标题 3 (Ctrl+Alt+3)\\nMarkdown: ### 空格',\n 'menu.tooltip.h4': '标题 4 (Ctrl+Alt+4)\\nMarkdown: #### 空格',\n 'menu.tooltip.h5': '标题 5 (Ctrl+Alt+5)\\nMarkdown: ##### 空格',\n 'menu.tooltip.h6': '标题 6 (Ctrl+Alt+6)\\nMarkdown: ###### 空格',\n 'menu.tooltip.quote': '引用 (Ctrl+Shift+9)\\nMarkdown: > 空格',\n 'menu.tooltip.divider': '分割线\\nMarkdown: --- 空格',\n 'menu.tooltip.bulletList':\n '无序列表 (Ctrl+Shift+8)\\nMarkdown: - 空格 或 * 空格',\n 'menu.tooltip.orderedList': '有序列表 (Ctrl+Shift+7)\\nMarkdown: 1. 空格',\n 'menu.tooltip.taskList': '任务列表\\nMarkdown: - [ ] 空格',\n 'menu.tooltip.image': '图片\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': '代码块 (Ctrl+Shift+\\\\)\\nMarkdown: ``` 回车',\n 'menu.tooltip.table': '表格\\nMarkdown: | | |',\n 'menu.tooltip.math': '公式\\nMarkdown: $$ 回车',\n\n // custom block menu items\n 'customMenu.indentAndAlign': '缩进和对齐',\n 'customMenu.color': '颜色',\n 'customMenu.cut': '剪切',\n 'customMenu.copy': '复制',\n 'customMenu.delete': '删除',\n 'customMenu.addBelow': '在下方添加',\n 'customMenu.alignLeft': '左对齐',\n 'customMenu.alignCenter': '居中对齐',\n 'customMenu.alignRight': '右对齐',\n 'customMenu.increaseIndent': '增加缩进',\n 'customMenu.decreaseIndent': '减少缩进',\n 'customMenu.textColor': '字体颜色',\n 'customMenu.bgColor': '背景颜色',\n 'customMenu.restoreDefault': '恢复默认',\n 'customMenu.colorDefault': '默认',\n 'customMenu.colorRed': '红色',\n 'customMenu.colorOrange': '橙色',\n 'customMenu.colorYellow': '黄色',\n 'customMenu.colorGreen': '绿色',\n 'customMenu.colorBlue': '蓝色',\n 'customMenu.colorPurple': '紫色',\n 'customMenu.colorGray': '灰色',\n 'customMenu.insertTable': '插入支持富文本的表格',\n 'customMenu.export': '导出',\n 'customMenu.import': '导入',\n\n 'customMenu.fontDefault': '默认',\n 'font.fangSong': '仿宋',\n 'font.stFangsong': '华文仿宋',\n 'font.stSong': '华文宋体',\n 'font.stKaiti': '华文楷体',\n 'font.simSun': '宋体',\n 'font.microsoftYaHei': '微软雅黑',\n 'font.kaiTi': '楷体',\n 'font.simHei': '黑体',\n\n // latex\n 'latex.escToExit': '按 ESC 完成输入',\n 'latex.helpDoc': '查看帮助文档',\n 'latex.emptyPlaceholder': '添加 LaTeX 公式',\n 'latex.inputPlaceholder': '请输入公式',\n\n // shortcuts\n 'shortcuts.title': '键盘快捷键',\n 'shortcuts.formatting': '文本格式',\n 'shortcuts.bold': '加粗',\n 'shortcuts.italic': '斜体',\n 'shortcuts.underline': '下划线',\n 'shortcuts.strikethrough': '删除线',\n 'shortcuts.inlineCode': '行内代码',\n 'shortcuts.highlight': '高亮',\n 'shortcuts.paragraph': '段落',\n 'shortcuts.heading': '标题',\n 'shortcuts.block': '块级元素',\n 'shortcuts.codeBlock': '代码块',\n 'shortcuts.blockquote': '引用',\n 'shortcuts.orderedList': '有序列表',\n 'shortcuts.bulletList': '无序列表',\n 'shortcuts.indent': '增加缩进',\n 'shortcuts.outdent': '减少缩进',\n 'shortcuts.hardBreak': '换行',\n 'shortcuts.history': '历史记录',\n 'shortcuts.undo': '撤销',\n 'shortcuts.redo': '重做',\n\n // inline-diff\n 'inlineDiff.accept': '接受',\n 'inlineDiff.reject': '拒绝',\n}\n\nexport const enUS: typeof zhCN = {\n 'handle.add': 'Add content',\n 'handle.menu': 'Open menu',\n 'handle.drag': 'Drag to move',\n 'placeholder.text': \"Type '/' to use slash menu\",\n\n 'toolbar.heading': 'Heading',\n 'toolbar.formatting': 'Formatting',\n 'toolbar.function': 'Function',\n 'toolbar.formatPainter': 'Format Painter',\n\n 'menuBar.file': 'File',\n 'menuBar.edit': 'Edit',\n 'menuBar.view': 'View',\n 'menuBar.insert': 'Insert',\n 'menuBar.format': 'Format',\n\n 'view.outline': 'Outline Panel',\n 'view.outlineLeft': 'Show on Left',\n 'view.outlineRight': 'Show on Right',\n 'view.docBackground': 'Document Background',\n 'view.title': 'Show Title',\n 'view.cover': 'Show Cover',\n 'view.editorWidth': 'Content Width',\n 'view.widthDefault': 'Default',\n 'view.widthWide': 'Wide',\n 'view.widthFull': 'Full Width',\n\n 'codeMirror.searchPlaceholder': 'Search language',\n 'codeMirror.noResultText': 'No result',\n 'codeMirror.previewToggleOptionEdit': 'Edit',\n 'codeMirror.previewToggleOptionHide': 'Hide',\n 'codeMirror.previewLabel': 'Preview',\n 'codeMirror.wrapText': 'Wrap',\n\n 'linkTooltip.pasteLink': 'Paste link...',\n\n 'imageBlock.inlineUploadButton': 'Upload',\n 'imageBlock.inlineUploadPlaceholder': 'or paste link',\n 'imageBlock.blockUploadButton': 'Upload file',\n 'imageBlock.blockUploadPlaceholder': 'or paste link',\n 'imageBlock.blockCaptionPlaceholder': 'Write Image Caption',\n 'imageBlock.blockConfirmButton': 'Confirm',\n\n 'attachmentBlock.uploadButton': 'Upload file',\n 'attachmentBlock.uploadPlaceholderText': 'or click to upload',\n 'attachmentBlock.download': 'Download',\n\n 'menu.group.text': 'Text',\n 'menu.group.block': 'Block',\n 'menu.group.list': 'List',\n 'menu.group.advanced': 'Advanced',\n\n 'menu.item.text': 'Text',\n 'menu.item.h1': 'Heading 1',\n 'menu.item.h2': 'Heading 2',\n 'menu.item.h3': 'Heading 3',\n 'menu.item.h4': 'Heading 4',\n 'menu.item.h5': 'Heading 5',\n 'menu.item.h6': 'Heading 6',\n 'menu.item.quote': 'Quote',\n 'menu.item.divider': 'Divider',\n 'menu.item.bulletList': 'Bullet List',\n 'menu.item.orderedList': 'Ordered List',\n 'menu.item.taskList': 'Task List',\n 'menu.item.image': 'Image',\n 'menu.item.attachment': 'Video or File',\n 'menu.item.code': 'Code',\n 'menu.item.table': 'Table',\n 'menu.item.math': 'Math',\n 'menu.item.bold': 'Bold',\n 'menu.item.italic': 'Italic',\n 'menu.item.strikethrough': 'Strikethrough',\n 'menu.item.underline': 'Underline',\n 'menu.item.highlight': 'Highlight',\n 'menu.item.lineCode': 'Inline Code',\n 'menu.item.link': 'Link',\n\n 'menu.tooltip.text': 'Text (Ctrl+Alt+0)',\n 'menu.tooltip.h1': 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space',\n 'menu.tooltip.h2': 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space',\n 'menu.tooltip.h3': 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space',\n 'menu.tooltip.h4': 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space',\n 'menu.tooltip.h5': 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space',\n 'menu.tooltip.h6': 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space',\n 'menu.tooltip.quote': 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space',\n 'menu.tooltip.divider': 'Divider\\nMarkdown: --- Space',\n 'menu.tooltip.bulletList':\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space',\n 'menu.tooltip.orderedList': 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space',\n 'menu.tooltip.taskList': 'Task List\\nMarkdown: - [ ] Space',\n 'menu.tooltip.image': 'Image\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter',\n 'menu.tooltip.table': 'Table\\nMarkdown: | | |',\n 'menu.tooltip.math': 'Math\\nMarkdown: $$ Enter',\n\n 'customMenu.indentAndAlign': 'Indent & Align',\n 'customMenu.color': 'Color',\n 'customMenu.cut': 'Cut',\n 'customMenu.copy': 'Copy',\n 'customMenu.delete': 'Delete',\n 'customMenu.addBelow': 'Add below',\n 'customMenu.alignLeft': 'Align Left',\n 'customMenu.alignCenter': 'Align Center',\n 'customMenu.alignRight': 'Align Right',\n 'customMenu.increaseIndent': 'Increase Indent',\n 'customMenu.decreaseIndent': 'Decrease Indent',\n 'customMenu.textColor': 'Text Color',\n 'customMenu.bgColor': 'Background Color',\n 'customMenu.restoreDefault': 'Restore Default',\n 'customMenu.colorDefault': 'Default',\n 'customMenu.colorRed': 'Red',\n 'customMenu.colorOrange': 'Orange',\n 'customMenu.colorYellow': 'Yellow',\n 'customMenu.colorGreen': 'Green',\n 'customMenu.colorBlue': 'Blue',\n 'customMenu.colorPurple': 'Purple',\n 'customMenu.colorGray': 'Gray',\n 'customMenu.insertTable': 'Insert Table',\n 'customMenu.export': 'Export',\n 'customMenu.import': 'Import',\n\n 'customMenu.fontDefault': 'Default',\n 'font.fangSong': 'FangSong',\n 'font.stFangsong': 'STFangsong',\n 'font.stSong': 'STSong',\n 'font.stKaiti': 'STKaiti',\n 'font.simSun': 'SimSun',\n 'font.microsoftYaHei': 'Microsoft YaHei',\n 'font.kaiTi': 'KaiTi',\n 'font.simHei': 'SimHei',\n\n 'latex.escToExit': 'Press ESC to finish',\n 'latex.helpDoc': 'Help Doc',\n 'latex.emptyPlaceholder': 'Add LaTeX',\n 'latex.inputPlaceholder': 'Please enter formula',\n\n 'shortcuts.title': 'Keyboard Shortcuts',\n 'shortcuts.formatting': 'Text Formatting',\n 'shortcuts.bold': 'Bold',\n 'shortcuts.italic': 'Italic',\n 'shortcuts.underline': 'Underline',\n 'shortcuts.strikethrough': 'Strikethrough',\n 'shortcuts.inlineCode': 'Inline Code',\n 'shortcuts.highlight': 'Highlight',\n 'shortcuts.paragraph': 'Paragraph',\n 'shortcuts.heading': 'Heading',\n 'shortcuts.block': 'Block Elements',\n 'shortcuts.codeBlock': 'Code Block',\n 'shortcuts.blockquote': 'Blockquote',\n 'shortcuts.orderedList': 'Ordered List',\n 'shortcuts.bulletList': 'Bullet List',\n 'shortcuts.indent': 'Indent',\n 'shortcuts.outdent': 'Outdent',\n 'shortcuts.hardBreak': 'Hard Break',\n 'shortcuts.history': 'History',\n 'shortcuts.undo': 'Undo',\n 'shortcuts.redo': 'Redo',\n\n 'inlineDiff.accept': 'Accept',\n 'inlineDiff.reject': 'Reject',\n}\n\nexport type CrepeTranslations = typeof zhCN\n\nexport const translationsCtx = createSlice<\n Record<string, Partial<CrepeTranslations>>\n>(\n {\n 'zh-CN': zhCN,\n 'en-US': enUS,\n },\n 'translationsCtx'\n)\n\nexport const localeCtx = createSlice('zh-CN', 'localeCtx')\n\nexport function i18n(ctx: Ctx, key: keyof CrepeTranslations): string {\n const translations = ctx.get(translationsCtx)\n const locale = ctx.get(localeCtx)\n return (\n translations[locale]?.[key] ??\n translations['zh-CN']?.[key] ??\n enUS[key] ??\n key\n )\n}\n","import { createSlice, type Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n\nexport { localeCtx, translationsCtx } from './locale'\n","import type { AttachmentFeatureConfig } from './attachment/config'\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { DiffBlockFeatureConfig } from './diff-block'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { InlineDiffFeatureConfig } from './inline-diff'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n\n /// Inline diff comparison between two document versions, similar to Word track changes.\n InlineDiff = 'inline-diff',\n\n /// Diff comparison block for showing code differences\n DiffBlock = 'diff-block',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n [CrepeFeature.InlineDiff]?: InlineDiffFeatureConfig\n [CrepeFeature.DiffBlock]?: DiffBlockFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n [CrepeFeature.InlineDiff]: false,\n [CrepeFeature.DiffBlock]: true,\n}\n","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 helpIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-6 h-6\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z\"\n />\n </svg>\n`\n","import { codeBlockSchema } from '@jvs-milkdown/kit/preset/commonmark'\n\nexport const blockLatexSchema = codeBlockSchema.extendSchema((prev) => {\n return (ctx) => {\n const baseSchema = prev(ctx)\n return {\n ...baseSchema,\n toMarkdown: {\n match: baseSchema.toMarkdown.match,\n runner: (state, node) => {\n const language = node.attrs.language ?? ''\n if (language.toLowerCase() === 'latex') {\n state.addNode(\n 'math',\n undefined,\n node.content.firstChild?.text || ''\n )\n } else {\n return baseSchema.toMarkdown.runner(state, node)\n }\n },\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 { tooltipFactory } from '@jvs-milkdown/kit/plugin/tooltip'\n\nexport const inlineLatexTooltip = tooltipFactory('INLINE_LATEX')\n","// Prevent tree-shaking from removing Vue's `h` and `Fragment`,\n// which are required at runtime for TSX to work.\nexport function keepAlive(..._args: unknown[]) {}\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { EditorView } from '@jvs-milkdown/kit/prose/view'\n\nimport { Icon } from '@jvs-milkdown/kit/component'\n// @ts-ignore\nimport {\n defineComponent,\n type ShallowRef,\n type VNodeRef,\n h,\n type PropType,\n} from 'vue'\n\nimport type { LatexConfig } from '..'\n\nimport { i18n } from '../../../core/locale'\nimport { helpIcon } from '../../../icons'\nimport { keepAlive } from '../../../utils/keep-alive'\n\nkeepAlive(h)\n\ntype LatexTooltipProps = {\n ctx: Ctx\n config: Partial<LatexConfig>\n innerView: ShallowRef<EditorView | null>\n updateValue: ShallowRef<(close?: boolean) => void>\n}\n\nexport const LatexTooltip = defineComponent<LatexTooltipProps>({\n props: {\n ctx: {\n type: Object as PropType<Ctx>,\n required: true,\n },\n config: {\n type: Object,\n required: true,\n },\n innerView: {\n type: Object,\n required: true,\n },\n updateValue: {\n type: Object,\n required: true,\n },\n },\n setup(props: any) {\n const innerViewRef: VNodeRef = (el: any) => {\n if (!el || !(el instanceof HTMLElement)) return\n while (el.firstChild) {\n el.removeChild(el.firstChild)\n }\n if (props.innerView.value) {\n el.appendChild(props.innerView.value.dom)\n requestAnimationFrame(() => {\n if (props.innerView.value && !props.innerView.value.hasFocus()) {\n props.innerView.value.focus()\n }\n })\n }\n }\n // Capture ESC key event if needed, but innerView already handles Enter\n // Usually ESC is captured by tooltip provider or innerView, but here we just show the helper text.\n\n return () => {\n return (\n <div class=\"container container-large\">\n <div class=\"input-container\">\n {props.innerView ? <div ref={innerViewRef} /> : null}\n </div>\n <div class=\"footer\">\n <span class=\"left\">{i18n(props.ctx, 'latex.escToExit')}</span>\n <a\n class=\"right\"\n href=\"https://katex.org/docs/supported.html\"\n target=\"_blank\"\n style=\"display: none;\"\n >\n <Icon icon={helpIcon} /> {i18n(props.ctx, 'latex.helpDoc')}\n </a>\n </div>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { PluginView } from '@jvs-milkdown/kit/prose/state'\n\nimport { TooltipProvider } from '@jvs-milkdown/kit/plugin/tooltip'\nimport { redo, undo } from '@jvs-milkdown/kit/prose/history'\nimport { keymap } from '@jvs-milkdown/kit/prose/keymap'\nimport { Schema } from '@jvs-milkdown/kit/prose/model'\nimport {\n EditorState,\n NodeSelection,\n TextSelection,\n Plugin,\n} from '@jvs-milkdown/kit/prose/state'\nimport {\n Decoration,\n DecorationSet,\n EditorView,\n} from '@jvs-milkdown/kit/prose/view'\n// @ts-ignore\nimport { createApp, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { LatexConfig } from '..'\n\nimport { i18n } from '../../../core/locale'\nimport { mathInlineId } from '../inline-latex'\nimport { LatexTooltip } from './component'\n\nexport class LatexInlineTooltip implements PluginView {\n #content: HTMLElement\n #provider: TooltipProvider\n #dom: HTMLElement\n #innerView: ShallowRef<EditorView | null> = shallowRef(null)\n #updateValue: ShallowRef<(close?: boolean) => void> = shallowRef(() => {})\n #activePos: number | null = null\n #app: App\n #debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n constructor(\n readonly ctx: Ctx,\n view: EditorView,\n config: Partial<LatexConfig>\n ) {\n const content = document.createElement('div')\n content.className = 'milkdown-latex-inline-edit'\n this.#content = content\n this.#app = createApp(LatexTooltip, {\n ctx: this.ctx,\n config,\n innerView: this.#innerView,\n updateValue: this.#updateValue,\n })\n this.#app.mount(content)\n this.#provider = new TooltipProvider({\n debounce: 0,\n content: this.#content,\n shouldShow: this.#shouldShow,\n offset: 10,\n floatingUIOptions: {\n placement: 'bottom-start',\n },\n })\n this.#provider.update(view)\n this.#dom = document.createElement('div')\n }\n\n #onHide = () => {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n this.#debounceTimer = null\n this.#updateValue.value(false)\n }\n if (this.#innerView.value) {\n this.#innerView.value.destroy()\n this.#innerView.value = null\n }\n this.#activePos = null\n }\n\n #shouldShow = (view: EditorView) => {\n const shouldShow = () => {\n const { selection } = view.state\n if (selection.empty) return false\n if (!(selection instanceof NodeSelection)) return false\n const node = selection.node\n if (node.type.name !== mathInlineId) return false\n\n const textFrom = selection.from\n\n if (this.#innerView.value && this.#activePos === textFrom) {\n return true\n }\n this.#activePos = textFrom\n\n const innerSchema = new Schema({\n nodes: {\n doc: {\n content: 'block+',\n },\n paragraph: {\n content: 'inline*',\n group: 'block',\n parseDOM: [{ tag: 'p' }],\n toDOM() {\n return ['p', 0]\n },\n },\n text: {\n group: 'inline',\n },\n },\n })\n\n const innerDoc = innerSchema.nodes.doc.create(\n null,\n innerSchema.nodes.paragraph.create(\n null,\n node.attrs.value ? innerSchema.text(node.attrs.value) : undefined\n )\n )\n\n const innerView = new EditorView(this.#dom, {\n state: EditorState.create({\n doc: innerDoc,\n plugins: [\n keymap({\n 'Mod-z': undo,\n 'Mod-Z': redo,\n 'Mod-y': redo,\n Enter: () => {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n this.#debounceTimer = null\n }\n this.#updateValue.value(true)\n return true\n },\n Escape: () => {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n this.#debounceTimer = null\n }\n this.#updateValue.value(true)\n return true\n },\n }),\n new Plugin({\n props: {\n decorations: (state) => {\n if (state.doc.textContent !== '') return DecorationSet.empty\n const text = i18n(this.ctx, 'latex.inputPlaceholder' as any)\n const deco = Decoration.node(0, state.doc.content.size, {\n class: 'crepe-placeholder',\n 'data-placeholder': text,\n })\n return DecorationSet.create(state.doc, [deco])\n },\n },\n }),\n ],\n }),\n dispatchTransaction: (tr) => {\n const nextState = innerView.state.apply(tr)\n innerView.updateState(nextState)\n if (tr.docChanged) {\n if (this.#debounceTimer) {\n clearTimeout(this.#debounceTimer)\n }\n this.#debounceTimer = setTimeout(() => {\n this.#debounceTimer = null\n this.#updateValue.value(false)\n }, 32)\n }\n },\n })\n\n this.#innerView.value = innerView\n this.#updateValue.value = (close = false) => {\n const { tr } = view.state\n tr.setNodeAttribute(textFrom, 'value', innerView.state.doc.textContent)\n if (close) {\n tr.setSelection(TextSelection.create(tr.doc, textFrom + 1))\n }\n view.dispatch(tr)\n if (close) {\n requestAnimationFrame(() => {\n view.focus()\n })\n }\n }\n return true\n }\n\n const show = shouldShow()\n if (!show) this.#onHide()\n return show\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#provider.update(view, prevState)\n }\n\n destroy = () => {\n this.#app.unmount()\n this.#provider.destroy()\n this.#content.remove()\n }\n}\n","import { codeBlockSchema } from '@jvs-milkdown/kit/preset/commonmark'\nimport { nodeRule } from '@jvs-milkdown/kit/prose'\nimport { textblockTypeInputRule } from '@jvs-milkdown/kit/prose/inputrules'\nimport { $inputRule } from '@jvs-milkdown/kit/utils'\n\nimport { mathInlineSchema } from './inline-latex'\n\n/// Input rule for inline math.\n/// When you type $E=MC^2$, it will create an inline math node.\nexport const mathInlineInputRule = $inputRule((ctx) =>\n nodeRule(/(?:\\$)([^$]+)(?:\\$)$/, mathInlineSchema.type(ctx), {\n getAttr: (match) => {\n return {\n value: match[1] ?? '',\n }\n },\n })\n)\n\n/// A input rule for creating block math.\n/// For example, `$$ ` will create a code block with language javascript.\nexport const mathBlockInputRule = $inputRule((ctx) =>\n textblockTypeInputRule(/^\\$\\$[\\s\\n]$/, codeBlockSchema.type(ctx), () => ({\n language: 'LaTeX',\n }))\n)\n","import type { Node } from '@jvs-milkdown/kit/transformer'\n\nimport { $remark } from '@jvs-milkdown/kit/utils'\nimport remarkMath from 'remark-math'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkMathPlugin = $remark<'remarkMath', undefined>(\n 'remarkMath',\n () => remarkMath\n)\n\nfunction visitMathBlock(ast: Node) {\n return visit(\n ast,\n 'math',\n (\n node: Node & { value: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n const { value } = node as Node & { value: string }\n const newNode = {\n type: 'code',\n lang: 'LaTeX',\n value,\n }\n parent.children.splice(index, 1, newNode)\n }\n )\n}\n\n/// Turn math block into code block with language LaTeX.\nexport const remarkMathBlockPlugin = $remark(\n 'remarkMathBlock',\n () => () => visitMathBlock\n)\n","import type { KatexOptions } from 'katex'\n\nimport { codeBlockConfig } from '@jvs-milkdown/kit/component/code-block'\nimport katex from 'katex'\n\nimport type { DefineFeature } from '../shared'\n\nimport { crepeFeatureConfig, useCrepeFeatures } from '../../core/slice'\nimport { CrepeFeature } from '../../feature'\nimport { confirmIcon } from '../../icons'\nimport { blockLatexSchema } from './block-latex'\nimport { toggleLatexCommand } from './command'\nimport { mathInlineSchema } from './inline-latex'\nimport { inlineLatexTooltip } from './inline-tooltip/tooltip'\nimport { LatexInlineTooltip } from './inline-tooltip/view'\nimport { mathBlockInputRule, mathInlineInputRule } from './input-rule'\nimport { remarkMathBlockPlugin, remarkMathPlugin } from './remark'\n\nexport interface LatexConfig {\n katexOptions: KatexOptions\n inlineEditConfirm: string\n}\n\nexport type LatexFeatureConfig = Partial<LatexConfig>\n\nexport const latex: DefineFeature<LatexFeatureConfig> = (editor, config) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.Latex))\n .config((ctx) => {\n const flags = useCrepeFeatures(ctx).get()\n const isCodeMirrorEnabled = flags.includes(CrepeFeature.CodeMirror)\n if (!isCodeMirrorEnabled) {\n throw new Error('You need to enable CodeMirror to use LaTeX feature')\n }\n\n ctx.update(codeBlockConfig.key, (prev) => ({\n ...prev,\n renderPreview: (language, content, applyPreview) => {\n if (language.toLowerCase() === 'latex' && content.length > 0) {\n return renderLatex(content, config?.katexOptions)\n }\n const renderPreview = prev.renderPreview\n return renderPreview(language, content, applyPreview)\n },\n }))\n\n ctx.set(inlineLatexTooltip.key, {\n view: (view) => {\n return new LatexInlineTooltip(ctx, view, {\n inlineEditConfirm: config?.inlineEditConfirm ?? confirmIcon,\n ...config,\n })\n },\n })\n })\n .use(remarkMathPlugin)\n .use(remarkMathBlockPlugin)\n .use(mathInlineSchema)\n .use(inlineLatexTooltip)\n .use(mathInlineInputRule)\n .use(mathBlockInputRule)\n .use(blockLatexSchema)\n .use(toggleLatexCommand)\n}\n\nfunction renderLatex(content: string, options?: KatexOptions) {\n const html = katex.renderToString(content, {\n ...options,\n throwOnError: false,\n displayMode: true,\n })\n return html\n}\n"],"names":["CrepeFeature","_tr"],"mappings":"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"}
@@ -121,6 +121,8 @@ const zhCN = {
121
121
  "customMenu.colorPurple": "\u7D2B\u8272",
122
122
  "customMenu.colorGray": "\u7070\u8272",
123
123
  "customMenu.insertTable": "\u63D2\u5165\u652F\u6301\u5BCC\u6587\u672C\u7684\u8868\u683C",
124
+ "customMenu.export": "\u5BFC\u51FA",
125
+ "customMenu.import": "\u5BFC\u5165",
124
126
  "customMenu.fontDefault": "\u9ED8\u8BA4",
125
127
  "font.fangSong": "\u4EFF\u5B8B",
126
128
  "font.stFangsong": "\u534E\u6587\u4EFF\u5B8B",
@@ -268,6 +270,8 @@ const enUS = {
268
270
  "customMenu.colorPurple": "Purple",
269
271
  "customMenu.colorGray": "Gray",
270
272
  "customMenu.insertTable": "Insert Table",
273
+ "customMenu.export": "Export",
274
+ "customMenu.import": "Import",
271
275
  "customMenu.fontDefault": "Default",
272
276
  "font.fangSong": "FangSong",
273
277
  "font.stFangsong": "STFangsong",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/icons/confirm.ts","../../../../src/icons/copy.ts","../../../../src/icons/edit.ts","../../../../src/icons/remove.ts","../../../../src/feature/index.ts","../../../../src/feature/link-tooltip/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","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 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 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","import type { AttachmentFeatureConfig } from './attachment/config'\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { DiffBlockFeatureConfig } from './diff-block'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { InlineDiffFeatureConfig } from './inline-diff'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n\n /// Inline diff comparison between two document versions, similar to Word track changes.\n InlineDiff = 'inline-diff',\n\n /// Diff comparison block for showing code differences\n DiffBlock = 'diff-block',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n [CrepeFeature.InlineDiff]?: InlineDiffFeatureConfig\n [CrepeFeature.DiffBlock]?: DiffBlockFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n [CrepeFeature.InlineDiff]: false,\n [CrepeFeature.DiffBlock]: true,\n}\n","import {\n configureLinkTooltip,\n linkTooltipConfig,\n linkTooltipPlugin,\n} from '@jvs-milkdown/kit/component/link-tooltip'\n\nimport type { DefineFeature } from '../shared'\n\nimport { i18n } from '../../core/locale'\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { copyIcon, editIcon, removeIcon, confirmIcon } from '../../icons'\nimport { CrepeFeature } from '../index'\n\ninterface LinkTooltipConfig {\n linkIcon: string\n editButton: string\n removeButton: string\n confirmButton: string\n inputPlaceholder: string\n onCopyLink: (link: string) => void\n}\n\nexport type LinkTooltipFeatureConfig = Partial<LinkTooltipConfig>\n\nexport const linkTooltip: DefineFeature<LinkTooltipFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.LinkTooltip))\n .config(configureLinkTooltip)\n .config((ctx) => {\n ctx.update(linkTooltipConfig.key, (prev) => ({\n ...prev,\n linkIcon: config?.linkIcon ?? copyIcon,\n editButton: config?.editButton ?? editIcon,\n removeButton: config?.removeButton ?? removeIcon,\n confirmButton: config?.confirmButton ?? confirmIcon,\n inputPlaceholder:\n config?.inputPlaceholder ?? i18n(ctx, 'linkTooltip.pasteLink'),\n onCopyLink: config?.onCopyLink ?? (() => {}),\n }))\n })\n .use(linkTooltipPlugin)\n}\n"],"names":["CrepeFeature"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/icons/confirm.ts","../../../../src/icons/copy.ts","../../../../src/icons/edit.ts","../../../../src/icons/remove.ts","../../../../src/feature/index.ts","../../../../src/feature/link-tooltip/index.ts"],"sourcesContent":["import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { createSlice } from '@jvs-milkdown/kit/ctx'\n\nexport const zhCN = {\n // block handle\n 'handle.add': '插入内容',\n 'handle.menu': '点击打开菜单',\n 'handle.drag': '拖拽移动位置',\n // placeholder\n 'placeholder.text': \"输入正文或 '/' 快速插入内容\",\n\n // toolbar\n 'toolbar.heading': '标题',\n 'toolbar.formatting': '格式',\n 'toolbar.function': '功能',\n 'toolbar.formatPainter': '格式刷',\n\n // menu bar\n 'menuBar.file': '文件',\n 'menuBar.edit': '编辑',\n 'menuBar.view': '视图',\n 'menuBar.insert': '插入',\n 'menuBar.format': '格式',\n\n // view menu\n 'view.outline': '大纲面板',\n 'view.outlineLeft': '在左侧显示',\n 'view.outlineRight': '在右侧显示',\n 'view.docBackground': '文档背景色',\n 'view.title': '显示标题',\n 'view.cover': '显示封面',\n 'view.editorWidth': '内容宽度',\n 'view.widthDefault': '默认',\n 'view.widthWide': '较宽',\n 'view.widthFull': '全宽',\n\n // code-mirror\n 'codeMirror.searchPlaceholder': '搜索语言',\n 'codeMirror.noResultText': '无结果',\n 'codeMirror.previewToggleOptionEdit': '编辑',\n 'codeMirror.previewToggleOptionHide': '隐藏',\n 'codeMirror.previewLabel': '预览',\n 'codeMirror.wrapText': '自动换行',\n\n // link-tooltip\n 'linkTooltip.pasteLink': '粘贴链接...',\n\n // image-block\n 'imageBlock.inlineUploadButton': '上传',\n 'imageBlock.inlineUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockUploadButton': '上传文件',\n 'imageBlock.blockUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockCaptionPlaceholder': '写下图片描述...',\n 'imageBlock.blockConfirmButton': '确定',\n\n // attachment-block\n 'attachmentBlock.uploadButton': '上传文件',\n 'attachmentBlock.uploadPlaceholderText': '或点击上传',\n 'attachmentBlock.download': '下载',\n\n // menu categories\n 'menu.group.text': '正文',\n 'menu.group.block': '段落',\n 'menu.group.list': '列表',\n 'menu.group.advanced': '高级',\n\n // menu items\n 'menu.item.text': '普通文本',\n 'menu.item.h1': '标题 1',\n 'menu.item.h2': '标题 2',\n 'menu.item.h3': '标题 3',\n 'menu.item.h4': '标题 4',\n 'menu.item.h5': '标题 5',\n 'menu.item.h6': '标题 6',\n 'menu.item.quote': '引用',\n 'menu.item.divider': '分割线',\n 'menu.item.bulletList': '无序列表',\n 'menu.item.orderedList': '有序列表',\n 'menu.item.taskList': '任务列表',\n 'menu.item.image': '图片',\n 'menu.item.attachment': '视频或文件',\n 'menu.item.code': '代码块',\n 'menu.item.table': '表格',\n 'menu.item.math': '公式',\n 'menu.item.bold': '加粗',\n 'menu.item.italic': '斜体',\n 'menu.item.strikethrough': '删除线',\n 'menu.item.underline': '下划线',\n 'menu.item.highlight': '高亮',\n 'menu.item.lineCode': '行内代码',\n 'menu.item.link': '链接',\n\n // menu tooltips\n 'menu.tooltip.text': '普通文本 (Ctrl+Alt+0)',\n 'menu.tooltip.h1': '标题 1 (Ctrl+Alt+1)\\nMarkdown: # 空格',\n 'menu.tooltip.h2': '标题 2 (Ctrl+Alt+2)\\nMarkdown: ## 空格',\n 'menu.tooltip.h3': '标题 3 (Ctrl+Alt+3)\\nMarkdown: ### 空格',\n 'menu.tooltip.h4': '标题 4 (Ctrl+Alt+4)\\nMarkdown: #### 空格',\n 'menu.tooltip.h5': '标题 5 (Ctrl+Alt+5)\\nMarkdown: ##### 空格',\n 'menu.tooltip.h6': '标题 6 (Ctrl+Alt+6)\\nMarkdown: ###### 空格',\n 'menu.tooltip.quote': '引用 (Ctrl+Shift+9)\\nMarkdown: > 空格',\n 'menu.tooltip.divider': '分割线\\nMarkdown: --- 空格',\n 'menu.tooltip.bulletList':\n '无序列表 (Ctrl+Shift+8)\\nMarkdown: - 空格 或 * 空格',\n 'menu.tooltip.orderedList': '有序列表 (Ctrl+Shift+7)\\nMarkdown: 1. 空格',\n 'menu.tooltip.taskList': '任务列表\\nMarkdown: - [ ] 空格',\n 'menu.tooltip.image': '图片\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': '代码块 (Ctrl+Shift+\\\\)\\nMarkdown: ``` 回车',\n 'menu.tooltip.table': '表格\\nMarkdown: | | |',\n 'menu.tooltip.math': '公式\\nMarkdown: $$ 回车',\n\n // custom block menu items\n 'customMenu.indentAndAlign': '缩进和对齐',\n 'customMenu.color': '颜色',\n 'customMenu.cut': '剪切',\n 'customMenu.copy': '复制',\n 'customMenu.delete': '删除',\n 'customMenu.addBelow': '在下方添加',\n 'customMenu.alignLeft': '左对齐',\n 'customMenu.alignCenter': '居中对齐',\n 'customMenu.alignRight': '右对齐',\n 'customMenu.increaseIndent': '增加缩进',\n 'customMenu.decreaseIndent': '减少缩进',\n 'customMenu.textColor': '字体颜色',\n 'customMenu.bgColor': '背景颜色',\n 'customMenu.restoreDefault': '恢复默认',\n 'customMenu.colorDefault': '默认',\n 'customMenu.colorRed': '红色',\n 'customMenu.colorOrange': '橙色',\n 'customMenu.colorYellow': '黄色',\n 'customMenu.colorGreen': '绿色',\n 'customMenu.colorBlue': '蓝色',\n 'customMenu.colorPurple': '紫色',\n 'customMenu.colorGray': '灰色',\n 'customMenu.insertTable': '插入支持富文本的表格',\n 'customMenu.export': '导出',\n 'customMenu.import': '导入',\n\n 'customMenu.fontDefault': '默认',\n 'font.fangSong': '仿宋',\n 'font.stFangsong': '华文仿宋',\n 'font.stSong': '华文宋体',\n 'font.stKaiti': '华文楷体',\n 'font.simSun': '宋体',\n 'font.microsoftYaHei': '微软雅黑',\n 'font.kaiTi': '楷体',\n 'font.simHei': '黑体',\n\n // latex\n 'latex.escToExit': '按 ESC 完成输入',\n 'latex.helpDoc': '查看帮助文档',\n 'latex.emptyPlaceholder': '添加 LaTeX 公式',\n 'latex.inputPlaceholder': '请输入公式',\n\n // shortcuts\n 'shortcuts.title': '键盘快捷键',\n 'shortcuts.formatting': '文本格式',\n 'shortcuts.bold': '加粗',\n 'shortcuts.italic': '斜体',\n 'shortcuts.underline': '下划线',\n 'shortcuts.strikethrough': '删除线',\n 'shortcuts.inlineCode': '行内代码',\n 'shortcuts.highlight': '高亮',\n 'shortcuts.paragraph': '段落',\n 'shortcuts.heading': '标题',\n 'shortcuts.block': '块级元素',\n 'shortcuts.codeBlock': '代码块',\n 'shortcuts.blockquote': '引用',\n 'shortcuts.orderedList': '有序列表',\n 'shortcuts.bulletList': '无序列表',\n 'shortcuts.indent': '增加缩进',\n 'shortcuts.outdent': '减少缩进',\n 'shortcuts.hardBreak': '换行',\n 'shortcuts.history': '历史记录',\n 'shortcuts.undo': '撤销',\n 'shortcuts.redo': '重做',\n\n // inline-diff\n 'inlineDiff.accept': '接受',\n 'inlineDiff.reject': '拒绝',\n}\n\nexport const enUS: typeof zhCN = {\n 'handle.add': 'Add content',\n 'handle.menu': 'Open menu',\n 'handle.drag': 'Drag to move',\n 'placeholder.text': \"Type '/' to use slash menu\",\n\n 'toolbar.heading': 'Heading',\n 'toolbar.formatting': 'Formatting',\n 'toolbar.function': 'Function',\n 'toolbar.formatPainter': 'Format Painter',\n\n 'menuBar.file': 'File',\n 'menuBar.edit': 'Edit',\n 'menuBar.view': 'View',\n 'menuBar.insert': 'Insert',\n 'menuBar.format': 'Format',\n\n 'view.outline': 'Outline Panel',\n 'view.outlineLeft': 'Show on Left',\n 'view.outlineRight': 'Show on Right',\n 'view.docBackground': 'Document Background',\n 'view.title': 'Show Title',\n 'view.cover': 'Show Cover',\n 'view.editorWidth': 'Content Width',\n 'view.widthDefault': 'Default',\n 'view.widthWide': 'Wide',\n 'view.widthFull': 'Full Width',\n\n 'codeMirror.searchPlaceholder': 'Search language',\n 'codeMirror.noResultText': 'No result',\n 'codeMirror.previewToggleOptionEdit': 'Edit',\n 'codeMirror.previewToggleOptionHide': 'Hide',\n 'codeMirror.previewLabel': 'Preview',\n 'codeMirror.wrapText': 'Wrap',\n\n 'linkTooltip.pasteLink': 'Paste link...',\n\n 'imageBlock.inlineUploadButton': 'Upload',\n 'imageBlock.inlineUploadPlaceholder': 'or paste link',\n 'imageBlock.blockUploadButton': 'Upload file',\n 'imageBlock.blockUploadPlaceholder': 'or paste link',\n 'imageBlock.blockCaptionPlaceholder': 'Write Image Caption',\n 'imageBlock.blockConfirmButton': 'Confirm',\n\n 'attachmentBlock.uploadButton': 'Upload file',\n 'attachmentBlock.uploadPlaceholderText': 'or click to upload',\n 'attachmentBlock.download': 'Download',\n\n 'menu.group.text': 'Text',\n 'menu.group.block': 'Block',\n 'menu.group.list': 'List',\n 'menu.group.advanced': 'Advanced',\n\n 'menu.item.text': 'Text',\n 'menu.item.h1': 'Heading 1',\n 'menu.item.h2': 'Heading 2',\n 'menu.item.h3': 'Heading 3',\n 'menu.item.h4': 'Heading 4',\n 'menu.item.h5': 'Heading 5',\n 'menu.item.h6': 'Heading 6',\n 'menu.item.quote': 'Quote',\n 'menu.item.divider': 'Divider',\n 'menu.item.bulletList': 'Bullet List',\n 'menu.item.orderedList': 'Ordered List',\n 'menu.item.taskList': 'Task List',\n 'menu.item.image': 'Image',\n 'menu.item.attachment': 'Video or File',\n 'menu.item.code': 'Code',\n 'menu.item.table': 'Table',\n 'menu.item.math': 'Math',\n 'menu.item.bold': 'Bold',\n 'menu.item.italic': 'Italic',\n 'menu.item.strikethrough': 'Strikethrough',\n 'menu.item.underline': 'Underline',\n 'menu.item.highlight': 'Highlight',\n 'menu.item.lineCode': 'Inline Code',\n 'menu.item.link': 'Link',\n\n 'menu.tooltip.text': 'Text (Ctrl+Alt+0)',\n 'menu.tooltip.h1': 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space',\n 'menu.tooltip.h2': 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space',\n 'menu.tooltip.h3': 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space',\n 'menu.tooltip.h4': 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space',\n 'menu.tooltip.h5': 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space',\n 'menu.tooltip.h6': 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space',\n 'menu.tooltip.quote': 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space',\n 'menu.tooltip.divider': 'Divider\\nMarkdown: --- Space',\n 'menu.tooltip.bulletList':\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space',\n 'menu.tooltip.orderedList': 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space',\n 'menu.tooltip.taskList': 'Task List\\nMarkdown: - [ ] Space',\n 'menu.tooltip.image': 'Image\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter',\n 'menu.tooltip.table': 'Table\\nMarkdown: | | |',\n 'menu.tooltip.math': 'Math\\nMarkdown: $$ Enter',\n\n 'customMenu.indentAndAlign': 'Indent & Align',\n 'customMenu.color': 'Color',\n 'customMenu.cut': 'Cut',\n 'customMenu.copy': 'Copy',\n 'customMenu.delete': 'Delete',\n 'customMenu.addBelow': 'Add below',\n 'customMenu.alignLeft': 'Align Left',\n 'customMenu.alignCenter': 'Align Center',\n 'customMenu.alignRight': 'Align Right',\n 'customMenu.increaseIndent': 'Increase Indent',\n 'customMenu.decreaseIndent': 'Decrease Indent',\n 'customMenu.textColor': 'Text Color',\n 'customMenu.bgColor': 'Background Color',\n 'customMenu.restoreDefault': 'Restore Default',\n 'customMenu.colorDefault': 'Default',\n 'customMenu.colorRed': 'Red',\n 'customMenu.colorOrange': 'Orange',\n 'customMenu.colorYellow': 'Yellow',\n 'customMenu.colorGreen': 'Green',\n 'customMenu.colorBlue': 'Blue',\n 'customMenu.colorPurple': 'Purple',\n 'customMenu.colorGray': 'Gray',\n 'customMenu.insertTable': 'Insert Table',\n 'customMenu.export': 'Export',\n 'customMenu.import': 'Import',\n\n 'customMenu.fontDefault': 'Default',\n 'font.fangSong': 'FangSong',\n 'font.stFangsong': 'STFangsong',\n 'font.stSong': 'STSong',\n 'font.stKaiti': 'STKaiti',\n 'font.simSun': 'SimSun',\n 'font.microsoftYaHei': 'Microsoft YaHei',\n 'font.kaiTi': 'KaiTi',\n 'font.simHei': 'SimHei',\n\n 'latex.escToExit': 'Press ESC to finish',\n 'latex.helpDoc': 'Help Doc',\n 'latex.emptyPlaceholder': 'Add LaTeX',\n 'latex.inputPlaceholder': 'Please enter formula',\n\n 'shortcuts.title': 'Keyboard Shortcuts',\n 'shortcuts.formatting': 'Text Formatting',\n 'shortcuts.bold': 'Bold',\n 'shortcuts.italic': 'Italic',\n 'shortcuts.underline': 'Underline',\n 'shortcuts.strikethrough': 'Strikethrough',\n 'shortcuts.inlineCode': 'Inline Code',\n 'shortcuts.highlight': 'Highlight',\n 'shortcuts.paragraph': 'Paragraph',\n 'shortcuts.heading': 'Heading',\n 'shortcuts.block': 'Block Elements',\n 'shortcuts.codeBlock': 'Code Block',\n 'shortcuts.blockquote': 'Blockquote',\n 'shortcuts.orderedList': 'Ordered List',\n 'shortcuts.bulletList': 'Bullet List',\n 'shortcuts.indent': 'Indent',\n 'shortcuts.outdent': 'Outdent',\n 'shortcuts.hardBreak': 'Hard Break',\n 'shortcuts.history': 'History',\n 'shortcuts.undo': 'Undo',\n 'shortcuts.redo': 'Redo',\n\n 'inlineDiff.accept': 'Accept',\n 'inlineDiff.reject': 'Reject',\n}\n\nexport type CrepeTranslations = typeof zhCN\n\nexport const translationsCtx = createSlice<\n Record<string, Partial<CrepeTranslations>>\n>(\n {\n 'zh-CN': zhCN,\n 'en-US': enUS,\n },\n 'translationsCtx'\n)\n\nexport const localeCtx = createSlice('zh-CN', 'localeCtx')\n\nexport function i18n(ctx: Ctx, key: keyof CrepeTranslations): string {\n const translations = ctx.get(translationsCtx)\n const locale = ctx.get(localeCtx)\n return (\n translations[locale]?.[key] ??\n translations['zh-CN']?.[key] ??\n enUS[key] ??\n key\n )\n}\n","import { createSlice, type Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n\nexport { localeCtx, translationsCtx } from './locale'\n","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 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 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","import type { AttachmentFeatureConfig } from './attachment/config'\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { DiffBlockFeatureConfig } from './diff-block'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { InlineDiffFeatureConfig } from './inline-diff'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n\n /// Inline diff comparison between two document versions, similar to Word track changes.\n InlineDiff = 'inline-diff',\n\n /// Diff comparison block for showing code differences\n DiffBlock = 'diff-block',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n [CrepeFeature.InlineDiff]?: InlineDiffFeatureConfig\n [CrepeFeature.DiffBlock]?: DiffBlockFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n [CrepeFeature.InlineDiff]: false,\n [CrepeFeature.DiffBlock]: true,\n}\n","import {\n configureLinkTooltip,\n linkTooltipConfig,\n linkTooltipPlugin,\n} from '@jvs-milkdown/kit/component/link-tooltip'\n\nimport type { DefineFeature } from '../shared'\n\nimport { i18n } from '../../core/locale'\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { copyIcon, editIcon, removeIcon, confirmIcon } from '../../icons'\nimport { CrepeFeature } from '../index'\n\ninterface LinkTooltipConfig {\n linkIcon: string\n editButton: string\n removeButton: string\n confirmButton: string\n inputPlaceholder: string\n onCopyLink: (link: string) => void\n}\n\nexport type LinkTooltipFeatureConfig = Partial<LinkTooltipConfig>\n\nexport const linkTooltip: DefineFeature<LinkTooltipFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.LinkTooltip))\n .config(configureLinkTooltip)\n .config((ctx) => {\n ctx.update(linkTooltipConfig.key, (prev) => ({\n ...prev,\n linkIcon: config?.linkIcon ?? copyIcon,\n editButton: config?.editButton ?? editIcon,\n removeButton: config?.removeButton ?? removeIcon,\n confirmButton: config?.confirmButton ?? confirmIcon,\n inputPlaceholder:\n config?.inputPlaceholder ?? i18n(ctx, 'linkTooltip.pasteLink'),\n onCopyLink: config?.onCopyLink ?? (() => {}),\n }))\n })\n .use(linkTooltipPlugin)\n}\n"],"names":["CrepeFeature"],"mappings":"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"}
@@ -121,6 +121,8 @@ const zhCN = {
121
121
  "customMenu.colorPurple": "\u7D2B\u8272",
122
122
  "customMenu.colorGray": "\u7070\u8272",
123
123
  "customMenu.insertTable": "\u63D2\u5165\u652F\u6301\u5BCC\u6587\u672C\u7684\u8868\u683C",
124
+ "customMenu.export": "\u5BFC\u51FA",
125
+ "customMenu.import": "\u5BFC\u5165",
124
126
  "customMenu.fontDefault": "\u9ED8\u8BA4",
125
127
  "font.fangSong": "\u4EFF\u5B8B",
126
128
  "font.stFangsong": "\u534E\u6587\u4EFF\u5B8B",
@@ -268,6 +270,8 @@ const enUS = {
268
270
  "customMenu.colorPurple": "Purple",
269
271
  "customMenu.colorGray": "Gray",
270
272
  "customMenu.insertTable": "Insert Table",
273
+ "customMenu.export": "Export",
274
+ "customMenu.import": "Import",
271
275
  "customMenu.fontDefault": "Default",
272
276
  "font.fangSong": "FangSong",
273
277
  "font.stFangsong": "STFangsong",