@jvs-milkdown/crepe 1.2.0 → 1.2.2

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 (75) hide show
  1. package/lib/cjs/builder.js +55 -2
  2. package/lib/cjs/builder.js.map +1 -1
  3. package/lib/cjs/feature/block-edit/index.js +73 -5
  4. package/lib/cjs/feature/block-edit/index.js.map +1 -1
  5. package/lib/cjs/feature/code-mirror/index.js +65 -3
  6. package/lib/cjs/feature/code-mirror/index.js.map +1 -1
  7. package/lib/cjs/feature/cursor/index.js +55 -2
  8. package/lib/cjs/feature/cursor/index.js.map +1 -1
  9. package/lib/cjs/feature/image-block/index.js +76 -8
  10. package/lib/cjs/feature/image-block/index.js.map +1 -1
  11. package/lib/cjs/feature/latex/index.js +55 -2
  12. package/lib/cjs/feature/latex/index.js.map +1 -1
  13. package/lib/cjs/feature/link-tooltip/index.js +55 -2
  14. package/lib/cjs/feature/link-tooltip/index.js.map +1 -1
  15. package/lib/cjs/feature/list-item/index.js +55 -2
  16. package/lib/cjs/feature/list-item/index.js.map +1 -1
  17. package/lib/cjs/feature/placeholder/index.js +55 -2
  18. package/lib/cjs/feature/placeholder/index.js.map +1 -1
  19. package/lib/cjs/feature/table/index.js +55 -2
  20. package/lib/cjs/feature/table/index.js.map +1 -1
  21. package/lib/cjs/feature/toolbar/index.js +73 -5
  22. package/lib/cjs/feature/toolbar/index.js.map +1 -1
  23. package/lib/cjs/index.js +457 -31
  24. package/lib/cjs/index.js.map +1 -1
  25. package/lib/esm/builder.js +55 -2
  26. package/lib/esm/builder.js.map +1 -1
  27. package/lib/esm/feature/block-edit/index.js +73 -5
  28. package/lib/esm/feature/block-edit/index.js.map +1 -1
  29. package/lib/esm/feature/code-mirror/index.js +65 -3
  30. package/lib/esm/feature/code-mirror/index.js.map +1 -1
  31. package/lib/esm/feature/cursor/index.js +55 -2
  32. package/lib/esm/feature/cursor/index.js.map +1 -1
  33. package/lib/esm/feature/image-block/index.js +76 -8
  34. package/lib/esm/feature/image-block/index.js.map +1 -1
  35. package/lib/esm/feature/latex/index.js +55 -2
  36. package/lib/esm/feature/latex/index.js.map +1 -1
  37. package/lib/esm/feature/link-tooltip/index.js +55 -2
  38. package/lib/esm/feature/link-tooltip/index.js.map +1 -1
  39. package/lib/esm/feature/list-item/index.js +55 -2
  40. package/lib/esm/feature/list-item/index.js.map +1 -1
  41. package/lib/esm/feature/placeholder/index.js +55 -2
  42. package/lib/esm/feature/placeholder/index.js.map +1 -1
  43. package/lib/esm/feature/table/index.js +55 -2
  44. package/lib/esm/feature/table/index.js.map +1 -1
  45. package/lib/esm/feature/toolbar/index.js +73 -5
  46. package/lib/esm/feature/toolbar/index.js.map +1 -1
  47. package/lib/esm/index.js +458 -32
  48. package/lib/esm/index.js.map +1 -1
  49. package/lib/theme/common/code-mirror.css +13 -0
  50. package/lib/theme/common/image-block.css +324 -22
  51. package/lib/theme/common/reset.css +3 -0
  52. package/lib/theme/common/toolbar.css +27 -2
  53. package/lib/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +4 -4
  55. package/src/core/locale.ts +55 -0
  56. package/src/feature/block-edit/menu/config.ts +19 -3
  57. package/src/feature/code-mirror/index.ts +3 -0
  58. package/src/feature/fixed-toolbar/component.tsx +31 -2
  59. package/src/feature/fixed-toolbar/config.ts +18 -3
  60. package/src/feature/fixed-toolbar/document-header.tsx +8 -4
  61. package/src/feature/fixed-toolbar/index.ts +18 -1
  62. package/src/feature/fixed-toolbar/menu-bar.tsx +91 -3
  63. package/src/feature/fixed-toolbar/shortcut-help-modal.tsx +244 -0
  64. package/src/feature/fixed-toolbar/view-menu-state.ts +9 -0
  65. package/src/feature/image-block/index.ts +11 -1
  66. package/src/icons/border.ts +5 -0
  67. package/src/icons/close.ts +3 -0
  68. package/src/icons/crop.ts +6 -0
  69. package/src/icons/index.ts +5 -0
  70. package/src/icons/keyboard.ts +3 -0
  71. package/src/icons/word-wrap.ts +6 -0
  72. package/src/theme/common/code-mirror.css +13 -0
  73. package/src/theme/common/image-block.css +368 -23
  74. package/src/theme/common/reset.css +3 -0
  75. package/src/theme/common/toolbar.css +30 -2
