@cherry-markdown/cherry-markdown-dev 0.9.0-dev.202504110650.834443a → 0.9.0-dev.202504160300.d23d141

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 (327) hide show
  1. package/README.md +2 -2
  2. package/dist/addons/advance/cherry-table-echarts-plugin.js +1 -1
  3. package/dist/addons/cherry-code-block-mermaid-plugin.js +1 -1
  4. package/dist/cherry-markdown.core.common.js +1 -1
  5. package/dist/cherry-markdown.core.js +1 -1
  6. package/dist/cherry-markdown.engine.core.common.js +1 -1
  7. package/dist/cherry-markdown.engine.core.esm.js +1 -1
  8. package/dist/cherry-markdown.engine.core.js +1 -1
  9. package/dist/cherry-markdown.esm.js +1 -1
  10. package/dist/cherry-markdown.js +1 -1
  11. package/dist/cherry-markdown.min.js +1 -1
  12. package/dist/fonts/ch-icon.eot +0 -0
  13. package/dist/fonts/ch-icon.ttf +0 -0
  14. package/dist/fonts/ch-icon.woff +0 -0
  15. package/dist/fonts/ch-icon.woff2 +0 -0
  16. package/package.json +1 -3
  17. package/src/Cherry.config.js +0 -634
  18. package/src/Cherry.js +0 -1104
  19. package/src/CherryStatic.js +0 -70
  20. package/src/Editor.js +0 -748
  21. package/src/Engine.js +0 -402
  22. package/src/Event.js +0 -140
  23. package/src/Factory.js +0 -180
  24. package/src/Logger.js +0 -31
  25. package/src/Previewer.js +0 -1192
  26. package/src/Sanitizer.js +0 -4
  27. package/src/Sanitizer.node.js +0 -7
  28. package/src/UrlCache.js +0 -98
  29. package/src/addons/advance/cherry-table-echarts-plugin.js +0 -170
  30. package/src/addons/cherry-code-block-mermaid-plugin.js +0 -158
  31. package/src/addons/cherry-code-block-plantuml-plugin.js +0 -106
  32. package/src/core/HookCenter.js +0 -297
  33. package/src/core/HooksConfig.js +0 -105
  34. package/src/core/ParagraphBase.js +0 -332
  35. package/src/core/SentenceBase.js +0 -65
  36. package/src/core/SyntaxBase.js +0 -194
  37. package/src/core/hooks/AutoLink.js +0 -232
  38. package/src/core/hooks/BackgroundColor.js +0 -46
  39. package/src/core/hooks/Blockquote.js +0 -70
  40. package/src/core/hooks/Br.js +0 -85
  41. package/src/core/hooks/CodeBlock.js +0 -456
  42. package/src/core/hooks/Color.js +0 -46
  43. package/src/core/hooks/CommentReference.js +0 -96
  44. package/src/core/hooks/Detail.js +0 -108
  45. package/src/core/hooks/Emoji.config.js +0 -1825
  46. package/src/core/hooks/Emoji.js +0 -119
  47. package/src/core/hooks/Emphasis.js +0 -113
  48. package/src/core/hooks/Footnote.js +0 -125
  49. package/src/core/hooks/FrontMatter.js +0 -51
  50. package/src/core/hooks/Header.js +0 -234
  51. package/src/core/hooks/HighLight.js +0 -37
  52. package/src/core/hooks/Hr.js +0 -52
  53. package/src/core/hooks/HtmlBlock.js +0 -199
  54. package/src/core/hooks/Image.js +0 -174
  55. package/src/core/hooks/InlineCode.js +0 -48
  56. package/src/core/hooks/InlineMath.js +0 -108
  57. package/src/core/hooks/Link.js +0 -160
  58. package/src/core/hooks/List.js +0 -264
  59. package/src/core/hooks/MathBlock.js +0 -104
  60. package/src/core/hooks/Panel.js +0 -145
  61. package/src/core/hooks/Paragraph.js +0 -84
  62. package/src/core/hooks/Ruby.js +0 -34
  63. package/src/core/hooks/Size.js +0 -51
  64. package/src/core/hooks/Strikethrough.js +0 -54
  65. package/src/core/hooks/Sub.js +0 -47
  66. package/src/core/hooks/SuggestList.js +0 -333
  67. package/src/core/hooks/Suggester.js +0 -707
  68. package/src/core/hooks/Sup.js +0 -47
  69. package/src/core/hooks/Table.js +0 -275
  70. package/src/core/hooks/Toc.js +0 -292
  71. package/src/core/hooks/Transfer.js +0 -47
  72. package/src/core/hooks/Underline.js +0 -37
  73. package/src/index.core.js +0 -29
  74. package/src/index.engine.core.js +0 -68
  75. package/src/index.engine.js +0 -28
  76. package/src/index.js +0 -32
  77. package/src/libs/mermaidAPI.8.4.8.js +0 -1
  78. package/src/libs/mermaidAPI.8.5.2.js +0 -42
  79. package/src/libs/rawdeflate.js +0 -1663
  80. package/src/locales/en_US.js +0 -139
  81. package/src/locales/index.js +0 -25
  82. package/src/locales/ru_RU.js +0 -139
  83. package/src/locales/zh_CN.js +0 -142
  84. package/src/sass/base.scss +0 -26
  85. package/src/sass/bubble_formula.scss +0 -166
  86. package/src/sass/ch-icon.scss +0 -118
  87. package/src/sass/cherry.scss +0 -1116
  88. package/src/sass/components/bubble.scss +0 -173
  89. package/src/sass/components/shortcut_key_config.scss +0 -108
  90. package/src/sass/formula_utils_bubble.scss +0 -82
  91. package/src/sass/icon_template.scss +0 -24
  92. package/src/sass/icons/uEA03-list.svg +0 -19
  93. package/src/sass/icons/uEA04-check.svg +0 -14
  94. package/src/sass/icons/uEA09-square.svg +0 -10
  95. package/src/sass/icons/uEA0A-bold.svg +0 -20
  96. package/src/sass/icons/uEA0B-code.svg +0 -18
  97. package/src/sass/icons/uEA0C-color.svg +0 -13
  98. package/src/sass/icons/uEA0D-header.svg +0 -8
  99. package/src/sass/icons/uEA0E-image.svg +0 -15
  100. package/src/sass/icons/uEA0F-italic.svg +0 -8
  101. package/src/sass/icons/uEA10-link.svg +0 -16
  102. package/src/sass/icons/uEA11-ol.svg +0 -21
  103. package/src/sass/icons/uEA12-size.svg +0 -11
  104. package/src/sass/icons/uEA13-strike.svg +0 -16
  105. package/src/sass/icons/uEA14-table.svg +0 -12
  106. package/src/sass/icons/uEA15-ul.svg +0 -17
  107. package/src/sass/icons/uEA16-underline.svg +0 -13
  108. package/src/sass/icons/uEA17-word.svg +0 -16
  109. package/src/sass/icons/uEA18-blockquote.svg +0 -11
  110. package/src/sass/icons/uEA19-font.svg +0 -10
  111. package/src/sass/icons/uEA1F-insertClass.svg +0 -39
  112. package/src/sass/icons/uEA20-insertFlow.svg +0 -8
  113. package/src/sass/icons/uEA21-insertFormula.svg +0 -23
  114. package/src/sass/icons/uEA22-insertGantt.svg +0 -13
  115. package/src/sass/icons/uEA23-insertGraph.svg +0 -13
  116. package/src/sass/icons/uEA24-insertPie.svg +0 -19
  117. package/src/sass/icons/uEA25-insertSeq.svg +0 -20
  118. package/src/sass/icons/uEA26-insertState.svg +0 -35
  119. package/src/sass/icons/uEA27-line.svg +0 -11
  120. package/src/sass/icons/uEA28-preview.svg +0 -18
  121. package/src/sass/icons/uEA29-previewClose.svg +0 -24
  122. package/src/sass/icons/uEA2A-toc.svg +0 -24
  123. package/src/sass/icons/uEA2D-sub.svg +0 -15
  124. package/src/sass/icons/uEA2E-sup.svg +0 -15
  125. package/src/sass/icons/uEA2F-h1.svg +0 -16
  126. package/src/sass/icons/uEA30-h2.svg +0 -20
  127. package/src/sass/icons/uEA31-h3.svg +0 -23
  128. package/src/sass/icons/uEA32-h4.svg +0 -16
  129. package/src/sass/icons/uEA33-h5.svg +0 -20
  130. package/src/sass/icons/uEA34-h6.svg +0 -17
  131. package/src/sass/icons/uEA35-video.svg +0 -20
  132. package/src/sass/icons/uEA36-insert.svg +0 -25
  133. package/src/sass/icons/uEA37-little_table.svg +0 -30
  134. package/src/sass/icons/uEA38-pdf.svg +0 -27
  135. package/src/sass/icons/uEA39-checklist.svg +0 -22
  136. package/src/sass/icons/uEA40-close.svg +0 -12
  137. package/src/sass/icons/uEA41-fullscreen.svg +0 -81
  138. package/src/sass/icons/uEA42-minscreen.svg +0 -77
  139. package/src/sass/icons/uEA43-insertChart.svg +0 -23
  140. package/src/sass/icons/uEA44-question.svg +0 -25
  141. package/src/sass/icons/uEA45-settings.svg +0 -32
  142. package/src/sass/icons/uEA46-ok.svg +0 -7
  143. package/src/sass/icons/uEA47-br.svg +0 -22
  144. package/src/sass/icons/uEA48-normal.svg +0 -15
  145. package/src/sass/icons/uEA49-undo.svg +0 -19
  146. package/src/sass/icons/uEA50-redo.svg +0 -21
  147. package/src/sass/icons/uEA51-copy.svg +0 -6
  148. package/src/sass/icons/uEA52-phone.svg +0 -5
  149. package/src/sass/icons/uEA53-cherry-table-delete.svg +0 -17
  150. package/src/sass/icons/uEA54-cherry-table-insert-bottom.svg +0 -16
  151. package/src/sass/icons/uEA55-cherry-table-insert-left.svg +0 -15
  152. package/src/sass/icons/uEA56-cherry-table-insert-right.svg +0 -16
  153. package/src/sass/icons/uEA57-cherry-table-insert-top.svg +0 -16
  154. package/src/sass/icons/uEA58-sort-s.svg +0 -13
  155. package/src/sass/icons/uEA59-pinyin.svg +0 -1
  156. package/src/sass/icons/uEA5A-create.svg +0 -24
  157. package/src/sass/icons/uEA5B-download.svg +0 -34
  158. package/src/sass/icons/uEA5C-edit.svg +0 -3
  159. package/src/sass/icons/uEA5D-export.svg +0 -53
  160. package/src/sass/icons/uEA5E-folder-open.svg +0 -3
  161. package/src/sass/icons/uEA5F-folder.svg +0 -3
  162. package/src/sass/icons/uEA60-help.svg +0 -5
  163. package/src/sass/icons/uEA61-pen-fill.svg +0 -13
  164. package/src/sass/icons/uEA62-pen.svg +0 -3
  165. package/src/sass/icons/uEA64-tips.svg +0 -5
  166. package/src/sass/icons/uEA65-warn.svg +0 -5
  167. package/src/sass/icons/uEA66-mistake.svg +0 -4
  168. package/src/sass/icons/uEA67-success.svg +0 -4
  169. package/src/sass/icons/uEA68-danger.svg +0 -4
  170. package/src/sass/icons/uEA69-info.svg +0 -5
  171. package/src/sass/icons/uEA6A-primary.svg +0 -5
  172. package/src/sass/icons/uEA6B-warning.svg +0 -5
  173. package/src/sass/icons/uEA6C-justify.svg +0 -19
  174. package/src/sass/icons/uEA6D-justifyCenter.svg +0 -19
  175. package/src/sass/icons/uEA6E-justifyLeft.svg +0 -19
  176. package/src/sass/icons/uEA6F-justifyRight.svg +0 -19
  177. package/src/sass/icons/uEA70-chevronsLeft.svg +0 -1
  178. package/src/sass/icons/uEA71-chevronsRight.svg +0 -1
  179. package/src/sass/icons/uEA72-trendingUp.svg +0 -1
  180. package/src/sass/icons/uEA74-codeBlock.svg +0 -1
  181. package/src/sass/icons/uEA75-expand.svg +0 -3
  182. package/src/sass/icons/uEA76-unExpand.svg +0 -3
  183. package/src/sass/icons/uEA77-swap-vert.svg +0 -1
  184. package/src/sass/icons/uEA78-swap.svg +0 -1
  185. package/src/sass/icons/uEA79-keyboard.svg +0 -1
  186. package/src/sass/icons/uEA7A-command.svg +0 -1
  187. package/src/sass/icons/uEA7B-search.svg +0 -1
  188. package/src/sass/index.scss +0 -3
  189. package/src/sass/markdown.scss +0 -668
  190. package/src/sass/markdown_pure.scss +0 -9
  191. package/src/sass/prettyprint/prettyprint.scss +0 -118
  192. package/src/sass/previewer.scss +0 -179
  193. package/src/sass/print.scss +0 -13
  194. package/src/sass/prism/coy.scss +0 -220
  195. package/src/sass/prism/dark.scss +0 -132
  196. package/src/sass/prism/default.scss +0 -143
  197. package/src/sass/prism/funky.scss +0 -133
  198. package/src/sass/prism/okaidia.scss +0 -126
  199. package/src/sass/prism/one-dark.scss +0 -440
  200. package/src/sass/prism/one-light.scss +0 -428
  201. package/src/sass/prism/solarized-light.scss +0 -153
  202. package/src/sass/prism/tomorrow-night.scss +0 -125
  203. package/src/sass/prism/twilight.scss +0 -202
  204. package/src/sass/prism/vs-dark.scss +0 -275
  205. package/src/sass/prism/vs-light.scss +0 -168
  206. package/src/sass/themes/blue.scss +0 -411
  207. package/src/sass/themes/dark.scss +0 -517
  208. package/src/sass/themes/default.scss +0 -255
  209. package/src/sass/themes/green.scss +0 -395
  210. package/src/sass/themes/light.scss +0 -368
  211. package/src/sass/themes/red.scss +0 -397
  212. package/src/sass/themes/violet.scss +0 -410
  213. package/src/sass/variable.scss +0 -84
  214. package/src/toolbars/Bubble.js +0 -234
  215. package/src/toolbars/BubbleFormula.js +0 -298
  216. package/src/toolbars/BubbleTable.js +0 -147
  217. package/src/toolbars/FloatMenu.js +0 -131
  218. package/src/toolbars/HiddenToolbar.js +0 -36
  219. package/src/toolbars/HookCenter.js +0 -231
  220. package/src/toolbars/MenuBase.js +0 -569
  221. package/src/toolbars/PreviewerBubble.js +0 -608
  222. package/src/toolbars/ShortcutKeyConfigPanel.js +0 -345
  223. package/src/toolbars/Sidebar.js +0 -36
  224. package/src/toolbars/Toc.js +0 -242
  225. package/src/toolbars/Toolbar.js +0 -449
  226. package/src/toolbars/ToolbarRight.js +0 -37
  227. package/src/toolbars/hooks/Audio.js +0 -79
  228. package/src/toolbars/hooks/BarTable.js +0 -41
  229. package/src/toolbars/hooks/Bold.js +0 -73
  230. package/src/toolbars/hooks/Br.js +0 -34
  231. package/src/toolbars/hooks/ChangeLocale.js +0 -62
  232. package/src/toolbars/hooks/ChatGpt.js +0 -182
  233. package/src/toolbars/hooks/CheckList.js +0 -41
  234. package/src/toolbars/hooks/Code.js +0 -49
  235. package/src/toolbars/hooks/CodeTheme.js +0 -66
  236. package/src/toolbars/hooks/Color.js +0 -298
  237. package/src/toolbars/hooks/Copy.js +0 -141
  238. package/src/toolbars/hooks/Detail.js +0 -69
  239. package/src/toolbars/hooks/DrawIo.js +0 -57
  240. package/src/toolbars/hooks/Export.js +0 -49
  241. package/src/toolbars/hooks/File.js +0 -79
  242. package/src/toolbars/hooks/Formula.js +0 -69
  243. package/src/toolbars/hooks/FullScreen.js +0 -50
  244. package/src/toolbars/hooks/Graph.js +0 -263
  245. package/src/toolbars/hooks/H1.js +0 -71
  246. package/src/toolbars/hooks/H2.js +0 -71
  247. package/src/toolbars/hooks/H3.js +0 -71
  248. package/src/toolbars/hooks/Header.js +0 -118
  249. package/src/toolbars/hooks/Hr.js +0 -35
  250. package/src/toolbars/hooks/Image.js +0 -91
  251. package/src/toolbars/hooks/InlineCode.js +0 -53
  252. package/src/toolbars/hooks/Insert.js +0 -193
  253. package/src/toolbars/hooks/Italic.js +0 -72
  254. package/src/toolbars/hooks/Justify.js +0 -49
  255. package/src/toolbars/hooks/LineTable.js +0 -41
  256. package/src/toolbars/hooks/Link.js +0 -49
  257. package/src/toolbars/hooks/List.js +0 -55
  258. package/src/toolbars/hooks/MobilePreview.js +0 -44
  259. package/src/toolbars/hooks/Ol.js +0 -41
  260. package/src/toolbars/hooks/Panel.js +0 -140
  261. package/src/toolbars/hooks/Pdf.js +0 -78
  262. package/src/toolbars/hooks/Publish.js +0 -123
  263. package/src/toolbars/hooks/QuickTable.js +0 -43
  264. package/src/toolbars/hooks/Quote.js +0 -45
  265. package/src/toolbars/hooks/Redo.js +0 -33
  266. package/src/toolbars/hooks/Ruby.js +0 -59
  267. package/src/toolbars/hooks/Search.js +0 -53
  268. package/src/toolbars/hooks/Settings.js +0 -220
  269. package/src/toolbars/hooks/ShortcutKey.js +0 -62
  270. package/src/toolbars/hooks/Size.js +0 -118
  271. package/src/toolbars/hooks/Split.js +0 -37
  272. package/src/toolbars/hooks/Strikethrough.js +0 -71
  273. package/src/toolbars/hooks/Sub.js +0 -58
  274. package/src/toolbars/hooks/Sup.js +0 -58
  275. package/src/toolbars/hooks/SwitchModel.js +0 -56
  276. package/src/toolbars/hooks/Table.js +0 -56
  277. package/src/toolbars/hooks/Theme.js +0 -62
  278. package/src/toolbars/hooks/Toc.js +0 -35
  279. package/src/toolbars/hooks/TogglePreview.js +0 -91
  280. package/src/toolbars/hooks/Ul.js +0 -41
  281. package/src/toolbars/hooks/Underline.js +0 -68
  282. package/src/toolbars/hooks/Undo.js +0 -30
  283. package/src/toolbars/hooks/Video.js +0 -79
  284. package/src/toolbars/hooks/Word.js +0 -78
  285. package/src/toolbars/hooks/WordCount.js +0 -106
  286. package/src/utils/autoindent.js +0 -58
  287. package/src/utils/cm-search-replace.js +0 -794
  288. package/src/utils/code-preview-language-setting.js +0 -180
  289. package/src/utils/codeBlockContentHandler.js +0 -400
  290. package/src/utils/config.js +0 -174
  291. package/src/utils/copy.js +0 -55
  292. package/src/utils/dialog.js +0 -214
  293. package/src/utils/dom.js +0 -163
  294. package/src/utils/downloadUtil.js +0 -23
  295. package/src/utils/env.js +0 -22
  296. package/src/utils/error.js +0 -61
  297. package/src/utils/event.js +0 -38
  298. package/src/utils/export.js +0 -166
  299. package/src/utils/file.js +0 -164
  300. package/src/utils/formulaUtilsHandler.js +0 -232
  301. package/src/utils/htmlparser.js +0 -976
  302. package/src/utils/image.js +0 -99
  303. package/src/utils/imgSizeHandler.js +0 -279
  304. package/src/utils/lazyLoadImg.js +0 -327
  305. package/src/utils/lineFeed.js +0 -49
  306. package/src/utils/listContentHandler.js +0 -227
  307. package/src/utils/lookbehind-replace.js +0 -81
  308. package/src/utils/mathjax.js +0 -89
  309. package/src/utils/myersDiff.js +0 -211
  310. package/src/utils/pasteHelper.js +0 -253
  311. package/src/utils/platformTransform.js +0 -71
  312. package/src/utils/recount-pos.js +0 -59
  313. package/src/utils/regexp.js +0 -295
  314. package/src/utils/sanitize.js +0 -477
  315. package/src/utils/selection.js +0 -50
  316. package/src/utils/shortcutKey.js +0 -291
  317. package/src/utils/svgUtils.js +0 -96
  318. package/src/utils/tableContentHandler.js +0 -876
  319. package/test/core/CommonMark.spec.ts +0 -62
  320. package/test/core/hooks/AutoLink.spec.ts +0 -28
  321. package/test/core/hooks/List.spec.ts +0 -79
  322. package/test/core/hooks/__snapshots__/List.spec.ts.snap +0 -11
  323. package/test/example.md +0 -778
  324. package/test/node.js +0 -10
  325. package/test/suites/commonmark.spec.json +0 -5218
  326. package/test/tsconfig.test.json +0 -6
  327. package/test/utils/regexp.spec.ts +0 -28
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cherry-markdown/cherry-markdown-dev",
3
3
  "license": "Apache-2.0",
4
- "version": "0.9.0-dev.202504110650.834443a",
4
+ "version": "0.9.0-dev.202504160300.d23d141",
5
5
  "description": "a new markdown editor",
6
6
  "repository": {
7
7
  "type": "git",
@@ -16,8 +16,6 @@
16
16
  },
17
17
  "files": [
18
18
  "dist",
19
- "src",
20
- "test",
21
19
  "types"
22
20
  ],
23
21
  "sideEffects": [
@@ -1,634 +0,0 @@
1
- /**
2
- * Copyright (C) 2021 THL A29 Limited, a Tencent company.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import cloneDeep from 'lodash/cloneDeep';
17
-
18
- const callbacks = {
19
- /**
20
- * 全局的URL处理器
21
- * @param {string} url 来源url
22
- * @param {'image'|'audio'|'video'|'autolink'|'link'} srcType 来源类型
23
- * @returns
24
- */
25
- urlProcessor: (url, srcType) => url,
26
- fileUpload(file, callback) {
27
- if (/video/i.test(file.type)) {
28
- callback('images/demo-dog.png', {
29
- name: `${file.name.replace(/\.[^.]+$/, '')}`,
30
- poster: 'images/demo-dog.png?poster=true',
31
- isBorder: true,
32
- isShadow: true,
33
- isRadius: true,
34
- });
35
- } else if (/image/i.test(file.type)) {
36
- // 如果上传的是图片,则默认回显base64内容(因为没有图床)
37
- // 创建 FileReader 对象
38
- const reader = new FileReader();
39
- // 读取文件内容
40
- reader.onload = (event) => {
41
- // 获取 base64 内容
42
- const base64Content = event.target.result;
43
- callback(base64Content, {
44
- name: `${file.name.replace(/\.[^.]+$/, '')}`,
45
- isShadow: true,
46
- width: '60%',
47
- height: 'auto',
48
- });
49
- };
50
- reader.readAsDataURL(file);
51
- } else {
52
- callback('images/demo-dog.png');
53
- }
54
- },
55
- fileUploadMulti(files, callback) {
56
- const fileType = files[0].type;
57
- const promises = [];
58
- for (const file of files) {
59
- const promise = new Promise((resolve) => {
60
- if (/video/i.test(fileType)) {
61
- resolve({
62
- url: 'images/demo-dog.png',
63
- params: {
64
- name: `${file.name.replace(/\.[^.]+$/, '')}`,
65
- poster: 'images/demo-dog.png?poster=true',
66
- isBorder: true,
67
- isShadow: true,
68
- isRadius: true,
69
- },
70
- });
71
- } else if (/image/i.test(fileType)) {
72
- // 如果上传的是图片,则默认回显base64内容(因为没有图床)
73
- // 创建 FileReader 对象
74
- const reader = new FileReader();
75
- // 读取文件内容
76
- reader.onload = (event) => {
77
- // 获取 base64 内容
78
- const base64Content = event.target.result;
79
- resolve({
80
- url: base64Content,
81
- params: {
82
- name: `${file.name.replace(/\.[^.]+$/, '')}`,
83
- isShadow: true,
84
- width: '60%',
85
- height: 'auto',
86
- },
87
- });
88
- };
89
- reader.readAsDataURL(file);
90
- } else if (/audio/i.test(fileType)) {
91
- resolve({
92
- url: 'images/demo-dog.png',
93
- params: {
94
- name: `${file.name.replace(/\.[^.]+$/, '')}`,
95
- poster: 'images/demo-dog.png?poster=true',
96
- isBorder: true,
97
- isShadow: true,
98
- isRadius: true,
99
- },
100
- });
101
- } else {
102
- resolve('images/demo-dog.png');
103
- }
104
- });
105
- promises.push(promise);
106
- }
107
- Promise.all(promises).then((results) => {
108
- callback(results);
109
- });
110
- },
111
- afterChange: (text, html) => {},
112
- afterInit: (text, html) => {},
113
- beforeImageMounted: (srcProp, src) => ({ srcProp, src }),
114
- onClickPreview: (event) => {},
115
- onExpandCode: (event, code) => {
116
- // 阻止默认的粘贴事件
117
- // return false;
118
- // 对复制内容进行额外处理
119
- // console.log(event, code);
120
- return code;
121
- },
122
- onUnExpandCode: (event, code) => {
123
- // 阻止默认的粘贴事件
124
- // return false;
125
- // 对复制内容进行额外处理
126
- // console.log(event, code);
127
- return code;
128
- },
129
- /**
130
- * 粘贴时触发
131
- * @param {ClipboardEvent['clipboardData']} clipboardData
132
- * @param {object} cherry
133
- * @returns
134
- * false: 走cherry粘贴的默认逻辑
135
- * string: 直接粘贴的内容
136
- */
137
- onPaste: (clipboardData, cherry) => {
138
- return false;
139
- },
140
- onCopyCode: (event, code) => {
141
- // 阻止默认的粘贴事件
142
- // return false;
143
- // 对复制内容进行额外处理
144
- return code;
145
- },
146
- // 获取中文的拼音
147
- changeString2Pinyin: (string) => {
148
- /**
149
- * 推荐使用这个组件:https://github.com/liu11hao11/pinyin_js
150
- *
151
- * 可以在 ../scripts/pinyin/pinyin_dist.js 里直接引用
152
- */
153
- return string;
154
- },
155
- };
156
-
157
- /** @type {Partial<import('~types/cherry').CherryOptions>} */
158
- const defaultConfig = {
159
- // 第三方包
160
- externals: {
161
- // externals
162
- },
163
- // chatGpt的openai配置
164
- openai: {
165
- apiKey: '', // apiKey
166
- // proxy: {
167
- // host: '127.0.0.1',
168
- // port: '7890',
169
- // }, // http & https代理配置
170
- ignoreError: false, // 是否忽略请求失败,默认忽略
171
- },
172
- // 解析引擎配置
173
- engine: {
174
- // 全局配置
175
- global: {
176
- // 是否启用经典换行逻辑
177
- // true:一个换行会被忽略,两个以上连续换行会分割成段落,
178
- // false: 一个换行会转成<br>,两个连续换行会分割成段落,三个以上连续换行会转成<br>并分割段落
179
- classicBr: false,
180
- /**
181
- * 额外允许渲染的html标签
182
- * 标签以英文竖线分隔,如:htmlWhiteList: 'iframe|script|style'
183
- * 默认为空,默认允许渲染的html见src/utils/sanitize.js whiteList 属性
184
- * 需要注意:
185
- * - 启用iframe、script等标签后,会产生xss注入,请根据实际场景判断是否需要启用
186
- * - 一般编辑权限可控的场景(如api文档系统)可以允许iframe、script等标签
187
- */
188
- htmlWhiteList: '',
189
- /**
190
- * html黑名单,优先级高于htmlWhiteList
191
- * 标签以英文竖线分隔,如:htmlBlackList: 'div|span'
192
- * 默认为空,表示不禁止渲染任何html标签
193
- * 需要注意:
194
- * - 启用htmlBlackList后,将禁止渲染htmlBlackList里配置的标签
195
- * - 如果要禁用所有html标签,可配置htmlBlackList: '*'
196
- */
197
- htmlBlackList: '',
198
- /**
199
- * 适配流式会话的场景,开启后将具备以下特性:
200
- * - cherry渲染频率从50ms/次提升到10ms/次
201
- * - 代码块自动闭合,相当于强制 `engine.syntax.codeBlock.selfClosing=true`
202
- * - 文章末尾的段横线标题语法(`\n-`)失效
203
- * - 表格语法自动闭合,相当于强制`engine.syntax.table.selfClosing=true`
204
- * - 加粗、斜体语法自动闭合,相当于强制`engine.syntax.fontEmphasis.selfClosing=true`
205
- *
206
- * 后续如果有新的需求,可提issue反馈
207
- */
208
- flowSessionContext: true,
209
- /**
210
- * 流式会话时,在最后位置增加一个类似光标的dom
211
- * - 'default':用cherry提供的默认样式
212
- * - '':不增加任何dom
213
- * - '<span class="custom-cursor"></span>': 自定义的dom
214
- */
215
- flowSessionCursor: '',
216
- },
217
- // 内置语法配置
218
- syntax: {
219
- // 语法开关
220
- // 'hookName': false,
221
- // 语法配置
222
- // 'hookName': {
223
- //
224
- // }
225
- link: {
226
- /** 生成的<a>标签追加target属性的默认值 空:在<a>标签里不会追加target属性, _blank:在<a>标签里追加target="_blank"属性 */
227
- target: '',
228
- /** 生成的<a>标签追加rel属性的默认值 空:在<a>标签里不会追加rel属性, nofollow:在<a>标签里追加rel="nofollow:在"属性*/
229
- rel: '',
230
- },
231
- autoLink: {
232
- /** 生成的<a>标签追加target属性的默认值 空:在<a>标签里不会追加target属性, _blank:在<a>标签里追加target="_blank"属性 */
233
- target: '',
234
- /** 生成的<a>标签追加rel属性的默认值 空:在<a>标签里不会追加rel属性, nofollow:在<a>标签里追加rel="nofollow:在"属性*/
235
- rel: '',
236
- /** 是否开启短链接 */
237
- enableShortLink: false,
238
- /** 短链接长度 */
239
- shortLinkLength: 20,
240
- },
241
- list: {
242
- listNested: false, // 同级列表类型转换后变为子级
243
- indentSpace: 2, // 默认2个空格缩进
244
- },
245
- table: {
246
- enableChart: false,
247
- selfClosing: false, // 自动闭合,为true时,当输入第一行table内容时,cherry会自动按表格进行解析
248
- // chartRenderEngine: EChartsTableEngine,
249
- // externals: ['echarts'],
250
- },
251
- inlineCode: {
252
- /**
253
- * @deprecated 不再支持theme的配置,统一在`themeSettings.inlineCodeTheme`中配置
254
- */
255
- // theme: 'red',
256
- },
257
- codeBlock: {
258
- // theme: 'dark', // @deprecated 不再支持theme的配置,统一在`themeSettings.codeBlockTheme`中配置
259
- wrap: true, // 超出长度是否换行,false则显示滚动条
260
- lineNumber: true, // 默认显示行号
261
- copyCode: true, // 是否显示“复制”按钮
262
- editCode: true, // 是否显示“编辑”按钮
263
- changeLang: true, // 是否显示“切换语言”按钮
264
- expandCode: false, // 是否展开/收起代码块,当代码块行数大于10行时,会自动收起代码块
265
- selfClosing: true, // 自动闭合,为true时,当md中有奇数个```时,会自动在md末尾追加一个```
266
- customRenderer: {
267
- // 自定义语法渲染器
268
- },
269
- mermaid: {
270
- svg2img: false, // 是否将mermaid生成的画图变成img格式
271
- },
272
- /**
273
- * indentedCodeBlock是缩进代码块是否启用的开关
274
- *
275
- * 在6.X之前的版本中默认不支持该语法。
276
- * 因为cherry的开发团队认为该语法太丑了(容易误触)
277
- * 开发团队希望用```代码块语法来彻底取代该语法
278
- * 但在后续的沟通中,开发团队发现在某些场景下该语法有更好的显示效果
279
- * 因此开发团队在6.X版本中才引入了该语法
280
- * 已经引用6.x以下版本的业务如果想做到用户无感知升级,可以去掉该语法:
281
- * indentedCodeBlock:false
282
- */
283
- indentedCodeBlock: true,
284
- /**
285
- * 自定义按钮,出现在代码块右上角
286
- **/
287
- customBtns: [],
288
- },
289
- emoji: {
290
- useUnicode: true, // 是否使用unicode进行渲染
291
- },
292
- fontEmphasis: {
293
- /**
294
- * 是否允许首尾空格
295
- * 首尾、前后的定义: 语法前**语法首+内容+语法尾**语法后
296
- * 例:
297
- * true:
298
- * __ hello __ ====> <strong> hello </strong>
299
- * __hello__ ====> <strong>hello</strong>
300
- * false:
301
- * __ hello __ ====> <em>_ hello _</em>
302
- * __hello__ ====> <strong>hello</strong>
303
- */
304
- allowWhitespace: false,
305
- selfClosing: false, // 自动闭合,为true时,当输入**XXX时,会自动在末尾追加**
306
- },
307
- strikethrough: {
308
- /**
309
- * 是否必须有前后空格
310
- * 首尾、前后的定义: 语法前**语法首+内容+语法尾**语法后
311
- * 例:
312
- * true:
313
- * hello wor~~l~~d ====> hello wor~~l~~d
314
- * hello wor ~~l~~ d ====> hello wor <del>l</del> d
315
- * false:
316
- * hello wor~~l~~d ====> hello wor<del>l</del>d
317
- * hello wor ~~l~~ d ====> hello wor <del>l</del> d
318
- */
319
- needWhitespace: false,
320
- },
321
- mathBlock: {
322
- engine: 'MathJax', // katex或MathJax
323
- src: '',
324
- plugins: true, // 默认加载插件
325
- },
326
- inlineMath: {
327
- engine: 'MathJax', // katex或MathJax
328
- src: '',
329
- },
330
- toc: {
331
- /** 默认只渲染一个目录 */
332
- allowMultiToc: false,
333
- /** 是否显示自增序号 */
334
- showAutoNumber: false,
335
- },
336
- header: {
337
- /**
338
- * 标题的样式:
339
- * - default 默认样式,标题前面有锚点
340
- * - autonumber 标题前面有自增序号锚点
341
- * - none 标题没有锚点
342
- */
343
- anchorStyle: 'default',
344
- /**
345
- * 是否开启严格模式
346
- * true:严格模式
347
- * # head ⭕️ valid
348
- * #head ❌ invalid
349
- * false:宽松模式
350
- * # head ⭕️ valid
351
- * #head ⭕️ valid
352
- */
353
- strict: false,
354
- },
355
- htmlBlock: {
356
- /**
357
- * 是否过滤html标签中的style属性
358
- * true:过滤style属性
359
- * false:不过滤style属性
360
- */
361
- filterStyle: false,
362
- },
363
- },
364
- },
365
- editor: {
366
- id: 'code', // textarea 的id属性值
367
- name: 'code', // textarea 的name属性值
368
- autoSave2Textarea: false, // 是否自动将编辑区的内容回写到textarea里
369
- /**
370
- * @deprecated 不再支持theme的配置,废弃该功能,统一由`themeSettings.mainTheme`配置
371
- */
372
- // theme: 'default',
373
- // 编辑器的高度,默认100%,如果挂载点存在内联设置的height则以内联样式为主
374
- height: '100%',
375
- // defaultModel 编辑器初始化后的默认模式,一共有三种模式:1、双栏编辑预览模式;2、纯编辑模式;3、预览模式
376
- // edit&preview: 双栏编辑预览模式
377
- // editOnly: 纯编辑模式(没有预览,可通过toolbar切换成双栏或预览模式)
378
- // previewOnly: 预览模式(没有编辑框,toolbar只显示“返回编辑”按钮,可通过toolbar切换成编辑模式)
379
- defaultModel: 'edit&preview',
380
- // 粘贴时是否自动将html转成markdown
381
- convertWhenPaste: true,
382
- // 快捷键风格,目前仅支持 sublime 和 vim
383
- keyMap: 'sublime',
384
- codemirror: {
385
- // 是否自动focus 默认为true
386
- autofocus: true,
387
- },
388
- writingStyle: 'normal', // 书写风格,normal 普通 | typewriter 打字机 | focus 专注,默认normal
389
- keepDocumentScrollAfterInit: false, // 在初始化后是否保持网页的滚动,true:保持滚动;false:网页自动滚动到cherry初始化的位置
390
- showFullWidthMark: true, // 是否高亮全角符号 ·|¥|、|:|“|”|【|】|(|)|《|》
391
- showSuggestList: true, // 是否显示联想框
392
- },
393
- toolbars: {
394
- /**
395
- * @deprecated 不再支持theme的配置,统一在`themeSettings.toolbarTheme`中配置
396
- */
397
- // theme: 'dark', // light or dark
398
- showToolbar: true, // false:不展示顶部工具栏; true:展示工具栏; toolbars.showToolbar=false 与 toolbars.toolbar=false 等效
399
- toolbar: [
400
- 'bold',
401
- 'italic',
402
- 'strikethrough',
403
- '|',
404
- 'color',
405
- 'header',
406
- 'ruby',
407
- '|',
408
- 'list',
409
- 'panel',
410
- // 'justify', // 对齐方式,默认不推荐这么“复杂”的样式要求
411
- 'detail',
412
- {
413
- insert: [
414
- 'image',
415
- 'audio',
416
- 'video',
417
- 'link',
418
- 'hr',
419
- 'br',
420
- 'code',
421
- 'formula',
422
- 'toc',
423
- 'table',
424
- 'line-table',
425
- 'bar-table',
426
- 'pdf',
427
- 'word',
428
- ],
429
- },
430
- 'graph',
431
- 'shortcutKey',
432
- 'togglePreview',
433
- ],
434
- toolbarRight: [],
435
- sidebar: false,
436
- bubble: ['bold', 'italic', 'underline', 'strikethrough', 'sub', 'sup', 'quote', '|', 'size', 'color'], // array or false
437
- float: ['h1', 'h2', 'h3', '|', 'checklist', 'quote', 'table', 'code'], // array or false
438
- hiddenToolbar: [], // 不展示在编辑器中的工具栏,只使用工具栏的api和快捷键功能
439
- toc: false, // 不展示悬浮目录
440
- // toc: {
441
- // updateLocationHash: false, // 要不要更新URL的hash
442
- // defaultModel: 'full', // pure: 精简模式/缩略模式,只有一排小点; full: 完整模式,会展示所有标题
443
- // showAutoNumber: false, // 是否显示自增序号
444
- // position: 'absolute', // 悬浮目录的悬浮方式。当滚动条在cherry内部时,用absolute;当滚动条在cherry外部时,用fixed
445
- // cssText: '', // 自定义样式
446
- // },
447
- /**
448
- * 自定义快捷键
449
- * @deprecated 请使用`shortcutKeySettings`
450
- */
451
- shortcutKey: {
452
- // 'Alt-1': 'header',
453
- // 'Alt-2': 'header',
454
- // 'Ctrl-b': 'bold',
455
- // 'Ctrl-Alt-m': 'formula',
456
- },
457
- shortcutKeySettings: {
458
- /** 是否替换已有的快捷键, true: 替换默认快捷键; false: 会追加到默认快捷键里,相同的shortcutKey会覆盖默认的 */
459
- isReplace: false,
460
- shortcutKeyMap: {
461
- // 'Alt-Digit1': {
462
- // hookName: 'header',
463
- // aliasName: '标题',
464
- // },
465
- // 'Control-Shift-KeyB': {
466
- // hookName: 'bold',
467
- // aliasName: '加粗',
468
- // },
469
- },
470
- },
471
- // 一些按钮的配置信息
472
- config: {
473
- formula: {
474
- showLatexLive: true, // true: 显示 www.latexlive.com 外链; false:不显示
475
- templateConfig: false, // false: 使用默认模板
476
- },
477
- changeLocale: [
478
- {
479
- locale: 'zh_CN',
480
- name: '中文',
481
- },
482
- {
483
- locale: 'en_US',
484
- name: 'English',
485
- },
486
- {
487
- locale: 'ru_RU',
488
- name: 'Русский',
489
- },
490
- ],
491
- },
492
- },
493
- // 打开draw.io编辑页的url,如果为空则drawio按钮失效
494
- drawioIframeUrl: '',
495
- // drawio iframe的样式
496
- drawioIframeStyle: 'border: none;',
497
- /**
498
- * 上传文件的时候用来指定文件类型
499
- */
500
- fileTypeLimitMap: {
501
- video: 'video/*',
502
- audio: 'audio/*',
503
- image: 'image/*',
504
- word: '.doc,.docx',
505
- pdf: '.pdf',
506
- file: '*',
507
- },
508
- /**
509
- * 上传文件的时候是否开启多选
510
- */
511
- multipleFileSelection: {
512
- video: false,
513
- audio: false,
514
- image: false,
515
- word: false,
516
- pdf: false,
517
- file: false,
518
- },
519
- callback: {
520
- /**
521
- * 全局的URL处理器
522
- * @param {string} url 来源url
523
- * @param {'image'|'audio'|'video'|'autolink'|'link'} srcType 来源类型
524
- * @returns
525
- */
526
- urlProcessor: callbacks.urlProcessor,
527
- // 上传文件的回调
528
- fileUpload: callbacks.fileUpload,
529
- // 上传多文件的回调
530
- fileUploadMulti: callbacks.fileUploadMulti,
531
- beforeImageMounted: callbacks.beforeImageMounted,
532
- // 预览区域点击事件
533
- onClickPreview: callbacks.onClickPreview,
534
- // 复制代码块代码时的回调
535
- onCopyCode: callbacks.onCopyCode,
536
- // 展开代码块代码时的回调
537
- onExpandCode: callbacks.onExpandCode,
538
- // 缩起代码块代码时的回调
539
- onUnExpandCode: callbacks.onUnExpandCode,
540
- // 把中文变成拼音的回调,当然也可以把中文变成英文、英文变成中文
541
- changeString2Pinyin: callbacks.changeString2Pinyin,
542
- /**
543
- * 粘贴时触发
544
- * @param {ClipboardEvent['clipboardData']} clipboardData
545
- * @param {Cherry} cherry
546
- * @returns
547
- * false: 走cherry粘贴的默认逻辑
548
- * string: 直接粘贴的内容
549
- */
550
- onPaste: callbacks.onPaste,
551
- },
552
- event: {
553
- // 当编辑区内容有实际变化时触发
554
- afterChange: callbacks.afterChange,
555
- afterInit: callbacks.afterInit,
556
- focus: ({ e, cherry }) => {},
557
- blur: ({ e, cherry }) => {},
558
- selectionChange: ({ selections, lastSelections, info }) => {},
559
- afterChangeLocale: (locale) => {},
560
- changeMainTheme: (theme) => {},
561
- changeCodeBlockTheme: (theme) => {},
562
- },
563
- previewer: {
564
- dom: false,
565
- className: 'cherry-markdown',
566
- // 是否启用预览区域编辑能力(目前支持编辑图片尺寸、编辑表格内容)
567
- enablePreviewerBubble: true,
568
- floatWhenClosePreviewer: false,
569
- /**
570
- * 配置图片懒加载的逻辑
571
- * - 如果不希望图片懒加载,可配置成 lazyLoadImg = {noLoadImgNum: -1}
572
- * - 如果希望所有图片都无脑懒加载,可配置成 lazyLoadImg = {noLoadImgNum: 0, autoLoadImgNum: -1}
573
- * - 如果一共有15张图片,希望:
574
- * 1、前5张图片(1~5)直接加载;
575
- * 2、后5张图片(6~10)不论在不在视区内,都无脑懒加载;
576
- * 3、其他图片(11~15)在视区内时,进行懒加载;
577
- * 则配置应该为:lazyLoadImg = {noLoadImgNum: 5, autoLoadImgNum: 5}
578
- */
579
- lazyLoadImg: {
580
- // 加载图片时如果需要展示loading图,则配置loading图的地址
581
- loadingImgPath: '',
582
- // 同一时间最多有几个图片请求,最大同时加载6张图片
583
- maxNumPerTime: 2,
584
- // 不进行懒加载处理的图片数量,如果为0,即所有图片都进行懒加载处理, 如果设置为-1,则所有图片都不进行懒加载处理
585
- noLoadImgNum: 5,
586
- // 首次自动加载几张图片(不论图片是否滚动到视野内),autoLoadImgNum = -1 表示会自动加载完所有图片
587
- autoLoadImgNum: 5,
588
- // 针对加载失败的图片 或 beforeLoadOneImgCallback 返回false 的图片,最多尝试加载几次,为了防止死循环,最多5次。以图片的src为纬度统计重试次数
589
- maxTryTimesPerSrc: 2,
590
- // 加载一张图片之前的回调函数,函数return false 会终止加载操作
591
- beforeLoadOneImgCallback: (img) => {
592
- return true;
593
- },
594
- // 加载一张图片失败之后的回调函数
595
- failLoadOneImgCallback: (img) => {},
596
- // 加载一张图片之后的回调函数,如果图片加载失败,则不会回调该函数
597
- afterLoadOneImgCallback: (img) => {},
598
- // 加载完所有图片后调用的回调函数
599
- afterLoadAllImgCallback: () => {},
600
- },
601
- },
602
- /** 定义cherry缓存的作用范围,相同nameSpace的实例共享localStorage缓存 */
603
- nameSpace: 'cherry',
604
- themeSettings: {
605
- // 主题列表,用于切换主题
606
- themeList: [
607
- { className: 'default', label: '默认' },
608
- { className: 'dark', label: '暗黑' },
609
- { className: 'light', label: '明亮' },
610
- { className: 'green', label: '清新' },
611
- { className: 'red', label: '热情' },
612
- { className: 'violet', label: '淡雅' },
613
- { className: 'blue', label: '清幽' },
614
- ],
615
- mainTheme: 'light',
616
- codeBlockTheme: 'default',
617
- inlineCodeTheme: 'red', // red or black
618
- toolbarTheme: 'dark', // light or dark 优先级低于mainTheme
619
- },
620
- // 预览页面不需要绑定事件
621
- isPreviewOnly: false,
622
- // 预览区域跟随编辑器光标自动滚动
623
- autoScrollByCursor: true,
624
- // 外层容器不存在时,是否强制输出到body上
625
- forceAppend: true,
626
- // The locale Cherry is going to use. Locales live in /src/locales/
627
- locale: 'zh_CN',
628
- // Supplementary locales
629
- locales: {},
630
- // cherry初始化后是否检查 location.hash 尝试滚动到对应位置
631
- autoScrollByHashAfterInit: false,
632
- };
633
-
634
- export default cloneDeep(defaultConfig);