@@ -29,12 +29,17 @@ const zhCN = {
29
29
  "view.docBackground": "\u6587\u6863\u80CC\u666F\u8272",
30
30
  "view.title": "\u663E\u793A\u6807\u9898",
31
31
  "view.cover": "\u663E\u793A\u5C01\u9762",
32
+ "view.editorWidth": "\u5185\u5BB9\u5BBD\u5EA6",
33
+ "view.widthDefault": "\u9ED8\u8BA4",
34
+ "view.widthWide": "\u8F83\u5BBD",
35
+ "view.widthFull": "\u5168\u5BBD",
32
36
  // code-mirror
33
37
  "codeMirror.searchPlaceholder": "\u641C\u7D22\u8BED\u8A00",
34
38
  "codeMirror.noResultText": "\u65E0\u7ED3\u679C",
35
39
  "codeMirror.previewToggleOptionEdit": "\u7F16\u8F91",
36
40
  "codeMirror.previewToggleOptionHide": "\u9690\u85CF",
37
41
  "codeMirror.previewLabel": "\u9884\u89C8",
42
+ "codeMirror.wrapText": "\u81EA\u52A8\u6362\u884C",
38
43
  // link-tooltip
39
44
  "linkTooltip.pasteLink": "\u7C98\u8D34\u94FE\u63A5...",
40
45
  // image-block
@@ -132,7 +137,29 @@ const zhCN = {
132
137
  "latex.escToExit": "\u6309 ESC \u5B8C\u6210\u8F93\u5165",
133
138
  "latex.helpDoc": "\u67E5\u770B\u5E2E\u52A9\u6587\u6863",
134
139
  "latex.emptyPlaceholder": "\u6DFB\u52A0 LaTeX \u516C\u5F0F",
135
- "latex.inputPlaceholder": "\u8BF7\u8F93\u5165\u516C\u5F0F"
140
+ "latex.inputPlaceholder": "\u8BF7\u8F93\u5165\u516C\u5F0F",
141
+ // shortcuts
142
+ "shortcuts.title": "\u952E\u76D8\u5FEB\u6377\u952E",
143
+ "shortcuts.formatting": "\u6587\u672C\u683C\u5F0F",
144
+ "shortcuts.bold": "\u52A0\u7C97",
145
+ "shortcuts.italic": "\u659C\u4F53",
146
+ "shortcuts.underline": "\u4E0B\u5212\u7EBF",
147
+ "shortcuts.strikethrough": "\u5220\u9664\u7EBF",
148
+ "shortcuts.inlineCode": "\u884C\u5185\u4EE3\u7801",
149
+ "shortcuts.highlight": "\u9AD8\u4EAE",
150
+ "shortcuts.paragraph": "\u6BB5\u843D",
151
+ "shortcuts.heading": "\u6807\u9898",
152
+ "shortcuts.block": "\u5757\u7EA7\u5143\u7D20",
153
+ "shortcuts.codeBlock": "\u4EE3\u7801\u5757",
154
+ "shortcuts.blockquote": "\u5F15\u7528",
155
+ "shortcuts.orderedList": "\u6709\u5E8F\u5217\u8868",
156
+ "shortcuts.bulletList": "\u65E0\u5E8F\u5217\u8868",
157
+ "shortcuts.indent": "\u589E\u52A0\u7F29\u8FDB",
158
+ "shortcuts.outdent": "\u51CF\u5C11\u7F29\u8FDB",
159
+ "shortcuts.hardBreak": "\u6362\u884C",
160
+ "shortcuts.history": "\u5386\u53F2\u8BB0\u5F55",
161
+ "shortcuts.undo": "\u64A4\u9500",
162
+ "shortcuts.redo": "\u91CD\u505A"
136
163
  };
137
164
  const enUS = {
138
165
  "handle.add": "Add content",
@@ -153,11 +180,16 @@ const enUS = {
153
180
  "view.docBackground": "Document Background",
154
181
  "view.title": "Show Title",
155
182
  "view.cover": "Show Cover",
183
+ "view.editorWidth": "Content Width",
184
+ "view.widthDefault": "Default",
185
+ "view.widthWide": "Wide",
186
+ "view.widthFull": "Full Width",
156
187
  "codeMirror.searchPlaceholder": "Search language",
157
188
  "codeMirror.noResultText": "No result",
158
189
  "codeMirror.previewToggleOptionEdit": "Edit",
159
190
  "codeMirror.previewToggleOptionHide": "Hide",
160
191
  "codeMirror.previewLabel": "Preview",
192
+ "codeMirror.wrapText": "Wrap",
161
193
  "linkTooltip.pasteLink": "Paste link...",
162
194
  "imageBlock.inlineUploadButton": "Upload",
163
195
  "imageBlock.inlineUploadPlaceholder": "or paste link",
@@ -247,7 +279,28 @@ const enUS = {
247
279
  "latex.escToExit": "Press ESC to finish",
248
280
  "latex.helpDoc": "Help Doc",
249
281
  "latex.emptyPlaceholder": "Add LaTeX",
250
- "latex.inputPlaceholder": "Please enter formula"
282
+ "latex.inputPlaceholder": "Please enter formula",
283
+ "shortcuts.title": "Keyboard Shortcuts",
284
+ "shortcuts.formatting": "Text Formatting",
285
+ "shortcuts.bold": "Bold",
286
+ "shortcuts.italic": "Italic",
287
+ "shortcuts.underline": "Underline",
288
+ "shortcuts.strikethrough": "Strikethrough",
289
+ "shortcuts.inlineCode": "Inline Code",
290
+ "shortcuts.highlight": "Highlight",
291
+ "shortcuts.paragraph": "Paragraph",
292
+ "shortcuts.heading": "Heading",
293
+ "shortcuts.block": "Block Elements",
294
+ "shortcuts.codeBlock": "Code Block",
295
+ "shortcuts.blockquote": "Blockquote",
296
+ "shortcuts.orderedList": "Ordered List",
297
+ "shortcuts.bulletList": "Bullet List",
298
+ "shortcuts.indent": "Indent",
299
+ "shortcuts.outdent": "Outdent",
300
+ "shortcuts.hardBreak": "Hard Break",
301
+ "shortcuts.history": "History",
302
+ "shortcuts.undo": "Undo",
303
+ "shortcuts.redo": "Redo"
251
304
  };
252
305
  const translationsCtx = createSlice(
253
306
  {
@@ -323,6 +376,19 @@ const imageIcon = `
323
376
  </svg>
324
377
  `;
325
378
 
379
+ const cropIcon = `
380
+ <svg viewBox="0 0 1024 1024" height="24px" width="24px">
381
+ <path d="M192 128v128H128v64h192V128h-128z m0 0h64v128h-64V128z m512 0v128h192v64H640V128h64z m-512 640H128v-64h192v192h-128v-128z m0 128h64v-128h-64v128z m512 0v-128h192v64h-128v128h-64z m0 0h64v-128h-64v128z" fill="currentColor"/>
382
+ <path d="M256 256h512v512H256z" fill="none" stroke="currentColor" stroke-width="64"/>
383
+ </svg>
384
+ `;
385
+
386
+ const borderIcon = `
387
+ <svg viewBox="0 0 1024 1024" height="24px" width="24px">
388
+ <path d="M160 160h704v704H160z" fill="none" stroke="currentColor" stroke-width="64" stroke-dasharray="64 32"/>
389
+ </svg>
390
+ `;
391
+
326
392
  var CrepeFeature = /* @__PURE__ */ ((CrepeFeature2) => {
327
393
  CrepeFeature2["CodeMirror"] = "code-mirror";
328
394
  CrepeFeature2["ListItem"] = "list-item";
@@ -353,17 +419,19 @@ const imageBlock = (editor, config) => {
353
419
  };
354
420
  });
355
421
  ctx.update(imageBlockConfig.key, (value) => {
356
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
422
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
357
423
  return {
358
424
  uploadButton: (_a = config == null ? void 0 : config.blockUploadButton) != null ? _a : i18n(ctx, "imageBlock.blockUploadButton"),
359
425
  imageIcon: (_b = config == null ? void 0 : config.blockImageIcon) != null ? _b : imageIcon,
360
426
  captionIcon: (_c = config == null ? void 0 : config.blockCaptionIcon) != null ? _c : captionIcon,
361
- confirmButton: (_d = config == null ? void 0 : config.blockConfirmButton) != null ? _d : i18n(ctx, "imageBlock.blockConfirmButton"),
362
- captionPlaceholderText: (_e = config == null ? void 0 : config.blockCaptionPlaceholderText) != null ? _e : i18n(ctx, "imageBlock.blockCaptionPlaceholder"),
363
- uploadPlaceholderText: (_f = config == null ? void 0 : config.blockUploadPlaceholderText) != null ? _f : i18n(ctx, "imageBlock.blockUploadPlaceholder"),
364
- onUpload: (_h = (_g = config == null ? void 0 : config.blockOnUpload) != null ? _g : config == null ? void 0 : config.onUpload) != null ? _h : value.onUpload,
427
+ cropIcon: (_d = config == null ? void 0 : config.blockCropIcon) != null ? _d : cropIcon,
428
+ borderIcon: (_e = config == null ? void 0 : config.blockBorderIcon) != null ? _e : borderIcon,
429
+ confirmButton: (_f = config == null ? void 0 : config.blockConfirmButton) != null ? _f : i18n(ctx, "imageBlock.blockConfirmButton"),
430
+ captionPlaceholderText: (_g = config == null ? void 0 : config.blockCaptionPlaceholderText) != null ? _g : i18n(ctx, "imageBlock.blockCaptionPlaceholder"),
431
+ uploadPlaceholderText: (_h = config == null ? void 0 : config.blockUploadPlaceholderText) != null ? _h : i18n(ctx, "imageBlock.blockUploadPlaceholder"),
432
+ onUpload: (_j = (_i = config == null ? void 0 : config.blockOnUpload) != null ? _i : config == null ? void 0 : config.onUpload) != null ? _j : value.onUpload,
365
433
  proxyDomURL: config == null ? void 0 : config.proxyDomURL,
366
- onImageLoadError: (_i = config == null ? void 0 : config.onImageLoadError) != null ? _i : value.onImageLoadError,
434
+ onImageLoadError: (_k = config == null ? void 0 : config.onImageLoadError) != null ? _k : value.onImageLoadError,
367
435
  maxWidth: config == null ? void 0 : config.maxWidth,
368
436
  maxHeight: config == null ? void 0 : config.maxHeight
369
437
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/icons/caption.ts","../../../../src/icons/confirm.ts","../../../../src/icons/image.ts","../../../../src/feature/index.ts","../../../../src/feature/image-block/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\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\n // code-mirror\n 'codeMirror.searchPlaceholder': '搜索语言',\n 'codeMirror.noResultText': '无结果',\n 'codeMirror.previewToggleOptionEdit': '编辑',\n 'codeMirror.previewToggleOptionHide': '隐藏',\n 'codeMirror.previewLabel': '预览',\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\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\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\n 'codeMirror.searchPlaceholder': 'Search language',\n 'codeMirror.noResultText': 'No result',\n 'codeMirror.previewToggleOptionEdit': 'Edit',\n 'codeMirror.previewToggleOptionHide': 'Hide',\n 'codeMirror.previewLabel': 'Preview',\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\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 captionIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M9 22a1 1 0 0 1-1-1v-3H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6.1l-3.7 3.71c-.2.19-.45.29-.7.29zm1-6v3.08L13.08 16H20V4H4v12z\"\n />\n </svg>\n`\n","export const confirmIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_1013_1606)\">\n <path\n d=\"M9.00012 16.1998L5.50012 12.6998C5.11012 12.3098 4.49012 12.3098 4.10012 12.6998C3.71012 13.0898 3.71012 13.7098 4.10012 14.0998L8.29012 18.2898C8.68012 18.6798 9.31012 18.6798 9.70012 18.2898L20.3001 7.69982C20.6901 7.30982 20.6901 6.68982 20.3001 6.29982C19.9101 5.90982 19.2901 5.90982 18.9001 6.29982L9.00012 16.1998Z\"\n fill=\"#817567\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1013_1606\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const imageIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M320 256a64 64 0 1 1 0 128 64 64 0 0 1 0-128z m512-96H192a64 64 0 0 0-64 64v410.688l107.008-110.592a141.696 141.696 0 0 1 196.928-5.44l4.032 3.84 3.84 4.032 32.896 35.712 110.464-129.28a141.632 141.632 0 0 1 196.16-17.408c9.28 7.488 17.536 16.192 24.512 25.792l4.928 7.36L896 587.072V224a64 64 0 0 0-64-64z m-171.52 330.368l-2.88 3.136-146.24 171.264a49.28 49.28 0 0 1-69.76 4.672l-3.456-3.328-70.4-76.288-2.368-2.432a43.2 43.2 0 0 0-56.832-1.28l-3.136 2.944L128 772.48v27.584a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-32.512l-169.728-269.184a43.136 43.136 0 0 0-65.728-7.936zM832 64a160 160 0 0 1 159.872 153.088l0.128 6.912v576a160 160 0 0 1-153.088 159.872L832 960H192a160 160 0 0 1-159.872-153.088L32 800v-576a160 160 0 0 1 153.088-159.872L192 64h640z\" fill=\"#363B4C\" p-id=\"17641\"></path>\n </svg>\n`\n","import type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\nimport type { AttachmentFeatureConfig } from './attachment/config'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: false,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n}\n","import type { Node as ProsemirrorNode } from '@jvs-milkdown/prose/model'\n\nimport {\n imageBlockComponent,\n imageBlockConfig,\n} from '@jvs-milkdown/kit/component/image-block'\nimport {\n imageInlineComponent,\n inlineImageConfig,\n} from '@jvs-milkdown/kit/component/image-inline'\nimport { schemaCtx } from '@jvs-milkdown/kit/core'\nimport { Plugin } from '@jvs-milkdown/prose/state'\nimport { $prose } from '@jvs-milkdown/utils'\n\nimport type { DefineFeature } from '../shared'\n\nimport { i18n } from '../../core/locale'\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { captionIcon, imageIcon, confirmIcon } from '../../icons'\nimport { CrepeFeature } from '../index'\n\ninterface ImageBlockConfig {\n onUpload: (file: File) => Promise<string>\n proxyDomURL: (url: string) => Promise<string> | string\n\n inlineImageIcon: string\n inlineConfirmButton: string\n inlineUploadButton: string\n inlineUploadPlaceholderText: string\n inlineOnUpload: (file: File) => Promise<string>\n\n blockImageIcon: string\n blockConfirmButton: string\n blockCaptionIcon: string\n blockUploadButton: string\n blockCaptionPlaceholderText: string\n blockUploadPlaceholderText: string\n blockOnUpload: (file: File) => Promise<string>\n onImageLoadError: (event: Event) => void | Promise<void>\n maxWidth: number\n maxHeight: number\n}\n\nexport type ImageBlockFeatureConfig = Partial<ImageBlockConfig>\n\nexport const imageBlock: DefineFeature<ImageBlockFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.ImageBlock))\n .config((ctx) => {\n ctx.update(inlineImageConfig.key, (value) => ({\n uploadButton:\n config?.inlineUploadButton ??\n i18n(ctx, 'imageBlock.inlineUploadButton'),\n imageIcon: config?.inlineImageIcon ?? imageIcon,\n confirmButton: config?.inlineConfirmButton ?? confirmIcon,\n uploadPlaceholderText:\n config?.inlineUploadPlaceholderText ??\n i18n(ctx, 'imageBlock.inlineUploadPlaceholder'),\n onUpload: config?.inlineOnUpload ?? config?.onUpload ?? value.onUpload,\n proxyDomURL: config?.proxyDomURL,\n }))\n ctx.update(imageBlockConfig.key, (value) => ({\n uploadButton:\n config?.blockUploadButton ??\n i18n(ctx, 'imageBlock.blockUploadButton'),\n imageIcon: config?.blockImageIcon ?? imageIcon,\n captionIcon: config?.blockCaptionIcon ?? captionIcon,\n confirmButton:\n config?.blockConfirmButton ??\n i18n(ctx, 'imageBlock.blockConfirmButton'),\n captionPlaceholderText:\n config?.blockCaptionPlaceholderText ??\n i18n(ctx, 'imageBlock.blockCaptionPlaceholder'),\n uploadPlaceholderText:\n config?.blockUploadPlaceholderText ??\n i18n(ctx, 'imageBlock.blockUploadPlaceholder'),\n onUpload: config?.blockOnUpload ?? config?.onUpload ?? value.onUpload,\n proxyDomURL: config?.proxyDomURL,\n onImageLoadError: config?.onImageLoadError ?? value.onImageLoadError,\n maxWidth: config?.maxWidth,\n maxHeight: config?.maxHeight,\n }))\n })\n .use(imageBlockComponent)\n .use(imageInlineComponent)\n .use(imageBlockConverter)\n}\n\nconst imageBlockConverter = $prose((ctx) => {\n return new Plugin({\n appendTransaction(transactions, _oldState, newState) {\n if (!transactions.some((tr) => tr.docChanged)) return null\n\n const schema = ctx.get(schemaCtx)\n const imageType = schema.nodes['image']\n const imageBlockType = schema.nodes['image-block']\n const paragraphType = schema.nodes['paragraph']\n if (!imageType || !imageBlockType || !paragraphType) return null\n\n const replacements: {\n from: number\n to: number\n blocks: ProsemirrorNode[]\n }[] = []\n\n const isInlineNodesEmpty = (nodes: ProsemirrorNode[]) => {\n return nodes.every(\n (n) =>\n n.type.name === 'hardbreak' || (n.isText && n.text?.trim() === '')\n )\n }\n\n newState.doc.descendants((node, pos) => {\n if (node.type !== paragraphType) return true\n\n let hasImage = false\n for (let i = 0; i < node.childCount; i++) {\n if (node.child(i).type === imageType) {\n hasImage = true\n break\n }\n }\n\n if (!hasImage) return false\n\n const blocks: ProsemirrorNode[] = []\n let currentInlines: ProsemirrorNode[] = []\n\n for (let i = 0; i < node.childCount; i++) {\n const child = node.child(i)\n if (child.type === imageType) {\n if (!isInlineNodesEmpty(currentInlines)) {\n blocks.push(paragraphType.create(node.attrs, currentInlines))\n }\n currentInlines = []\n\n blocks.push(\n imageBlockType.create({\n src: child.attrs.src,\n caption: child.attrs.alt || child.attrs.title || '',\n ratio: 1,\n })\n )\n } else {\n currentInlines.push(child)\n }\n }\n\n if (!isInlineNodesEmpty(currentInlines)) {\n blocks.push(paragraphType.create(node.attrs, currentInlines))\n }\n\n if (blocks.length > 0) {\n replacements.push({ from: pos, to: pos + node.nodeSize, blocks })\n }\n\n return false\n })\n\n if (replacements.length === 0) return null\n\n const { tr } = newState\n for (let i = replacements.length - 1; i >= 0; i--) {\n const r = replacements[i]!\n tr.replaceWith(r.from, r.to, r.blocks)\n }\n\n return tr\n },\n })\n})\n"],"names":["CrepeFeature","tr"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/icons/caption.ts","../../../../src/icons/confirm.ts","../../../../src/icons/image.ts","../../../../src/icons/crop.ts","../../../../src/icons/border.ts","../../../../src/feature/index.ts","../../../../src/feature/image-block/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\n // menu bar\n 'menuBar.file': '文件',\n 'menuBar.edit': '编辑',\n 'menuBar.view': '视图',\n 'menuBar.insert': '插入',\n 'menuBar.format': '格式',\n\n // view menu\n 'view.outline': '大纲面板',\n 'view.outlineLeft': '在左侧显示',\n 'view.outlineRight': '在右侧显示',\n 'view.docBackground': '文档背景色',\n 'view.title': '显示标题',\n 'view.cover': '显示封面',\n 'view.editorWidth': '内容宽度',\n 'view.widthDefault': '默认',\n 'view.widthWide': '较宽',\n 'view.widthFull': '全宽',\n\n // code-mirror\n 'codeMirror.searchPlaceholder': '搜索语言',\n 'codeMirror.noResultText': '无结果',\n 'codeMirror.previewToggleOptionEdit': '编辑',\n 'codeMirror.previewToggleOptionHide': '隐藏',\n 'codeMirror.previewLabel': '预览',\n 'codeMirror.wrapText': '自动换行',\n\n // link-tooltip\n 'linkTooltip.pasteLink': '粘贴链接...',\n\n // image-block\n 'imageBlock.inlineUploadButton': '上传',\n 'imageBlock.inlineUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockUploadButton': '上传文件',\n 'imageBlock.blockUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockCaptionPlaceholder': '写下图片描述...',\n 'imageBlock.blockConfirmButton': '确定',\n\n // attachment-block\n 'attachmentBlock.uploadButton': '上传文件',\n 'attachmentBlock.uploadPlaceholderText': '或点击上传',\n 'attachmentBlock.download': '下载',\n\n // menu categories\n 'menu.group.text': '正文',\n 'menu.group.block': '段落',\n 'menu.group.list': '列表',\n 'menu.group.advanced': '高级',\n\n // menu items\n 'menu.item.text': '普通文本',\n 'menu.item.h1': '标题 1',\n 'menu.item.h2': '标题 2',\n 'menu.item.h3': '标题 3',\n 'menu.item.h4': '标题 4',\n 'menu.item.h5': '标题 5',\n 'menu.item.h6': '标题 6',\n 'menu.item.quote': '引用',\n 'menu.item.divider': '分割线',\n 'menu.item.bulletList': '无序列表',\n 'menu.item.orderedList': '有序列表',\n 'menu.item.taskList': '任务列表',\n 'menu.item.image': '图片',\n 'menu.item.attachment': '视频或文件',\n 'menu.item.code': '代码块',\n 'menu.item.table': '表格',\n 'menu.item.math': '公式',\n 'menu.item.bold': '加粗',\n 'menu.item.italic': '斜体',\n 'menu.item.strikethrough': '删除线',\n 'menu.item.underline': '下划线',\n 'menu.item.highlight': '高亮',\n 'menu.item.lineCode': '行内代码',\n 'menu.item.link': '链接',\n\n // menu tooltips\n 'menu.tooltip.text': '普通文本 (Ctrl+Alt+0)',\n 'menu.tooltip.h1': '标题 1 (Ctrl+Alt+1)\\nMarkdown: # 空格',\n 'menu.tooltip.h2': '标题 2 (Ctrl+Alt+2)\\nMarkdown: ## 空格',\n 'menu.tooltip.h3': '标题 3 (Ctrl+Alt+3)\\nMarkdown: ### 空格',\n 'menu.tooltip.h4': '标题 4 (Ctrl+Alt+4)\\nMarkdown: #### 空格',\n 'menu.tooltip.h5': '标题 5 (Ctrl+Alt+5)\\nMarkdown: ##### 空格',\n 'menu.tooltip.h6': '标题 6 (Ctrl+Alt+6)\\nMarkdown: ###### 空格',\n 'menu.tooltip.quote': '引用 (Ctrl+Shift+9)\\nMarkdown: > 空格',\n 'menu.tooltip.divider': '分割线\\nMarkdown: --- 空格',\n 'menu.tooltip.bulletList':\n '无序列表 (Ctrl+Shift+8)\\nMarkdown: - 空格 或 * 空格',\n 'menu.tooltip.orderedList': '有序列表 (Ctrl+Shift+7)\\nMarkdown: 1. 空格',\n 'menu.tooltip.taskList': '任务列表\\nMarkdown: - [ ] 空格',\n 'menu.tooltip.image': '图片\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': '代码块 (Ctrl+Shift+\\\\)\\nMarkdown: ``` 回车',\n 'menu.tooltip.table': '表格\\nMarkdown: | | |',\n 'menu.tooltip.math': '公式\\nMarkdown: $$ 回车',\n\n // custom block menu items\n 'customMenu.indentAndAlign': '缩进和对齐',\n 'customMenu.color': '颜色',\n 'customMenu.cut': '剪切',\n 'customMenu.copy': '复制',\n 'customMenu.delete': '删除',\n 'customMenu.addBelow': '在下方添加',\n 'customMenu.alignLeft': '左对齐',\n 'customMenu.alignCenter': '居中对齐',\n 'customMenu.alignRight': '右对齐',\n 'customMenu.increaseIndent': '增加缩进',\n 'customMenu.decreaseIndent': '减少缩进',\n 'customMenu.textColor': '字体颜色',\n 'customMenu.bgColor': '背景颜色',\n 'customMenu.restoreDefault': '恢复默认',\n 'customMenu.colorDefault': '默认',\n 'customMenu.colorRed': '红色',\n 'customMenu.colorOrange': '橙色',\n 'customMenu.colorYellow': '黄色',\n 'customMenu.colorGreen': '绿色',\n 'customMenu.colorBlue': '蓝色',\n 'customMenu.colorPurple': '紫色',\n 'customMenu.colorGray': '灰色',\n 'customMenu.insertTable': '插入支持富文本的表格',\n\n 'customMenu.fontDefault': '默认',\n 'font.fangSong': '仿宋',\n 'font.stFangsong': '华文仿宋',\n 'font.stSong': '华文宋体',\n 'font.stKaiti': '华文楷体',\n 'font.simSun': '宋体',\n 'font.microsoftYaHei': '微软雅黑',\n 'font.kaiTi': '楷体',\n 'font.simHei': '黑体',\n\n // latex\n 'latex.escToExit': '按 ESC 完成输入',\n 'latex.helpDoc': '查看帮助文档',\n 'latex.emptyPlaceholder': '添加 LaTeX 公式',\n 'latex.inputPlaceholder': '请输入公式',\n\n // shortcuts\n 'shortcuts.title': '键盘快捷键',\n 'shortcuts.formatting': '文本格式',\n 'shortcuts.bold': '加粗',\n 'shortcuts.italic': '斜体',\n 'shortcuts.underline': '下划线',\n 'shortcuts.strikethrough': '删除线',\n 'shortcuts.inlineCode': '行内代码',\n 'shortcuts.highlight': '高亮',\n 'shortcuts.paragraph': '段落',\n 'shortcuts.heading': '标题',\n 'shortcuts.block': '块级元素',\n 'shortcuts.codeBlock': '代码块',\n 'shortcuts.blockquote': '引用',\n 'shortcuts.orderedList': '有序列表',\n 'shortcuts.bulletList': '无序列表',\n 'shortcuts.indent': '增加缩进',\n 'shortcuts.outdent': '减少缩进',\n 'shortcuts.hardBreak': '换行',\n 'shortcuts.history': '历史记录',\n 'shortcuts.undo': '撤销',\n 'shortcuts.redo': '重做',\n}\n\nexport const enUS: typeof zhCN = {\n 'handle.add': 'Add content',\n 'handle.menu': 'Open menu',\n 'handle.drag': 'Drag to move',\n 'placeholder.text': \"Type '/' to use slash menu\",\n\n 'toolbar.heading': 'Heading',\n 'toolbar.formatting': 'Formatting',\n 'toolbar.function': 'Function',\n\n 'menuBar.file': 'File',\n 'menuBar.edit': 'Edit',\n 'menuBar.view': 'View',\n 'menuBar.insert': 'Insert',\n 'menuBar.format': 'Format',\n\n 'view.outline': 'Outline Panel',\n 'view.outlineLeft': 'Show on Left',\n 'view.outlineRight': 'Show on Right',\n 'view.docBackground': 'Document Background',\n 'view.title': 'Show Title',\n 'view.cover': 'Show Cover',\n 'view.editorWidth': 'Content Width',\n 'view.widthDefault': 'Default',\n 'view.widthWide': 'Wide',\n 'view.widthFull': 'Full Width',\n\n 'codeMirror.searchPlaceholder': 'Search language',\n 'codeMirror.noResultText': 'No result',\n 'codeMirror.previewToggleOptionEdit': 'Edit',\n 'codeMirror.previewToggleOptionHide': 'Hide',\n 'codeMirror.previewLabel': 'Preview',\n 'codeMirror.wrapText': 'Wrap',\n\n 'linkTooltip.pasteLink': 'Paste link...',\n\n 'imageBlock.inlineUploadButton': 'Upload',\n 'imageBlock.inlineUploadPlaceholder': 'or paste link',\n 'imageBlock.blockUploadButton': 'Upload file',\n 'imageBlock.blockUploadPlaceholder': 'or paste link',\n 'imageBlock.blockCaptionPlaceholder': 'Write Image Caption',\n 'imageBlock.blockConfirmButton': 'Confirm',\n\n 'attachmentBlock.uploadButton': 'Upload file',\n 'attachmentBlock.uploadPlaceholderText': 'or click to upload',\n 'attachmentBlock.download': 'Download',\n\n 'menu.group.text': 'Text',\n 'menu.group.block': 'Block',\n 'menu.group.list': 'List',\n 'menu.group.advanced': 'Advanced',\n\n 'menu.item.text': 'Text',\n 'menu.item.h1': 'Heading 1',\n 'menu.item.h2': 'Heading 2',\n 'menu.item.h3': 'Heading 3',\n 'menu.item.h4': 'Heading 4',\n 'menu.item.h5': 'Heading 5',\n 'menu.item.h6': 'Heading 6',\n 'menu.item.quote': 'Quote',\n 'menu.item.divider': 'Divider',\n 'menu.item.bulletList': 'Bullet List',\n 'menu.item.orderedList': 'Ordered List',\n 'menu.item.taskList': 'Task List',\n 'menu.item.image': 'Image',\n 'menu.item.attachment': 'Video or File',\n 'menu.item.code': 'Code',\n 'menu.item.table': 'Table',\n 'menu.item.math': 'Math',\n 'menu.item.bold': 'Bold',\n 'menu.item.italic': 'Italic',\n 'menu.item.strikethrough': 'Strikethrough',\n 'menu.item.underline': 'Underline',\n 'menu.item.highlight': 'Highlight',\n 'menu.item.lineCode': 'Inline Code',\n 'menu.item.link': 'Link',\n\n 'menu.tooltip.text': 'Text (Ctrl+Alt+0)',\n 'menu.tooltip.h1': 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space',\n 'menu.tooltip.h2': 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space',\n 'menu.tooltip.h3': 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space',\n 'menu.tooltip.h4': 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space',\n 'menu.tooltip.h5': 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space',\n 'menu.tooltip.h6': 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space',\n 'menu.tooltip.quote': 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space',\n 'menu.tooltip.divider': 'Divider\\nMarkdown: --- Space',\n 'menu.tooltip.bulletList':\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space',\n 'menu.tooltip.orderedList': 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space',\n 'menu.tooltip.taskList': 'Task List\\nMarkdown: - [ ] Space',\n 'menu.tooltip.image': 'Image\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter',\n 'menu.tooltip.table': 'Table\\nMarkdown: | | |',\n 'menu.tooltip.math': 'Math\\nMarkdown: $$ Enter',\n\n 'customMenu.indentAndAlign': 'Indent & Align',\n 'customMenu.color': 'Color',\n 'customMenu.cut': 'Cut',\n 'customMenu.copy': 'Copy',\n 'customMenu.delete': 'Delete',\n 'customMenu.addBelow': 'Add below',\n 'customMenu.alignLeft': 'Align Left',\n 'customMenu.alignCenter': 'Align Center',\n 'customMenu.alignRight': 'Align Right',\n 'customMenu.increaseIndent': 'Increase Indent',\n 'customMenu.decreaseIndent': 'Decrease Indent',\n 'customMenu.textColor': 'Text Color',\n 'customMenu.bgColor': 'Background Color',\n 'customMenu.restoreDefault': 'Restore Default',\n 'customMenu.colorDefault': 'Default',\n 'customMenu.colorRed': 'Red',\n 'customMenu.colorOrange': 'Orange',\n 'customMenu.colorYellow': 'Yellow',\n 'customMenu.colorGreen': 'Green',\n 'customMenu.colorBlue': 'Blue',\n 'customMenu.colorPurple': 'Purple',\n 'customMenu.colorGray': 'Gray',\n 'customMenu.insertTable': 'Insert Table',\n\n 'customMenu.fontDefault': 'Default',\n 'font.fangSong': 'FangSong',\n 'font.stFangsong': 'STFangsong',\n 'font.stSong': 'STSong',\n 'font.stKaiti': 'STKaiti',\n 'font.simSun': 'SimSun',\n 'font.microsoftYaHei': 'Microsoft YaHei',\n 'font.kaiTi': 'KaiTi',\n 'font.simHei': 'SimHei',\n\n 'latex.escToExit': 'Press ESC to finish',\n 'latex.helpDoc': 'Help Doc',\n 'latex.emptyPlaceholder': 'Add LaTeX',\n 'latex.inputPlaceholder': 'Please enter formula',\n\n 'shortcuts.title': 'Keyboard Shortcuts',\n 'shortcuts.formatting': 'Text Formatting',\n 'shortcuts.bold': 'Bold',\n 'shortcuts.italic': 'Italic',\n 'shortcuts.underline': 'Underline',\n 'shortcuts.strikethrough': 'Strikethrough',\n 'shortcuts.inlineCode': 'Inline Code',\n 'shortcuts.highlight': 'Highlight',\n 'shortcuts.paragraph': 'Paragraph',\n 'shortcuts.heading': 'Heading',\n 'shortcuts.block': 'Block Elements',\n 'shortcuts.codeBlock': 'Code Block',\n 'shortcuts.blockquote': 'Blockquote',\n 'shortcuts.orderedList': 'Ordered List',\n 'shortcuts.bulletList': 'Bullet List',\n 'shortcuts.indent': 'Indent',\n 'shortcuts.outdent': 'Outdent',\n 'shortcuts.hardBreak': 'Hard Break',\n 'shortcuts.history': 'History',\n 'shortcuts.undo': 'Undo',\n 'shortcuts.redo': 'Redo',\n}\n\nexport type CrepeTranslations = typeof zhCN\n\nexport const translationsCtx = createSlice<\n Record<string, Partial<CrepeTranslations>>\n>(\n {\n 'zh-CN': zhCN,\n 'en-US': enUS,\n },\n 'translationsCtx'\n)\n\nexport const localeCtx = createSlice('zh-CN', 'localeCtx')\n\nexport function i18n(ctx: Ctx, key: keyof CrepeTranslations): string {\n const translations = ctx.get(translationsCtx)\n const locale = ctx.get(localeCtx)\n return (\n translations[locale]?.[key] ??\n translations['zh-CN']?.[key] ??\n enUS[key] ??\n key\n )\n}\n","import { createSlice, type Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n\nexport { localeCtx, translationsCtx } from './locale'\n","export const captionIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n >\n <path\n fill=\"currentColor\"\n d=\"M9 22a1 1 0 0 1-1-1v-3H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6.1l-3.7 3.71c-.2.19-.45.29-.7.29zm1-6v3.08L13.08 16H20V4H4v12z\"\n />\n </svg>\n`\n","export const confirmIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_1013_1606)\">\n <path\n d=\"M9.00012 16.1998L5.50012 12.6998C5.11012 12.3098 4.49012 12.3098 4.10012 12.6998C3.71012 13.0898 3.71012 13.7098 4.10012 14.0998L8.29012 18.2898C8.68012 18.6798 9.31012 18.6798 9.70012 18.2898L20.3001 7.69982C20.6901 7.30982 20.6901 6.68982 20.3001 6.29982C19.9101 5.90982 19.2901 5.90982 18.9001 6.29982L9.00012 16.1998Z\"\n fill=\"#817567\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1013_1606\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const imageIcon = `\n <svg viewBox=\"0 0 1024 1024\" width=\"24\"\n height=\"24\">\n <path d=\"M320 256a64 64 0 1 1 0 128 64 64 0 0 1 0-128z m512-96H192a64 64 0 0 0-64 64v410.688l107.008-110.592a141.696 141.696 0 0 1 196.928-5.44l4.032 3.84 3.84 4.032 32.896 35.712 110.464-129.28a141.632 141.632 0 0 1 196.16-17.408c9.28 7.488 17.536 16.192 24.512 25.792l4.928 7.36L896 587.072V224a64 64 0 0 0-64-64z m-171.52 330.368l-2.88 3.136-146.24 171.264a49.28 49.28 0 0 1-69.76 4.672l-3.456-3.328-70.4-76.288-2.368-2.432a43.2 43.2 0 0 0-56.832-1.28l-3.136 2.944L128 772.48v27.584a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-32.512l-169.728-269.184a43.136 43.136 0 0 0-65.728-7.936zM832 64a160 160 0 0 1 159.872 153.088l0.128 6.912v576a160 160 0 0 1-153.088 159.872L832 960H192a160 160 0 0 1-159.872-153.088L32 800v-576a160 160 0 0 1 153.088-159.872L192 64h640z\" fill=\"#363B4C\" p-id=\"17641\"></path>\n </svg>\n`\n","export const cropIcon = `\n <svg viewBox=\"0 0 1024 1024\" height=\"24px\" width=\"24px\">\n <path d=\"M192 128v128H128v64h192V128h-128z m0 0h64v128h-64V128z m512 0v128h192v64H640V128h64z m-512 640H128v-64h192v192h-128v-128z m0 128h64v-128h-64v128z m512 0v-128h192v64h-128v128h-64z m0 0h64v-128h-64v128z\" fill=\"currentColor\"/>\n <path d=\"M256 256h512v512H256z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"64\"/>\n </svg>\n`\n","export const borderIcon = `\n <svg viewBox=\"0 0 1024 1024\" height=\"24px\" width=\"24px\">\n <path d=\"M160 160h704v704H160z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"64\" stroke-dasharray=\"64 32\"/>\n </svg>\n`\n","import type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\nimport type { AttachmentFeatureConfig } from './attachment/config'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: false,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n}\n","import type { Node as ProsemirrorNode } from '@jvs-milkdown/prose/model'\n\nimport {\n imageBlockComponent,\n imageBlockConfig,\n} from '@jvs-milkdown/kit/component/image-block'\nimport {\n imageInlineComponent,\n inlineImageConfig,\n} from '@jvs-milkdown/kit/component/image-inline'\nimport { schemaCtx } from '@jvs-milkdown/kit/core'\nimport { Plugin } from '@jvs-milkdown/prose/state'\nimport { $prose } from '@jvs-milkdown/utils'\n\nimport type { DefineFeature } from '../shared'\n\nimport { i18n } from '../../core/locale'\nimport { crepeFeatureConfig } from '../../core/slice'\nimport {\n captionIcon,\n imageIcon,\n confirmIcon,\n cropIcon,\n borderIcon,\n} from '../../icons'\nimport { CrepeFeature } from '../index'\n\ninterface ImageBlockConfig {\n onUpload: (file: File) => Promise<string>\n proxyDomURL: (url: string) => Promise<string> | string\n\n inlineImageIcon: string\n inlineConfirmButton: string\n inlineUploadButton: string\n inlineUploadPlaceholderText: string\n inlineOnUpload: (file: File) => Promise<string>\n\n blockImageIcon: string\n blockConfirmButton: string\n blockCaptionIcon: string\n blockCropIcon: string\n blockBorderIcon: string\n blockUploadButton: string\n blockCaptionPlaceholderText: string\n blockUploadPlaceholderText: string\n blockOnUpload: (file: File) => Promise<string>\n onImageLoadError: (event: Event) => void | Promise<void>\n maxWidth: number\n maxHeight: number\n}\n\nexport type ImageBlockFeatureConfig = Partial<ImageBlockConfig>\n\nexport const imageBlock: DefineFeature<ImageBlockFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.ImageBlock))\n .config((ctx) => {\n ctx.update(inlineImageConfig.key, (value) => ({\n uploadButton:\n config?.inlineUploadButton ??\n i18n(ctx, 'imageBlock.inlineUploadButton'),\n imageIcon: config?.inlineImageIcon ?? imageIcon,\n confirmButton: config?.inlineConfirmButton ?? confirmIcon,\n uploadPlaceholderText:\n config?.inlineUploadPlaceholderText ??\n i18n(ctx, 'imageBlock.inlineUploadPlaceholder'),\n onUpload: config?.inlineOnUpload ?? config?.onUpload ?? value.onUpload,\n proxyDomURL: config?.proxyDomURL,\n }))\n ctx.update(imageBlockConfig.key, (value) => ({\n uploadButton:\n config?.blockUploadButton ??\n i18n(ctx, 'imageBlock.blockUploadButton'),\n imageIcon: config?.blockImageIcon ?? imageIcon,\n captionIcon: config?.blockCaptionIcon ?? captionIcon,\n cropIcon: config?.blockCropIcon ?? cropIcon,\n borderIcon: config?.blockBorderIcon ?? borderIcon,\n confirmButton:\n config?.blockConfirmButton ??\n i18n(ctx, 'imageBlock.blockConfirmButton'),\n captionPlaceholderText:\n config?.blockCaptionPlaceholderText ??\n i18n(ctx, 'imageBlock.blockCaptionPlaceholder'),\n uploadPlaceholderText:\n config?.blockUploadPlaceholderText ??\n i18n(ctx, 'imageBlock.blockUploadPlaceholder'),\n onUpload: config?.blockOnUpload ?? config?.onUpload ?? value.onUpload,\n proxyDomURL: config?.proxyDomURL,\n onImageLoadError: config?.onImageLoadError ?? value.onImageLoadError,\n maxWidth: config?.maxWidth,\n maxHeight: config?.maxHeight,\n }))\n })\n .use(imageBlockComponent)\n .use(imageInlineComponent)\n .use(imageBlockConverter)\n}\n\nconst imageBlockConverter = $prose((ctx) => {\n return new Plugin({\n appendTransaction(transactions, _oldState, newState) {\n if (!transactions.some((tr) => tr.docChanged)) return null\n\n const schema = ctx.get(schemaCtx)\n const imageType = schema.nodes['image']\n const imageBlockType = schema.nodes['image-block']\n const paragraphType = schema.nodes['paragraph']\n if (!imageType || !imageBlockType || !paragraphType) return null\n\n const replacements: {\n from: number\n to: number\n blocks: ProsemirrorNode[]\n }[] = []\n\n const isInlineNodesEmpty = (nodes: ProsemirrorNode[]) => {\n return nodes.every(\n (n) =>\n n.type.name === 'hardbreak' || (n.isText && n.text?.trim() === '')\n )\n }\n\n newState.doc.descendants((node, pos) => {\n if (node.type !== paragraphType) return true\n\n let hasImage = false\n for (let i = 0; i < node.childCount; i++) {\n if (node.child(i).type === imageType) {\n hasImage = true\n break\n }\n }\n\n if (!hasImage) return false\n\n const blocks: ProsemirrorNode[] = []\n let currentInlines: ProsemirrorNode[] = []\n\n for (let i = 0; i < node.childCount; i++) {\n const child = node.child(i)\n if (child.type === imageType) {\n if (!isInlineNodesEmpty(currentInlines)) {\n blocks.push(paragraphType.create(node.attrs, currentInlines))\n }\n currentInlines = []\n\n blocks.push(\n imageBlockType.create({\n src: child.attrs.src,\n caption: child.attrs.alt || child.attrs.title || '',\n ratio: 1,\n })\n )\n } else {\n currentInlines.push(child)\n }\n }\n\n if (!isInlineNodesEmpty(currentInlines)) {\n blocks.push(paragraphType.create(node.attrs, currentInlines))\n }\n\n if (blocks.length > 0) {\n replacements.push({ from: pos, to: pos + node.nodeSize, blocks })\n }\n\n return false\n })\n\n if (replacements.length === 0) return null\n\n const { tr } = newState\n for (let i = replacements.length - 1; i >= 0; i--) {\n const r = replacements[i]!\n tr.replaceWith(r.from, r.to, r.blocks)\n }\n\n return tr\n },\n })\n})\n"],"names":["CrepeFeature","tr"],"mappings":"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"}
@@ -40,12 +40,17 @@ const zhCN = {
40
40
  "view.docBackground": "\u6587\u6863\u80CC\u666F\u8272",
41
41
  "view.title": "\u663E\u793A\u6807\u9898",
42
42
  "view.cover": "\u663E\u793A\u5C01\u9762",
43
+ "view.editorWidth": "\u5185\u5BB9\u5BBD\u5EA6",
44
+ "view.widthDefault": "\u9ED8\u8BA4",
45
+ "view.widthWide": "\u8F83\u5BBD",
46
+ "view.widthFull": "\u5168\u5BBD",
43
47
  // code-mirror
44
48
  "codeMirror.searchPlaceholder": "\u641C\u7D22\u8BED\u8A00",
45
49
  "codeMirror.noResultText": "\u65E0\u7ED3\u679C",
46
50
  "codeMirror.previewToggleOptionEdit": "\u7F16\u8F91",
47
51
  "codeMirror.previewToggleOptionHide": "\u9690\u85CF",
48
52
  "codeMirror.previewLabel": "\u9884\u89C8",
53
+ "codeMirror.wrapText": "\u81EA\u52A8\u6362\u884C",
49
54
  // link-tooltip
50
55
  "linkTooltip.pasteLink": "\u7C98\u8D34\u94FE\u63A5...",
51
56
  // image-block
@@ -143,7 +148,29 @@ const zhCN = {
143
148
  "latex.escToExit": "\u6309 ESC \u5B8C\u6210\u8F93\u5165",
144
149
  "latex.helpDoc": "\u67E5\u770B\u5E2E\u52A9\u6587\u6863",
145
150
  "latex.emptyPlaceholder": "\u6DFB\u52A0 LaTeX \u516C\u5F0F",
146
- "latex.inputPlaceholder": "\u8BF7\u8F93\u5165\u516C\u5F0F"
151
+ "latex.inputPlaceholder": "\u8BF7\u8F93\u5165\u516C\u5F0F",
152
+ // shortcuts
153
+ "shortcuts.title": "\u952E\u76D8\u5FEB\u6377\u952E",
154
+ "shortcuts.formatting": "\u6587\u672C\u683C\u5F0F",
155
+ "shortcuts.bold": "\u52A0\u7C97",
156
+ "shortcuts.italic": "\u659C\u4F53",
157
+ "shortcuts.underline": "\u4E0B\u5212\u7EBF",
158
+ "shortcuts.strikethrough": "\u5220\u9664\u7EBF",
159
+ "shortcuts.inlineCode": "\u884C\u5185\u4EE3\u7801",
160
+ "shortcuts.highlight": "\u9AD8\u4EAE",
161
+ "shortcuts.paragraph": "\u6BB5\u843D",
162
+ "shortcuts.heading": "\u6807\u9898",
163
+ "shortcuts.block": "\u5757\u7EA7\u5143\u7D20",
164
+ "shortcuts.codeBlock": "\u4EE3\u7801\u5757",
165
+ "shortcuts.blockquote": "\u5F15\u7528",
166
+ "shortcuts.orderedList": "\u6709\u5E8F\u5217\u8868",
167
+ "shortcuts.bulletList": "\u65E0\u5E8F\u5217\u8868",
168
+ "shortcuts.indent": "\u589E\u52A0\u7F29\u8FDB",
169
+ "shortcuts.outdent": "\u51CF\u5C11\u7F29\u8FDB",
170
+ "shortcuts.hardBreak": "\u6362\u884C",
171
+ "shortcuts.history": "\u5386\u53F2\u8BB0\u5F55",
172
+ "shortcuts.undo": "\u64A4\u9500",
173
+ "shortcuts.redo": "\u91CD\u505A"
147
174
  };
148
175
  const enUS = {
149
176
  "handle.add": "Add content",
@@ -164,11 +191,16 @@ const enUS = {
164
191
  "view.docBackground": "Document Background",
165
192
  "view.title": "Show Title",
166
193
  "view.cover": "Show Cover",
194
+ "view.editorWidth": "Content Width",
195
+ "view.widthDefault": "Default",
196
+ "view.widthWide": "Wide",
197
+ "view.widthFull": "Full Width",
167
198
  "codeMirror.searchPlaceholder": "Search language",
168
199
  "codeMirror.noResultText": "No result",
169
200
  "codeMirror.previewToggleOptionEdit": "Edit",
170
201
  "codeMirror.previewToggleOptionHide": "Hide",
171
202
  "codeMirror.previewLabel": "Preview",
203
+ "codeMirror.wrapText": "Wrap",
172
204
  "linkTooltip.pasteLink": "Paste link...",
173
205
  "imageBlock.inlineUploadButton": "Upload",
174
206
  "imageBlock.inlineUploadPlaceholder": "or paste link",
@@ -258,7 +290,28 @@ const enUS = {
258
290
  "latex.escToExit": "Press ESC to finish",
259
291
  "latex.helpDoc": "Help Doc",
260
292
  "latex.emptyPlaceholder": "Add LaTeX",
261
- "latex.inputPlaceholder": "Please enter formula"
293
+ "latex.inputPlaceholder": "Please enter formula",
294
+ "shortcuts.title": "Keyboard Shortcuts",
295
+ "shortcuts.formatting": "Text Formatting",
296
+ "shortcuts.bold": "Bold",
297
+ "shortcuts.italic": "Italic",
298
+ "shortcuts.underline": "Underline",
299
+ "shortcuts.strikethrough": "Strikethrough",
300
+ "shortcuts.inlineCode": "Inline Code",
301
+ "shortcuts.highlight": "Highlight",
302
+ "shortcuts.paragraph": "Paragraph",
303
+ "shortcuts.heading": "Heading",
304
+ "shortcuts.block": "Block Elements",
305
+ "shortcuts.codeBlock": "Code Block",
306
+ "shortcuts.blockquote": "Blockquote",
307
+ "shortcuts.orderedList": "Ordered List",
308
+ "shortcuts.bulletList": "Bullet List",
309
+ "shortcuts.indent": "Indent",
310
+ "shortcuts.outdent": "Outdent",
311
+ "shortcuts.hardBreak": "Hard Break",
312
+ "shortcuts.history": "History",
313
+ "shortcuts.undo": "Undo",
314
+ "shortcuts.redo": "Redo"
262
315
  };
263
316
  const translationsCtx = createSlice(
264
317
  {