@8btc/mditor 0.0.1

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 (663) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +623 -0
  3. package/dist/css/content-theme/ant-design.css +210 -0
  4. package/dist/css/content-theme/dark.css +177 -0
  5. package/dist/css/content-theme/light.css +136 -0
  6. package/dist/css/content-theme/wechat.css +94 -0
  7. package/dist/images/emoji/b3log.png +0 -0
  8. package/dist/images/emoji/chainbook.png +0 -0
  9. package/dist/images/emoji/doge.png +0 -0
  10. package/dist/images/emoji/hacpai.png +0 -0
  11. package/dist/images/emoji/huaji.gif +0 -0
  12. package/dist/images/emoji/latke.png +0 -0
  13. package/dist/images/emoji/liandi.png +0 -0
  14. package/dist/images/emoji/lute.png +0 -0
  15. package/dist/images/emoji/octocat.png +0 -0
  16. package/dist/images/emoji/pipe.png +0 -0
  17. package/dist/images/emoji/siyuan.png +0 -0
  18. package/dist/images/emoji/solo.png +0 -0
  19. package/dist/images/emoji/sym.png +0 -0
  20. package/dist/images/emoji/trollface.png +0 -0
  21. package/dist/images/emoji/vditor.png +0 -0
  22. package/dist/images/emoji/wide.png +0 -0
  23. package/dist/images/emoji/wulian.png +0 -0
  24. package/dist/images/img-loading.svg +1 -0
  25. package/dist/images/logo.png +0 -0
  26. package/dist/index.css +1919 -0
  27. package/dist/index.d.ts +82 -0
  28. package/dist/index.js +18263 -0
  29. package/dist/index.min.js +1 -0
  30. package/dist/js/abcjs/abcjs_basic.min.js +3 -0
  31. package/dist/js/color-picker/color-picker.min.css +6 -0
  32. package/dist/js/color-picker/color-picker.nano.css +2 -0
  33. package/dist/js/color-picker/color-picker.nano.js +3 -0
  34. package/dist/js/docx/docx.min.js +1 -0
  35. package/dist/js/echarts/echarts.min.js +45 -0
  36. package/dist/js/flowchart.js/flowchart.min.js +8 -0
  37. package/dist/js/graphviz/full.render.js +90 -0
  38. package/dist/js/graphviz/viz.js +333 -0
  39. package/dist/js/highlight.js/LICENSE +29 -0
  40. package/dist/js/highlight.js/highlight.min.js +3835 -0
  41. package/dist/js/highlight.js/styles/a11y-dark.min.css +7 -0
  42. package/dist/js/highlight.js/styles/a11y-light.min.css +7 -0
  43. package/dist/js/highlight.js/styles/agate.min.css +20 -0
  44. package/dist/js/highlight.js/styles/an-old-hope.min.css +9 -0
  45. package/dist/js/highlight.js/styles/androidstudio.min.css +1 -0
  46. package/dist/js/highlight.js/styles/ant-design.min.css +84 -0
  47. package/dist/js/highlight.js/styles/arduino-light.min.css +1 -0
  48. package/dist/js/highlight.js/styles/arta.min.css +1 -0
  49. package/dist/js/highlight.js/styles/ascetic.min.css +1 -0
  50. package/dist/js/highlight.js/styles/atom-one-dark-reasonable.min.css +1 -0
  51. package/dist/js/highlight.js/styles/atom-one-dark.min.css +1 -0
  52. package/dist/js/highlight.js/styles/atom-one-light.min.css +1 -0
  53. package/dist/js/highlight.js/styles/base16/3024.min.css +7 -0
  54. package/dist/js/highlight.js/styles/base16/apathy.min.css +7 -0
  55. package/dist/js/highlight.js/styles/base16/apprentice.min.css +7 -0
  56. package/dist/js/highlight.js/styles/base16/ashes.min.css +7 -0
  57. package/dist/js/highlight.js/styles/base16/atelier-cave-light.min.css +7 -0
  58. package/dist/js/highlight.js/styles/base16/atelier-cave.min.css +7 -0
  59. package/dist/js/highlight.js/styles/base16/atelier-dune-light.min.css +7 -0
  60. package/dist/js/highlight.js/styles/base16/atelier-dune.min.css +7 -0
  61. package/dist/js/highlight.js/styles/base16/atelier-estuary-light.min.css +7 -0
  62. package/dist/js/highlight.js/styles/base16/atelier-estuary.min.css +7 -0
  63. package/dist/js/highlight.js/styles/base16/atelier-forest-light.min.css +7 -0
  64. package/dist/js/highlight.js/styles/base16/atelier-forest.min.css +7 -0
  65. package/dist/js/highlight.js/styles/base16/atelier-heath-light.min.css +7 -0
  66. package/dist/js/highlight.js/styles/base16/atelier-heath.min.css +7 -0
  67. package/dist/js/highlight.js/styles/base16/atelier-lakeside-light.min.css +7 -0
  68. package/dist/js/highlight.js/styles/base16/atelier-lakeside.min.css +7 -0
  69. package/dist/js/highlight.js/styles/base16/atelier-plateau-light.min.css +7 -0
  70. package/dist/js/highlight.js/styles/base16/atelier-plateau.min.css +7 -0
  71. package/dist/js/highlight.js/styles/base16/atelier-savanna-light.min.css +7 -0
  72. package/dist/js/highlight.js/styles/base16/atelier-savanna.min.css +7 -0
  73. package/dist/js/highlight.js/styles/base16/atelier-seaside-light.min.css +7 -0
  74. package/dist/js/highlight.js/styles/base16/atelier-seaside.min.css +7 -0
  75. package/dist/js/highlight.js/styles/base16/atelier-sulphurpool-light.min.css +7 -0
  76. package/dist/js/highlight.js/styles/base16/atelier-sulphurpool.min.css +7 -0
  77. package/dist/js/highlight.js/styles/base16/atlas.min.css +7 -0
  78. package/dist/js/highlight.js/styles/base16/bespin.min.css +7 -0
  79. package/dist/js/highlight.js/styles/base16/black-metal-bathory.min.css +7 -0
  80. package/dist/js/highlight.js/styles/base16/black-metal-burzum.min.css +7 -0
  81. package/dist/js/highlight.js/styles/base16/black-metal-dark-funeral.min.css +7 -0
  82. package/dist/js/highlight.js/styles/base16/black-metal-gorgoroth.min.css +7 -0
  83. package/dist/js/highlight.js/styles/base16/black-metal-immortal.min.css +7 -0
  84. package/dist/js/highlight.js/styles/base16/black-metal-khold.min.css +7 -0
  85. package/dist/js/highlight.js/styles/base16/black-metal-marduk.min.css +7 -0
  86. package/dist/js/highlight.js/styles/base16/black-metal-mayhem.min.css +7 -0
  87. package/dist/js/highlight.js/styles/base16/black-metal-nile.min.css +7 -0
  88. package/dist/js/highlight.js/styles/base16/black-metal-venom.min.css +7 -0
  89. package/dist/js/highlight.js/styles/base16/black-metal.min.css +7 -0
  90. package/dist/js/highlight.js/styles/base16/brewer.min.css +7 -0
  91. package/dist/js/highlight.js/styles/base16/bright.min.css +7 -0
  92. package/dist/js/highlight.js/styles/base16/brogrammer.min.css +7 -0
  93. package/dist/js/highlight.js/styles/base16/brush-trees-dark.min.css +7 -0
  94. package/dist/js/highlight.js/styles/base16/brush-trees.min.css +7 -0
  95. package/dist/js/highlight.js/styles/base16/chalk.min.css +7 -0
  96. package/dist/js/highlight.js/styles/base16/circus.min.css +7 -0
  97. package/dist/js/highlight.js/styles/base16/classic-dark.min.css +7 -0
  98. package/dist/js/highlight.js/styles/base16/classic-light.min.css +7 -0
  99. package/dist/js/highlight.js/styles/base16/codeschool.min.css +7 -0
  100. package/dist/js/highlight.js/styles/base16/colors.min.css +7 -0
  101. package/dist/js/highlight.js/styles/base16/cupcake.min.css +7 -0
  102. package/dist/js/highlight.js/styles/base16/cupertino.min.css +7 -0
  103. package/dist/js/highlight.js/styles/base16/danqing.min.css +7 -0
  104. package/dist/js/highlight.js/styles/base16/darcula.min.css +7 -0
  105. package/dist/js/highlight.js/styles/base16/dark-violet.min.css +7 -0
  106. package/dist/js/highlight.js/styles/base16/darkmoss.min.css +7 -0
  107. package/dist/js/highlight.js/styles/base16/darktooth.min.css +7 -0
  108. package/dist/js/highlight.js/styles/base16/decaf.min.css +7 -0
  109. package/dist/js/highlight.js/styles/base16/default-dark.min.css +7 -0
  110. package/dist/js/highlight.js/styles/base16/default-light.min.css +7 -0
  111. package/dist/js/highlight.js/styles/base16/dirtysea.min.css +7 -0
  112. package/dist/js/highlight.js/styles/base16/dracula.min.css +7 -0
  113. package/dist/js/highlight.js/styles/base16/edge-dark.min.css +7 -0
  114. package/dist/js/highlight.js/styles/base16/edge-light.min.css +7 -0
  115. package/dist/js/highlight.js/styles/base16/eighties.min.css +7 -0
  116. package/dist/js/highlight.js/styles/base16/embers.min.css +7 -0
  117. package/dist/js/highlight.js/styles/base16/equilibrium-dark.min.css +7 -0
  118. package/dist/js/highlight.js/styles/base16/equilibrium-gray-dark.min.css +7 -0
  119. package/dist/js/highlight.js/styles/base16/equilibrium-gray-light.min.css +7 -0
  120. package/dist/js/highlight.js/styles/base16/equilibrium-light.min.css +7 -0
  121. package/dist/js/highlight.js/styles/base16/espresso.min.css +7 -0
  122. package/dist/js/highlight.js/styles/base16/eva-dim.min.css +7 -0
  123. package/dist/js/highlight.js/styles/base16/eva.min.css +7 -0
  124. package/dist/js/highlight.js/styles/base16/flat.min.css +7 -0
  125. package/dist/js/highlight.js/styles/base16/framer.min.css +7 -0
  126. package/dist/js/highlight.js/styles/base16/fruit-soda.min.css +7 -0
  127. package/dist/js/highlight.js/styles/base16/gigavolt.min.css +7 -0
  128. package/dist/js/highlight.js/styles/base16/github.min.css +7 -0
  129. package/dist/js/highlight.js/styles/base16/google-dark.min.css +7 -0
  130. package/dist/js/highlight.js/styles/base16/google-light.min.css +7 -0
  131. package/dist/js/highlight.js/styles/base16/grayscale-dark.min.css +7 -0
  132. package/dist/js/highlight.js/styles/base16/grayscale-light.min.css +7 -0
  133. package/dist/js/highlight.js/styles/base16/green-screen.min.css +7 -0
  134. package/dist/js/highlight.js/styles/base16/gruvbox-dark-hard.min.css +7 -0
  135. package/dist/js/highlight.js/styles/base16/gruvbox-dark-medium.min.css +7 -0
  136. package/dist/js/highlight.js/styles/base16/gruvbox-dark-pale.min.css +7 -0
  137. package/dist/js/highlight.js/styles/base16/gruvbox-dark-soft.min.css +7 -0
  138. package/dist/js/highlight.js/styles/base16/gruvbox-light-hard.min.css +7 -0
  139. package/dist/js/highlight.js/styles/base16/gruvbox-light-medium.min.css +7 -0
  140. package/dist/js/highlight.js/styles/base16/gruvbox-light-soft.min.css +7 -0
  141. package/dist/js/highlight.js/styles/base16/hardcore.min.css +7 -0
  142. package/dist/js/highlight.js/styles/base16/harmonic16-dark.min.css +7 -0
  143. package/dist/js/highlight.js/styles/base16/harmonic16-light.min.css +7 -0
  144. package/dist/js/highlight.js/styles/base16/heetch-dark.min.css +7 -0
  145. package/dist/js/highlight.js/styles/base16/heetch-light.min.css +7 -0
  146. package/dist/js/highlight.js/styles/base16/helios.min.css +7 -0
  147. package/dist/js/highlight.js/styles/base16/hopscotch.min.css +7 -0
  148. package/dist/js/highlight.js/styles/base16/horizon-dark.min.css +7 -0
  149. package/dist/js/highlight.js/styles/base16/horizon-light.min.css +7 -0
  150. package/dist/js/highlight.js/styles/base16/humanoid-dark.min.css +7 -0
  151. package/dist/js/highlight.js/styles/base16/humanoid-light.min.css +7 -0
  152. package/dist/js/highlight.js/styles/base16/ia-dark.min.css +7 -0
  153. package/dist/js/highlight.js/styles/base16/ia-light.min.css +7 -0
  154. package/dist/js/highlight.js/styles/base16/icy-dark.min.css +7 -0
  155. package/dist/js/highlight.js/styles/base16/ir-black.min.css +7 -0
  156. package/dist/js/highlight.js/styles/base16/isotope.min.css +7 -0
  157. package/dist/js/highlight.js/styles/base16/kimber.min.css +7 -0
  158. package/dist/js/highlight.js/styles/base16/london-tube.min.css +7 -0
  159. package/dist/js/highlight.js/styles/base16/macintosh.min.css +7 -0
  160. package/dist/js/highlight.js/styles/base16/marrakesh.min.css +7 -0
  161. package/dist/js/highlight.js/styles/base16/materia.min.css +7 -0
  162. package/dist/js/highlight.js/styles/base16/material-darker.min.css +7 -0
  163. package/dist/js/highlight.js/styles/base16/material-lighter.min.css +7 -0
  164. package/dist/js/highlight.js/styles/base16/material-palenight.min.css +7 -0
  165. package/dist/js/highlight.js/styles/base16/material-vivid.min.css +7 -0
  166. package/dist/js/highlight.js/styles/base16/material.min.css +7 -0
  167. package/dist/js/highlight.js/styles/base16/mellow-purple.min.css +7 -0
  168. package/dist/js/highlight.js/styles/base16/mexico-light.min.css +7 -0
  169. package/dist/js/highlight.js/styles/base16/mocha.min.css +7 -0
  170. package/dist/js/highlight.js/styles/base16/monokai.min.css +7 -0
  171. package/dist/js/highlight.js/styles/base16/nebula.min.css +7 -0
  172. package/dist/js/highlight.js/styles/base16/nord.min.css +7 -0
  173. package/dist/js/highlight.js/styles/base16/nova.min.css +7 -0
  174. package/dist/js/highlight.js/styles/base16/ocean.min.css +7 -0
  175. package/dist/js/highlight.js/styles/base16/oceanicnext.min.css +7 -0
  176. package/dist/js/highlight.js/styles/base16/one-light.min.css +7 -0
  177. package/dist/js/highlight.js/styles/base16/onedark.min.css +7 -0
  178. package/dist/js/highlight.js/styles/base16/outrun-dark.min.css +7 -0
  179. package/dist/js/highlight.js/styles/base16/papercolor-dark.min.css +7 -0
  180. package/dist/js/highlight.js/styles/base16/papercolor-light.min.css +7 -0
  181. package/dist/js/highlight.js/styles/base16/paraiso.min.css +7 -0
  182. package/dist/js/highlight.js/styles/base16/pasque.min.css +7 -0
  183. package/dist/js/highlight.js/styles/base16/phd.min.css +7 -0
  184. package/dist/js/highlight.js/styles/base16/pico.min.css +7 -0
  185. package/dist/js/highlight.js/styles/base16/pop.min.css +7 -0
  186. package/dist/js/highlight.js/styles/base16/porple.min.css +7 -0
  187. package/dist/js/highlight.js/styles/base16/qualia.min.css +7 -0
  188. package/dist/js/highlight.js/styles/base16/railscasts.min.css +7 -0
  189. package/dist/js/highlight.js/styles/base16/rebecca.min.css +7 -0
  190. package/dist/js/highlight.js/styles/base16/ros-pine-dawn.min.css +7 -0
  191. package/dist/js/highlight.js/styles/base16/ros-pine-moon.min.css +7 -0
  192. package/dist/js/highlight.js/styles/base16/ros-pine.min.css +7 -0
  193. package/dist/js/highlight.js/styles/base16/sagelight.min.css +7 -0
  194. package/dist/js/highlight.js/styles/base16/sandcastle.min.css +7 -0
  195. package/dist/js/highlight.js/styles/base16/seti-ui.min.css +7 -0
  196. package/dist/js/highlight.js/styles/base16/shapeshifter.min.css +7 -0
  197. package/dist/js/highlight.js/styles/base16/silk-dark.min.css +7 -0
  198. package/dist/js/highlight.js/styles/base16/silk-light.min.css +7 -0
  199. package/dist/js/highlight.js/styles/base16/snazzy.min.css +7 -0
  200. package/dist/js/highlight.js/styles/base16/solar-flare-light.min.css +7 -0
  201. package/dist/js/highlight.js/styles/base16/solar-flare.min.css +7 -0
  202. package/dist/js/highlight.js/styles/base16/solarized-dark.min.css +7 -0
  203. package/dist/js/highlight.js/styles/base16/solarized-light.min.css +7 -0
  204. package/dist/js/highlight.js/styles/base16/spacemacs.min.css +7 -0
  205. package/dist/js/highlight.js/styles/base16/summercamp.min.css +7 -0
  206. package/dist/js/highlight.js/styles/base16/summerfruit-dark.min.css +7 -0
  207. package/dist/js/highlight.js/styles/base16/summerfruit-light.min.css +7 -0
  208. package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-dark.min.css +7 -0
  209. package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-light.min.css +7 -0
  210. package/dist/js/highlight.js/styles/base16/tango.min.css +7 -0
  211. package/dist/js/highlight.js/styles/base16/tender.min.css +7 -0
  212. package/dist/js/highlight.js/styles/base16/tomorrow-night.min.css +7 -0
  213. package/dist/js/highlight.js/styles/base16/tomorrow.min.css +7 -0
  214. package/dist/js/highlight.js/styles/base16/twilight.min.css +7 -0
  215. package/dist/js/highlight.js/styles/base16/unikitty-dark.min.css +7 -0
  216. package/dist/js/highlight.js/styles/base16/unikitty-light.min.css +7 -0
  217. package/dist/js/highlight.js/styles/base16/vulcan.min.css +7 -0
  218. package/dist/js/highlight.js/styles/base16/windows-10-light.min.css +7 -0
  219. package/dist/js/highlight.js/styles/base16/windows-10.min.css +7 -0
  220. package/dist/js/highlight.js/styles/base16/windows-95-light.min.css +7 -0
  221. package/dist/js/highlight.js/styles/base16/windows-95.min.css +7 -0
  222. package/dist/js/highlight.js/styles/base16/windows-high-contrast-light.min.css +7 -0
  223. package/dist/js/highlight.js/styles/base16/windows-high-contrast.min.css +7 -0
  224. package/dist/js/highlight.js/styles/base16/windows-nt-light.min.css +7 -0
  225. package/dist/js/highlight.js/styles/base16/windows-nt.min.css +7 -0
  226. package/dist/js/highlight.js/styles/base16/woodland.min.css +7 -0
  227. package/dist/js/highlight.js/styles/base16/xcode-dusk.min.css +7 -0
  228. package/dist/js/highlight.js/styles/base16/zenburn.min.css +7 -0
  229. package/dist/js/highlight.js/styles/brown-paper.min.css +1 -0
  230. package/dist/js/highlight.js/styles/brown-papersq.png +0 -0
  231. package/dist/js/highlight.js/styles/codepen-embed.min.css +1 -0
  232. package/dist/js/highlight.js/styles/color-brewer.min.css +1 -0
  233. package/dist/js/highlight.js/styles/dark.min.css +1 -0
  234. package/dist/js/highlight.js/styles/default.min.css +9 -0
  235. package/dist/js/highlight.js/styles/devibeans.min.css +7 -0
  236. package/dist/js/highlight.js/styles/docco.min.css +1 -0
  237. package/dist/js/highlight.js/styles/far.min.css +1 -0
  238. package/dist/js/highlight.js/styles/felipec.min.css +7 -0
  239. package/dist/js/highlight.js/styles/foundation.min.css +1 -0
  240. package/dist/js/highlight.js/styles/github-dark-dimmed.min.css +9 -0
  241. package/dist/js/highlight.js/styles/github-dark.min.css +10 -0
  242. package/dist/js/highlight.js/styles/github.min.css +10 -0
  243. package/dist/js/highlight.js/styles/gml.min.css +1 -0
  244. package/dist/js/highlight.js/styles/googlecode.min.css +1 -0
  245. package/dist/js/highlight.js/styles/gradient-dark.min.css +1 -0
  246. package/dist/js/highlight.js/styles/gradient-light.min.css +1 -0
  247. package/dist/js/highlight.js/styles/grayscale.min.css +1 -0
  248. package/dist/js/highlight.js/styles/hybrid.min.css +1 -0
  249. package/dist/js/highlight.js/styles/idea.min.css +1 -0
  250. package/dist/js/highlight.js/styles/intellij-light.min.css +1 -0
  251. package/dist/js/highlight.js/styles/ir-black.min.css +1 -0
  252. package/dist/js/highlight.js/styles/isbl-editor-dark.min.css +1 -0
  253. package/dist/js/highlight.js/styles/isbl-editor-light.min.css +1 -0
  254. package/dist/js/highlight.js/styles/kimbie-dark.min.css +1 -0
  255. package/dist/js/highlight.js/styles/kimbie-light.min.css +1 -0
  256. package/dist/js/highlight.js/styles/lightfair.min.css +1 -0
  257. package/dist/js/highlight.js/styles/lioshi.min.css +1 -0
  258. package/dist/js/highlight.js/styles/magula.min.css +1 -0
  259. package/dist/js/highlight.js/styles/mono-blue.min.css +1 -0
  260. package/dist/js/highlight.js/styles/monokai-sublime.min.css +1 -0
  261. package/dist/js/highlight.js/styles/monokai.min.css +1 -0
  262. package/dist/js/highlight.js/styles/night-owl.min.css +1 -0
  263. package/dist/js/highlight.js/styles/nnfx-dark.min.css +10 -0
  264. package/dist/js/highlight.js/styles/nnfx-light.min.css +10 -0
  265. package/dist/js/highlight.js/styles/nord.min.css +1 -0
  266. package/dist/js/highlight.js/styles/obsidian.min.css +1 -0
  267. package/dist/js/highlight.js/styles/panda-syntax-dark.min.css +1 -0
  268. package/dist/js/highlight.js/styles/panda-syntax-light.min.css +1 -0
  269. package/dist/js/highlight.js/styles/paraiso-dark.min.css +1 -0
  270. package/dist/js/highlight.js/styles/paraiso-light.min.css +1 -0
  271. package/dist/js/highlight.js/styles/pojoaque.jpg +0 -0
  272. package/dist/js/highlight.js/styles/pojoaque.min.css +1 -0
  273. package/dist/js/highlight.js/styles/purebasic.min.css +1 -0
  274. package/dist/js/highlight.js/styles/qtcreator-dark.min.css +1 -0
  275. package/dist/js/highlight.js/styles/qtcreator-light.min.css +1 -0
  276. package/dist/js/highlight.js/styles/rainbow.min.css +1 -0
  277. package/dist/js/highlight.js/styles/routeros.min.css +1 -0
  278. package/dist/js/highlight.js/styles/school-book.min.css +1 -0
  279. package/dist/js/highlight.js/styles/shades-of-purple.min.css +1 -0
  280. package/dist/js/highlight.js/styles/srcery.min.css +1 -0
  281. package/dist/js/highlight.js/styles/stackoverflow-dark.min.css +13 -0
  282. package/dist/js/highlight.js/styles/stackoverflow-light.min.css +13 -0
  283. package/dist/js/highlight.js/styles/sunburst.min.css +1 -0
  284. package/dist/js/highlight.js/styles/tokyo-night-dark.min.css +8 -0
  285. package/dist/js/highlight.js/styles/tokyo-night-light.min.css +8 -0
  286. package/dist/js/highlight.js/styles/tomorrow-night-blue.min.css +1 -0
  287. package/dist/js/highlight.js/styles/tomorrow-night-bright.min.css +1 -0
  288. package/dist/js/highlight.js/styles/vs.min.css +1 -0
  289. package/dist/js/highlight.js/styles/vs2015.min.css +1 -0
  290. package/dist/js/highlight.js/styles/xcode.min.css +1 -0
  291. package/dist/js/highlight.js/styles/xt256.min.css +1 -0
  292. package/dist/js/highlight.js/third-languages.js +135 -0
  293. package/dist/js/html2canvas/html2canvas.min.20251104.js +20 -0
  294. package/dist/js/html2canvas/html2canvas.min.js +20 -0
  295. package/dist/js/i18n/de_DE.js +86 -0
  296. package/dist/js/i18n/en_US.js +86 -0
  297. package/dist/js/i18n/es_ES.js +86 -0
  298. package/dist/js/i18n/fr_FR.js +86 -0
  299. package/dist/js/i18n/ja_JP.js +86 -0
  300. package/dist/js/i18n/ko_KR.js +86 -0
  301. package/dist/js/i18n/pt_BR.js +86 -0
  302. package/dist/js/i18n/ru_RU.js +86 -0
  303. package/dist/js/i18n/sv_SE.js +86 -0
  304. package/dist/js/i18n/vi_VN.js +86 -0
  305. package/dist/js/i18n/zh_CN.js +86 -0
  306. package/dist/js/i18n/zh_TW.js +86 -0
  307. package/dist/js/icons/ant.js +174 -0
  308. package/dist/js/icons/material.js +195 -0
  309. package/dist/js/jspdf/jspdf.umd.min.20251104.js +398 -0
  310. package/dist/js/jspdf/jspdf.umd.min.js +398 -0
  311. package/dist/js/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  312. package/dist/js/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  313. package/dist/js/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  314. package/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  315. package/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  316. package/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  317. package/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  318. package/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  319. package/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  320. package/dist/js/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  321. package/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  322. package/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  323. package/dist/js/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  324. package/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  325. package/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  326. package/dist/js/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  327. package/dist/js/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  328. package/dist/js/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  329. package/dist/js/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  330. package/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  331. package/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  332. package/dist/js/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  333. package/dist/js/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  334. package/dist/js/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  335. package/dist/js/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  336. package/dist/js/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  337. package/dist/js/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  338. package/dist/js/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  339. package/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  340. package/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  341. package/dist/js/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  342. package/dist/js/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  343. package/dist/js/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  344. package/dist/js/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  345. package/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  346. package/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  347. package/dist/js/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  348. package/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  349. package/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  350. package/dist/js/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  351. package/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  352. package/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  353. package/dist/js/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  354. package/dist/js/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  355. package/dist/js/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  356. package/dist/js/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  357. package/dist/js/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  358. package/dist/js/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  359. package/dist/js/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  360. package/dist/js/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  361. package/dist/js/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  362. package/dist/js/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  363. package/dist/js/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  364. package/dist/js/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  365. package/dist/js/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  366. package/dist/js/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  367. package/dist/js/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  368. package/dist/js/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  369. package/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  370. package/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  371. package/dist/js/katex/katex.min.css +1 -0
  372. package/dist/js/katex/katex.min.js +1 -0
  373. package/dist/js/katex/mhchem.min.js +1 -0
  374. package/dist/js/lute/lute.min.js +1 -0
  375. package/dist/js/markmap/katex.min.css +1 -0
  376. package/dist/js/markmap/markmap.min.js +8251 -0
  377. package/dist/js/markmap/prism.css +140 -0
  378. package/dist/js/mathjax/LICENSE +202 -0
  379. package/dist/js/mathjax/a11y/assistive-mml.js +1 -0
  380. package/dist/js/mathjax/a11y/complexity.js +1 -0
  381. package/dist/js/mathjax/a11y/explorer.js +1 -0
  382. package/dist/js/mathjax/a11y/semantic-enrich.js +1 -0
  383. package/dist/js/mathjax/input/asciimath.js +1 -0
  384. package/dist/js/mathjax/input/mml/entities.js +1 -0
  385. package/dist/js/mathjax/input/mml.js +1 -0
  386. package/dist/js/mathjax/input/tex/extensions/action.js +1 -0
  387. package/dist/js/mathjax/input/tex/extensions/all-packages.js +1 -0
  388. package/dist/js/mathjax/input/tex/extensions/ams.js +1 -0
  389. package/dist/js/mathjax/input/tex/extensions/amscd.js +1 -0
  390. package/dist/js/mathjax/input/tex/extensions/autoload.js +1 -0
  391. package/dist/js/mathjax/input/tex/extensions/bbox.js +1 -0
  392. package/dist/js/mathjax/input/tex/extensions/boldsymbol.js +1 -0
  393. package/dist/js/mathjax/input/tex/extensions/braket.js +1 -0
  394. package/dist/js/mathjax/input/tex/extensions/bussproofs.js +1 -0
  395. package/dist/js/mathjax/input/tex/extensions/cancel.js +1 -0
  396. package/dist/js/mathjax/input/tex/extensions/color.js +1 -0
  397. package/dist/js/mathjax/input/tex/extensions/colorV2.js +1 -0
  398. package/dist/js/mathjax/input/tex/extensions/configMacros.js +1 -0
  399. package/dist/js/mathjax/input/tex/extensions/enclose.js +1 -0
  400. package/dist/js/mathjax/input/tex/extensions/extpfeil.js +1 -0
  401. package/dist/js/mathjax/input/tex/extensions/html.js +1 -0
  402. package/dist/js/mathjax/input/tex/extensions/mhchem.js +1 -0
  403. package/dist/js/mathjax/input/tex/extensions/newcommand.js +1 -0
  404. package/dist/js/mathjax/input/tex/extensions/noerrors.js +1 -0
  405. package/dist/js/mathjax/input/tex/extensions/noundefined.js +1 -0
  406. package/dist/js/mathjax/input/tex/extensions/physics.js +1 -0
  407. package/dist/js/mathjax/input/tex/extensions/require.js +1 -0
  408. package/dist/js/mathjax/input/tex/extensions/tagFormat.js +1 -0
  409. package/dist/js/mathjax/input/tex/extensions/textmacros.js +1 -0
  410. package/dist/js/mathjax/input/tex/extensions/unicode.js +1 -0
  411. package/dist/js/mathjax/input/tex/extensions/verb.js +1 -0
  412. package/dist/js/mathjax/input/tex-base.js +1 -0
  413. package/dist/js/mathjax/input/tex-full.js +1 -0
  414. package/dist/js/mathjax/input/tex.js +1 -0
  415. package/dist/js/mathjax/sre/mathmaps/de.js +104 -0
  416. package/dist/js/mathjax/sre/mathmaps/en.js +110 -0
  417. package/dist/js/mathjax/sre/mathmaps/es.js +104 -0
  418. package/dist/js/mathjax/sre/mathmaps/fr.js +104 -0
  419. package/dist/js/mathjax/sre/mathmaps/mathmaps_ie.js +518 -0
  420. package/dist/js/mathjax/sre/mathmaps/nemeth.js +104 -0
  421. package/dist/js/mathjax/sre/sre-node.js +11 -0
  422. package/dist/js/mathjax/sre/sre_browser.js +1633 -0
  423. package/dist/js/mathjax/tex-svg-full.js +1 -0
  424. package/dist/js/mermaid/mermaid.min.js +2694 -0
  425. package/dist/js/plantuml/plantuml-encoder.min.js +1 -0
  426. package/dist/js/smiles-drawer/smiles-drawer.min.js +71 -0
  427. package/dist/method.d.ts +51 -0
  428. package/dist/method.js +4532 -0
  429. package/dist/method.min.js +1 -0
  430. package/dist/ts/constants.d.ts +46 -0
  431. package/dist/ts/devtools/index.d.ts +6 -0
  432. package/dist/ts/export/index.d.ts +4 -0
  433. package/dist/ts/hint/index.d.ts +13 -0
  434. package/dist/ts/ir/expandMarker.d.ts +1 -0
  435. package/dist/ts/ir/highlightToolbarIR.d.ts +1 -0
  436. package/dist/ts/ir/index.d.ts +12 -0
  437. package/dist/ts/ir/input.d.ts +1 -0
  438. package/dist/ts/ir/process.d.ts +8 -0
  439. package/dist/ts/ir/processKeydown.d.ts +1 -0
  440. package/dist/ts/markdown/SMILESRender.d.ts +1 -0
  441. package/dist/ts/markdown/abcRender.d.ts +1 -0
  442. package/dist/ts/markdown/adapterRender.d.ts +51 -0
  443. package/dist/ts/markdown/anchorRender.d.ts +1 -0
  444. package/dist/ts/markdown/chartRender.d.ts +1 -0
  445. package/dist/ts/markdown/codeRender.d.ts +1 -0
  446. package/dist/ts/markdown/flowchartRender.d.ts +1 -0
  447. package/dist/ts/markdown/getHTML.d.ts +1 -0
  448. package/dist/ts/markdown/getMarkdown.d.ts +1 -0
  449. package/dist/ts/markdown/graphvizRender.d.ts +1 -0
  450. package/dist/ts/markdown/highlightRender.d.ts +1 -0
  451. package/dist/ts/markdown/lazyLoadImageRender.d.ts +6 -0
  452. package/dist/ts/markdown/markmapRender.d.ts +1 -0
  453. package/dist/ts/markdown/mathContextMenu.d.ts +17 -0
  454. package/dist/ts/markdown/mathRender.d.ts +19 -0
  455. package/dist/ts/markdown/mediaRender.d.ts +1 -0
  456. package/dist/ts/markdown/mermaidRender.d.ts +1 -0
  457. package/dist/ts/markdown/mindmapRender.d.ts +1 -0
  458. package/dist/ts/markdown/outlineRender.d.ts +1 -0
  459. package/dist/ts/markdown/plantumlRender.d.ts +1 -0
  460. package/dist/ts/markdown/previewRender.d.ts +2 -0
  461. package/dist/ts/markdown/setLute.d.ts +1 -0
  462. package/dist/ts/markdown/speechRender.d.ts +6 -0
  463. package/dist/ts/outline/index.d.ts +6 -0
  464. package/dist/ts/preview/image.d.ts +1 -0
  465. package/dist/ts/preview/index.d.ts +26 -0
  466. package/dist/ts/resize/index.d.ts +5 -0
  467. package/dist/ts/sv/combineFootnote.d.ts +6 -0
  468. package/dist/ts/sv/index.d.ts +12 -0
  469. package/dist/ts/sv/inputEvent.d.ts +1 -0
  470. package/dist/ts/sv/process.d.ts +11 -0
  471. package/dist/ts/sv/processKeydown.d.ts +1 -0
  472. package/dist/ts/tip/index.d.ts +6 -0
  473. package/dist/ts/toolbar/Both.d.ts +4 -0
  474. package/dist/ts/toolbar/Br.d.ts +4 -0
  475. package/dist/ts/toolbar/CodeTheme.d.ts +5 -0
  476. package/dist/ts/toolbar/ContentTheme.d.ts +5 -0
  477. package/dist/ts/toolbar/Counter.d.ts +5 -0
  478. package/dist/ts/toolbar/Custom.d.ts +4 -0
  479. package/dist/ts/toolbar/Devtools.d.ts +4 -0
  480. package/dist/ts/toolbar/Divider.d.ts +4 -0
  481. package/dist/ts/toolbar/EditMode.d.ts +7 -0
  482. package/dist/ts/toolbar/Emoji.d.ts +6 -0
  483. package/dist/ts/toolbar/Export.d.ts +5 -0
  484. package/dist/ts/toolbar/Fullscreen.d.ts +5 -0
  485. package/dist/ts/toolbar/Headings.d.ts +6 -0
  486. package/dist/ts/toolbar/Help.d.ts +4 -0
  487. package/dist/ts/toolbar/Indent.d.ts +4 -0
  488. package/dist/ts/toolbar/Info.d.ts +4 -0
  489. package/dist/ts/toolbar/InsertAfter.d.ts +4 -0
  490. package/dist/ts/toolbar/InsertBefore.d.ts +4 -0
  491. package/dist/ts/toolbar/MenuItem.d.ts +4 -0
  492. package/dist/ts/toolbar/Outdent.d.ts +4 -0
  493. package/dist/ts/toolbar/Outline.d.ts +4 -0
  494. package/dist/ts/toolbar/Preview.d.ts +5 -0
  495. package/dist/ts/toolbar/Record.d.ts +5 -0
  496. package/dist/ts/toolbar/Redo.d.ts +4 -0
  497. package/dist/ts/toolbar/Undo.d.ts +4 -0
  498. package/dist/ts/toolbar/Upload.d.ts +5 -0
  499. package/dist/ts/toolbar/index.d.ts +9 -0
  500. package/dist/ts/toolbar/setToolbar.d.ts +20 -0
  501. package/dist/ts/ui/initUI.d.ts +4 -0
  502. package/dist/ts/ui/setCodeTheme.d.ts +1 -0
  503. package/dist/ts/ui/setContentTheme.d.ts +1 -0
  504. package/dist/ts/ui/setPreviewMode.d.ts +1 -0
  505. package/dist/ts/ui/setTheme.d.ts +6 -0
  506. package/dist/ts/undo/index.d.ts +18 -0
  507. package/dist/ts/upload/getElement.d.ts +1 -0
  508. package/dist/ts/upload/index.d.ts +8 -0
  509. package/dist/ts/upload/setHeaders.d.ts +1 -0
  510. package/dist/ts/util/Options.d.ts +19 -0
  511. package/dist/ts/util/RecordMedia.d.ts +18 -0
  512. package/dist/ts/util/addScript.d.ts +2 -0
  513. package/dist/ts/util/addStyle.d.ts +1 -0
  514. package/dist/ts/util/code160to32.d.ts +1 -0
  515. package/dist/ts/util/compatibility.d.ts +7 -0
  516. package/dist/ts/util/editorCommonEvent.d.ts +13 -0
  517. package/dist/ts/util/fixBrowserBehavior.d.ts +39 -0
  518. package/dist/ts/util/function.d.ts +3 -0
  519. package/dist/ts/util/getSelectText.d.ts +1 -0
  520. package/dist/ts/util/hasClosest.d.ts +9 -0
  521. package/dist/ts/util/hasClosestByHeadings.d.ts +2 -0
  522. package/dist/ts/util/highlightToolbar.d.ts +1 -0
  523. package/dist/ts/util/hotKey.d.ts +1 -0
  524. package/dist/ts/util/log.d.ts +1 -0
  525. package/dist/ts/util/merge.d.ts +1 -0
  526. package/dist/ts/util/processCode.d.ts +2 -0
  527. package/dist/ts/util/selection.d.ts +14 -0
  528. package/dist/ts/util/toc.d.ts +5 -0
  529. package/dist/ts/wysiwyg/afterRenderEvent.d.ts +5 -0
  530. package/dist/ts/wysiwyg/highlightToolbarWYSIWYG.d.ts +9 -0
  531. package/dist/ts/wysiwyg/index.d.ts +27 -0
  532. package/dist/ts/wysiwyg/inlineTag.d.ts +10 -0
  533. package/dist/ts/wysiwyg/input.d.ts +1 -0
  534. package/dist/ts/wysiwyg/processKeydown.d.ts +2 -0
  535. package/dist/ts/wysiwyg/renderDomByMd.d.ts +5 -0
  536. package/dist/ts/wysiwyg/setHeading.d.ts +2 -0
  537. package/dist/ts/wysiwyg/showCode.d.ts +1 -0
  538. package/dist/ts/wysiwyg/toolbarEvent.d.ts +1 -0
  539. package/dist/types/index.d.ts +930 -0
  540. package/package.json +63 -0
  541. package/src/assets/less/_content.less +247 -0
  542. package/src/assets/less/_hint.less +67 -0
  543. package/src/assets/less/_ir.less +282 -0
  544. package/src/assets/less/_line-number.less +30 -0
  545. package/src/assets/less/_math-menu.less +78 -0
  546. package/src/assets/less/_panel.less +110 -0
  547. package/src/assets/less/_reset.less +628 -0
  548. package/src/assets/less/_sv.less +132 -0
  549. package/src/assets/less/_toolbar.less +180 -0
  550. package/src/assets/less/_tooltipped.less +171 -0
  551. package/src/assets/less/_wysiwyg.less +215 -0
  552. package/src/assets/less/index.less +99 -0
  553. package/src/index.ts +641 -0
  554. package/src/method.ts +71 -0
  555. package/src/ts/constants.ts +350 -0
  556. package/src/ts/devtools/index.ts +83 -0
  557. package/src/ts/export/index.ts +84 -0
  558. package/src/ts/hint/index.ts +276 -0
  559. package/src/ts/ir/expandMarker.ts +79 -0
  560. package/src/ts/ir/highlightToolbarIR.ts +97 -0
  561. package/src/ts/ir/index.ts +268 -0
  562. package/src/ts/ir/input.ts +250 -0
  563. package/src/ts/ir/process.ts +222 -0
  564. package/src/ts/ir/processKeydown.ts +238 -0
  565. package/src/ts/markdown/SMILESRender.ts +29 -0
  566. package/src/ts/markdown/abcRender.ts +27 -0
  567. package/src/ts/markdown/adapterRender.ts +96 -0
  568. package/src/ts/markdown/anchorRender.ts +19 -0
  569. package/src/ts/markdown/chartRender.ts +1153 -0
  570. package/src/ts/markdown/codeRender.ts +60 -0
  571. package/src/ts/markdown/flowchartRender.ts +25 -0
  572. package/src/ts/markdown/getHTML.ts +11 -0
  573. package/src/ts/markdown/getMarkdown.ts +12 -0
  574. package/src/ts/markdown/graphvizRender.ts +49 -0
  575. package/src/ts/markdown/highlightRender.ts +94 -0
  576. package/src/ts/markdown/lazyLoadImageRender.ts +56 -0
  577. package/src/ts/markdown/markmapRender.ts +56 -0
  578. package/src/ts/markdown/mathContextMenu.ts +423 -0
  579. package/src/ts/markdown/mathRender.ts +281 -0
  580. package/src/ts/markdown/mediaRender.ts +105 -0
  581. package/src/ts/markdown/mermaidRender.ts +60 -0
  582. package/src/ts/markdown/mindmapRender.ts +74 -0
  583. package/src/ts/markdown/outlineRender.ts +110 -0
  584. package/src/ts/markdown/plantumlRender.ts +32 -0
  585. package/src/ts/markdown/previewRender.ts +171 -0
  586. package/src/ts/markdown/setLute.ts +26 -0
  587. package/src/ts/markdown/speechRender.ts +107 -0
  588. package/src/ts/outline/index.ts +45 -0
  589. package/src/ts/preview/image.ts +50 -0
  590. package/src/ts/preview/index.ts +299 -0
  591. package/src/ts/resize/index.ts +57 -0
  592. package/src/ts/sv/combineFootnote.ts +27 -0
  593. package/src/ts/sv/index.ts +128 -0
  594. package/src/ts/sv/inputEvent.ts +188 -0
  595. package/src/ts/sv/process.ts +215 -0
  596. package/src/ts/sv/processKeydown.ts +202 -0
  597. package/src/ts/tip/index.ts +39 -0
  598. package/src/ts/toolbar/Both.ts +28 -0
  599. package/src/ts/toolbar/Br.ts +8 -0
  600. package/src/ts/toolbar/CodeTheme.ts +36 -0
  601. package/src/ts/toolbar/ContentTheme.ts +44 -0
  602. package/src/ts/toolbar/Counter.ts +40 -0
  603. package/src/ts/toolbar/Custom.ts +17 -0
  604. package/src/ts/toolbar/Devtools.ts +28 -0
  605. package/src/ts/toolbar/Divider.ts +8 -0
  606. package/src/ts/toolbar/EditMode.ts +198 -0
  607. package/src/ts/toolbar/Emoji.ts +79 -0
  608. package/src/ts/toolbar/Export.ts +41 -0
  609. package/src/ts/toolbar/Fullscreen.ts +66 -0
  610. package/src/ts/toolbar/Headings.ts +73 -0
  611. package/src/ts/toolbar/Help.ts +30 -0
  612. package/src/ts/toolbar/Indent.ts +25 -0
  613. package/src/ts/toolbar/Info.ts +28 -0
  614. package/src/ts/toolbar/InsertAfter.ts +18 -0
  615. package/src/ts/toolbar/InsertBefore.ts +18 -0
  616. package/src/ts/toolbar/MenuItem.ts +54 -0
  617. package/src/ts/toolbar/Outdent.ts +24 -0
  618. package/src/ts/toolbar/Outline.ts +21 -0
  619. package/src/ts/toolbar/Preview.ts +55 -0
  620. package/src/ts/toolbar/Record.ts +60 -0
  621. package/src/ts/toolbar/Redo.ts +18 -0
  622. package/src/ts/toolbar/Undo.ts +18 -0
  623. package/src/ts/toolbar/Upload.ts +41 -0
  624. package/src/ts/toolbar/index.ts +195 -0
  625. package/src/ts/toolbar/setToolbar.ts +120 -0
  626. package/src/ts/ui/initUI.ts +214 -0
  627. package/src/ts/ui/setCodeTheme.ts +16 -0
  628. package/src/ts/ui/setContentTheme.ts +15 -0
  629. package/src/ts/ui/setPreviewMode.ts +31 -0
  630. package/src/ts/ui/setTheme.ts +14 -0
  631. package/src/ts/undo/index.ts +270 -0
  632. package/src/ts/upload/getElement.ts +10 -0
  633. package/src/ts/upload/index.ts +273 -0
  634. package/src/ts/upload/setHeaders.ts +10 -0
  635. package/src/ts/util/Options.ts +458 -0
  636. package/src/ts/util/RecordMedia.ts +170 -0
  637. package/src/ts/util/addScript.ts +43 -0
  638. package/src/ts/util/addStyle.ts +10 -0
  639. package/src/ts/util/code160to32.ts +4 -0
  640. package/src/ts/util/compatibility.ts +67 -0
  641. package/src/ts/util/editorCommonEvent.ts +270 -0
  642. package/src/ts/util/fixBrowserBehavior.ts +2234 -0
  643. package/src/ts/util/function.ts +15 -0
  644. package/src/ts/util/getSelectText.ts +8 -0
  645. package/src/ts/util/hasClosest.ts +154 -0
  646. package/src/ts/util/hasClosestByHeadings.ts +27 -0
  647. package/src/ts/util/highlightToolbar.ts +10 -0
  648. package/src/ts/util/hotKey.ts +54 -0
  649. package/src/ts/util/log.ts +6 -0
  650. package/src/ts/util/merge.ts +18 -0
  651. package/src/ts/util/processCode.ts +218 -0
  652. package/src/ts/util/selection.ts +349 -0
  653. package/src/ts/util/toc.ts +83 -0
  654. package/src/ts/wysiwyg/afterRenderEvent.ts +41 -0
  655. package/src/ts/wysiwyg/highlightToolbarWYSIWYG.ts +1169 -0
  656. package/src/ts/wysiwyg/index.ts +604 -0
  657. package/src/ts/wysiwyg/inlineTag.ts +129 -0
  658. package/src/ts/wysiwyg/input.ts +212 -0
  659. package/src/ts/wysiwyg/processKeydown.ts +363 -0
  660. package/src/ts/wysiwyg/renderDomByMd.ts +18 -0
  661. package/src/ts/wysiwyg/setHeading.ts +43 -0
  662. package/src/ts/wysiwyg/showCode.ts +32 -0
  663. package/src/ts/wysiwyg/toolbarEvent.ts +333 -0
package/dist/method.js ADDED
@@ -0,0 +1,4532 @@
1
+ /*!
2
+ * Vditor v0.0.22 - A markdown editor written in TypeScript.
3
+ *
4
+ * MIT License
5
+ *
6
+ * Copyright (c) 2018-present B3log 开源, b3log.org
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ * of this software and associated documentation files (the "Software"), to deal
10
+ * in the Software without restriction, including without limitation the rights
11
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the Software is
13
+ * furnished to do so, subject to the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be included in all
16
+ * copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ * SOFTWARE.
25
+ *
26
+ */
27
+ (function webpackUniversalModuleDefinition(root, factory) {
28
+ if(typeof exports === 'object' && typeof module === 'object')
29
+ module.exports = factory();
30
+ else if(typeof define === 'function' && define.amd)
31
+ define([], factory);
32
+ else if(typeof exports === 'object')
33
+ exports["Vditor"] = factory();
34
+ else
35
+ root["Vditor"] = factory();
36
+ })(this, function() {
37
+ return /******/ (() => { // webpackBootstrap
38
+ /******/ "use strict";
39
+ /******/ var __webpack_modules__ = ({
40
+
41
+ /***/ 145:
42
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
43
+
44
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45
+ /* harmony export */ "g": () => (/* binding */ Constants)
46
+ /* harmony export */ });
47
+ /* unused harmony export VDITOR_VERSION */
48
+ var _VDITOR_VERSION = (/* unused pure expression or super */ null && ("0.0.22"));
49
+
50
+ var Constants = /** @class */ (function () {
51
+ function Constants() {
52
+ }
53
+ Constants.ZWSP = "\u200b";
54
+ Constants.DROP_EDITOR = "application/editor";
55
+ Constants.MOBILE_WIDTH = 520;
56
+ Constants.CLASS_MENU_DISABLED = "vditor-menu--disabled";
57
+ Constants.EDIT_TOOLBARS = [
58
+ "emoji",
59
+ "headings",
60
+ "bold",
61
+ "italic",
62
+ "strike",
63
+ "link",
64
+ "list",
65
+ "ordered-list",
66
+ "outdent",
67
+ "indent",
68
+ "check",
69
+ "line",
70
+ "quote",
71
+ "code",
72
+ "inline-code",
73
+ "insert-after",
74
+ "insert-before",
75
+ "upload",
76
+ "record",
77
+ "table",
78
+ ];
79
+ Constants.CODE_THEME = [
80
+ "a11y-dark",
81
+ "agate",
82
+ "an-old-hope",
83
+ "androidstudio",
84
+ "arta",
85
+ "atom-one-dark",
86
+ "atom-one-dark-reasonable",
87
+ "base16/3024",
88
+ "base16/apathy",
89
+ "base16/apprentice",
90
+ "base16/ashes",
91
+ "base16/atelier-cave",
92
+ "base16/atelier-dune",
93
+ "base16/atelier-estuary",
94
+ "base16/atelier-forest",
95
+ "base16/atelier-heath",
96
+ "base16/atelier-lakeside",
97
+ "base16/atelier-plateau",
98
+ "base16/atelier-savanna",
99
+ "base16/atelier-seaside",
100
+ "base16/atelier-sulphurpool",
101
+ "base16/atlas",
102
+ "base16/bespin",
103
+ "base16/black-metal",
104
+ "base16/black-metal-bathory",
105
+ "base16/black-metal-burzum",
106
+ "base16/black-metal-dark-funeral",
107
+ "base16/black-metal-gorgoroth",
108
+ "base16/black-metal-immortal",
109
+ "base16/black-metal-khold",
110
+ "base16/black-metal-marduk",
111
+ "base16/black-metal-mayhem",
112
+ "base16/black-metal-nile",
113
+ "base16/black-metal-venom",
114
+ "base16/brewer",
115
+ "base16/bright",
116
+ "base16/brogrammer",
117
+ "base16/brush-trees-dark",
118
+ "base16/chalk",
119
+ "base16/circus",
120
+ "base16/classic-dark",
121
+ "base16/codeschool",
122
+ "base16/colors",
123
+ "base16/danqing",
124
+ "base16/darcula",
125
+ "base16/dark-violet",
126
+ "base16/darkmoss",
127
+ "base16/darktooth",
128
+ "base16/decaf",
129
+ "base16/default-dark",
130
+ "base16/dracula",
131
+ "base16/edge-dark",
132
+ "base16/eighties",
133
+ "base16/embers",
134
+ "base16/equilibrium-dark",
135
+ "base16/equilibrium-gray-dark",
136
+ "base16/espresso",
137
+ "base16/eva",
138
+ "base16/eva-dim",
139
+ "base16/flat",
140
+ "base16/framer",
141
+ "base16/gigavolt",
142
+ "base16/google-dark",
143
+ "base16/grayscale-dark",
144
+ "base16/green-screen",
145
+ "base16/gruvbox-dark-hard",
146
+ "base16/gruvbox-dark-medium",
147
+ "base16/gruvbox-dark-pale",
148
+ "base16/gruvbox-dark-soft",
149
+ "base16/hardcore",
150
+ "base16/harmonic16-dark",
151
+ "base16/heetch-dark",
152
+ "base16/helios",
153
+ "base16/hopscotch",
154
+ "base16/horizon-dark",
155
+ "base16/humanoid-dark",
156
+ "base16/ia-dark",
157
+ "base16/icy-dark",
158
+ "base16/ir-black",
159
+ "base16/isotope",
160
+ "base16/kimber",
161
+ "base16/london-tube",
162
+ "base16/macintosh",
163
+ "base16/marrakesh",
164
+ "base16/materia",
165
+ "base16/material",
166
+ "base16/material-darker",
167
+ "base16/material-palenight",
168
+ "base16/material-vivid",
169
+ "base16/mellow-purple",
170
+ "base16/mocha",
171
+ "base16/monokai",
172
+ "base16/nebula",
173
+ "base16/nord",
174
+ "base16/nova",
175
+ "base16/ocean",
176
+ "base16/oceanicnext",
177
+ "base16/onedark",
178
+ "base16/outrun-dark",
179
+ "base16/papercolor-dark",
180
+ "base16/paraiso",
181
+ "base16/pasque",
182
+ "base16/phd",
183
+ "base16/pico",
184
+ "base16/pop",
185
+ "base16/porple",
186
+ "base16/qualia",
187
+ "base16/railscasts",
188
+ "base16/rebecca",
189
+ "base16/ros-pine",
190
+ "base16/ros-pine-moon",
191
+ "base16/sandcastle",
192
+ "base16/seti-ui",
193
+ "base16/silk-dark",
194
+ "base16/snazzy",
195
+ "base16/solar-flare",
196
+ "base16/solarized-dark",
197
+ "base16/spacemacs",
198
+ "base16/summercamp",
199
+ "base16/summerfruit-dark",
200
+ "base16/synth-midnight-terminal-dark",
201
+ "base16/tango",
202
+ "base16/tender",
203
+ "base16/tomorrow-night",
204
+ "base16/twilight",
205
+ "base16/unikitty-dark",
206
+ "base16/vulcan",
207
+ "base16/windows-10",
208
+ "base16/windows-95",
209
+ "base16/windows-high-contrast",
210
+ "base16/windows-nt",
211
+ "base16/woodland",
212
+ "base16/xcode-dusk",
213
+ "base16/zenburn",
214
+ "codepen-embed",
215
+ "dark",
216
+ "devibeans",
217
+ "far",
218
+ "felipec",
219
+ "github-dark",
220
+ "github-dark-dimmed",
221
+ "gml",
222
+ "gradient-dark",
223
+ "hybrid",
224
+ "ir-black",
225
+ "isbl-editor-dark",
226
+ "kimbie-dark",
227
+ "lioshi",
228
+ "monokai",
229
+ "monokai-sublime",
230
+ "night-owl",
231
+ "nnfx-dark",
232
+ "nord",
233
+ "obsidian",
234
+ "panda-syntax-dark",
235
+ "paraiso-dark",
236
+ "pojoaque",
237
+ "qtcreator-dark",
238
+ "rainbow",
239
+ "shades-of-purple",
240
+ "srcery",
241
+ "stackoverflow-dark",
242
+ "sunburst",
243
+ "tomorrow-night-blue",
244
+ "tomorrow-night-bright",
245
+ "tokyo-night-dark",
246
+ "vs2015",
247
+ "xt256",
248
+ "ant-design",
249
+ "a11y-light",
250
+ "arduino-light",
251
+ "ascetic",
252
+ "atom-one-light",
253
+ "base16/atelier-cave-light",
254
+ "base16/atelier-dune-light",
255
+ "base16/atelier-estuary-light",
256
+ "base16/atelier-forest-light",
257
+ "base16/atelier-heath-light",
258
+ "base16/atelier-lakeside-light",
259
+ "base16/atelier-plateau-light",
260
+ "base16/atelier-savanna-light",
261
+ "base16/atelier-seaside-light",
262
+ "base16/atelier-sulphurpool-light",
263
+ "base16/brush-trees",
264
+ "base16/classic-light",
265
+ "base16/cupcake",
266
+ "base16/cupertino",
267
+ "base16/default-light",
268
+ "base16/dirtysea",
269
+ "base16/edge-light",
270
+ "base16/equilibrium-gray-light",
271
+ "base16/equilibrium-light",
272
+ "base16/fruit-soda",
273
+ "base16/github",
274
+ "base16/google-light",
275
+ "base16/grayscale-light",
276
+ "base16/gruvbox-light-hard",
277
+ "base16/gruvbox-light-medium",
278
+ "base16/gruvbox-light-soft",
279
+ "base16/harmonic16-light",
280
+ "base16/heetch-light",
281
+ "base16/humanoid-light",
282
+ "base16/horizon-light",
283
+ "base16/ia-light",
284
+ "base16/material-lighter",
285
+ "base16/mexico-light",
286
+ "base16/one-light",
287
+ "base16/papercolor-light",
288
+ "base16/ros-pine-dawn",
289
+ "base16/sagelight",
290
+ "base16/shapeshifter",
291
+ "base16/silk-light",
292
+ "base16/solar-flare-light",
293
+ "base16/solarized-light",
294
+ "base16/summerfruit-light",
295
+ "base16/synth-midnight-terminal-light",
296
+ "base16/tomorrow",
297
+ "base16/unikitty-light",
298
+ "base16/windows-10-light",
299
+ "base16/windows-95-light",
300
+ "base16/windows-high-contrast-light",
301
+ "brown-paper",
302
+ "base16/windows-nt-light",
303
+ "color-brewer",
304
+ "docco",
305
+ "foundation",
306
+ "github",
307
+ "googlecode",
308
+ "gradient-light",
309
+ "grayscale",
310
+ "idea",
311
+ "intellij-light",
312
+ "isbl-editor-light",
313
+ "kimbie-light",
314
+ "lightfair",
315
+ "magula",
316
+ "mono-blue",
317
+ "nnfx-light",
318
+ "panda-syntax-light",
319
+ "paraiso-light",
320
+ "purebasic",
321
+ "qtcreator-light",
322
+ "routeros",
323
+ "school-book",
324
+ "stackoverflow-light",
325
+ "tokyo-night-light",
326
+ "vs",
327
+ "xcode",
328
+ "default",
329
+ ];
330
+ Constants.ALIAS_CODE_LANGUAGES = [
331
+ // 自定义
332
+ "abc",
333
+ "plantuml",
334
+ "mermaid",
335
+ "flowchart",
336
+ "echarts",
337
+ "mindmap",
338
+ "graphviz",
339
+ "math",
340
+ "markmap",
341
+ "smiles",
342
+ // 别名
343
+ "js",
344
+ "ts",
345
+ "html",
346
+ "toml",
347
+ "c#",
348
+ "bat",
349
+ ];
350
+ Constants.CDN = "https://webcdn.wujieai.com/vditor@".concat("0.0.22");
351
+ Constants.MARKDOWN_OPTIONS = {
352
+ autoSpace: false,
353
+ gfmAutoLink: true,
354
+ codeBlockPreview: true,
355
+ fixTermTypo: false,
356
+ footnotes: true,
357
+ linkBase: "",
358
+ linkPrefix: "",
359
+ listStyle: false,
360
+ mark: false,
361
+ mathBlockPreview: true,
362
+ paragraphBeginningSpace: false,
363
+ sanitize: true,
364
+ sub: false,
365
+ sup: false,
366
+ toc: false,
367
+ };
368
+ Constants.HLJS_OPTIONS = {
369
+ enable: true,
370
+ lineNumber: false,
371
+ defaultLang: "",
372
+ style: "github",
373
+ };
374
+ Constants.MATH_OPTIONS = {
375
+ engine: "MathJax",
376
+ inlineDigit: false,
377
+ // 默认宏:补充常见但部分引擎未内置的积分符号
378
+ // oiint: 关闭曲面积分(∯),在 MathJax 下通过 unicode 宏渲染
379
+ // 说明:KaTeX 若不支持 \unicode,将退化为普通 \iint(由 mathRender 保证)
380
+ macros: {
381
+ oiint: "\\unicode{x222F}",
382
+ },
383
+ };
384
+ Constants.THEME_OPTIONS = {
385
+ current: "light",
386
+ list: {
387
+ "ant-design": "Ant Design",
388
+ dark: "Dark",
389
+ light: "Light",
390
+ wechat: "WeChat",
391
+ },
392
+ path: "".concat(Constants.CDN, "/dist/css/content-theme"),
393
+ };
394
+ return Constants;
395
+ }());
396
+
397
+
398
+
399
+ /***/ }),
400
+
401
+ /***/ 825:
402
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
403
+
404
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
405
+ /* harmony export */ "J": () => (/* binding */ SMILESRender)
406
+ /* harmony export */ });
407
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
408
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
409
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
410
+ /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);
411
+
412
+
413
+
414
+
415
+ var SMILESRender = function (element, cdn, theme) {
416
+ if (element === void 0) { element = document; }
417
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
418
+ var SMILESElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getElements(element);
419
+ if (SMILESElements.length > 0) {
420
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/smiles-drawer/smiles-drawer.min.js?v=2.1.7"), "vditorAbcjsScript").then(function () {
421
+ var sd = new SmiDrawer({}, {});
422
+ SMILESElements.forEach(function (item) {
423
+ var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getCode(item).trim();
424
+ if (item.getAttribute("data-processed") === "true" || code.trim() === "") {
425
+ return;
426
+ }
427
+ var id = "smiles" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .Wb)();
428
+ item.innerHTML = "<svg id=\"".concat(id, "\"></svg>");
429
+ sd.draw(code, '#' + id, theme === "dark" ? "dark" : undefined);
430
+ item.setAttribute("data-processed", "true");
431
+ });
432
+ });
433
+ }
434
+ };
435
+
436
+
437
+ /***/ }),
438
+
439
+ /***/ 135:
440
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
441
+
442
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
443
+ /* harmony export */ "Q": () => (/* binding */ abcRender)
444
+ /* harmony export */ });
445
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
446
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
447
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
448
+
449
+
450
+
451
+ var abcRender = function (element, cdn) {
452
+ if (element === void 0) { element = document; }
453
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
454
+ var abcElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getElements(element);
455
+ if (abcElements.length > 0) {
456
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/abcjs/abcjs_basic.min.js"), "vditorAbcjsScript").then(function () {
457
+ abcElements.forEach(function (item) {
458
+ if (item.parentElement.classList.contains("vditor-wysiwyg__pre") ||
459
+ item.parentElement.classList.contains("vditor-ir__marker--pre")) {
460
+ return;
461
+ }
462
+ if (item.getAttribute("data-processed") === "true") {
463
+ return;
464
+ }
465
+ ABCJS.renderAbc(item, _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getCode(item).trim());
466
+ item.style.overflowX = "auto";
467
+ item.setAttribute("data-processed", "true");
468
+ });
469
+ });
470
+ }
471
+ };
472
+
473
+
474
+ /***/ }),
475
+
476
+ /***/ 840:
477
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
478
+
479
+ __webpack_require__.r(__webpack_exports__);
480
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
481
+ /* harmony export */ "mathRenderAdapter": () => (/* binding */ mathRenderAdapter),
482
+ /* harmony export */ "SMILESRenderAdapter": () => (/* binding */ SMILESRenderAdapter),
483
+ /* harmony export */ "mermaidRenderAdapter": () => (/* binding */ mermaidRenderAdapter),
484
+ /* harmony export */ "markmapRenderAdapter": () => (/* binding */ markmapRenderAdapter),
485
+ /* harmony export */ "mindmapRenderAdapter": () => (/* binding */ mindmapRenderAdapter),
486
+ /* harmony export */ "chartRenderAdapter": () => (/* binding */ chartRenderAdapter),
487
+ /* harmony export */ "abcRenderAdapter": () => (/* binding */ abcRenderAdapter),
488
+ /* harmony export */ "graphvizRenderAdapter": () => (/* binding */ graphvizRenderAdapter),
489
+ /* harmony export */ "flowchartRenderAdapter": () => (/* binding */ flowchartRenderAdapter),
490
+ /* harmony export */ "plantumlRenderAdapter": () => (/* binding */ plantumlRenderAdapter)
491
+ /* harmony export */ });
492
+ /* harmony import */ var _util_hasClosest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(106);
493
+ var mathRenderAdapter = {
494
+ getCode: function (el) { return el.textContent; },
495
+ getElements: function (element) { return element.querySelectorAll(".language-math"); },
496
+ };
497
+ var SMILESRenderAdapter = {
498
+ getCode: function (el) { return el.textContent; },
499
+ getElements: function (element) { return element.querySelectorAll(".language-smiles"); },
500
+ };
501
+ var mermaidRenderAdapter = {
502
+ /** 不仅要返回code,并且需要将 code 设置为 el 的 innerHTML */
503
+ getCode: function (el) { return el.textContent; },
504
+ getElements: function (element) { return element.querySelectorAll(".language-mermaid"); },
505
+ };
506
+ var markmapRenderAdapter = {
507
+ getCode: function (el) { return el.textContent; },
508
+ getElements: function (element) { return element.querySelectorAll(".language-markmap"); },
509
+ };
510
+ var mindmapRenderAdapter = {
511
+ getCode: function (el) { return el.getAttribute("data-code"); },
512
+ getElements: function (el) { return el.querySelectorAll(".language-mindmap"); },
513
+ };
514
+
515
+ /**
516
+ * ECharts 渲染适配器:获取/定位 `.language-echarts` 代码块与相关元素。
517
+ */
518
+ var chartRenderAdapter = {
519
+ getCode: function (el) { return el.innerText; },
520
+ getElements: function (el) { return el.querySelectorAll(".language-echarts"); },
521
+ /**
522
+ * 更新同级别的 Markdown 源代码(vditor-wysiwyg__pre > code),并进行“一个字段一行”的轻量格式化。
523
+ * 不修改渲染区域(canvas),避免过度格式化数组/内层对象。
524
+ * @param el 预览区域中的 `.language-echarts` 元素或其子孙节点
525
+ * @param code 新的 ECharts 配置文本(JSON/JS 字符串)
526
+ */
527
+ setCode: function (el, code) {
528
+ // 轻量格式化:顶层字段一行,数组与子对象保持紧凑(单行 JSON)
529
+ var formatTopLevelOneLine = function (obj) {
530
+ try {
531
+ var keys = Object.keys(obj);
532
+ var lines = keys.map(function (key) {
533
+ var val = obj[key];
534
+ var vStr = "";
535
+ if (Array.isArray(val)) {
536
+ vStr = JSON.stringify(val);
537
+ }
538
+ else if (val && typeof val === "object") {
539
+ vStr = JSON.stringify(val);
540
+ }
541
+ else {
542
+ vStr = JSON.stringify(val);
543
+ }
544
+ return "\"".concat(key, "\": ").concat(vStr);
545
+ });
546
+ return "{\n".concat(lines.join(",\n"), "\n}");
547
+ }
548
+ catch (_a) {
549
+ return JSON.stringify(obj);
550
+ }
551
+ };
552
+ var finalText = code !== null && code !== void 0 ? code : "";
553
+ try {
554
+ var parsed = JSON.parse(code);
555
+ finalText = formatTopLevelOneLine(parsed);
556
+ }
557
+ catch (_a) {
558
+ }
559
+ // 寻找同级 vditor-wysiwyg__block,然后定位源代码 pre > code
560
+ var block = (0,_util_hasClosest__WEBPACK_IMPORTED_MODULE_0__/* .hasClosestByClassName */ .fb)(el, "vditor-wysiwyg__block");
561
+ if (block) {
562
+ var sourcePre = block.firstElementChild;
563
+ if (sourcePre && sourcePre.classList.contains("vditor-wysiwyg__pre")) {
564
+ var sourceCode = sourcePre.querySelector("code");
565
+ if (sourceCode) {
566
+ sourceCode.textContent = finalText;
567
+ sourceCode.classList.add("language-echarts");
568
+ return;
569
+ }
570
+ }
571
+ }
572
+ },
573
+ };
574
+ var abcRenderAdapter = {
575
+ getCode: function (el) { return el.textContent; },
576
+ getElements: function (el) { return el.querySelectorAll(".language-abc"); },
577
+ };
578
+ var graphvizRenderAdapter = {
579
+ getCode: function (el) { return el.textContent; },
580
+ getElements: function (el) { return el.querySelectorAll(".language-graphviz"); },
581
+ };
582
+ var flowchartRenderAdapter = {
583
+ getCode: function (el) { return el.textContent; },
584
+ getElements: function (el) { return el.querySelectorAll(".language-flowchart"); },
585
+ };
586
+ var plantumlRenderAdapter = {
587
+ getCode: function (el) { return el.textContent; },
588
+ getElements: function (el) { return el.querySelectorAll(".language-plantuml"); },
589
+ };
590
+
591
+
592
+ /***/ }),
593
+
594
+ /***/ 775:
595
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
596
+
597
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
598
+ /* harmony export */ "p": () => (/* binding */ chartRender)
599
+ /* harmony export */ });
600
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
601
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
602
+ /* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(290);
603
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
604
+ /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);
605
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
606
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
607
+ return new (P || (P = Promise))(function (resolve, reject) {
608
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
609
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
610
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
611
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
612
+ });
613
+ };
614
+ var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
615
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
616
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
617
+ function verb(n) { return function (v) { return step([n, v]); }; }
618
+ function step(op) {
619
+ if (f) throw new TypeError("Generator is already executing.");
620
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
621
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
622
+ if (y = 0, t) op = [op[0] & 2, t.value];
623
+ switch (op[0]) {
624
+ case 0: case 1: t = op; break;
625
+ case 4: _.label++; return { value: op[1], done: false };
626
+ case 5: _.label++; y = op[1]; op = [0]; continue;
627
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
628
+ default:
629
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
630
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
631
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
632
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
633
+ if (t[2]) _.ops.pop();
634
+ _.trys.pop(); continue;
635
+ }
636
+ op = body.call(thisArg, _);
637
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
638
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
639
+ }
640
+ };
641
+
642
+
643
+
644
+
645
+
646
+ var chartRender = function (element, cdn, theme) {
647
+ if (element === void 0) { element = document; }
648
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
649
+ var echartsElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getElements(element);
650
+ if (echartsElements.length > 0) {
651
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/echarts/echarts.min.js?v=5.5.1"), "vditorEchartsScript").then(function () {
652
+ echartsElements.forEach(function (e) { return __awaiter(void 0, void 0, void 0, function () {
653
+ var text, option, ensureDefaultSeriesColors, chart, error_1;
654
+ return __generator(this, function (_a) {
655
+ switch (_a.label) {
656
+ case 0:
657
+ if (e.parentElement.classList.contains("vditor-wysiwyg__pre") ||
658
+ e.parentElement.classList.contains("vditor-ir__marker--pre")) {
659
+ return [2 /*return*/];
660
+ }
661
+ text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getCode(e).trim();
662
+ if (!text) {
663
+ return [2 /*return*/];
664
+ }
665
+ _a.label = 1;
666
+ case 1:
667
+ _a.trys.push([1, 3, , 4]);
668
+ if (e.getAttribute("data-processed") === "true") {
669
+ return [2 /*return*/];
670
+ }
671
+ return [4 /*yield*/, (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .looseJsonParse */ .Qf)(text)];
672
+ case 2:
673
+ option = _a.sent();
674
+ ensureDefaultSeriesColors = function (opt) {
675
+ var palette = [
676
+ "#5470C6",
677
+ "#91CC75",
678
+ "#FAC858",
679
+ "#EE6666",
680
+ "#73C0DE",
681
+ "#3CA9CF",
682
+ "#FC8452",
683
+ "#9A60B4",
684
+ "#ea7ccc",
685
+ ];
686
+ if (!Array.isArray(opt === null || opt === void 0 ? void 0 : opt.color) ||
687
+ opt.color.length === 0) {
688
+ opt.color = palette.slice();
689
+ }
690
+ var series = Array.isArray(opt === null || opt === void 0 ? void 0 : opt.series)
691
+ ? opt.series
692
+ : [];
693
+ series.forEach(function (s, idx) {
694
+ if (!s || typeof s !== "object")
695
+ return;
696
+ var type = s.type;
697
+ if (type === "line" ||
698
+ type === "bar" ||
699
+ type === "scatter" ||
700
+ type === "effectScatter" ||
701
+ type === "radar") {
702
+ var color = palette[idx % palette.length];
703
+ s.itemStyle = s.itemStyle || {};
704
+ if (!s.itemStyle.color) {
705
+ s.itemStyle.color = color;
706
+ }
707
+ if (type === "radar") {
708
+ s.lineStyle = s.lineStyle || {};
709
+ if (!s.lineStyle.color) {
710
+ s.lineStyle.color = s.itemStyle.color;
711
+ }
712
+ }
713
+ }
714
+ });
715
+ };
716
+ ensureDefaultSeriesColors(option);
717
+ chart = echarts.init(e, theme === "dark" ? "dark" : undefined);
718
+ chart.setOption(option);
719
+ attachEchartsContextMenu(e, option, chart, cdn);
720
+ e.setAttribute("data-processed", "true");
721
+ return [3 /*break*/, 4];
722
+ case 3:
723
+ error_1 = _a.sent();
724
+ e.className = "vditor-reset--error";
725
+ e.innerHTML = "echarts render error: <br>".concat(error_1);
726
+ return [3 /*break*/, 4];
727
+ case 4: return [2 /*return*/];
728
+ }
729
+ });
730
+ }); });
731
+ });
732
+ }
733
+ };
734
+ /**
735
+ * 为 ECharts 容器添加右键菜单与颜色选择面板,仅针对 language-echarts 类型。
736
+ * 点击菜单后弹出颜色面板,
737
+ * 选择颜色立即更新对应系列的 itemStyle.color 并刷新显示。
738
+ * @param el 图表容器元素
739
+ * @param option ECharts 的配置项,需包含 series 数组
740
+ * @param chart ECharts 实例,用于实时更新配置
741
+ */
742
+ var attachEchartsContextMenu = function (el, option, chart, cdn) {
743
+ var _a, _b, _c, _d;
744
+ // 防重复绑定
745
+ if (el.getAttribute("data-context-menu") === "true") {
746
+ return;
747
+ }
748
+ el.setAttribute("data-context-menu", "true");
749
+ /**
750
+ * 在预览模式或分屏预览(SV)模式禁用图表右键菜单
751
+ * 通过 DOM 位置判断:位于 .vditor-preview 或 .vditor-sv 下的渲染内容视为预览环境
752
+ */
753
+ var inPreview = !!(el.closest(".vditor-preview") || el.closest(".vditor-sv"));
754
+ if (inPreview) {
755
+ return;
756
+ }
757
+ // 解析 series 数据映射
758
+ var seriesList = Array.isArray(option === null || option === void 0 ? void 0 : option.series)
759
+ ? option.series
760
+ : [];
761
+ var seriesMap = {};
762
+ seriesList.forEach(function (s) {
763
+ if (s && typeof s.name === "string") {
764
+ seriesMap[s.name] = s;
765
+ }
766
+ });
767
+ /**
768
+ * 检测图表类型:
769
+ * - 当存在 pie 系列时优先走饼图专项处理;
770
+ * - 若存在 radar 系列则走雷达专项处理;
771
+ * - 若存在 funnel 系列则走漏斗专项处理;
772
+ * - 若存在 scatter 系列则走散点专项处理;
773
+ * - 否则统一走 line/bar 默认处理。
774
+ */
775
+ var chartType = (function () {
776
+ var hasPie = seriesList.some(function (s) { return s && s.type === "pie"; });
777
+ if (hasPie)
778
+ return "pie";
779
+ var hasRadar = seriesList.some(function (s) { return s && s.type === "radar"; });
780
+ if (hasRadar)
781
+ return "radar";
782
+ var hasFunnel = seriesList.some(function (s) { return s && s.type === "funnel"; });
783
+ if (hasFunnel)
784
+ return "funnel";
785
+ var hasScatter = seriesList.some(function (s) { return s && (s.type === "scatter" || s.type === "effectScatter"); });
786
+ return hasScatter ? "scatter" : "default";
787
+ })();
788
+ // 饼图支持:优先使用 legend.data 或 series.data[].name 生成菜单项
789
+ var pieSeries = seriesList.find(function (s) { return s && s.type === "pie" && Array.isArray(s.data); });
790
+ var labelIndexMap = {};
791
+ var pieMenuLabels = [];
792
+ if (pieSeries) {
793
+ var legendData = Array.isArray((_a = option === null || option === void 0 ? void 0 : option.legend) === null || _a === void 0 ? void 0 : _a.data)
794
+ ? option.legend.data.filter(function (d) { return typeof d === "string"; })
795
+ : [];
796
+ var dataNames = pieSeries.data
797
+ .map(function (d) { return (d && typeof d.name === "string" ? d.name : null); })
798
+ .filter(function (n) { return !!n; });
799
+ // 构建 name -> index 映射
800
+ dataNames.forEach(function (name, idx) {
801
+ labelIndexMap[name] = idx;
802
+ });
803
+ // 菜单项优先 legend.data,否则用数据项名称
804
+ pieMenuLabels = legendData.length > 0 ? legendData : dataNames;
805
+ }
806
+ // 雷达图支持:优先使用 legend.data 或 radarSeries.data[].name 生成菜单项
807
+ var radarSeries = seriesList.find(function (s) { return s && s.type === "radar" && Array.isArray(s.data); });
808
+ var radarMenuLabels = [];
809
+ if (radarSeries) {
810
+ var legendData = Array.isArray((_b = option === null || option === void 0 ? void 0 : option.legend) === null || _b === void 0 ? void 0 : _b.data)
811
+ ? option.legend.data.filter(function (d) { return typeof d === "string"; })
812
+ : [];
813
+ var dataNames = radarSeries.data
814
+ .map(function (d) { return (d && typeof d.name === "string" ? d.name : null); })
815
+ .filter(function (n) { return !!n; });
816
+ // 构建 name -> index 映射(与饼图共享)
817
+ dataNames.forEach(function (name, idx) {
818
+ labelIndexMap[name] = idx;
819
+ });
820
+ radarMenuLabels = legendData.length > 0 ? legendData : dataNames;
821
+ }
822
+ // 漏斗图支持:优先使用 legend.data 或各漏斗系列 data[].name 的并集生成菜单项
823
+ var funnelSeriesList = seriesList.filter(function (s) { return s && s.type === "funnel" && Array.isArray(s.data); });
824
+ var funnelMenuLabels = [];
825
+ if (funnelSeriesList.length > 0) {
826
+ var legendData = Array.isArray((_c = option === null || option === void 0 ? void 0 : option.legend) === null || _c === void 0 ? void 0 : _c.data)
827
+ ? option.legend.data.filter(function (d) { return typeof d === "string"; })
828
+ : [];
829
+ var nameSet_1 = new Set();
830
+ funnelSeriesList.forEach(function (fs) {
831
+ fs.data.forEach(function (d, idx) {
832
+ if (d && typeof d.name === "string") {
833
+ nameSet_1.add(d.name);
834
+ }
835
+ });
836
+ });
837
+ var dataNames = Array.from(nameSet_1);
838
+ // 构建 name -> index 映射(以第一个漏斗系列为准,其他系列按名称查找)
839
+ if (funnelSeriesList[0]) {
840
+ funnelSeriesList[0].data.forEach(function (d, idx) {
841
+ if (d && typeof d.name === "string") {
842
+ labelIndexMap[d.name] = idx;
843
+ }
844
+ });
845
+ }
846
+ funnelMenuLabels = legendData.length > 0 ? legendData : dataNames;
847
+ }
848
+ /**
849
+ * 散点图支持:当系列为 scatter 时,生成菜单标签与 label -> seriesIndex 映射。
850
+ * 优先 legend.data,其次使用系列 name;若都缺失,则按出现顺序生成 "散点系列N"。
851
+ */
852
+ var scatterMenuLabels = [];
853
+ if (chartType === "scatter") {
854
+ var legendData = Array.isArray((_d = option === null || option === void 0 ? void 0 : option.legend) === null || _d === void 0 ? void 0 : _d.data)
855
+ ? option.legend.data.filter(function (d) { return typeof d === "string"; })
856
+ : [];
857
+ // 收集所有散点系列的索引与名称
858
+ var scatterIndices_1 = [];
859
+ var scatterNames_1 = [];
860
+ seriesList.forEach(function (s, idx) {
861
+ if (s && (s.type === "scatter" || s.type === "effectScatter")) {
862
+ scatterIndices_1.push(idx);
863
+ scatterNames_1.push(s && typeof s.name === "string" ? s.name : null);
864
+ }
865
+ });
866
+ if (legendData.length > 0) {
867
+ var used_1 = 0;
868
+ legendData.forEach(function (label) {
869
+ var nameIdx = scatterNames_1.findIndex(function (n) { return n === label; });
870
+ if (nameIdx >= 0) {
871
+ labelIndexMap[label] = scatterIndices_1[nameIdx];
872
+ }
873
+ else if (used_1 < scatterIndices_1.length) {
874
+ labelIndexMap[label] = scatterIndices_1[used_1++];
875
+ }
876
+ });
877
+ scatterMenuLabels.push.apply(scatterMenuLabels, legendData);
878
+ }
879
+ else if (scatterNames_1.filter(Boolean).length > 0) {
880
+ scatterNames_1.forEach(function (n, i) {
881
+ if (n) {
882
+ scatterMenuLabels.push(n);
883
+ labelIndexMap[n] = scatterIndices_1[i];
884
+ }
885
+ });
886
+ }
887
+ else {
888
+ scatterIndices_1.forEach(function (si, i) {
889
+ var label = "\u6563\u70B9\u7CFB\u5217".concat(i + 1);
890
+ scatterMenuLabels.push(label);
891
+ labelIndexMap[label] = si;
892
+ });
893
+ }
894
+ }
895
+ // 创建菜单 DOM(按需创建)
896
+ var menuEl = null;
897
+ var pickerEl = null;
898
+ var pickerInstance = null;
899
+ var currentSeriesName = null;
900
+ // 记录打开 color-picker 时的原始颜色,以及滑动选择中的待确认颜色
901
+ var openingOriginalColor = null;
902
+ // 点击外部隐藏的全局处理器(在菜单或面板显示时注册,隐藏后移除)
903
+ var outsideHandler = null;
904
+ /**
905
+ * 注册点击外部隐藏菜单与颜色面板。
906
+ * 当在面板外点击时,若正在选择颜色,则还原为打开面板时的原始颜色(等同 clear)。
907
+ */
908
+ var ensureOutsideHandler = function () {
909
+ if (outsideHandler)
910
+ return;
911
+ outsideHandler = function (ev) {
912
+ var target = ev.target;
913
+ if (!target)
914
+ return;
915
+ // 如果点击在菜单或面板内部,则不隐藏
916
+ if (menuEl &&
917
+ menuEl.style.display !== "none" &&
918
+ menuEl.contains(target))
919
+ return;
920
+ if (pickerEl &&
921
+ pickerEl.style.display !== "none" &&
922
+ pickerEl.contains(target))
923
+ return;
924
+ // 外部点击时,若色板处于展示且记录了原始颜色,恢复原色
925
+ try {
926
+ if (pickerEl &&
927
+ pickerEl.style.display !== "none" &&
928
+ currentSeriesName &&
929
+ openingOriginalColor) {
930
+ var targetSeries = seriesMap[currentSeriesName];
931
+ if (targetSeries) {
932
+ targetSeries.itemStyle = targetSeries.itemStyle || {};
933
+ targetSeries.itemStyle.color = openingOriginalColor;
934
+ }
935
+ chart.setOption({
936
+ series: [
937
+ {
938
+ name: currentSeriesName,
939
+ itemStyle: { color: openingOriginalColor },
940
+ },
941
+ ],
942
+ });
943
+ }
944
+ }
945
+ catch (_a) { }
946
+ hidePicker();
947
+ hideMenu();
948
+ };
949
+ document.addEventListener("mousedown", outsideHandler, true);
950
+ document.addEventListener("touchstart", outsideHandler, true);
951
+ };
952
+ /**
953
+ * 展示右键菜单
954
+ * @param x 页面 X 坐标
955
+ * @param y 页面 Y 坐标
956
+ */
957
+ var showMenu = function (x, y) {
958
+ if (!menuEl) {
959
+ menuEl = document.createElement("div");
960
+ menuEl.className = "vditor-echarts-context-menu";
961
+ menuEl.style.position = "fixed";
962
+ menuEl.style.zIndex = "9999";
963
+ menuEl.style.background = "#fff";
964
+ menuEl.style.border = "1px solid #e5e7eb";
965
+ menuEl.style.boxShadow = "0 2px 8px rgba(0,0,0,0.15)";
966
+ menuEl.style.borderRadius = "4px";
967
+ menuEl.style.padding = "4px 0";
968
+ menuEl.style.fontSize = "12px";
969
+ menuEl.style.minWidth = "120px";
970
+ // 阻止菜单内的鼠标事件冒泡到 document
971
+ menuEl.addEventListener("mousedown", function (ev) {
972
+ ev.stopPropagation();
973
+ });
974
+ // 菜单项:根据图表类型选择来源
975
+ var items = [];
976
+ switch (chartType) {
977
+ case "pie":
978
+ items = pieMenuLabels;
979
+ break;
980
+ case "radar":
981
+ items = radarMenuLabels;
982
+ break;
983
+ case "funnel":
984
+ items = funnelMenuLabels;
985
+ break;
986
+ case "scatter":
987
+ items = scatterMenuLabels;
988
+ break;
989
+ default:
990
+ items = Array.from(new Set(seriesList
991
+ .map(function (s) {
992
+ return s && typeof s.name === "string"
993
+ ? s.name
994
+ : null;
995
+ })
996
+ .filter(function (n) { return !!n && n.length > 0; })));
997
+ }
998
+ items.forEach(function (label) {
999
+ var item = document.createElement("div");
1000
+ item.textContent = "\u4FEE\u6539".concat(label, "\u914D\u8272");
1001
+ item.style.padding = "6px 12px";
1002
+ item.style.cursor = "pointer";
1003
+ item.style.userSelect = "none";
1004
+ item.addEventListener("mouseenter", function () {
1005
+ item.style.background = "#f5f7fa";
1006
+ });
1007
+ item.addEventListener("mouseleave", function () {
1008
+ item.style.background = "transparent";
1009
+ });
1010
+ item.addEventListener("mousedown", function (ev) {
1011
+ ev.stopPropagation();
1012
+ ev.preventDefault();
1013
+ });
1014
+ item.addEventListener("click", function (ev) {
1015
+ ev.stopPropagation();
1016
+ ev.preventDefault();
1017
+ var r = ev.currentTarget.getBoundingClientRect();
1018
+ var x = r.right + 8;
1019
+ var y = r.top;
1020
+ showColorPicker(label, x, y);
1021
+ });
1022
+ menuEl.appendChild(item);
1023
+ });
1024
+ document.body.appendChild(menuEl);
1025
+ }
1026
+ menuEl.style.left = "".concat(x, "px");
1027
+ menuEl.style.top = "".concat(y, "px");
1028
+ menuEl.style.display = "block";
1029
+ ensureOutsideHandler();
1030
+ };
1031
+ /**
1032
+ * 隐藏右键菜单
1033
+ */
1034
+ var hideMenu = function () {
1035
+ if (menuEl) {
1036
+ menuEl.style.display = "none";
1037
+ // 若两者都隐藏,移除外部点击处理器
1038
+ if (pickerEl &&
1039
+ pickerEl.style.display === "none" &&
1040
+ outsideHandler) {
1041
+ document.removeEventListener("mousedown", outsideHandler, true);
1042
+ document.removeEventListener("touchstart", outsideHandler, true);
1043
+ outsideHandler = null;
1044
+ }
1045
+ }
1046
+ };
1047
+ /**
1048
+ * 确保引入 Color Picker 的 CSS/JS 资源
1049
+ * @param cdnRoot 静态资源根路径
1050
+ */
1051
+ var ensureColorPickerAssets = function (cdnRoot) {
1052
+ var cssUrl = "".concat(cdnRoot, "/dist/js/color-picker/color-picker.nano.css");
1053
+ var jsUrl = "".concat(cdnRoot, "/dist/js/color-picker/color-picker.nano.js");
1054
+ (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_4__/* .addStyle */ .c)(cssUrl, "vditorColorPickerStyle");
1055
+ return new Promise(function (resolve) {
1056
+ if (window.Pickr) {
1057
+ resolve();
1058
+ return;
1059
+ }
1060
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)(jsUrl, "vditorColorPickerScript").then(function () { return resolve(); });
1061
+ });
1062
+ };
1063
+ /**
1064
+ * 确保加载中文 i18n(使用本项目 CDN 的 zh_CN.js)。
1065
+ * 若全局已有 `window.VditorI18n`,则直接使用,否则动态加载。
1066
+ * @param cdnRoot 静态资源根路径
1067
+ */
1068
+ var ensureI18nAssets = function (cdnRoot) {
1069
+ return new Promise(function (resolve) {
1070
+ if (window.VditorI18n) {
1071
+ resolve();
1072
+ return;
1073
+ }
1074
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdnRoot, "/dist/js/i18n/zh_CN.js"), "vditorI18nScriptzh_CN").then(function () { return resolve(); });
1075
+ });
1076
+ };
1077
+ /** 派发编辑器输入事件 */
1078
+ var dispatchEditorInput = function () {
1079
+ var _a;
1080
+ var root = el.closest(".vditor-ir, .vditor-sv, .vditor-wysiwyg");
1081
+ if (!root)
1082
+ return;
1083
+ var target = null;
1084
+ if (root.classList.contains("vditor-ir")) {
1085
+ target = root.querySelector("pre.vditor-reset");
1086
+ }
1087
+ else if (root.classList.contains("vditor-sv")) {
1088
+ target = root;
1089
+ }
1090
+ else {
1091
+ target = root.querySelector("pre.vditor-reset");
1092
+ }
1093
+ try {
1094
+ (_a = (target || root)) === null || _a === void 0 ? void 0 : _a.focus();
1095
+ var sel = getSelection();
1096
+ if (sel && sel.rangeCount === 0) {
1097
+ var range = document.createRange();
1098
+ var anchor = (target || root);
1099
+ range.selectNodeContents(anchor);
1100
+ range.collapse(false);
1101
+ sel.removeAllRanges();
1102
+ sel.addRange(range);
1103
+ }
1104
+ }
1105
+ catch (_b) { }
1106
+ var ev = new InputEvent("input", {
1107
+ bubbles: true,
1108
+ cancelable: true,
1109
+ data: "",
1110
+ inputType: "insertText",
1111
+ });
1112
+ (target || root).dispatchEvent(ev);
1113
+ };
1114
+ /**
1115
+ * 显示颜色选择面板(2x4 网格,含动画与边界处理)。
1116
+ * @param seriesName 目标系列名称
1117
+ * @param x 页面坐标 X
1118
+ * @param y 页面坐标 Y
1119
+ */
1120
+ var showColorPicker = function (seriesName, x, y) {
1121
+ // 并行加载 Color Picker 与中文 i18n 资源
1122
+ Promise.all([ensureColorPickerAssets(cdn), ensureI18nAssets(cdn)]).then(function () {
1123
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
1124
+ if (!pickerEl) {
1125
+ pickerEl = document.createElement("div");
1126
+ pickerEl.className = "vditor-echarts-color-picker";
1127
+ pickerEl.style.position = "fixed";
1128
+ pickerEl.style.zIndex = "10000";
1129
+ pickerEl.style.background = "#fff";
1130
+ pickerEl.style.border = "1px solid #e5e7eb";
1131
+ pickerEl.style.boxShadow = "0 4px 12px rgba(0,0,0,0.15)";
1132
+ pickerEl.style.borderRadius = "6px";
1133
+ pickerEl.style.padding = "8px";
1134
+ pickerEl.style.display = "none";
1135
+ pickerEl.style.opacity = "0";
1136
+ pickerEl.style.transform = "scale(0.96)";
1137
+ pickerEl.style.transition =
1138
+ "opacity 120ms ease, transform 120ms ease";
1139
+ pickerEl.tabIndex = -1;
1140
+ pickerEl.addEventListener("mousedown", function (ev) {
1141
+ ev.preventDefault();
1142
+ ev.stopPropagation();
1143
+ });
1144
+ var pickerContainer = document.createElement("div");
1145
+ pickerEl.appendChild(pickerContainer);
1146
+ document.body.appendChild(pickerEl);
1147
+ try {
1148
+ var PickrAny = window.Pickr;
1149
+ if (!PickrAny || !PickrAny.create) {
1150
+ throw new Error("Pickr 未正确加载");
1151
+ }
1152
+ // 记录当前目标项与原始颜色
1153
+ currentSeriesName = seriesName;
1154
+ switch (chartType) {
1155
+ case "pie": {
1156
+ var idx = labelIndexMap[seriesName];
1157
+ try {
1158
+ var colorFn = (_a = pieSeries === null || pieSeries === void 0 ? void 0 : pieSeries.itemStyle) === null || _a === void 0 ? void 0 : _a.color;
1159
+ if (typeof colorFn === "function") {
1160
+ openingOriginalColor = colorFn({
1161
+ dataIndex: idx,
1162
+ data: pieSeries.data[idx],
1163
+ });
1164
+ }
1165
+ else {
1166
+ openingOriginalColor =
1167
+ ((_d = (_c = (_b = pieSeries === null || pieSeries === void 0 ? void 0 : pieSeries.data) === null || _b === void 0 ? void 0 : _b[idx]) === null || _c === void 0 ? void 0 : _c.itemStyle) === null || _d === void 0 ? void 0 : _d.color) || null;
1168
+ }
1169
+ }
1170
+ catch (_y) {
1171
+ openingOriginalColor = null;
1172
+ }
1173
+ break;
1174
+ }
1175
+ case "radar": {
1176
+ var idx = labelIndexMap[seriesName];
1177
+ try {
1178
+ var d = (_e = radarSeries === null || radarSeries === void 0 ? void 0 : radarSeries.data) === null || _e === void 0 ? void 0 : _e[idx];
1179
+ openingOriginalColor =
1180
+ ((_f = d === null || d === void 0 ? void 0 : d.itemStyle) === null || _f === void 0 ? void 0 : _f.color) ||
1181
+ ((_g = d === null || d === void 0 ? void 0 : d.lineStyle) === null || _g === void 0 ? void 0 : _g.color) ||
1182
+ null;
1183
+ }
1184
+ catch (_z) {
1185
+ openingOriginalColor = null;
1186
+ }
1187
+ break;
1188
+ }
1189
+ case "funnel": {
1190
+ var idx = labelIndexMap[seriesName];
1191
+ try {
1192
+ var first = funnelSeriesList[0];
1193
+ var d = (_h = first === null || first === void 0 ? void 0 : first.data) === null || _h === void 0 ? void 0 : _h[idx];
1194
+ if (!d && first) {
1195
+ d = first.data.find(function (it) { return (it === null || it === void 0 ? void 0 : it.name) === seriesName; });
1196
+ }
1197
+ if ((_j = d === null || d === void 0 ? void 0 : d.itemStyle) === null || _j === void 0 ? void 0 : _j.color) {
1198
+ openingOriginalColor =
1199
+ d.itemStyle.color;
1200
+ }
1201
+ else if (Array.isArray(option === null || option === void 0 ? void 0 : option.color) &&
1202
+ typeof idx === "number") {
1203
+ var palette = option.color;
1204
+ openingOriginalColor =
1205
+ palette[idx] || null;
1206
+ }
1207
+ else {
1208
+ openingOriginalColor = null;
1209
+ }
1210
+ }
1211
+ catch (_0) {
1212
+ openingOriginalColor = null;
1213
+ }
1214
+ break;
1215
+ }
1216
+ case "scatter": {
1217
+ var si = labelIndexMap[seriesName];
1218
+ try {
1219
+ var s = seriesList[si];
1220
+ openingOriginalColor =
1221
+ ((_k = s === null || s === void 0 ? void 0 : s.itemStyle) === null || _k === void 0 ? void 0 : _k.color) || null;
1222
+ }
1223
+ catch (_1) {
1224
+ openingOriginalColor = null;
1225
+ }
1226
+ break;
1227
+ }
1228
+ default:
1229
+ openingOriginalColor =
1230
+ ((_m = (_l = seriesMap[seriesName]) === null || _l === void 0 ? void 0 : _l.itemStyle) === null || _m === void 0 ? void 0 : _m.color) ||
1231
+ null;
1232
+ }
1233
+ // 组装 Pickr 中文文案(使用 zh_CN.js 映射)
1234
+ var dict = window.VditorI18n || {};
1235
+ var pickerI18n = {
1236
+ // 对话标题:Pickr 内部用于 aria 文案
1237
+ "ui:dialog": "颜色选择",
1238
+ // 保存、取消、清除按钮文案映射
1239
+ "btn:save": dict["confirm"] || "确定",
1240
+ "btn:cancel": dict["close"] || "取消",
1241
+ "btn:clear": dict["remove"] || "清除",
1242
+ };
1243
+ // 初始化 Pickr(Nano 主题)
1244
+ pickerInstance = PickrAny.create({
1245
+ el: pickerContainer,
1246
+ theme: "nano",
1247
+ default: openingOriginalColor || "#409EFF",
1248
+ inline: true,
1249
+ useAsButton: true,
1250
+ i18n: pickerI18n,
1251
+ swatches: [
1252
+ "#F44336",
1253
+ "#E91E63",
1254
+ "#9C27B0",
1255
+ "#673AB7",
1256
+ "#3F51B5",
1257
+ "#2196F3",
1258
+ "#03A9F4",
1259
+ "#00BCD4",
1260
+ "#009688",
1261
+ "#4CAF50",
1262
+ "#8BC34A",
1263
+ "#CDDC39",
1264
+ "#FFEB3B",
1265
+ "#FFC107",
1266
+ ],
1267
+ components: {
1268
+ preview: true,
1269
+ opacity: true,
1270
+ hue: true,
1271
+ interaction: {
1272
+ hex: false,
1273
+ rgba: false,
1274
+ hsla: false,
1275
+ hsva: false,
1276
+ cmyk: false,
1277
+ input: true,
1278
+ clear: true,
1279
+ save: true,
1280
+ },
1281
+ },
1282
+ });
1283
+ (_o = pickerInstance === null || pickerInstance === void 0 ? void 0 : pickerInstance.show) === null || _o === void 0 ? void 0 : _o.call(pickerInstance);
1284
+ /**
1285
+ * 将当前 option 序列化并写回同级别的源代码(vditor-wysiwyg__pre > code)。
1286
+ * 只更新源码,不直接改动渲染区域。
1287
+ */
1288
+ var updateMdCodeFromOption_1 = function () {
1289
+ try {
1290
+ // 使用适配器的 setCode,确保“一个字段一行”的格式化且只更新源代码
1291
+ var updated = JSON.stringify(option);
1292
+ _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.setCode(el, updated);
1293
+ }
1294
+ catch (_a) { }
1295
+ };
1296
+ /**
1297
+ * 应用当前系列颜色到 ECharts,并记录到元素 dataset
1298
+ * @param colorHex 颜色十六进制值,如 #409EFF
1299
+ * @param finalize 是否为最终提交(保存/点击色块),用于必要时收起面板
1300
+ */
1301
+ var applySeriesColor_1 = function (colorHex, finalize, persist) {
1302
+ var _a;
1303
+ if (finalize === void 0) { finalize = false; }
1304
+ if (persist === void 0) { persist = false; }
1305
+ if (!currentSeriesName || !colorHex)
1306
+ return;
1307
+ switch (chartType) {
1308
+ case "pie": {
1309
+ // 饼图:更新对应数据项的颜色
1310
+ var idx = labelIndexMap[currentSeriesName];
1311
+ var d = pieSeries.data[idx];
1312
+ if (d) {
1313
+ d.itemStyle = d.itemStyle || {};
1314
+ d.itemStyle.color = colorHex;
1315
+ }
1316
+ break;
1317
+ }
1318
+ case "radar": {
1319
+ // 雷达图:更新对应数据项颜色(线条与点)
1320
+ var idx = labelIndexMap[currentSeriesName];
1321
+ var d = (_a = radarSeries === null || radarSeries === void 0 ? void 0 : radarSeries.data) === null || _a === void 0 ? void 0 : _a[idx];
1322
+ if (d) {
1323
+ d.itemStyle = d.itemStyle || {};
1324
+ d.lineStyle = d.lineStyle || {};
1325
+ d.itemStyle.color = colorHex;
1326
+ d.lineStyle.color = colorHex;
1327
+ // 若存在面积色,保留透明度并替换 RGB
1328
+ if (d.areaStyle &&
1329
+ typeof d.areaStyle === "object") {
1330
+ var prev = d.areaStyle
1331
+ .color;
1332
+ var m = typeof prev === "string" &&
1333
+ prev.match(/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([0-9.]+)\s*\)$/);
1334
+ if (m) {
1335
+ var alpha = m[4];
1336
+ var hex = colorHex.replace("#", "");
1337
+ var r = parseInt(hex.substring(0, 2), 16);
1338
+ var g = parseInt(hex.substring(2, 4), 16);
1339
+ var b = parseInt(hex.substring(4, 6), 16);
1340
+ d.areaStyle.color = "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(alpha, ")");
1341
+ }
1342
+ }
1343
+ }
1344
+ break;
1345
+ }
1346
+ case "funnel": {
1347
+ // 漏斗图:对所有漏斗系列中匹配名称的数据项应用颜色
1348
+ funnelSeriesList.forEach(function (fs) {
1349
+ var _a;
1350
+ var idx = labelIndexMap[currentSeriesName];
1351
+ // 保障不同系列内索引不一致时的名称查找
1352
+ if ((idx == null ||
1353
+ ((_a = fs.data[idx]) === null || _a === void 0 ? void 0 : _a.name) !==
1354
+ currentSeriesName) &&
1355
+ Array.isArray(fs.data)) {
1356
+ idx = fs.data.findIndex(function (it) {
1357
+ return it &&
1358
+ it.name ===
1359
+ currentSeriesName;
1360
+ });
1361
+ }
1362
+ if (idx != null && idx >= 0) {
1363
+ var d = fs.data[idx];
1364
+ if (d) {
1365
+ d.itemStyle = d.itemStyle || {};
1366
+ d.itemStyle.color = colorHex;
1367
+ }
1368
+ }
1369
+ });
1370
+ break;
1371
+ }
1372
+ case "scatter": {
1373
+ // 散点图:按系列更新颜色(数据点继承系列颜色)
1374
+ var si = labelIndexMap[currentSeriesName];
1375
+ var s = seriesList[si];
1376
+ if (s) {
1377
+ s.itemStyle = s.itemStyle || {};
1378
+ s.itemStyle.color = colorHex;
1379
+ }
1380
+ break;
1381
+ }
1382
+ default: {
1383
+ // line/bar:默认更新系列颜色
1384
+ var target = seriesMap[currentSeriesName];
1385
+ if (target) {
1386
+ target.itemStyle =
1387
+ target.itemStyle || {};
1388
+ target.itemStyle.color = colorHex;
1389
+ }
1390
+ break;
1391
+ }
1392
+ }
1393
+ if (persist) {
1394
+ try {
1395
+ var key = "data-echarts-colors";
1396
+ var raw = el.getAttribute(key);
1397
+ var saved = raw
1398
+ ? JSON.parse(raw)
1399
+ : {};
1400
+ saved[currentSeriesName] = colorHex;
1401
+ el.setAttribute(key, JSON.stringify(saved));
1402
+ }
1403
+ catch (_b) { }
1404
+ }
1405
+ // 更新图表
1406
+ switch (chartType) {
1407
+ case "pie":
1408
+ chart.setOption({
1409
+ series: [
1410
+ {
1411
+ name: pieSeries.name,
1412
+ type: "pie",
1413
+ data: pieSeries.data,
1414
+ },
1415
+ ],
1416
+ });
1417
+ break;
1418
+ case "radar":
1419
+ chart.setOption({
1420
+ series: [
1421
+ {
1422
+ name: radarSeries === null || radarSeries === void 0 ? void 0 : radarSeries.name,
1423
+ type: "radar",
1424
+ data: radarSeries === null || radarSeries === void 0 ? void 0 : radarSeries.data,
1425
+ },
1426
+ ],
1427
+ });
1428
+ break;
1429
+ case "funnel":
1430
+ // 漏斗图:直接刷新整个 series 数组,确保多系列同时生效
1431
+ chart.setOption({ series: option.series });
1432
+ break;
1433
+ case "scatter":
1434
+ // 散点图:直接刷新整个 series 数组,确保无 name 时也能匹配
1435
+ chart.setOption({ series: option.series });
1436
+ break;
1437
+ default:
1438
+ chart.setOption({
1439
+ series: [
1440
+ {
1441
+ name: currentSeriesName,
1442
+ itemStyle: { color: colorHex },
1443
+ },
1444
+ ],
1445
+ });
1446
+ }
1447
+ if (finalize) {
1448
+ // 结束一次选择交互,收起面板与菜单
1449
+ hidePicker();
1450
+ hideMenu();
1451
+ }
1452
+ };
1453
+ // 轻量节流:拖动过程中每帧最多一次更新,保证实时且不拖慢
1454
+ var rafPendingColor_1 = null;
1455
+ var rafId_1 = null;
1456
+ var scheduleFrameUpdate_1 = function () {
1457
+ if (rafId_1 != null)
1458
+ return;
1459
+ rafId_1 = requestAnimationFrame(function () {
1460
+ if (rafPendingColor_1) {
1461
+ applySeriesColor_1(rafPendingColor_1, false, false);
1462
+ rafPendingColor_1 = null;
1463
+ }
1464
+ rafId_1 = null;
1465
+ });
1466
+ };
1467
+ // 事件:滑动变化实时更新
1468
+ pickerInstance.on("change", function (color) {
1469
+ try {
1470
+ var hex = color.toHEXA().toString();
1471
+ rafPendingColor_1 = hex;
1472
+ scheduleFrameUpdate_1();
1473
+ }
1474
+ catch (_a) { }
1475
+ });
1476
+ // 事件:点击预设色块应用但不关闭面板与菜单
1477
+ pickerInstance.on("swatchselect", function (color) {
1478
+ try {
1479
+ var hex = color.toHEXA().toString();
1480
+ applySeriesColor_1(hex, false, false);
1481
+ }
1482
+ catch (_a) { }
1483
+ });
1484
+ // 事件:保存按钮,确认当前选择
1485
+ pickerInstance.on("save", function (color) {
1486
+ var _a, _b, _c;
1487
+ try {
1488
+ var hex = (_c = (_a = color === null || color === void 0 ? void 0 : color.toHEXA) === null || _a === void 0 ? void 0 : (_b = _a.call(color)).toString) === null || _c === void 0 ? void 0 : _c.call(_b);
1489
+ if (hex) {
1490
+ applySeriesColor_1(hex, true, true);
1491
+ updateMdCodeFromOption_1();
1492
+ dispatchEditorInput();
1493
+ }
1494
+ else if (openingOriginalColor) {
1495
+ applySeriesColor_1(openingOriginalColor, true, true);
1496
+ updateMdCodeFromOption_1();
1497
+ dispatchEditorInput();
1498
+ }
1499
+ else {
1500
+ hidePicker();
1501
+ hideMenu();
1502
+ }
1503
+ }
1504
+ catch (_d) {
1505
+ hidePicker();
1506
+ hideMenu();
1507
+ }
1508
+ });
1509
+ pickerInstance.on("cancel", function () {
1510
+ try {
1511
+ if (openingOriginalColor && currentSeriesName) {
1512
+ applySeriesColor_1(openingOriginalColor, true, false);
1513
+ }
1514
+ else {
1515
+ hidePicker();
1516
+ hideMenu();
1517
+ }
1518
+ }
1519
+ catch (_a) {
1520
+ hidePicker();
1521
+ hideMenu();
1522
+ }
1523
+ });
1524
+ // 事件:清空(等同取消),恢复原色但不持久、不触发事件
1525
+ pickerInstance.on("clear", function () {
1526
+ if (openingOriginalColor) {
1527
+ applySeriesColor_1(openingOriginalColor, true, false);
1528
+ }
1529
+ hidePicker();
1530
+ hideMenu();
1531
+ });
1532
+ }
1533
+ catch (err) {
1534
+ pickerContainer.innerHTML = "<div class=\"vditor-reset--error\">Color Picker \u52A0\u8F7D\u5931\u8D25\uFF1A".concat(err, "</div>");
1535
+ }
1536
+ }
1537
+ // 记录当前目标系列名与打开时的原始颜色,并清空待确认色
1538
+ currentSeriesName = seriesName;
1539
+ try {
1540
+ switch (chartType) {
1541
+ case "pie": {
1542
+ var idx = labelIndexMap[seriesName];
1543
+ var colorFn = (_p = pieSeries === null || pieSeries === void 0 ? void 0 : pieSeries.itemStyle) === null || _p === void 0 ? void 0 : _p.color;
1544
+ if (typeof colorFn === "function") {
1545
+ openingOriginalColor = colorFn({
1546
+ dataIndex: idx,
1547
+ data: pieSeries.data[idx],
1548
+ });
1549
+ }
1550
+ else {
1551
+ openingOriginalColor =
1552
+ ((_s = (_r = (_q = pieSeries === null || pieSeries === void 0 ? void 0 : pieSeries.data) === null || _q === void 0 ? void 0 : _q[idx]) === null || _r === void 0 ? void 0 : _r.itemStyle) === null || _s === void 0 ? void 0 : _s.color) ||
1553
+ null;
1554
+ }
1555
+ break;
1556
+ }
1557
+ case "radar": {
1558
+ var idx = labelIndexMap[seriesName];
1559
+ var d = (_t = radarSeries === null || radarSeries === void 0 ? void 0 : radarSeries.data) === null || _t === void 0 ? void 0 : _t[idx];
1560
+ openingOriginalColor =
1561
+ ((_u = d === null || d === void 0 ? void 0 : d.itemStyle) === null || _u === void 0 ? void 0 : _u.color) ||
1562
+ ((_v = d === null || d === void 0 ? void 0 : d.lineStyle) === null || _v === void 0 ? void 0 : _v.color) ||
1563
+ null;
1564
+ break;
1565
+ }
1566
+ case "funnel": {
1567
+ var idx = labelIndexMap[seriesName];
1568
+ var first = funnelSeriesList[0];
1569
+ var d = (_w = first === null || first === void 0 ? void 0 : first.data) === null || _w === void 0 ? void 0 : _w[idx];
1570
+ if (!d && first) {
1571
+ d = first.data.find(function (it) { return (it === null || it === void 0 ? void 0 : it.name) === seriesName; });
1572
+ }
1573
+ if ((_x = d === null || d === void 0 ? void 0 : d.itemStyle) === null || _x === void 0 ? void 0 : _x.color) {
1574
+ openingOriginalColor = d.itemStyle.color;
1575
+ }
1576
+ else if (Array.isArray(option === null || option === void 0 ? void 0 : option.color) &&
1577
+ typeof idx === "number") {
1578
+ var palette = option.color;
1579
+ openingOriginalColor = palette[idx] || null;
1580
+ }
1581
+ else {
1582
+ openingOriginalColor = null;
1583
+ }
1584
+ break;
1585
+ }
1586
+ case "scatter": {
1587
+ var si = labelIndexMap[seriesName];
1588
+ var s = seriesList[si];
1589
+ openingOriginalColor =
1590
+ (s && s.itemStyle && s.itemStyle.color) || null;
1591
+ break;
1592
+ }
1593
+ default: {
1594
+ var origin_1 = seriesMap[seriesName];
1595
+ openingOriginalColor =
1596
+ (origin_1 &&
1597
+ origin_1.itemStyle &&
1598
+ origin_1.itemStyle.color) ||
1599
+ null;
1600
+ break;
1601
+ }
1602
+ }
1603
+ }
1604
+ catch (_2) {
1605
+ openingOriginalColor = null;
1606
+ }
1607
+ pickerEl.style.left = "".concat(x, "px");
1608
+ pickerEl.style.top = "".concat(y, "px");
1609
+ pickerEl.style.display = "block";
1610
+ // 重新激活时确保内部元素渲染与当前色值
1611
+ try {
1612
+ if (pickerInstance && pickerInstance.show) {
1613
+ pickerInstance.show();
1614
+ if (openingOriginalColor) {
1615
+ pickerInstance.setColor(openingOriginalColor, true);
1616
+ }
1617
+ }
1618
+ }
1619
+ catch (_3) { }
1620
+ ensureOutsideHandler();
1621
+ var rect = pickerEl.getBoundingClientRect();
1622
+ var adjustLeft = x;
1623
+ var adjustTop = y;
1624
+ if (rect.right > window.innerWidth) {
1625
+ adjustLeft = Math.max(8, window.innerWidth - rect.width - 8);
1626
+ }
1627
+ if (rect.bottom > window.innerHeight) {
1628
+ adjustTop = Math.max(8, window.innerHeight - rect.height - 8);
1629
+ }
1630
+ pickerEl.style.left = "".concat(adjustLeft, "px");
1631
+ pickerEl.style.top = "".concat(adjustTop, "px");
1632
+ requestAnimationFrame(function () {
1633
+ pickerEl.style.opacity = "1";
1634
+ pickerEl.style.transform = "scale(1)";
1635
+ });
1636
+ });
1637
+ };
1638
+ /** 隐藏颜色面板(含收起动画) */
1639
+ var hidePicker = function () {
1640
+ var _a;
1641
+ if (pickerEl && pickerEl.style.display !== "none") {
1642
+ // 调用 Pickr 的隐藏方法,确保内部状态一致
1643
+ try {
1644
+ (_a = pickerInstance === null || pickerInstance === void 0 ? void 0 : pickerInstance.hide) === null || _a === void 0 ? void 0 : _a.call(pickerInstance);
1645
+ }
1646
+ catch (_b) { }
1647
+ pickerEl.style.opacity = "0";
1648
+ pickerEl.style.transform = "scale(0.96)";
1649
+ window.setTimeout(function () {
1650
+ if (pickerEl) {
1651
+ pickerEl.style.display = "none";
1652
+ // 若两者都隐藏,移除外部点击处理器
1653
+ if (menuEl &&
1654
+ menuEl.style.display === "none" &&
1655
+ outsideHandler) {
1656
+ document.removeEventListener("mousedown", outsideHandler, true);
1657
+ document.removeEventListener("touchstart", outsideHandler, true);
1658
+ outsideHandler = null;
1659
+ }
1660
+ }
1661
+ }, 120);
1662
+ }
1663
+ };
1664
+ // 判断是否开启自定义右键:仅支持 pie / radar / funnel / scatter / line / bar
1665
+ var supportedTypes = new Set([
1666
+ "pie",
1667
+ "radar",
1668
+ "funnel",
1669
+ "scatter",
1670
+ "effectScatter",
1671
+ "line",
1672
+ "bar",
1673
+ ]);
1674
+ var isCustomMenuSupported = seriesList.length > 0 &&
1675
+ seriesList.every(function (s) { return s && supportedTypes.has(s.type); });
1676
+ // 绑定右键事件,仅在图表区域生效;不支持时保留原生右键
1677
+ el.addEventListener("contextmenu", function (event) {
1678
+ if (!isCustomMenuSupported) {
1679
+ // 不拦截,使用浏览器原生右键菜单
1680
+ return;
1681
+ }
1682
+ event.preventDefault();
1683
+ // 使用视口坐标,配合 position:fixed,避免产生滚动相关问题
1684
+ var x = event.clientX;
1685
+ var y = event.clientY;
1686
+ showMenu(x, y);
1687
+ });
1688
+ };
1689
+
1690
+
1691
+ /***/ }),
1692
+
1693
+ /***/ 428:
1694
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1695
+
1696
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1697
+ /* harmony export */ "O": () => (/* binding */ codeRender)
1698
+ /* harmony export */ });
1699
+ /* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105);
1700
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
1701
+
1702
+
1703
+ var codeRender = function (element, option) {
1704
+ Array.from(element.querySelectorAll("pre > code")).filter(function (e, index) {
1705
+ if (e.parentElement.classList.contains("vditor-wysiwyg__pre") ||
1706
+ e.parentElement.classList.contains("vditor-ir__marker--pre")) {
1707
+ return false;
1708
+ }
1709
+ if (e.classList.contains("language-mermaid") || e.classList.contains("language-flowchart") ||
1710
+ e.classList.contains("language-echarts") || e.classList.contains("language-mindmap") ||
1711
+ e.classList.contains("language-plantuml") || e.classList.contains("language-markmap") ||
1712
+ e.classList.contains("language-abc") || e.classList.contains("language-graphviz") ||
1713
+ e.classList.contains("language-math") || e.classList.contains("language-smiles")) {
1714
+ return false;
1715
+ }
1716
+ if (e.style.maxHeight.indexOf("px") > -1) {
1717
+ return false;
1718
+ }
1719
+ // 避免预览区在渲染后由于代码块过多产生性能问题 https://github.com/b3log/vditor/issues/67
1720
+ if (element.classList.contains("vditor-preview") && index > 5) {
1721
+ return false;
1722
+ }
1723
+ return true;
1724
+ }).forEach(function (e) {
1725
+ var _a, _b, _c;
1726
+ var codeText = e.innerText;
1727
+ if (e.classList.contains("highlight-chroma")) {
1728
+ var codeElement = e.cloneNode(true);
1729
+ codeElement.querySelectorAll(".highlight-ln").forEach(function (item) {
1730
+ item.remove();
1731
+ });
1732
+ codeText = codeElement.innerText;
1733
+ }
1734
+ else if (codeText.endsWith("\n")) {
1735
+ codeText = codeText.substr(0, codeText.length - 1);
1736
+ }
1737
+ var iconHTML = '<svg><use xlink:href="#vditor-icon-copy"></use></svg>';
1738
+ if (!document.getElementById("vditorIconScript")) {
1739
+ iconHTML = '<svg viewBox="0 0 32 32"><path d="M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z"></path></svg>';
1740
+ }
1741
+ var divElement = document.createElement("div");
1742
+ divElement.className = "vditor-copy";
1743
+ divElement.innerHTML = "<span aria-label=\"".concat(((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.copy) || "复制", "\"\nonmouseover=\"this.setAttribute('aria-label', '").concat(((_b = window.VditorI18n) === null || _b === void 0 ? void 0 : _b.copy) || "复制", "')\"\nclass=\"vditor-tooltipped vditor-tooltipped__w\"\nonclick=\"event.stopPropagation();this.previousElementSibling.select();document.execCommand('copy');this.setAttribute('aria-label', '").concat(((_c = window.VditorI18n) === null || _c === void 0 ? void 0 : _c.copied) || "已复制", "');this.previousElementSibling.blur()\">").concat(iconHTML, "</span>");
1744
+ var textarea = document.createElement("textarea");
1745
+ textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText);
1746
+ divElement.insertAdjacentElement("afterbegin", textarea);
1747
+ if (option && option.renderMenu) {
1748
+ option.renderMenu(e, divElement);
1749
+ }
1750
+ e.before(divElement);
1751
+ e.style.maxHeight = (window.outerHeight - 40) + "px";
1752
+ // https://github.com/Vanessa219/vditor/issues/1356
1753
+ e.insertAdjacentHTML("afterend", "<span style=\"position: absolute\">".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, "</span>"));
1754
+ });
1755
+ };
1756
+
1757
+
1758
+ /***/ }),
1759
+
1760
+ /***/ 325:
1761
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1762
+
1763
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1764
+ /* harmony export */ "P": () => (/* binding */ flowchartRender)
1765
+ /* harmony export */ });
1766
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
1767
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
1768
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
1769
+
1770
+
1771
+
1772
+ var flowchartRender = function (element, cdn) {
1773
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
1774
+ var flowchartElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getElements(element);
1775
+ if (flowchartElements.length === 0) {
1776
+ return;
1777
+ }
1778
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/flowchart.js/flowchart.min.js"), "vditorFlowchartScript").then(function () {
1779
+ flowchartElements.forEach(function (item) {
1780
+ if (item.getAttribute("data-processed") === "true") {
1781
+ return;
1782
+ }
1783
+ var flowchartObj = flowchart.parse(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getCode(item));
1784
+ item.innerHTML = "";
1785
+ flowchartObj.drawSVG(item);
1786
+ item.setAttribute("data-processed", "true");
1787
+ });
1788
+ });
1789
+ };
1790
+
1791
+
1792
+ /***/ }),
1793
+
1794
+ /***/ 483:
1795
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1796
+
1797
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1798
+ /* harmony export */ "v": () => (/* binding */ graphvizRender)
1799
+ /* harmony export */ });
1800
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
1801
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
1802
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
1803
+
1804
+
1805
+
1806
+ var graphvizRender = function (element, cdn) {
1807
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
1808
+ var graphvizElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getElements(element);
1809
+ if (graphvizElements.length === 0) {
1810
+ return;
1811
+ }
1812
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/graphviz/viz.js"), "vditorGraphVizScript").then(function () {
1813
+ graphvizElements.forEach(function (e) {
1814
+ var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getCode(e);
1815
+ if (e.parentElement.classList.contains("vditor-wysiwyg__pre") ||
1816
+ e.parentElement.classList.contains("vditor-ir__marker--pre")) {
1817
+ return;
1818
+ }
1819
+ if (e.getAttribute("data-processed") === "true" || code.trim() === "") {
1820
+ return;
1821
+ }
1822
+ try {
1823
+ var blob = new Blob(["importScripts('".concat(document.getElementById("vditorGraphVizScript").src.replace("viz.js", "full.render.js"), "');")], { type: "application/javascript" });
1824
+ var url = window.URL || window.webkitURL;
1825
+ var blobUrl = url.createObjectURL(blob);
1826
+ var worker = new Worker(blobUrl);
1827
+ new Viz({ worker: worker })
1828
+ .renderSVGElement(code).then(function (result) {
1829
+ e.innerHTML = result.outerHTML;
1830
+ }).catch(function (error) {
1831
+ e.innerHTML = "graphviz render error: <br>".concat(error);
1832
+ e.className = "vditor-reset--error";
1833
+ });
1834
+ }
1835
+ catch (e) {
1836
+ console.error("graphviz error", e);
1837
+ }
1838
+ e.setAttribute("data-processed", "true");
1839
+ });
1840
+ });
1841
+ };
1842
+
1843
+
1844
+ /***/ }),
1845
+
1846
+ /***/ 999:
1847
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1848
+
1849
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1850
+ /* harmony export */ "s": () => (/* binding */ highlightRender)
1851
+ /* harmony export */ });
1852
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
1853
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
1854
+ /* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(290);
1855
+
1856
+
1857
+
1858
+ var highlightRender = function (hljsOption, element, cdn) {
1859
+ if (element === void 0) { element = document; }
1860
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
1861
+ var style = hljsOption.style;
1862
+ if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(style)) {
1863
+ style = "github";
1864
+ }
1865
+ var vditorHljsStyle = document.getElementById("vditorHljsStyle");
1866
+ var href = "".concat(cdn, "/dist/js/highlight.js/styles/").concat(style, ".min.css");
1867
+ if (vditorHljsStyle && vditorHljsStyle.getAttribute('href') !== href) {
1868
+ vditorHljsStyle.remove();
1869
+ }
1870
+ (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)("".concat(cdn, "/dist/js/highlight.js/styles/").concat(style, ".min.css"), "vditorHljsStyle");
1871
+ if (hljsOption.enable === false) {
1872
+ return;
1873
+ }
1874
+ var codes = element.querySelectorAll("pre > code");
1875
+ if (codes.length === 0) {
1876
+ return;
1877
+ }
1878
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/highlight.js/highlight.min.js?v=11.7.0"), "vditorHljsScript").then(function () {
1879
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/highlight.js/third-languages.js?v=1.0.1"), "vditorHljsThirdScript").then(function () {
1880
+ element.querySelectorAll("pre > code").forEach(function (block) {
1881
+ // ir & wysiwyg 区域不渲染
1882
+ if (block.parentElement.classList.contains("vditor-ir__marker--pre") ||
1883
+ block.parentElement.classList.contains("vditor-wysiwyg__pre")) {
1884
+ return;
1885
+ }
1886
+ if (block.classList.contains("language-mermaid") || block.classList.contains("language-flowchart") ||
1887
+ block.classList.contains("language-echarts") || block.classList.contains("language-mindmap") ||
1888
+ block.classList.contains("language-plantuml") || block.classList.contains("language-smiles") ||
1889
+ block.classList.contains("language-abc") || block.classList.contains("language-graphviz") ||
1890
+ block.classList.contains("language-math")) {
1891
+ return;
1892
+ }
1893
+ if (hljsOption.defaultLang !== "" && block.className.indexOf("language-") === -1) {
1894
+ block.classList.add("language-" + hljsOption.defaultLang);
1895
+ }
1896
+ var language = block.className.replace("language-", "");
1897
+ if (!window.hljs.getLanguage(language)) {
1898
+ language = "plaintext";
1899
+ }
1900
+ block.innerHTML = window.hljs.highlight(block.textContent, {
1901
+ language: language,
1902
+ ignoreIllegals: true
1903
+ }).value;
1904
+ block.classList.add("hljs");
1905
+ if (!hljsOption.lineNumber) {
1906
+ return;
1907
+ }
1908
+ block.classList.add("vditor-linenumber");
1909
+ var linenNumberTemp = block.querySelector(".vditor-linenumber__temp");
1910
+ if (!linenNumberTemp) {
1911
+ linenNumberTemp = document.createElement("div");
1912
+ linenNumberTemp.className = "vditor-linenumber__temp";
1913
+ block.insertAdjacentElement("beforeend", linenNumberTemp);
1914
+ }
1915
+ var whiteSpace = getComputedStyle(block).whiteSpace;
1916
+ var isSoftWrap = false;
1917
+ if (whiteSpace === "pre-wrap" || whiteSpace === "pre-line") {
1918
+ isSoftWrap = true;
1919
+ }
1920
+ var lineNumberHTML = "";
1921
+ var lineList = block.textContent.split(/\r\n|\r|\n/g);
1922
+ lineList.pop();
1923
+ lineList.map(function (line) {
1924
+ var lineHeight = "";
1925
+ if (isSoftWrap) {
1926
+ linenNumberTemp.textContent = line || "\n";
1927
+ lineHeight = " style=\"height:".concat(linenNumberTemp.getBoundingClientRect().height, "px\"");
1928
+ }
1929
+ lineNumberHTML += "<span".concat(lineHeight, "></span>");
1930
+ });
1931
+ linenNumberTemp.style.display = "none";
1932
+ lineNumberHTML = "<span class=\"vditor-linenumber__rows\">".concat(lineNumberHTML, "</span>");
1933
+ block.insertAdjacentHTML("beforeend", lineNumberHTML);
1934
+ });
1935
+ });
1936
+ });
1937
+ };
1938
+
1939
+
1940
+ /***/ }),
1941
+
1942
+ /***/ 11:
1943
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1944
+
1945
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1946
+ /* harmony export */ "K": () => (/* binding */ markmapRender)
1947
+ /* harmony export */ });
1948
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
1949
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
1950
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
1951
+
1952
+
1953
+
1954
+ var enabled = {};
1955
+ var transform = function (transformer, content) {
1956
+ var result = transformer.transform(content);
1957
+ var keys = Object.keys(result.features).filter(function (key) { return !enabled[key]; });
1958
+ keys.forEach(function (key) {
1959
+ enabled[key] = true;
1960
+ });
1961
+ var _a = transformer.getAssets(keys), styles = _a.styles, scripts = _a.scripts;
1962
+ var markmap = window.markmap;
1963
+ if (styles)
1964
+ markmap.loadCSS(styles);
1965
+ if (scripts)
1966
+ markmap.loadJS(scripts);
1967
+ return result;
1968
+ };
1969
+ var init = function (el, code) {
1970
+ var _a = window.markmap, Transformer = _a.Transformer, Markmap = _a.Markmap, deriveOptions = _a.deriveOptions, globalCSS = _a.globalCSS;
1971
+ var transformer = new Transformer();
1972
+ el.innerHTML = '<svg style="width:100%"></svg>';
1973
+ var svg = el.firstChild;
1974
+ var mm = Markmap.create(svg, null);
1975
+ var _b = transform(transformer, code), root = _b.root, frontmatter = _b.frontmatter;
1976
+ var markmapOptions = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.markmap;
1977
+ var frontmatterOptions = deriveOptions(markmapOptions);
1978
+ mm.setData(root, frontmatterOptions);
1979
+ mm.fit();
1980
+ };
1981
+ var markmapRender = function (element, cdn) {
1982
+ if (element === void 0) { element = document; }
1983
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
1984
+ var markmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getElements(element);
1985
+ if (markmapElements.length === 0) {
1986
+ return;
1987
+ }
1988
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/markmap/markmap.min.js"), "vditorMarkerScript").then(function () {
1989
+ markmapElements.forEach(function (item) {
1990
+ var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getCode(item);
1991
+ if (item.getAttribute("data-processed") === "true" || code.trim() === "") {
1992
+ return;
1993
+ }
1994
+ var render = document.createElement("div");
1995
+ render.className = "language-markmap";
1996
+ item.parentNode.appendChild(render);
1997
+ init(render, code);
1998
+ if (item.parentNode.childNodes[0].nodeName == "CODE") {
1999
+ item.parentNode.removeChild(item.parentNode.childNodes[0]);
2000
+ }
2001
+ });
2002
+ });
2003
+ };
2004
+
2005
+
2006
+ /***/ }),
2007
+
2008
+ /***/ 284:
2009
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2010
+
2011
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2012
+ /* harmony export */ "xX": () => (/* binding */ bindMathContextMenu)
2013
+ /* harmony export */ });
2014
+ /* unused harmony exports bindMathCopyInterceptor, bindMathInteractionsInContainer */
2015
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(413);
2016
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
2017
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2018
+ return new (P || (P = Promise))(function (resolve, reject) {
2019
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
2020
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
2021
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
2022
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
2023
+ });
2024
+ };
2025
+ var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
2026
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
2027
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
2028
+ function verb(n) { return function (v) { return step([n, v]); }; }
2029
+ function step(op) {
2030
+ if (f) throw new TypeError("Generator is already executing.");
2031
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
2032
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
2033
+ if (y = 0, t) op = [op[0] & 2, t.value];
2034
+ switch (op[0]) {
2035
+ case 0: case 1: t = op; break;
2036
+ case 4: _.label++; return { value: op[1], done: false };
2037
+ case 5: _.label++; y = op[1]; op = [0]; continue;
2038
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
2039
+ default:
2040
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
2041
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
2042
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
2043
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
2044
+ if (t[2]) _.ops.pop();
2045
+ _.trys.pop(); continue;
2046
+ }
2047
+ op = body.call(thisArg, _);
2048
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
2049
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
2050
+ }
2051
+ };
2052
+
2053
+ /**
2054
+ * 初始化并管理数学公式自定义右键菜单。
2055
+ * 提供:导出 MathML、复制 TeX、复制 SVG 代码 三项操作。
2056
+ */
2057
+ var MathContextMenu = /** @class */ (function () {
2058
+ function MathContextMenu() {
2059
+ this.menuEl = null;
2060
+ this.hideTimer = null;
2061
+ }
2062
+ /**
2063
+ * 创建菜单 DOM 并插入到 body,同时注入样式。
2064
+ */
2065
+ MathContextMenu.prototype.init = function () {
2066
+ var _this = this;
2067
+ if (this.menuEl)
2068
+ return;
2069
+ this.menuEl = document.createElement("div");
2070
+ this.menuEl.className = "vditor-math-menu";
2071
+ this.menuEl.style.display = "none";
2072
+ this.menuEl.innerHTML = "\n <div class=\"vditor-math-menu__item\" data-action=\"mml\">\u590D\u5236 MathML</div>\n <div class=\"vditor-math-menu__item\" data-action=\"tex\">\u590D\u5236 Tex Commands</div>\n <div class=\"vditor-math-menu__item\" data-action=\"svg\">\u590D\u5236 SVG \u4EE3\u7801</div>\n ";
2073
+ // 阻止菜单内的鼠标事件冒泡到 document,以避免立即关闭
2074
+ this.menuEl.addEventListener("mousedown", function (ev) {
2075
+ ev.stopPropagation();
2076
+ });
2077
+ this.menuEl.addEventListener("touchstart", function (ev) {
2078
+ ev.stopPropagation();
2079
+ }, { passive: true });
2080
+ this.menuEl.addEventListener("click", function (e) {
2081
+ var target = e.target;
2082
+ var action = target.getAttribute("data-action");
2083
+ var mathEl = _this.menuEl.dataset.targetId
2084
+ ? document.querySelector("[data-math-id=\"".concat(_this.menuEl.dataset.targetId, "\"]"))
2085
+ : null;
2086
+ if (!action || !mathEl)
2087
+ return;
2088
+ _this.onAction(action, mathEl);
2089
+ // 点击后隐藏主菜单
2090
+ _this.hide();
2091
+ });
2092
+ document.body.appendChild(this.menuEl);
2093
+ // 删除子菜单逻辑:不再提供“复制文本”预览面板
2094
+ // 外部点击/触摸关闭:仅在点击目标不在菜单内时隐藏
2095
+ document.addEventListener("mousedown", function (ev) {
2096
+ var _a;
2097
+ var target = ev.target;
2098
+ var menuOpen = _this.menuEl && _this.menuEl.style.display !== "none";
2099
+ var submenuOpen = false;
2100
+ if (!menuOpen)
2101
+ return;
2102
+ if (target && ((_a = _this.menuEl) === null || _a === void 0 ? void 0 : _a.contains(target)))
2103
+ return;
2104
+ _this.hide();
2105
+ }, true);
2106
+ document.addEventListener("touchstart", function (ev) {
2107
+ var _a;
2108
+ var target = ev.target || null;
2109
+ var menuOpen = _this.menuEl && _this.menuEl.style.display !== "none";
2110
+ var submenuOpen = false;
2111
+ if (!menuOpen)
2112
+ return;
2113
+ if (target && ((_a = _this.menuEl) === null || _a === void 0 ? void 0 : _a.contains(target)))
2114
+ return;
2115
+ _this.hide();
2116
+ }, { capture: true, passive: true });
2117
+ document.addEventListener("scroll", function () { return _this.hide(); }, {
2118
+ capture: true,
2119
+ });
2120
+ window.addEventListener("resize", function () { return _this.hide(); });
2121
+ };
2122
+ /**
2123
+ * 显示菜单到指定位置,并绑定当前目标元素。
2124
+ */
2125
+ MathContextMenu.prototype.show = function (x, y, targetEl) {
2126
+ if (!this.menuEl)
2127
+ return;
2128
+ this.menuEl.style.display = "block";
2129
+ // 边缘自适应定位,避免超出视口
2130
+ var margin = 8;
2131
+ // 先设置到点击位置以获得宽高
2132
+ this.menuEl.style.left = "".concat(x, "px");
2133
+ this.menuEl.style.top = "".concat(y, "px");
2134
+ var mw = this.menuEl.offsetWidth;
2135
+ var mh = this.menuEl.offsetHeight;
2136
+ var vw = window.innerWidth;
2137
+ var vh = window.innerHeight;
2138
+ var px = x;
2139
+ var py = y;
2140
+ if (px + mw + margin > vw) {
2141
+ px = Math.max(margin, vw - mw - margin);
2142
+ }
2143
+ if (py + mh + margin > vh) {
2144
+ py = Math.max(margin, vh - mh - margin);
2145
+ }
2146
+ this.menuEl.style.left = "".concat(px, "px");
2147
+ this.menuEl.style.top = "".concat(py, "px");
2148
+ // 记录目标 id 以便点击时处理
2149
+ var id = targetEl.getAttribute("data-math-id");
2150
+ if (!id) {
2151
+ id = "mjx-".concat(Date.now(), "-").concat(Math.floor(Math.random() * 10000));
2152
+ targetEl.setAttribute("data-math-id", id);
2153
+ }
2154
+ this.menuEl.dataset.targetId = id;
2155
+ if (this.hideTimer) {
2156
+ window.clearTimeout(this.hideTimer);
2157
+ this.hideTimer = null;
2158
+ }
2159
+ };
2160
+ /**
2161
+ * 隐藏菜单。
2162
+ */
2163
+ MathContextMenu.prototype.hide = function () {
2164
+ if (!this.menuEl)
2165
+ return;
2166
+ this.menuEl.style.display = "none";
2167
+ this.menuEl.dataset.targetId = "";
2168
+ // 无子菜单,无需额外清理
2169
+ };
2170
+ /**
2171
+ * 处理菜单点击动作:导出 MathML / 复制 TeX / 复制文本。
2172
+ */
2173
+ /**
2174
+ * 菜单动作处理:MathML / TeX / SVG
2175
+ * - MathML:优先使用 KaTeX 生成 MathML;若不可用则使用 MathJax;失败时回退为 TeX
2176
+ * - TeX:直接复制 data-math
2177
+ * - SVG:若 MathJax SVG 转换可用(tex2svg),生成并复制 <svg> 源码;否则提示不可用
2178
+ */
2179
+ /**
2180
+ * 菜单动作处理(异步)
2181
+ * - MathML:KaTeX 优先,其次 MathJax,失败回退 TeX
2182
+ * - TeX:直接复制原始 data-math
2183
+ * - SVG:若未加载 MathJax SVG 能力,按需动态加载,再生成并复制
2184
+ */
2185
+ MathContextMenu.prototype.onAction = function (action, mathEl) {
2186
+ var _a;
2187
+ return __awaiter(this, void 0, void 0, function () {
2188
+ var tex, mml, display, pureMml, MJ, display, container, svg, svgHtml, _b;
2189
+ return __generator(this, function (_c) {
2190
+ switch (_c.label) {
2191
+ case 0:
2192
+ tex = mathEl.getAttribute("data-math") || "";
2193
+ if (!(action === "mml")) return [3 /*break*/, 1];
2194
+ // 通过 KaTeX 或 MathJax 将 TeX 转为 MathML,并复制到剪贴板
2195
+ try {
2196
+ mml = "";
2197
+ display = mathEl.tagName === "DIV";
2198
+ if (typeof katex !== "undefined") {
2199
+ mml = katex.renderToString(tex, {
2200
+ displayMode: display,
2201
+ output: "mathml",
2202
+ });
2203
+ }
2204
+ else if ((_a = window.MathJax) === null || _a === void 0 ? void 0 : _a.tex2mml) {
2205
+ mml = window.MathJax.tex2mml(tex, {
2206
+ display: display,
2207
+ });
2208
+ }
2209
+ pureMml = this.normalizeMathML(mml || tex);
2210
+ this.copyText(pureMml);
2211
+ this.toast("MathML 已复制到剪贴板");
2212
+ }
2213
+ catch (e) {
2214
+ this.copyText(tex);
2215
+ this.toast("MathML 转换失败,已复制 TeX");
2216
+ }
2217
+ return [3 /*break*/, 6];
2218
+ case 1:
2219
+ if (!(action === "tex")) return [3 /*break*/, 2];
2220
+ this.copyText(tex);
2221
+ this.toast("TeX 已复制到剪贴板");
2222
+ return [3 /*break*/, 6];
2223
+ case 2:
2224
+ if (!(action === "svg")) return [3 /*break*/, 6];
2225
+ _c.label = 3;
2226
+ case 3:
2227
+ _c.trys.push([3, 5, , 6]);
2228
+ return [4 /*yield*/, this.ensureMathJaxSvg()];
2229
+ case 4:
2230
+ MJ = _c.sent();
2231
+ if (MJ === null || MJ === void 0 ? void 0 : MJ.tex2svg) {
2232
+ display = mathEl.tagName === "DIV";
2233
+ container = MJ.tex2svg(tex, { display: display });
2234
+ svg = container.querySelector("svg");
2235
+ if (svg) {
2236
+ if (!svg.getAttribute("xmlns")) {
2237
+ svg.setAttribute("xmlns", "http://www.w3.org/2000/svg");
2238
+ }
2239
+ svgHtml = svg.outerHTML;
2240
+ this.copySvg(svgHtml);
2241
+ return [2 /*return*/];
2242
+ }
2243
+ }
2244
+ this.toast("当前引擎不支持 SVG 导出");
2245
+ return [3 /*break*/, 6];
2246
+ case 5:
2247
+ _b = _c.sent();
2248
+ this.toast("SVG 导出失败");
2249
+ return [3 /*break*/, 6];
2250
+ case 6: return [2 /*return*/];
2251
+ }
2252
+ });
2253
+ });
2254
+ };
2255
+ /**
2256
+ * 确保 MathJax SVG 转换能力可用
2257
+ * - 已存在 `MathJax.tex2svg`:直接返回 MathJax
2258
+ * - 不存在:按需加载 `/js/mathjax/tex-svg-full.js`,加载完成后返回 MathJax
2259
+ */
2260
+ MathContextMenu.prototype.ensureMathJaxSvg = function () {
2261
+ return __awaiter(this, void 0, void 0, function () {
2262
+ var MJ;
2263
+ return __generator(this, function (_a) {
2264
+ switch (_a.label) {
2265
+ case 0:
2266
+ MJ = window.MathJax;
2267
+ if (MJ === null || MJ === void 0 ? void 0 : MJ.tex2svg) {
2268
+ return [2 /*return*/, MJ];
2269
+ }
2270
+ return [4 /*yield*/, (0,_util_addScript__WEBPACK_IMPORTED_MODULE_0__/* .addScript */ .G)("/js/mathjax/tex-svg-full.js", "protyleMathJaxSvgScript")];
2271
+ case 1:
2272
+ _a.sent();
2273
+ return [2 /*return*/, window.MathJax];
2274
+ }
2275
+ });
2276
+ });
2277
+ };
2278
+ /**
2279
+ * 规范化 MathML 字符串
2280
+ * - 若包含 KaTeX 包裹的 <span class="katex*">,仅提取其中的 <math> ... </math>
2281
+ * - 若直接为 <math> 片段,原样返回
2282
+ */
2283
+ MathContextMenu.prototype.normalizeMathML = function (mml) {
2284
+ try {
2285
+ var doc = new DOMParser().parseFromString(mml, "text/html");
2286
+ var math = doc.querySelector("math");
2287
+ if (math) {
2288
+ return math.outerHTML;
2289
+ }
2290
+ }
2291
+ catch (_a) { }
2292
+ // 正则降级:去除外层 span 包裹,保留中间的 <math>
2293
+ var re = /^<span[^>]*>\s*(<math[\s\S]*?<\/math>)\s*<\/span>$/i;
2294
+ var match = mml.match(re);
2295
+ if (match && match[1]) {
2296
+ return match[1];
2297
+ }
2298
+ return mml;
2299
+ };
2300
+ /**
2301
+ * 复制 SVG 图片到剪贴板:
2302
+ * 1) 首选使用 ClipboardItem 写入 image/svg+xml(支持的浏览器将以图片形式粘贴)。
2303
+ * 2) 若不支持或失败,则降级为复制 SVG 源码文本。
2304
+ */
2305
+ MathContextMenu.prototype.copySvg = function (svgHtml) {
2306
+ // 直接复制 SVG 源码到剪贴板
2307
+ this.copyText(svgHtml);
2308
+ this.toast("SVG 源码已复制到剪贴板");
2309
+ };
2310
+ /**
2311
+ * 展示“复制文本”的二级菜单:
2312
+ * - 复制可视文本
2313
+ * - 复制公式 HTML 渲染
2314
+ * 并在面板中显示可复制的 HTML 代码。
2315
+ */
2316
+ // 删除文本预览子菜单函数
2317
+ // 删除 CHTML 加载与文本提取相关方法
2318
+ /**
2319
+ * 将 HTML 字符串进行转义,用于安全展示在代码块中。
2320
+ */
2321
+ MathContextMenu.prototype.escapeHTML = function (html) {
2322
+ return html
2323
+ .replace(/&/g, "&amp;")
2324
+ .replace(/</g, "&lt;")
2325
+ .replace(/>/g, "&gt;");
2326
+ };
2327
+ /**
2328
+ * 文本复制到剪贴板,支持降级。
2329
+ */
2330
+ MathContextMenu.prototype.copyText = function (text) {
2331
+ var _this = this;
2332
+ if (navigator.clipboard && navigator.clipboard.writeText) {
2333
+ navigator.clipboard
2334
+ .writeText(text)
2335
+ .catch(function () { return _this.fallbackCopy(text); });
2336
+ }
2337
+ else {
2338
+ this.fallbackCopy(text);
2339
+ }
2340
+ };
2341
+ /**
2342
+ * 复制降级实现。
2343
+ */
2344
+ MathContextMenu.prototype.fallbackCopy = function (text) {
2345
+ var ta = document.createElement("textarea");
2346
+ ta.value = text;
2347
+ ta.style.position = "fixed";
2348
+ ta.style.left = "-9999px";
2349
+ document.body.appendChild(ta);
2350
+ ta.select();
2351
+ try {
2352
+ document.execCommand("copy");
2353
+ }
2354
+ catch (_a) { }
2355
+ document.body.removeChild(ta);
2356
+ };
2357
+ /**
2358
+ * 简易提示气泡。
2359
+ */
2360
+ MathContextMenu.prototype.toast = function (message) {
2361
+ var el = document.createElement("div");
2362
+ el.textContent = message;
2363
+ el.style.position = "fixed";
2364
+ el.style.bottom = "16px";
2365
+ el.style.right = "16px";
2366
+ el.style.background = "#fff";
2367
+ el.style.color = "#333";
2368
+ el.style.border = "1px solid #e5e7eb";
2369
+ el.style.boxShadow = "0 2px 8px rgba(0,0,0,0.15)";
2370
+ el.style.padding = "6px 10px";
2371
+ el.style.borderRadius = "4px";
2372
+ el.style.fontSize = "12px";
2373
+ el.style.zIndex = "10000";
2374
+ document.body.appendChild(el);
2375
+ setTimeout(function () {
2376
+ if (el.parentNode)
2377
+ el.parentNode.removeChild(el);
2378
+ }, 1600);
2379
+ };
2380
+ return MathContextMenu;
2381
+ }());
2382
+ var menu = new MathContextMenu();
2383
+ /**
2384
+ * 绑定指定数学元素的右键事件,展示自定义菜单。
2385
+ */
2386
+ var bindMathContextMenu = function (mathEl) {
2387
+ /**
2388
+ * 绑定数学元素右键菜单
2389
+ * - 在编辑模式下启用
2390
+ * - 在预览模式或分屏预览(SV)模式下禁用自定义右键
2391
+ * - 避免重复绑定:通过 data-context-menu 标记
2392
+ */
2393
+ var inPreview = !!(mathEl.closest(".vditor-preview") || mathEl.closest(".vditor-sv"));
2394
+ if (inPreview) {
2395
+ return;
2396
+ }
2397
+ if (mathEl.getAttribute("data-context-menu") === "true") {
2398
+ return;
2399
+ }
2400
+ menu.init();
2401
+ mathEl.addEventListener("contextmenu", function (e) {
2402
+ e.preventDefault();
2403
+ e.stopPropagation();
2404
+ if (typeof e.stopImmediatePropagation === "function") {
2405
+ e.stopImmediatePropagation();
2406
+ }
2407
+ var x = e.clientX;
2408
+ var y = e.clientY;
2409
+ menu.show(x, y, mathEl);
2410
+ }, { capture: true });
2411
+ mathEl.setAttribute("data-context-menu", "true");
2412
+ };
2413
+ /**
2414
+ * 为数学元素绑定复制拦截:选区完全在数学容器内时,仅复制可见文本
2415
+ * 保持与 WYSIWYG 模式一致的行为
2416
+ * @param mathEl 数学公式容器(.language-math)
2417
+ */
2418
+ var bindMathCopyInterceptor = function (mathEl) {
2419
+ if (mathEl.getAttribute("data-copy-bound") === "true") {
2420
+ return;
2421
+ }
2422
+ mathEl.addEventListener("copy", function (event) {
2423
+ var sel = getSelection();
2424
+ if (!sel || sel.rangeCount === 0) {
2425
+ return;
2426
+ }
2427
+ var range = sel.getRangeAt(0);
2428
+ var container = mathEl.closest(".language-math");
2429
+ if (container &&
2430
+ container.contains(range.startContainer) &&
2431
+ container.contains(range.endContainer)) {
2432
+ event.stopPropagation();
2433
+ event.preventDefault();
2434
+ var text = range.toString();
2435
+ event.clipboardData.setData("text/plain", text);
2436
+ event.clipboardData.setData("text/html", "");
2437
+ }
2438
+ });
2439
+ mathEl.setAttribute("data-copy-bound", "true");
2440
+ };
2441
+ /**
2442
+ * 在指定容器内批量为 IR/WYSIWYG 的数学元素绑定交互(右键菜单 + 复制拦截)
2443
+ * - 预览/分屏预览容器内的元素会被跳过
2444
+ * - 自动避免重复绑定
2445
+ * @param container 扫描范围容器(例如 vditor.ir.element 或 vditor.wysiwyg.element)
2446
+ */
2447
+ var bindMathInteractionsInContainer = function (container) {
2448
+ var nodes = container.querySelectorAll(".language-math");
2449
+ nodes.forEach(function (el) {
2450
+ var mathEl = el;
2451
+ var inPreview = !!(mathEl.closest(".vditor-preview") || mathEl.closest(".vditor-sv"));
2452
+ if (inPreview)
2453
+ return;
2454
+ bindMathContextMenu(mathEl);
2455
+ bindMathCopyInterceptor(mathEl);
2456
+ });
2457
+ };
2458
+
2459
+
2460
+ /***/ }),
2461
+
2462
+ /***/ 472:
2463
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2464
+
2465
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2466
+ /* harmony export */ "H": () => (/* binding */ mathRender)
2467
+ /* harmony export */ });
2468
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
2469
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(413);
2470
+ /* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(290);
2471
+ /* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(105);
2472
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
2473
+ /* harmony import */ var _mathContextMenu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(284);
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+ /**
2481
+ * 规范化 TeX 字符串,避免因控制序列与后续字母粘连导致解析失败。
2482
+ * 例如 "\\vdotsa" 会被视作未知命令,将其修正为 "\\vdots{}a"。
2483
+ */
2484
+ var normalizeTex = function (tex) {
2485
+ // 覆盖常见 dots 命令及 amsmath 变体,避免与后续字母/数字/下划线粘连
2486
+ var DOT_MACROS = [
2487
+ "vdots",
2488
+ "ddots",
2489
+ "ldots",
2490
+ "cdots",
2491
+ "dots",
2492
+ "dotsc",
2493
+ "dotsb",
2494
+ "dotsm",
2495
+ "dotsi",
2496
+ "dotso",
2497
+ ];
2498
+ var pattern = new RegExp("\\\\(?:".concat(DOT_MACROS.join("|"), ")(?=[A-Za-z0-9_])"), "g");
2499
+ return tex.replace(pattern, function (m) { return "".concat(m, "{}"); });
2500
+ };
2501
+ /**
2502
+ * 数学公式渲染入口
2503
+ *
2504
+ * 默认使用 MathJax 渲染(SVG 输出),并在需要时按需加载相关脚本与样式。
2505
+ * 支持通过 options.math.engine 切换为 KaTeX。
2506
+ *
2507
+ * 参数说明:
2508
+ * - element: 需要进行数学渲染的根容器(默认 document)
2509
+ * - options: 包含 cdn 路径与 math 相关设置(engine、inlineDigit、macros 等)
2510
+ */
2511
+ var mathRender = function (element, options) {
2512
+ if (element === void 0) { element = document; }
2513
+ var mathElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getElements(element);
2514
+ if (mathElements.length === 0) {
2515
+ return;
2516
+ }
2517
+ var defaultOptions = {
2518
+ cdn: _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN,
2519
+ math: {
2520
+ engine: "MathJax",
2521
+ inlineDigit: false,
2522
+ macros: {},
2523
+ },
2524
+ };
2525
+ if (options && options.math) {
2526
+ options.math = Object.assign({}, defaultOptions.math, options.math);
2527
+ }
2528
+ options = Object.assign({}, defaultOptions, options);
2529
+ if (options.math.engine === "KaTeX") {
2530
+ (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_3__/* .addStyle */ .c)("".concat(options.cdn, "/dist/js/katex/katex.min.css?v=0.16.9"), "vditorKatexStyle");
2531
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_4__/* .addScript */ .G)("".concat(options.cdn, "/dist/js/katex/katex.min.js?v=0.16.9"), "vditorKatexScript").then(function () {
2532
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_4__/* .addScript */ .G)("".concat(options.cdn, "/dist/js/katex/mhchem.min.js?v=0.16.9"), "vditorKatexChemScript").then(function () {
2533
+ mathElements.forEach(function (mathElement) {
2534
+ if (mathElement.parentElement.classList.contains("vditor-wysiwyg__pre") ||
2535
+ mathElement.parentElement.classList.contains("vditor-ir__marker--pre")) {
2536
+ return;
2537
+ }
2538
+ if (mathElement.getAttribute("data-math")) {
2539
+ return;
2540
+ }
2541
+ var math = normalizeTex((0,_util_code160to32__WEBPACK_IMPORTED_MODULE_5__/* .code160to32 */ .X)(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getCode(mathElement)));
2542
+ mathElement.setAttribute("data-math", math);
2543
+ try {
2544
+ // KaTeX 不完全支持 \unicode,提供降级宏以避免报错
2545
+ var katexMacros = Object.assign({ oiint: "\\iint" }, options.math.macros || {});
2546
+ var inPreviewPre = mathElement.parentElement &&
2547
+ mathElement.parentElement.tagName === "PRE";
2548
+ mathElement.innerHTML = katex.renderToString(math, {
2549
+ displayMode: inPreviewPre || mathElement.tagName === "DIV",
2550
+ output: "html",
2551
+ macros: katexMacros,
2552
+ });
2553
+ if (inPreviewPre) {
2554
+ var pre = mathElement.parentElement;
2555
+ pre.classList.add("vditor-wysiwyg__preview--math");
2556
+ }
2557
+ }
2558
+ catch (e) {
2559
+ // 渲染失败时按普通文本展示原始内容
2560
+ var raw = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_5__/* .code160to32 */ .X)(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getCode(mathElement));
2561
+ mathElement.textContent = raw;
2562
+ // 保留原有类名,移除错误态
2563
+ mathElement.className = "language-math";
2564
+ }
2565
+ mathElement.addEventListener("copy", function (event) {
2566
+ event.stopPropagation();
2567
+ event.preventDefault();
2568
+ var vditorMathElement = event.currentTarget.closest(".language-math");
2569
+ event.clipboardData.setData("text/html", vditorMathElement.innerHTML);
2570
+ event.clipboardData.setData("text/plain", vditorMathElement.getAttribute("data-math"));
2571
+ });
2572
+ // 绑定自定义右键菜单(编辑区生效,预览区自动跳过)
2573
+ (0,_mathContextMenu__WEBPACK_IMPORTED_MODULE_2__/* .bindMathContextMenu */ .xX)(mathElement);
2574
+ });
2575
+ });
2576
+ });
2577
+ }
2578
+ else if (options.math.engine === "MathJax") {
2579
+ var chainAsync_1 = function (fns) {
2580
+ if (fns.length === 0) {
2581
+ return;
2582
+ }
2583
+ var curr = 0;
2584
+ var last = fns[fns.length - 1];
2585
+ var next = function () {
2586
+ var fn = fns[curr++];
2587
+ fn === last ? fn() : fn(next);
2588
+ };
2589
+ next();
2590
+ };
2591
+ if (!window.MathJax) {
2592
+ window.MathJax = {
2593
+ loader: {
2594
+ paths: { mathjax: "".concat(options.cdn, "/dist/js/mathjax") },
2595
+ },
2596
+ startup: {
2597
+ typeset: true,
2598
+ },
2599
+ tex: {
2600
+ inlineMath: [
2601
+ ["$", "$"],
2602
+ ["\\(", "\\)"],
2603
+ ],
2604
+ displayMath: [
2605
+ ["$$", "$$"],
2606
+ ["\\[", "\\]"],
2607
+ ],
2608
+ processEscapes: true,
2609
+ macros: options.math.macros,
2610
+ // 启用 ams 与 unicode,支持 \unicode 宏以渲染 ∯(oiint)
2611
+ packages: { "[+]": ["ams", "unicode", "noerrors"] },
2612
+ },
2613
+ // 关闭 MathJax 自带右键菜单,使用自定义菜单
2614
+ options: {
2615
+ enableMenu: false,
2616
+ },
2617
+ };
2618
+ // https://github.com/Vanessa219/vditor/issues/1453
2619
+ Object.assign(window.MathJax, options.math.mathJaxOptions);
2620
+ }
2621
+ // 循环加载会抛异常
2622
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_4__/* .addScriptSync */ .J)("".concat(options.cdn, "/dist/js/mathjax/tex-svg-full.js"), "protyleMathJaxScript");
2623
+ var renderMath_1 = function (mathElement, next) {
2624
+ var rawText = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_5__/* .code160to32 */ .X)(mathElement.textContent).trim();
2625
+ var math = normalizeTex(rawText);
2626
+ var inPreviewPre = mathElement.parentElement &&
2627
+ mathElement.parentElement.tagName === "PRE";
2628
+ var mathOptions = window.MathJax.getMetricsFor(mathElement);
2629
+ mathOptions.display = inPreviewPre || mathElement.tagName === "DIV";
2630
+ window.MathJax.tex2svgPromise(math, mathOptions).then(function (node) {
2631
+ mathElement.innerHTML = "";
2632
+ mathElement.setAttribute("data-math", math);
2633
+ mathElement.append(node);
2634
+ if (inPreviewPre) {
2635
+ var pre = mathElement.parentElement;
2636
+ pre.classList.add("vditor-wysiwyg__preview--math");
2637
+ }
2638
+ // 绑定自定义右键菜单(编辑区生效,预览区自动跳过)
2639
+ (0,_mathContextMenu__WEBPACK_IMPORTED_MODULE_2__/* .bindMathContextMenu */ .xX)(mathElement);
2640
+ window.MathJax.startup.document.clear();
2641
+ window.MathJax.startup.document.updateDocument();
2642
+ var errorTextElement = node.querySelector('[data-mml-node="merror"]');
2643
+ if (errorTextElement &&
2644
+ errorTextElement.textContent.trim() !== "") {
2645
+ // 渲染失败时按普通文本展示原始内容
2646
+ mathElement.textContent = rawText;
2647
+ mathElement.className = "language-math";
2648
+ }
2649
+ if (next) {
2650
+ next();
2651
+ }
2652
+ });
2653
+ };
2654
+ window.MathJax.startup.promise.then(function () {
2655
+ var chains = [];
2656
+ var _loop_1 = function (i) {
2657
+ var mathElement = mathElements[i];
2658
+ if (!mathElement.parentElement.classList.contains("vditor-wysiwyg__pre") &&
2659
+ !mathElement.parentElement.classList.contains("vditor-ir__marker--pre") &&
2660
+ !mathElement.getAttribute("data-math") &&
2661
+ (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_5__/* .code160to32 */ .X)(mathElement.textContent).trim()) {
2662
+ chains.push(function (next) {
2663
+ if (i === mathElements.length - 1) {
2664
+ renderMath_1(mathElement);
2665
+ }
2666
+ else {
2667
+ renderMath_1(mathElement, next);
2668
+ }
2669
+ });
2670
+ }
2671
+ };
2672
+ for (var i = 0; i < mathElements.length; i++) {
2673
+ _loop_1(i);
2674
+ }
2675
+ chainAsync_1(chains);
2676
+ });
2677
+ }
2678
+ };
2679
+
2680
+
2681
+ /***/ }),
2682
+
2683
+ /***/ 280:
2684
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2685
+
2686
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2687
+ /* harmony export */ "Y": () => (/* binding */ mediaRender)
2688
+ /* harmony export */ });
2689
+ /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(494);
2690
+
2691
+ var videoRender = function (element, url) {
2692
+ element.insertAdjacentHTML("afterend", "<video controls=\"controls\" src=\"".concat(url, "\"></video>"));
2693
+ element.remove();
2694
+ };
2695
+ var audioRender = function (element, url) {
2696
+ element.insertAdjacentHTML("afterend", "<audio controls=\"controls\" src=\"".concat(url, "\"></audio>"));
2697
+ element.remove();
2698
+ };
2699
+ var iframeRender = function (element, url) {
2700
+ var youtubeMatch = url.match(/\/\/(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?/);
2701
+ var youkuMatch = url.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/);
2702
+ var qqMatch = url.match(/\/\/v\.qq\.com\/x\/cover\/.*\/([^\/]+)\.html\??.*/);
2703
+ var coubMatch = url.match(/(?:www\.|\/\/)coub\.com\/view\/(\w+)/);
2704
+ var facebookMatch = url.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/);
2705
+ var dailymotionMatch = url.match(/.+dailymotion.com\/(video|hub)\/(\w+)\?/);
2706
+ var bilibiliMatch = url.match(/(?:www\.|\/\/)bilibili\.com\/video\/(\w+)/);
2707
+ var tedMatch = url.match(/(?:www\.|\/\/)ted\.com\/talks\/(\w+)/);
2708
+ if (youtubeMatch && youtubeMatch[1].length === 11) {
2709
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"//www.youtube.com/embed/".concat(youtubeMatch[1] +
2710
+ (youtubeMatch[2] ? "?start=" + youtubeMatch[2] : ""), "\"></iframe>"));
2711
+ element.remove();
2712
+ }
2713
+ else if (youkuMatch && youkuMatch[1]) {
2714
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"//player.youku.com/embed/".concat(youkuMatch[1], "\"></iframe>"));
2715
+ element.remove();
2716
+ }
2717
+ else if (qqMatch && qqMatch[1]) {
2718
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"https://v.qq.com/txp/iframe/player.html?vid=".concat(qqMatch[1], "\"></iframe>"));
2719
+ element.remove();
2720
+ }
2721
+ else if (coubMatch && coubMatch[1]) {
2722
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\"\n src=\"//coub.com/embed/".concat(coubMatch[1], "?muted=false&autostart=false&originalSize=true&startWithHD=true\"></iframe>"));
2723
+ element.remove();
2724
+ }
2725
+ else if (facebookMatch && facebookMatch[0]) {
2726
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\"\n src=\"https://www.facebook.com/plugins/video.php?href=".concat(encodeURIComponent(facebookMatch[0]), "\"></iframe>"));
2727
+ element.remove();
2728
+ }
2729
+ else if (dailymotionMatch && dailymotionMatch[2]) {
2730
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\"\n src=\"https://www.dailymotion.com/embed/video/".concat(dailymotionMatch[2], "\"></iframe>"));
2731
+ element.remove();
2732
+ }
2733
+ else if (url.indexOf("bilibili.com") > -1 && (url.indexOf("bvid=") > -1 || (bilibiliMatch && bilibiliMatch[1]))) {
2734
+ var params_1 = {
2735
+ bvid: (0,_util_function__WEBPACK_IMPORTED_MODULE_0__/* .getSearch */ .on)("bvid", url) || (bilibiliMatch && bilibiliMatch[1]),
2736
+ page: "1",
2737
+ high_quality: "1",
2738
+ as_wide: "1",
2739
+ allowfullscreen: "true",
2740
+ autoplay: "0"
2741
+ };
2742
+ new URL(url.startsWith("http") ? url : "https:" + url).search.split("&").forEach(function (item, index) {
2743
+ if (!item) {
2744
+ return;
2745
+ }
2746
+ if (index === 0) {
2747
+ item = item.substr(1);
2748
+ }
2749
+ var keyValue = item.split("=");
2750
+ params_1[keyValue[0]] = keyValue[1];
2751
+ });
2752
+ var src_1 = "https://player.bilibili.com/player.html?";
2753
+ var keys_1 = Object.keys(params_1);
2754
+ keys_1.forEach(function (key, index) {
2755
+ src_1 += "".concat(key, "=").concat(params_1[key]);
2756
+ if (index < keys_1.length - 1) {
2757
+ src_1 += "&";
2758
+ }
2759
+ });
2760
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"".concat(src_1, "\"></iframe>"));
2761
+ element.remove();
2762
+ }
2763
+ else if (tedMatch && tedMatch[1]) {
2764
+ element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"//embed.ted.com/talks/".concat(tedMatch[1], "\"></iframe>"));
2765
+ element.remove();
2766
+ }
2767
+ };
2768
+ var mediaRender = function (element) {
2769
+ if (!element) {
2770
+ return;
2771
+ }
2772
+ element.querySelectorAll("a").forEach(function (aElement) {
2773
+ var url = aElement.getAttribute("href");
2774
+ if (!url) {
2775
+ return;
2776
+ }
2777
+ if (url.match(/^.+.(mp4|m4v|ogg|ogv|webm)$/)) {
2778
+ videoRender(aElement, url);
2779
+ }
2780
+ else if (url.match(/^.+.(mp3|wav|flac)$/)) {
2781
+ audioRender(aElement, url);
2782
+ }
2783
+ else {
2784
+ iframeRender(aElement, url);
2785
+ }
2786
+ });
2787
+ };
2788
+
2789
+
2790
+ /***/ }),
2791
+
2792
+ /***/ 637:
2793
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2794
+
2795
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2796
+ /* harmony export */ "i": () => (/* binding */ mermaidRender)
2797
+ /* harmony export */ });
2798
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
2799
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
2800
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
2801
+ /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494);
2802
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
2803
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2804
+ return new (P || (P = Promise))(function (resolve, reject) {
2805
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
2806
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
2807
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
2808
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
2809
+ });
2810
+ };
2811
+ var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
2812
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
2813
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
2814
+ function verb(n) { return function (v) { return step([n, v]); }; }
2815
+ function step(op) {
2816
+ if (f) throw new TypeError("Generator is already executing.");
2817
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
2818
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
2819
+ if (y = 0, t) op = [op[0] & 2, t.value];
2820
+ switch (op[0]) {
2821
+ case 0: case 1: t = op; break;
2822
+ case 4: _.label++; return { value: op[1], done: false };
2823
+ case 5: _.label++; y = op[1]; op = [0]; continue;
2824
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
2825
+ default:
2826
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
2827
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
2828
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
2829
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
2830
+ if (t[2]) _.ops.pop();
2831
+ _.trys.pop(); continue;
2832
+ }
2833
+ op = body.call(thisArg, _);
2834
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
2835
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
2836
+ }
2837
+ };
2838
+
2839
+
2840
+
2841
+
2842
+ var mermaidRender = function (element, cdn, theme) {
2843
+ if (element === void 0) { element = document; }
2844
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
2845
+ var mermaidElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getElements(element);
2846
+ if (mermaidElements.length === 0) {
2847
+ return;
2848
+ }
2849
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/mermaid/mermaid.min.js?v=11.11.0"), "vditorMermaidScript").then(function () {
2850
+ var config = {
2851
+ securityLevel: "loose",
2852
+ altFontFamily: "sans-serif",
2853
+ fontFamily: "sans-serif",
2854
+ startOnLoad: false,
2855
+ flowchart: {
2856
+ htmlLabels: true,
2857
+ useMaxWidth: !0
2858
+ },
2859
+ sequence: {
2860
+ useMaxWidth: true,
2861
+ diagramMarginX: 8,
2862
+ diagramMarginY: 8,
2863
+ boxMargin: 8,
2864
+ showSequenceNumbers: true // Mermaid 时序图增加序号 https://github.com/siyuan-note/siyuan/pull/6992 https://mermaid.js.org/syntax/sequenceDiagram.html#sequencenumbers
2865
+ },
2866
+ gantt: {
2867
+ leftPadding: 75,
2868
+ rightPadding: 20
2869
+ }
2870
+ };
2871
+ if (theme === "dark") {
2872
+ config.theme = "dark";
2873
+ }
2874
+ mermaid.initialize(config);
2875
+ mermaidElements.forEach(function (item) { return __awaiter(void 0, void 0, void 0, function () {
2876
+ var code, id, mermaidData, e_1, errorElement;
2877
+ return __generator(this, function (_a) {
2878
+ switch (_a.label) {
2879
+ case 0:
2880
+ code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mermaidRenderAdapter.getCode(item);
2881
+ if (item.getAttribute("data-processed") === "true" || code.trim() === "") {
2882
+ return [2 /*return*/];
2883
+ }
2884
+ id = "mermaid" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .Wb)();
2885
+ _a.label = 1;
2886
+ case 1:
2887
+ _a.trys.push([1, 3, , 4]);
2888
+ return [4 /*yield*/, mermaid.render(id, item.textContent)];
2889
+ case 2:
2890
+ mermaidData = _a.sent();
2891
+ item.innerHTML = mermaidData.svg;
2892
+ return [3 /*break*/, 4];
2893
+ case 3:
2894
+ e_1 = _a.sent();
2895
+ errorElement = document.querySelector("#" + id);
2896
+ item.innerHTML = "".concat(errorElement.outerHTML, "<br>\n<div style=\"text-align: left\"><small>").concat(e_1.message.replace(/\n/, "<br>"), "</small></div>");
2897
+ errorElement.parentElement.remove();
2898
+ return [3 /*break*/, 4];
2899
+ case 4:
2900
+ item.setAttribute("data-processed", "true");
2901
+ return [2 /*return*/];
2902
+ }
2903
+ });
2904
+ }); });
2905
+ });
2906
+ };
2907
+
2908
+
2909
+ /***/ }),
2910
+
2911
+ /***/ 194:
2912
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2913
+
2914
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2915
+ /* harmony export */ "P": () => (/* binding */ mindmapRender)
2916
+ /* harmony export */ });
2917
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
2918
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
2919
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
2920
+
2921
+
2922
+
2923
+ var mindmapRender = function (element, cdn, theme) {
2924
+ if (element === void 0) { element = document; }
2925
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
2926
+ var mindmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getElements(element);
2927
+ if (mindmapElements.length > 0) {
2928
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/echarts/echarts.min.js?v=5.5.1"), "vditorEchartsScript").then(function () {
2929
+ mindmapElements.forEach(function (e) {
2930
+ if (e.parentElement.classList.contains("vditor-wysiwyg__pre") ||
2931
+ e.parentElement.classList.contains("vditor-ir__marker--pre")) {
2932
+ return;
2933
+ }
2934
+ var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mindmapRenderAdapter.getCode(e);
2935
+ if (!text) {
2936
+ return;
2937
+ }
2938
+ try {
2939
+ if (e.getAttribute("data-processed") === "true") {
2940
+ return;
2941
+ }
2942
+ echarts.init(e, theme === "dark" ? "dark" : undefined).setOption({
2943
+ series: [
2944
+ {
2945
+ data: [JSON.parse(decodeURIComponent(text))],
2946
+ initialTreeDepth: -1,
2947
+ itemStyle: {
2948
+ borderWidth: 0,
2949
+ color: "#4285f4",
2950
+ },
2951
+ label: {
2952
+ backgroundColor: "#f6f8fa",
2953
+ borderColor: "#d1d5da",
2954
+ borderRadius: 5,
2955
+ borderWidth: 0.5,
2956
+ color: "#586069",
2957
+ lineHeight: 20,
2958
+ offset: [-5, 0],
2959
+ padding: [0, 5],
2960
+ position: "insideRight",
2961
+ },
2962
+ lineStyle: {
2963
+ color: "#d1d5da",
2964
+ width: 1,
2965
+ },
2966
+ roam: true,
2967
+ symbol: function (value, params) {
2968
+ var _a;
2969
+ if ((_a = params === null || params === void 0 ? void 0 : params.data) === null || _a === void 0 ? void 0 : _a.children) {
2970
+ return "circle";
2971
+ }
2972
+ else {
2973
+ return "path://";
2974
+ }
2975
+ },
2976
+ type: "tree",
2977
+ },
2978
+ ],
2979
+ tooltip: {
2980
+ trigger: "item",
2981
+ triggerOn: "mousemove",
2982
+ },
2983
+ });
2984
+ e.setAttribute("data-processed", "true");
2985
+ }
2986
+ catch (error) {
2987
+ e.className = "vditor-reset--error";
2988
+ e.innerHTML = "mindmap render error: <br>".concat(error);
2989
+ }
2990
+ });
2991
+ });
2992
+ }
2993
+ };
2994
+
2995
+
2996
+ /***/ }),
2997
+
2998
+ /***/ 436:
2999
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3000
+
3001
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3002
+ /* harmony export */ "k": () => (/* binding */ outlineRender)
3003
+ /* harmony export */ });
3004
+ /* harmony import */ var _util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(771);
3005
+ /* harmony import */ var _mathRender__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(472);
3006
+
3007
+
3008
+ var outlineRender = function (contentElement, targetElement, vditor) {
3009
+ var tocHTML = "";
3010
+ var ids = [];
3011
+ Array.from(contentElement.children).forEach(function (item, index) {
3012
+ if ((0,_util_hasClosestByHeadings__WEBPACK_IMPORTED_MODULE_1__/* .hasClosestByHeadings */ .W)(item)) {
3013
+ if (vditor) {
3014
+ var lastIndex = item.id.lastIndexOf("_");
3015
+ item.id = item.id.substring(0, lastIndex === -1 ? undefined : lastIndex) + "_" + index;
3016
+ }
3017
+ ids.push(item.id);
3018
+ tocHTML += item.outerHTML.replace("<wbr>", "");
3019
+ }
3020
+ });
3021
+ if (tocHTML === "") {
3022
+ targetElement.innerHTML = "";
3023
+ return "";
3024
+ }
3025
+ var tempElement = document.createElement("div");
3026
+ if (vditor) {
3027
+ vditor.lute.SetToC(true);
3028
+ if (vditor.currentMode === "wysiwyg" && !vditor.preview.element.contains(contentElement)) {
3029
+ tempElement.innerHTML = vditor.lute.SpinVditorDOM("<p>[ToC]</p>" + tocHTML);
3030
+ }
3031
+ else if (vditor.currentMode === "ir" && !vditor.preview.element.contains(contentElement)) {
3032
+ tempElement.innerHTML = vditor.lute.SpinVditorIRDOM("<p>[ToC]</p>" + tocHTML);
3033
+ }
3034
+ else {
3035
+ tempElement.innerHTML = vditor.lute.HTML2VditorDOM("<p>[ToC]</p>" + tocHTML);
3036
+ }
3037
+ vditor.lute.SetToC(vditor.options.preview.markdown.toc);
3038
+ }
3039
+ else {
3040
+ targetElement.classList.add("vditor-outline");
3041
+ var lute = Lute.New();
3042
+ lute.SetToC(true);
3043
+ tempElement.innerHTML = lute.HTML2VditorDOM("<p>[ToC]</p>" + tocHTML);
3044
+ }
3045
+ var headingsElement = tempElement.firstElementChild.querySelectorAll("li > span[data-target-id]");
3046
+ headingsElement.forEach(function (item, index) {
3047
+ if (item.nextElementSibling && item.nextElementSibling.tagName === "UL") {
3048
+ var iconHTML = "<svg class='vditor-outline__action'><use xlink:href='#vditor-icon-down'></use></svg>";
3049
+ if (!document.getElementById("vditorIconScript")) {
3050
+ iconHTML = '<svg class="vditor-outline__action" viewBox="0 0 32 32"><path d="M3.76 6.12l12.24 12.213 12.24-12.213 3.76 3.76-16 16-16-16 3.76-3.76z"></path></svg>';
3051
+ }
3052
+ item.innerHTML = "".concat(iconHTML, "<span>").concat(item.innerHTML, "</span>");
3053
+ }
3054
+ else {
3055
+ item.innerHTML = "<svg></svg><span>".concat(item.innerHTML, "</span>");
3056
+ }
3057
+ item.setAttribute("data-target-id", ids[index]);
3058
+ });
3059
+ tocHTML = tempElement.firstElementChild.innerHTML;
3060
+ if (headingsElement.length === 0) {
3061
+ targetElement.innerHTML = "";
3062
+ return tocHTML;
3063
+ }
3064
+ targetElement.innerHTML = tocHTML;
3065
+ if (vditor) {
3066
+ (0,_mathRender__WEBPACK_IMPORTED_MODULE_0__/* .mathRender */ .H)(targetElement, {
3067
+ cdn: vditor.options.cdn,
3068
+ math: vditor.options.preview.math,
3069
+ });
3070
+ }
3071
+ targetElement.firstElementChild.addEventListener("click", function (event) {
3072
+ var target = event.target;
3073
+ while (target && !target.isEqualNode(targetElement)) {
3074
+ if (target.classList.contains("vditor-outline__action")) {
3075
+ if (target.classList.contains("vditor-outline__action--close")) {
3076
+ target.classList.remove("vditor-outline__action--close");
3077
+ target.parentElement.nextElementSibling.setAttribute("style", "display:block");
3078
+ }
3079
+ else {
3080
+ target.classList.add("vditor-outline__action--close");
3081
+ target.parentElement.nextElementSibling.setAttribute("style", "display:none");
3082
+ }
3083
+ event.preventDefault();
3084
+ event.stopPropagation();
3085
+ break;
3086
+ }
3087
+ else if (target.getAttribute("data-target-id")) {
3088
+ event.preventDefault();
3089
+ event.stopPropagation();
3090
+ var idElement = document.getElementById(target.getAttribute("data-target-id"));
3091
+ if (!idElement) {
3092
+ return;
3093
+ }
3094
+ if (vditor) {
3095
+ if (vditor.options.height === "auto") {
3096
+ var windowScrollY = idElement.offsetTop + vditor.element.offsetTop;
3097
+ if (!vditor.options.toolbarConfig.pin) {
3098
+ windowScrollY += vditor.toolbar.element.offsetHeight;
3099
+ }
3100
+ window.scrollTo(window.scrollX, windowScrollY);
3101
+ }
3102
+ else {
3103
+ if (vditor.element.offsetTop < window.scrollY) {
3104
+ window.scrollTo(window.scrollX, vditor.element.offsetTop);
3105
+ }
3106
+ if (vditor.preview.element.contains(contentElement)) {
3107
+ contentElement.parentElement.scrollTop = idElement.offsetTop;
3108
+ }
3109
+ else {
3110
+ contentElement.scrollTop = idElement.offsetTop;
3111
+ }
3112
+ }
3113
+ }
3114
+ else {
3115
+ window.scrollTo(window.scrollX, idElement.offsetTop);
3116
+ }
3117
+ break;
3118
+ }
3119
+ target = target.parentElement;
3120
+ }
3121
+ });
3122
+ return tocHTML;
3123
+ };
3124
+
3125
+
3126
+ /***/ }),
3127
+
3128
+ /***/ 229:
3129
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3130
+
3131
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3132
+ /* harmony export */ "B": () => (/* binding */ plantumlRender)
3133
+ /* harmony export */ });
3134
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
3135
+ /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413);
3136
+ /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840);
3137
+
3138
+
3139
+
3140
+ var plantumlRender = function (element, cdn) {
3141
+ if (element === void 0) { element = document; }
3142
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
3143
+ var plantumlElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getElements(element);
3144
+ if (plantumlElements.length === 0) {
3145
+ return;
3146
+ }
3147
+ (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/plantuml/plantuml-encoder.min.js"), "vditorPlantumlScript").then(function () {
3148
+ plantumlElements.forEach(function (e) {
3149
+ if (e.parentElement.classList.contains("vditor-wysiwyg__pre") ||
3150
+ e.parentElement.classList.contains("vditor-ir__marker--pre")) {
3151
+ return;
3152
+ }
3153
+ var text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.plantumlRenderAdapter.getCode(e).trim();
3154
+ if (!text) {
3155
+ return;
3156
+ }
3157
+ try {
3158
+ e.innerHTML = "<object type=\"image/svg+xml\" data=\"https://www.plantuml.com/plantuml/svg/~1".concat(plantumlEncoder.encode(text), "\"/>");
3159
+ }
3160
+ catch (error) {
3161
+ e.className = "vditor-reset--error";
3162
+ e.innerHTML = "plantuml render error: <br>".concat(error);
3163
+ }
3164
+ });
3165
+ });
3166
+ };
3167
+
3168
+
3169
+ /***/ }),
3170
+
3171
+ /***/ 214:
3172
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3173
+
3174
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3175
+ /* harmony export */ "X": () => (/* binding */ setLute)
3176
+ /* harmony export */ });
3177
+ var setLute = function (options) {
3178
+ var lute = Lute.New();
3179
+ lute.PutEmojis(options.emojis);
3180
+ lute.SetEmojiSite(options.emojiSite);
3181
+ lute.SetHeadingAnchor(options.headingAnchor);
3182
+ lute.SetInlineMathAllowDigitAfterOpenMarker(options.inlineMathDigit);
3183
+ lute.SetAutoSpace(options.autoSpace);
3184
+ lute.SetToC(options.toc);
3185
+ lute.SetFootnotes(options.footnotes);
3186
+ lute.SetFixTermTypo(options.fixTermTypo);
3187
+ lute.SetVditorCodeBlockPreview(options.codeBlockPreview);
3188
+ lute.SetVditorMathBlockPreview(options.mathBlockPreview);
3189
+ lute.SetSanitize(options.sanitize);
3190
+ lute.SetChineseParagraphBeginningSpace(options.paragraphBeginningSpace);
3191
+ lute.SetRenderListStyle(options.listStyle);
3192
+ lute.SetLinkBase(options.linkBase);
3193
+ lute.SetLinkPrefix(options.linkPrefix);
3194
+ lute.SetMark(options.mark);
3195
+ lute.SetGFMAutoLink(options.gfmAutoLink);
3196
+ if (options.lazyLoadImage) {
3197
+ lute.SetImageLazyLoading(options.lazyLoadImage);
3198
+ }
3199
+ lute.SetSup(options.sup);
3200
+ lute.SetSub(options.sub);
3201
+ return lute;
3202
+ };
3203
+
3204
+
3205
+ /***/ }),
3206
+
3207
+ /***/ 190:
3208
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3209
+
3210
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3211
+ /* harmony export */ "E": () => (/* binding */ previewImage)
3212
+ /* harmony export */ });
3213
+ var previewImage = function (oldImgElement, lang, theme) {
3214
+ if (lang === void 0) { lang = "zh_CN"; }
3215
+ if (theme === void 0) { theme = "classic"; }
3216
+ var oldImgRect = oldImgElement.getBoundingClientRect();
3217
+ var height = 36;
3218
+ document.body.insertAdjacentHTML("beforeend", "<div class=\"vditor vditor-img".concat(theme === "dark" ? " vditor--dark" : "", "\">\n <div class=\"vditor-img__bar\">\n <span class=\"vditor-img__btn\" data-deg=\"0\">\n <svg><use xlink:href=\"#vditor-icon-redo\"></use></svg>\n ").concat(window.VditorI18n.spin, "\n </span>\n <span class=\"vditor-img__btn\" onclick=\"this.parentElement.parentElement.outerHTML = '';document.body.style.overflow = ''\">\n X &nbsp;").concat(window.VditorI18n.close, "\n </span>\n </div>\n <div class=\"vditor-img__img\" onclick=\"this.parentElement.outerHTML = '';document.body.style.overflow = ''\">\n <img style=\"width: ").concat(oldImgElement.width, "px;height:").concat(oldImgElement.height, "px;transform: translate3d(").concat(oldImgRect.left, "px, ").concat(oldImgRect.top - height, "px, 0)\" src=\"").concat(oldImgElement.getAttribute("src"), "\">\n </div>\n</div>"));
3219
+ document.body.style.overflow = "hidden";
3220
+ // 图片从原始位置移动到预览正中间的动画效果
3221
+ var imgElement = document.querySelector(".vditor-img img");
3222
+ var translate3d = "translate3d(".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, "px, ").concat(Math.max(0, window.innerHeight - height - oldImgElement.naturalHeight) / 2, "px, 0)");
3223
+ setTimeout(function () {
3224
+ imgElement.setAttribute("style", "transition: transform .3s ease-in-out;transform: ".concat(translate3d));
3225
+ setTimeout(function () {
3226
+ imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);
3227
+ }, 400);
3228
+ });
3229
+ // 旋转
3230
+ var btnElement = document.querySelector(".vditor-img__btn");
3231
+ btnElement.addEventListener("click", function () {
3232
+ var deg = parseInt(btnElement.getAttribute("data-deg"), 10) + 90;
3233
+ if ((deg / 90) % 2 === 1 && oldImgElement.naturalWidth > imgElement.parentElement.clientHeight) {
3234
+ imgElement.style.transform = "translate3d(".concat(Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2, "px, ").concat(oldImgElement.naturalWidth / 2 - oldImgElement.naturalHeight / 2, "px, 0) rotateZ(").concat(deg, "deg)");
3235
+ }
3236
+ else {
3237
+ imgElement.style.transform = "".concat(translate3d, " rotateZ(").concat(deg, "deg)");
3238
+ }
3239
+ btnElement.setAttribute("data-deg", deg.toString());
3240
+ setTimeout(function () {
3241
+ imgElement.parentElement.scrollTo((imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2);
3242
+ }, 400);
3243
+ });
3244
+ };
3245
+
3246
+
3247
+ /***/ }),
3248
+
3249
+ /***/ 580:
3250
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3251
+
3252
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3253
+ /* harmony export */ "Y": () => (/* binding */ setCodeTheme)
3254
+ /* harmony export */ });
3255
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
3256
+ /* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(290);
3257
+
3258
+
3259
+ var setCodeTheme = function (codeTheme, cdn) {
3260
+ if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; }
3261
+ if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(codeTheme)) {
3262
+ codeTheme = "github";
3263
+ }
3264
+ var vditorHljsStyle = document.getElementById("vditorHljsStyle");
3265
+ var href = "".concat(cdn, "/dist/js/highlight.js/styles/").concat(codeTheme, ".min.css");
3266
+ if (!vditorHljsStyle) {
3267
+ (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, "vditorHljsStyle");
3268
+ }
3269
+ else if (vditorHljsStyle.getAttribute('href') !== href) {
3270
+ vditorHljsStyle.remove();
3271
+ (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)(href, "vditorHljsStyle");
3272
+ }
3273
+ };
3274
+
3275
+
3276
+ /***/ }),
3277
+
3278
+ /***/ 538:
3279
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3280
+
3281
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3282
+ /* harmony export */ "Z": () => (/* binding */ setContentTheme)
3283
+ /* harmony export */ });
3284
+ /* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(290);
3285
+
3286
+ var setContentTheme = function (contentTheme, path) {
3287
+ if (!contentTheme || !path) {
3288
+ return;
3289
+ }
3290
+ var vditorContentTheme = document.getElementById("vditorContentTheme");
3291
+ var cssPath = "".concat(path, "/").concat(contentTheme, ".css");
3292
+ if (!vditorContentTheme) {
3293
+ (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, "vditorContentTheme");
3294
+ }
3295
+ else if (vditorContentTheme.getAttribute("href") !== cssPath) {
3296
+ vditorContentTheme.remove();
3297
+ (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_0__/* .addStyle */ .c)(cssPath, "vditorContentTheme");
3298
+ }
3299
+ };
3300
+
3301
+
3302
+ /***/ }),
3303
+
3304
+ /***/ 413:
3305
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3306
+
3307
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3308
+ /* harmony export */ "J": () => (/* binding */ addScriptSync),
3309
+ /* harmony export */ "G": () => (/* binding */ addScript)
3310
+ /* harmony export */ });
3311
+ var addScriptSync = function (path, id) {
3312
+ if (document.getElementById(id)) {
3313
+ return false;
3314
+ }
3315
+ var xhrObj = new XMLHttpRequest();
3316
+ xhrObj.open("GET", path, false);
3317
+ xhrObj.setRequestHeader("Accept", "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01");
3318
+ xhrObj.send("");
3319
+ var scriptElement = document.createElement("script");
3320
+ scriptElement.type = "text/javascript";
3321
+ scriptElement.text = xhrObj.responseText;
3322
+ scriptElement.id = id;
3323
+ document.head.appendChild(scriptElement);
3324
+ };
3325
+ var addScript = function (path, id) {
3326
+ return new Promise(function (resolve, reject) {
3327
+ if (document.getElementById(id)) {
3328
+ // 脚本加载后再次调用直接返回
3329
+ resolve(true);
3330
+ return false;
3331
+ }
3332
+ var scriptElement = document.createElement("script");
3333
+ scriptElement.src = path;
3334
+ scriptElement.async = true;
3335
+ // 循环调用时 Chrome 不会重复请求 js
3336
+ document.head.appendChild(scriptElement);
3337
+ scriptElement.onerror = function (event) {
3338
+ reject(event);
3339
+ };
3340
+ scriptElement.onload = function () {
3341
+ if (document.getElementById(id)) {
3342
+ // 循环调用需清除 DOM 中的 script 标签
3343
+ scriptElement.remove();
3344
+ resolve(true);
3345
+ return false;
3346
+ }
3347
+ scriptElement.id = id;
3348
+ resolve(true);
3349
+ };
3350
+ });
3351
+ };
3352
+
3353
+
3354
+ /***/ }),
3355
+
3356
+ /***/ 290:
3357
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3358
+
3359
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3360
+ /* harmony export */ "c": () => (/* binding */ addStyle)
3361
+ /* harmony export */ });
3362
+ var addStyle = function (url, id) {
3363
+ if (!document.getElementById(id)) {
3364
+ var styleElement = document.createElement("link");
3365
+ styleElement.id = id;
3366
+ styleElement.rel = "stylesheet";
3367
+ styleElement.type = "text/css";
3368
+ styleElement.href = url;
3369
+ document.getElementsByTagName("head")[0].appendChild(styleElement);
3370
+ }
3371
+ };
3372
+
3373
+
3374
+ /***/ }),
3375
+
3376
+ /***/ 105:
3377
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3378
+
3379
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3380
+ /* harmony export */ "X": () => (/* binding */ code160to32)
3381
+ /* harmony export */ });
3382
+ var code160to32 = function (text) {
3383
+ // 非打断空格转换为空格
3384
+ return text.replace(/\u00a0/g, " ");
3385
+ };
3386
+
3387
+
3388
+ /***/ }),
3389
+
3390
+ /***/ 494:
3391
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3392
+
3393
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3394
+ /* harmony export */ "Wb": () => (/* binding */ genUUID),
3395
+ /* harmony export */ "on": () => (/* binding */ getSearch),
3396
+ /* harmony export */ "Qf": () => (/* binding */ looseJsonParse)
3397
+ /* harmony export */ });
3398
+ var genUUID = function () { return ([1e7].toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
3399
+ return (parseInt(c, 10) ^ (window.crypto.getRandomValues(new Uint32Array(1))[0] & (15 >> (parseInt(c, 10) / 4)))).toString(16);
3400
+ }); };
3401
+ var getSearch = function (key, link) {
3402
+ if (link === void 0) { link = window.location.search; }
3403
+ var params = link.substring(link.indexOf("?"));
3404
+ var hashIndex = params.indexOf("#");
3405
+ // REF https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams
3406
+ var urlSearchParams = new URLSearchParams(params.substring(0, hashIndex >= 0 ? hashIndex : undefined));
3407
+ return urlSearchParams.get(key);
3408
+ };
3409
+ var looseJsonParse = function (text) {
3410
+ return Function("\"use strict\";return (".concat(text, ")"))();
3411
+ };
3412
+
3413
+
3414
+ /***/ }),
3415
+
3416
+ /***/ 106:
3417
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3418
+
3419
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3420
+ /* harmony export */ "lG": () => (/* binding */ hasClosestByMatchTag),
3421
+ /* harmony export */ "fb": () => (/* binding */ hasClosestByClassName)
3422
+ /* harmony export */ });
3423
+ /* unused harmony exports hasTopClosestByClassName, hasTopClosestByAttribute, hasTopClosestByTag, getTopList, hasClosestByAttribute, hasClosestBlock, getLastNode */
3424
+
3425
+ var hasTopClosestByClassName = function (element, className) {
3426
+ var closest = hasClosestByClassName(element, className);
3427
+ var parentClosest = false;
3428
+ var findTop = false;
3429
+ while (closest && !closest.classList.contains("vditor-reset") && !findTop) {
3430
+ parentClosest = hasClosestByClassName(closest.parentElement, className);
3431
+ if (parentClosest) {
3432
+ closest = parentClosest;
3433
+ }
3434
+ else {
3435
+ findTop = true;
3436
+ }
3437
+ }
3438
+ return closest || false;
3439
+ };
3440
+ var hasTopClosestByAttribute = function (element, attr, value) {
3441
+ var closest = hasClosestByAttribute(element, attr, value);
3442
+ var parentClosest = false;
3443
+ var findTop = false;
3444
+ while (closest && !closest.classList.contains("vditor-reset") && !findTop) {
3445
+ parentClosest = hasClosestByAttribute(closest.parentElement, attr, value);
3446
+ if (parentClosest) {
3447
+ closest = parentClosest;
3448
+ }
3449
+ else {
3450
+ findTop = true;
3451
+ }
3452
+ }
3453
+ return closest || false;
3454
+ };
3455
+ var hasTopClosestByTag = function (element, nodeName) {
3456
+ var closest = hasClosestByTag(element, nodeName);
3457
+ var parentClosest = false;
3458
+ var findTop = false;
3459
+ while (closest && !closest.classList.contains("vditor-reset") && !findTop) {
3460
+ parentClosest = hasClosestByTag(closest.parentElement, nodeName);
3461
+ if (parentClosest) {
3462
+ closest = parentClosest;
3463
+ }
3464
+ else {
3465
+ findTop = true;
3466
+ }
3467
+ }
3468
+ return closest || false;
3469
+ };
3470
+ var getTopList = function (element) {
3471
+ var topUlElement = hasTopClosestByTag(element, "UL");
3472
+ var topOlElement = hasTopClosestByTag(element, "OL");
3473
+ var topListElement = topUlElement;
3474
+ if (topOlElement && (!topUlElement || (topUlElement && topOlElement.contains(topUlElement)))) {
3475
+ topListElement = topOlElement;
3476
+ }
3477
+ return topListElement;
3478
+ };
3479
+ var hasClosestByAttribute = function (element, attr, value) {
3480
+ if (!element) {
3481
+ return false;
3482
+ }
3483
+ if (element.nodeType === 3) {
3484
+ element = element.parentElement;
3485
+ }
3486
+ var e = element;
3487
+ var isClosest = false;
3488
+ while (e && !isClosest && !e.classList.contains("vditor-reset")) {
3489
+ if (e.getAttribute(attr) === value) {
3490
+ isClosest = true;
3491
+ }
3492
+ else {
3493
+ e = e.parentElement;
3494
+ }
3495
+ }
3496
+ return isClosest && e;
3497
+ };
3498
+ var hasClosestBlock = function (element) {
3499
+ if (!element) {
3500
+ return false;
3501
+ }
3502
+ if (element.nodeType === 3) {
3503
+ element = element.parentElement;
3504
+ }
3505
+ var e = element;
3506
+ var isClosest = false;
3507
+ var blockElement = hasClosestByAttribute(element, "data-block", "0");
3508
+ if (blockElement) {
3509
+ return blockElement;
3510
+ }
3511
+ while (e && !isClosest && !e.classList.contains("vditor-reset")) {
3512
+ if (e.tagName === "H1" ||
3513
+ e.tagName === "H2" ||
3514
+ e.tagName === "H3" ||
3515
+ e.tagName === "H4" ||
3516
+ e.tagName === "H5" ||
3517
+ e.tagName === "H6" ||
3518
+ e.tagName === "P" ||
3519
+ e.tagName === "BLOCKQUOTE" ||
3520
+ e.tagName === "OL" ||
3521
+ e.tagName === "UL") {
3522
+ isClosest = true;
3523
+ }
3524
+ else {
3525
+ e = e.parentElement;
3526
+ }
3527
+ }
3528
+ return isClosest && e;
3529
+ };
3530
+ var hasClosestByMatchTag = function (element, nodeName) {
3531
+ if (!element) {
3532
+ return false;
3533
+ }
3534
+ if (element.nodeType === 3) {
3535
+ element = element.parentElement;
3536
+ }
3537
+ var e = element;
3538
+ var isClosest = false;
3539
+ while (e && !isClosest && !e.classList.contains("vditor-reset")) {
3540
+ if (e.nodeName === nodeName) {
3541
+ isClosest = true;
3542
+ }
3543
+ else {
3544
+ e = e.parentElement;
3545
+ }
3546
+ }
3547
+ return isClosest && e;
3548
+ };
3549
+ var hasClosestByClassName = function (element, className) {
3550
+ if (!element) {
3551
+ return false;
3552
+ }
3553
+ if (element.nodeType === 3) {
3554
+ element = element.parentElement;
3555
+ }
3556
+ var e = element;
3557
+ var isClosest = false;
3558
+ while (e && !isClosest && !e.classList.contains("vditor-reset")) {
3559
+ if (e.classList.contains(className)) {
3560
+ isClosest = true;
3561
+ }
3562
+ else {
3563
+ e = e.parentElement;
3564
+ }
3565
+ }
3566
+ return isClosest && e;
3567
+ };
3568
+ var getLastNode = function (node) {
3569
+ while (node && node.lastChild) {
3570
+ node = node.lastChild;
3571
+ }
3572
+ return node;
3573
+ };
3574
+
3575
+
3576
+ /***/ }),
3577
+
3578
+ /***/ 771:
3579
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3580
+
3581
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3582
+ /* harmony export */ "W": () => (/* binding */ hasClosestByHeadings)
3583
+ /* harmony export */ });
3584
+ /* unused harmony export hasClosestByTag */
3585
+ // NOTE: 减少 method.ts 打包,故从 hasClosest.ts 中拆分
3586
+ var hasClosestByTag = function (element, nodeName) {
3587
+ if (!element) {
3588
+ return false;
3589
+ }
3590
+ if (element.nodeType === 3) {
3591
+ element = element.parentElement;
3592
+ }
3593
+ var e = element;
3594
+ var isClosest = false;
3595
+ while (e && !isClosest && !e.classList.contains("vditor-reset")) {
3596
+ if (e.nodeName.indexOf(nodeName) === 0) {
3597
+ isClosest = true;
3598
+ }
3599
+ else {
3600
+ e = e.parentElement;
3601
+ }
3602
+ }
3603
+ return isClosest && e;
3604
+ };
3605
+ var hasClosestByHeadings = function (element) {
3606
+ var headingElement = hasClosestByTag(element, "H");
3607
+ if (headingElement && headingElement.tagName.length === 2 && headingElement.tagName !== "HR") {
3608
+ return headingElement;
3609
+ }
3610
+ return false;
3611
+ };
3612
+
3613
+
3614
+ /***/ }),
3615
+
3616
+ /***/ 673:
3617
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3618
+
3619
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3620
+ /* harmony export */ "T": () => (/* binding */ merge)
3621
+ /* harmony export */ });
3622
+ var merge = function () {
3623
+ var options = [];
3624
+ for (var _i = 0; _i < arguments.length; _i++) {
3625
+ options[_i] = arguments[_i];
3626
+ }
3627
+ var target = {};
3628
+ var merger = function (obj) {
3629
+ for (var prop in obj) {
3630
+ if (obj.hasOwnProperty(prop)) {
3631
+ if (Object.prototype.toString.call(obj[prop]) === "[object Object]") {
3632
+ target[prop] = merge(target[prop], obj[prop]);
3633
+ }
3634
+ else {
3635
+ target[prop] = obj[prop];
3636
+ }
3637
+ }
3638
+ }
3639
+ };
3640
+ for (var i = 0; i < options.length; i++) {
3641
+ merger(options[i]);
3642
+ }
3643
+ return target;
3644
+ };
3645
+
3646
+
3647
+ /***/ }),
3648
+
3649
+ /***/ 810:
3650
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3651
+
3652
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3653
+ /* harmony export */ "Hc": () => (/* binding */ setSelectionFocus)
3654
+ /* harmony export */ });
3655
+ /* unused harmony exports getEditorRange, getCursorPosition, selectIsEditor, getSelectPosition, setSelectionByPosition, setRangeByWbr, insertHTML */
3656
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
3657
+
3658
+
3659
+
3660
+ var getEditorRange = function (vditor) {
3661
+ var range;
3662
+ var element = vditor[vditor.currentMode].element;
3663
+ if (getSelection().rangeCount > 0) {
3664
+ range = getSelection().getRangeAt(0);
3665
+ if (element.isEqualNode(range.startContainer) ||
3666
+ element.contains(range.startContainer)) {
3667
+ return range;
3668
+ }
3669
+ }
3670
+ if (vditor[vditor.currentMode].range) {
3671
+ return vditor[vditor.currentMode].range;
3672
+ }
3673
+ element.focus();
3674
+ range = element.ownerDocument.createRange();
3675
+ range.setStart(element, 0);
3676
+ range.collapse(true);
3677
+ return range;
3678
+ };
3679
+ var getCursorPosition = function (editor) {
3680
+ var range = window.getSelection().getRangeAt(0);
3681
+ if (!editor.contains(range.startContainer) &&
3682
+ !hasClosestByClassName(range.startContainer, "vditor-panel--none")) {
3683
+ return {
3684
+ left: 0,
3685
+ top: 0,
3686
+ };
3687
+ }
3688
+ var parentRect = editor.parentElement.getBoundingClientRect();
3689
+ var cursorRect;
3690
+ if (range.getClientRects().length === 0) {
3691
+ if (range.startContainer.nodeType === 3) {
3692
+ // 空行时,会出现没有 br 的情况,需要根据父元素 <p> 获取位置信息
3693
+ var parent_1 = range.startContainer.parentElement;
3694
+ if (parent_1 && parent_1.getClientRects().length > 0) {
3695
+ cursorRect = parent_1.getClientRects()[0];
3696
+ }
3697
+ else {
3698
+ return {
3699
+ left: 0,
3700
+ top: 0,
3701
+ };
3702
+ }
3703
+ }
3704
+ else {
3705
+ var children = range.startContainer.children;
3706
+ if (children[range.startOffset] &&
3707
+ children[range.startOffset].getClientRects().length > 0) {
3708
+ // markdown 模式回车
3709
+ cursorRect = children[range.startOffset].getClientRects()[0];
3710
+ }
3711
+ else if (range.startContainer.childNodes.length > 0) {
3712
+ // in table or code block
3713
+ var cloneRange = range.cloneRange();
3714
+ range.selectNode(range.startContainer.childNodes[Math.max(0, range.startOffset - 1)]);
3715
+ cursorRect = range.getClientRects()[0];
3716
+ range.setEnd(cloneRange.endContainer, cloneRange.endOffset);
3717
+ range.setStart(cloneRange.startContainer, cloneRange.startOffset);
3718
+ }
3719
+ else {
3720
+ cursorRect = range.startContainer.getClientRects()[0];
3721
+ }
3722
+ if (!cursorRect) {
3723
+ var parentElement = range.startContainer.childNodes[range.startOffset];
3724
+ while (!parentElement.getClientRects ||
3725
+ (parentElement.getClientRects &&
3726
+ parentElement.getClientRects().length === 0)) {
3727
+ parentElement = parentElement.parentElement;
3728
+ }
3729
+ cursorRect = parentElement.getClientRects()[0];
3730
+ }
3731
+ }
3732
+ }
3733
+ else {
3734
+ cursorRect = range.getClientRects()[0];
3735
+ }
3736
+ return {
3737
+ left: cursorRect.left - parentRect.left,
3738
+ top: cursorRect.top - parentRect.top,
3739
+ };
3740
+ };
3741
+ var selectIsEditor = function (editor, range) {
3742
+ if (!range) {
3743
+ if (getSelection().rangeCount === 0) {
3744
+ return false;
3745
+ }
3746
+ else {
3747
+ range = getSelection().getRangeAt(0);
3748
+ }
3749
+ }
3750
+ var container = range.commonAncestorContainer;
3751
+ return editor.isEqualNode(container) || editor.contains(container);
3752
+ };
3753
+ var setSelectionFocus = function (range) {
3754
+ var selection = window.getSelection();
3755
+ selection.removeAllRanges();
3756
+ selection.addRange(range);
3757
+ };
3758
+ var getSelectPosition = function (selectElement, editorElement, range) {
3759
+ var position = {
3760
+ end: 0,
3761
+ start: 0,
3762
+ };
3763
+ if (!range) {
3764
+ if (getSelection().rangeCount === 0) {
3765
+ return position;
3766
+ }
3767
+ range = window.getSelection().getRangeAt(0);
3768
+ }
3769
+ if (selectIsEditor(editorElement, range)) {
3770
+ var preSelectionRange = range.cloneRange();
3771
+ if (selectElement.childNodes[0] &&
3772
+ selectElement.childNodes[0].childNodes[0]) {
3773
+ preSelectionRange.setStart(selectElement.childNodes[0].childNodes[0], 0);
3774
+ }
3775
+ else {
3776
+ preSelectionRange.selectNodeContents(selectElement);
3777
+ }
3778
+ preSelectionRange.setEnd(range.startContainer, range.startOffset);
3779
+ position.start = preSelectionRange.toString().length;
3780
+ position.end = position.start + range.toString().length;
3781
+ }
3782
+ return position;
3783
+ };
3784
+ var setSelectionByPosition = function (start, end, editor) {
3785
+ var charIndex = 0;
3786
+ var line = 0;
3787
+ var pNode = editor.childNodes[line];
3788
+ var foundStart = false;
3789
+ var stop = false;
3790
+ start = Math.max(0, start);
3791
+ end = Math.max(0, end);
3792
+ var range = editor.ownerDocument.createRange();
3793
+ range.setStart(pNode || editor, 0);
3794
+ range.collapse(true);
3795
+ while (!stop && pNode) {
3796
+ var nextCharIndex = charIndex + pNode.textContent.length;
3797
+ if (!foundStart && start >= charIndex && start <= nextCharIndex) {
3798
+ if (start === 0) {
3799
+ range.setStart(pNode, 0);
3800
+ }
3801
+ else {
3802
+ if (pNode.childNodes[0].nodeType === 3) {
3803
+ range.setStart(pNode.childNodes[0], start - charIndex);
3804
+ }
3805
+ else if (pNode.nextSibling) {
3806
+ range.setStartBefore(pNode.nextSibling);
3807
+ }
3808
+ else {
3809
+ range.setStartAfter(pNode);
3810
+ }
3811
+ }
3812
+ foundStart = true;
3813
+ if (start === end) {
3814
+ stop = true;
3815
+ break;
3816
+ }
3817
+ }
3818
+ if (foundStart && end >= charIndex && end <= nextCharIndex) {
3819
+ if (end === 0) {
3820
+ range.setEnd(pNode, 0);
3821
+ }
3822
+ else {
3823
+ if (pNode.childNodes[0].nodeType === 3) {
3824
+ range.setEnd(pNode.childNodes[0], end - charIndex);
3825
+ }
3826
+ else if (pNode.nextSibling) {
3827
+ range.setEndBefore(pNode.nextSibling);
3828
+ }
3829
+ else {
3830
+ range.setEndAfter(pNode);
3831
+ }
3832
+ }
3833
+ stop = true;
3834
+ }
3835
+ charIndex = nextCharIndex;
3836
+ pNode = editor.childNodes[++line];
3837
+ }
3838
+ if (!stop && editor.childNodes[line - 1]) {
3839
+ range.setStartBefore(editor.childNodes[line - 1]);
3840
+ }
3841
+ setSelectionFocus(range);
3842
+ return range;
3843
+ };
3844
+ var setRangeByWbr = function (element, range) {
3845
+ var wbrElement = element.querySelector("wbr");
3846
+ if (!wbrElement) {
3847
+ return;
3848
+ }
3849
+ if (!wbrElement.previousElementSibling) {
3850
+ if (wbrElement.previousSibling) {
3851
+ // text<wbr>
3852
+ range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);
3853
+ }
3854
+ else if (wbrElement.nextSibling) {
3855
+ if (wbrElement.nextSibling.nodeType === 3) {
3856
+ // <wbr>text
3857
+ range.setStart(wbrElement.nextSibling, 0);
3858
+ }
3859
+ else {
3860
+ // <wbr><br> https://github.com/Vanessa219/vditor/issues/400
3861
+ range.setStartBefore(wbrElement.nextSibling);
3862
+ }
3863
+ }
3864
+ else {
3865
+ // 内容为空
3866
+ range.setStart(wbrElement.parentElement, 0);
3867
+ }
3868
+ }
3869
+ else {
3870
+ if (wbrElement.previousElementSibling.isSameNode(wbrElement.previousSibling)) {
3871
+ if (wbrElement.previousElementSibling.lastChild) {
3872
+ // <em>text</em><wbr>
3873
+ range.setStartBefore(wbrElement);
3874
+ range.collapse(true);
3875
+ setSelectionFocus(range);
3876
+ // fix Chrome set range bug: **c**
3877
+ if (isChrome() &&
3878
+ (wbrElement.previousElementSibling.tagName === "EM" ||
3879
+ wbrElement.previousElementSibling.tagName ===
3880
+ "STRONG" ||
3881
+ wbrElement.previousElementSibling.tagName === "S")) {
3882
+ range.insertNode(document.createTextNode(Constants.ZWSP));
3883
+ range.collapse(false);
3884
+ }
3885
+ wbrElement.remove();
3886
+ return;
3887
+ }
3888
+ else {
3889
+ // <br><wbr>
3890
+ range.setStartAfter(wbrElement.previousElementSibling);
3891
+ }
3892
+ }
3893
+ else {
3894
+ // <em>text</em>text<wbr>
3895
+ range.setStart(wbrElement.previousSibling, wbrElement.previousSibling.textContent.length);
3896
+ }
3897
+ }
3898
+ range.collapse(true);
3899
+ wbrElement.remove();
3900
+ setSelectionFocus(range);
3901
+ };
3902
+ var insertHTML = function (html, vditor) {
3903
+ // 使用 lute 方法会添加 p 元素,只有一个 p 元素的时候进行删除
3904
+ var tempElement = document.createElement("div");
3905
+ tempElement.innerHTML = html;
3906
+ var tempBlockElement = tempElement.querySelectorAll("p");
3907
+ if (tempBlockElement.length === 1 &&
3908
+ !tempBlockElement[0].previousSibling &&
3909
+ !tempBlockElement[0].nextSibling &&
3910
+ vditor[vditor.currentMode].element.children.length > 0 &&
3911
+ tempElement.firstElementChild.tagName === "P") {
3912
+ html = tempBlockElement[0].innerHTML.trim();
3913
+ }
3914
+ var pasteElement = document.createElement("div");
3915
+ pasteElement.innerHTML = html;
3916
+ var range = getEditorRange(vditor);
3917
+ if (range.toString() !== "") {
3918
+ vditor[vditor.currentMode].preventInput = true;
3919
+ document.execCommand("delete", false, "");
3920
+ }
3921
+ if (pasteElement.firstElementChild &&
3922
+ pasteElement.firstElementChild.getAttribute("data-block") === "0") {
3923
+ // 粘贴内容为块元素时,应在下一段落中插入
3924
+ pasteElement.lastElementChild.insertAdjacentHTML("beforeend", "<wbr>");
3925
+ var blockElement = hasClosestBlock(range.startContainer);
3926
+ if (!blockElement) {
3927
+ vditor[vditor.currentMode].element.insertAdjacentHTML("beforeend", pasteElement.innerHTML);
3928
+ }
3929
+ else {
3930
+ var liElement = hasClosestByMatchTag(range.startContainer, "LI");
3931
+ if (liElement && pasteElement.firstElementChild.tagName === "UL") {
3932
+ liElement.insertAdjacentHTML("afterend", pasteElement.firstElementChild.innerHTML);
3933
+ }
3934
+ else {
3935
+ blockElement.insertAdjacentHTML("afterend", pasteElement.innerHTML);
3936
+ }
3937
+ }
3938
+ setRangeByWbr(vditor[vditor.currentMode].element, range);
3939
+ }
3940
+ else {
3941
+ var pasteTemplate = document.createElement("template");
3942
+ pasteTemplate.innerHTML = html;
3943
+ range.insertNode(pasteTemplate.content.cloneNode(true));
3944
+ range.collapse(false);
3945
+ setSelectionFocus(range);
3946
+ }
3947
+ };
3948
+
3949
+
3950
+ /***/ })
3951
+
3952
+ /******/ });
3953
+ /************************************************************************/
3954
+ /******/ // The module cache
3955
+ /******/ var __webpack_module_cache__ = {};
3956
+ /******/
3957
+ /******/ // The require function
3958
+ /******/ function __webpack_require__(moduleId) {
3959
+ /******/ // Check if module is in cache
3960
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
3961
+ /******/ if (cachedModule !== undefined) {
3962
+ /******/ return cachedModule.exports;
3963
+ /******/ }
3964
+ /******/ // Create a new module (and put it into the cache)
3965
+ /******/ var module = __webpack_module_cache__[moduleId] = {
3966
+ /******/ // no module.id needed
3967
+ /******/ // no module.loaded needed
3968
+ /******/ exports: {}
3969
+ /******/ };
3970
+ /******/
3971
+ /******/ // Execute the module function
3972
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
3973
+ /******/
3974
+ /******/ // Return the exports of the module
3975
+ /******/ return module.exports;
3976
+ /******/ }
3977
+ /******/
3978
+ /************************************************************************/
3979
+ /******/ /* webpack/runtime/define property getters */
3980
+ /******/ (() => {
3981
+ /******/ // define getter functions for harmony exports
3982
+ /******/ __webpack_require__.d = (exports, definition) => {
3983
+ /******/ for(var key in definition) {
3984
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
3985
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
3986
+ /******/ }
3987
+ /******/ }
3988
+ /******/ };
3989
+ /******/ })();
3990
+ /******/
3991
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
3992
+ /******/ (() => {
3993
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
3994
+ /******/ })();
3995
+ /******/
3996
+ /******/ /* webpack/runtime/make namespace object */
3997
+ /******/ (() => {
3998
+ /******/ // define __esModule on exports
3999
+ /******/ __webpack_require__.r = (exports) => {
4000
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
4001
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4002
+ /******/ }
4003
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
4004
+ /******/ };
4005
+ /******/ })();
4006
+ /******/
4007
+ /************************************************************************/
4008
+ var __webpack_exports__ = {};
4009
+ // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
4010
+ (() => {
4011
+
4012
+ // EXPORTS
4013
+ __webpack_require__.d(__webpack_exports__, {
4014
+ "default": () => (/* binding */ method)
4015
+ });
4016
+
4017
+ // EXTERNAL MODULE: ./src/ts/markdown/abcRender.ts
4018
+ var abcRender = __webpack_require__(135);
4019
+ // EXTERNAL MODULE: ./src/ts/markdown/adapterRender.ts
4020
+ var adapterRender = __webpack_require__(840);
4021
+ // EXTERNAL MODULE: ./src/ts/markdown/chartRender.ts
4022
+ var chartRender = __webpack_require__(775);
4023
+ // EXTERNAL MODULE: ./src/ts/markdown/codeRender.ts
4024
+ var codeRender = __webpack_require__(428);
4025
+ // EXTERNAL MODULE: ./src/ts/markdown/flowchartRender.ts
4026
+ var flowchartRender = __webpack_require__(325);
4027
+ // EXTERNAL MODULE: ./src/ts/markdown/graphvizRender.ts
4028
+ var graphvizRender = __webpack_require__(483);
4029
+ // EXTERNAL MODULE: ./src/ts/markdown/highlightRender.ts
4030
+ var highlightRender = __webpack_require__(999);
4031
+ ;// CONCATENATED MODULE: ./src/ts/markdown/lazyLoadImageRender.ts
4032
+ var lazyLoadImageRender = function (element) {
4033
+ if (element === void 0) { element = document; }
4034
+ var loadImg = function (it) {
4035
+ var testImage = document.createElement("img");
4036
+ testImage.src = it.getAttribute("data-src");
4037
+ testImage.addEventListener("load", function () {
4038
+ if (!it.getAttribute("style") && !it.getAttribute("class") &&
4039
+ !it.getAttribute("width") && !it.getAttribute("height")) {
4040
+ if (testImage.naturalHeight > testImage.naturalWidth &&
4041
+ testImage.naturalWidth / testImage.naturalHeight <
4042
+ document.querySelector(".vditor-reset").clientWidth / (window.innerHeight - 40) &&
4043
+ testImage.naturalHeight > (window.innerHeight - 40)) {
4044
+ it.style.height = (window.innerHeight - 40) + "px";
4045
+ }
4046
+ }
4047
+ it.src = testImage.src;
4048
+ });
4049
+ it.removeAttribute("data-src");
4050
+ };
4051
+ if (!("IntersectionObserver" in window)) {
4052
+ element.querySelectorAll("img").forEach(function (imgElement) {
4053
+ if (imgElement.getAttribute("data-src")) {
4054
+ loadImg(imgElement);
4055
+ }
4056
+ });
4057
+ return false;
4058
+ }
4059
+ if (window.vditorImageIntersectionObserver) {
4060
+ window.vditorImageIntersectionObserver.disconnect();
4061
+ element.querySelectorAll("img").forEach(function (imgElement) {
4062
+ window.vditorImageIntersectionObserver.observe(imgElement);
4063
+ });
4064
+ }
4065
+ else {
4066
+ window.vditorImageIntersectionObserver = new IntersectionObserver(function (entries) {
4067
+ entries.forEach(function (entrie) {
4068
+ if ((typeof entrie.isIntersecting === "undefined"
4069
+ ? entrie.intersectionRatio !== 0
4070
+ : entrie.isIntersecting)
4071
+ && entrie.target.getAttribute("data-src")) {
4072
+ loadImg(entrie.target);
4073
+ }
4074
+ });
4075
+ });
4076
+ element.querySelectorAll("img").forEach(function (imgElement) {
4077
+ window.vditorImageIntersectionObserver.observe(imgElement);
4078
+ });
4079
+ }
4080
+ };
4081
+
4082
+ // EXTERNAL MODULE: ./src/ts/markdown/mathRender.ts
4083
+ var mathRender = __webpack_require__(472);
4084
+ // EXTERNAL MODULE: ./src/ts/markdown/mediaRender.ts
4085
+ var mediaRender = __webpack_require__(280);
4086
+ // EXTERNAL MODULE: ./src/ts/markdown/mermaidRender.ts
4087
+ var mermaidRender = __webpack_require__(637);
4088
+ // EXTERNAL MODULE: ./src/ts/markdown/SMILESRender.ts
4089
+ var SMILESRender = __webpack_require__(825);
4090
+ // EXTERNAL MODULE: ./src/ts/markdown/markmapRender.ts
4091
+ var markmapRender = __webpack_require__(11);
4092
+ // EXTERNAL MODULE: ./src/ts/markdown/mindmapRender.ts
4093
+ var mindmapRender = __webpack_require__(194);
4094
+ // EXTERNAL MODULE: ./src/ts/markdown/outlineRender.ts
4095
+ var outlineRender = __webpack_require__(436);
4096
+ // EXTERNAL MODULE: ./src/ts/markdown/plantumlRender.ts
4097
+ var plantumlRender = __webpack_require__(229);
4098
+ // EXTERNAL MODULE: ./src/ts/constants.ts
4099
+ var constants = __webpack_require__(145);
4100
+ // EXTERNAL MODULE: ./src/ts/ui/setContentTheme.ts
4101
+ var setContentTheme = __webpack_require__(538);
4102
+ // EXTERNAL MODULE: ./src/ts/util/addScript.ts
4103
+ var addScript = __webpack_require__(413);
4104
+ // EXTERNAL MODULE: ./src/ts/util/hasClosest.ts
4105
+ var hasClosest = __webpack_require__(106);
4106
+ // EXTERNAL MODULE: ./src/ts/util/merge.ts
4107
+ var merge = __webpack_require__(673);
4108
+ ;// CONCATENATED MODULE: ./src/ts/markdown/anchorRender.ts
4109
+ var anchorRender = function (type) {
4110
+ document.querySelectorAll(".vditor-anchor").forEach(function (anchor) {
4111
+ if (type === 1) {
4112
+ anchor.classList.add("vditor-anchor--left");
4113
+ }
4114
+ anchor.onclick = function () {
4115
+ var id = anchor.getAttribute("href").substr(1);
4116
+ var top = document.getElementById("vditorAnchor-" + id).offsetTop;
4117
+ document.querySelector("html").scrollTop = top;
4118
+ };
4119
+ });
4120
+ window.onhashchange = function () {
4121
+ var element = document.getElementById("vditorAnchor-" + decodeURIComponent(window.location.hash.substr(1)));
4122
+ if (element) {
4123
+ document.querySelector("html").scrollTop = element.offsetTop;
4124
+ }
4125
+ };
4126
+ };
4127
+
4128
+ // EXTERNAL MODULE: ./src/ts/markdown/setLute.ts
4129
+ var setLute = __webpack_require__(214);
4130
+ // EXTERNAL MODULE: ./src/ts/util/selection.ts
4131
+ var selection = __webpack_require__(810);
4132
+ ;// CONCATENATED MODULE: ./src/ts/markdown/speechRender.ts
4133
+
4134
+ var speechRender = function (element, lang) {
4135
+ if (lang === void 0) { lang = "zh_CN"; }
4136
+ if (typeof speechSynthesis === "undefined" || typeof SpeechSynthesisUtterance === "undefined") {
4137
+ return;
4138
+ }
4139
+ var getVoice = function () {
4140
+ var voices = speechSynthesis.getVoices();
4141
+ var currentVoice;
4142
+ var defaultVoice;
4143
+ voices.forEach(function (item) {
4144
+ if (item.lang === lang.replace("_", "-")) {
4145
+ currentVoice = item;
4146
+ }
4147
+ if (item.default) {
4148
+ defaultVoice = item;
4149
+ }
4150
+ });
4151
+ if (!currentVoice) {
4152
+ currentVoice = defaultVoice;
4153
+ }
4154
+ return currentVoice;
4155
+ };
4156
+ var playSVG = '<svg><use xlink:href="#vditor-icon-play"></use></svg>';
4157
+ var pauseSVG = '<svg><use xlink:href="#vditor-icon-pause"></use></svg>';
4158
+ if (!document.getElementById("vditorIconScript")) {
4159
+ playSVG = '<svg viewBox="0 0 32 32"><path d="M3.436 0l25.128 16-25.128 16v-32z"></path></svg>';
4160
+ pauseSVG = '<svg viewBox="0 0 32 32"><path d="M20.617 0h9.128v32h-9.128v-32zM2.255 32v-32h9.128v32h-9.128z"></path></svg>';
4161
+ }
4162
+ var speechDom = document.querySelector(".vditor-speech");
4163
+ if (!speechDom) {
4164
+ speechDom = document.createElement("button");
4165
+ speechDom.className = "vditor-speech";
4166
+ element.insertAdjacentElement("beforeend", speechDom);
4167
+ if (speechSynthesis.onvoiceschanged !== undefined) {
4168
+ speechSynthesis.onvoiceschanged = getVoice;
4169
+ }
4170
+ }
4171
+ var voice = getVoice();
4172
+ var utterThis = new SpeechSynthesisUtterance();
4173
+ utterThis.voice = voice;
4174
+ utterThis.onend = utterThis.onerror = function () {
4175
+ speechDom.style.display = "none";
4176
+ speechSynthesis.cancel();
4177
+ speechDom.classList.remove("vditor-speech--current");
4178
+ speechDom.innerHTML = playSVG;
4179
+ };
4180
+ element.addEventListener(window.ontouchstart !== undefined ? "touchend" : "click", function (event) {
4181
+ var target = event.target;
4182
+ if (target.classList.contains("vditor-speech") || target.parentElement.classList.contains("vditor-speech")) {
4183
+ if (!speechDom.classList.contains("vditor-speech--current")) {
4184
+ utterThis.text = speechDom.getAttribute("data-text");
4185
+ speechSynthesis.speak(utterThis);
4186
+ speechDom.classList.add("vditor-speech--current");
4187
+ speechDom.innerHTML = pauseSVG;
4188
+ }
4189
+ else {
4190
+ if (speechSynthesis.speaking) {
4191
+ if (speechSynthesis.paused) {
4192
+ speechSynthesis.resume();
4193
+ speechDom.innerHTML = pauseSVG;
4194
+ }
4195
+ else {
4196
+ speechSynthesis.pause();
4197
+ speechDom.innerHTML = playSVG;
4198
+ }
4199
+ }
4200
+ }
4201
+ (0,selection/* setSelectionFocus */.Hc)(window.vditorSpeechRange);
4202
+ element.focus();
4203
+ return;
4204
+ }
4205
+ speechDom.style.display = "none";
4206
+ speechSynthesis.cancel();
4207
+ speechDom.classList.remove("vditor-speech--current");
4208
+ speechDom.innerHTML = playSVG;
4209
+ if (getSelection().rangeCount === 0) {
4210
+ return;
4211
+ }
4212
+ var range = getSelection().getRangeAt(0);
4213
+ var text = range.toString().trim();
4214
+ if (!text) {
4215
+ return;
4216
+ }
4217
+ window.vditorSpeechRange = range.cloneRange();
4218
+ var rect = range.getBoundingClientRect();
4219
+ speechDom.innerHTML = playSVG;
4220
+ speechDom.style.display = "block";
4221
+ speechDom.style.top = (rect.top + rect.height + document.querySelector("html").scrollTop - 20) + "px";
4222
+ if (window.ontouchstart !== undefined) {
4223
+ speechDom.style.left = (event.changedTouches[event.changedTouches.length - 1].pageX + 2) + "px";
4224
+ }
4225
+ else {
4226
+ speechDom.style.left = (event.clientX + 2) + "px";
4227
+ }
4228
+ speechDom.setAttribute("data-text", text);
4229
+ });
4230
+ };
4231
+
4232
+ ;// CONCATENATED MODULE: ./src/ts/markdown/previewRender.ts
4233
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4234
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4235
+ return new (P || (P = Promise))(function (resolve, reject) {
4236
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4237
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4238
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4239
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
4240
+ });
4241
+ };
4242
+ var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
4243
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4244
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
4245
+ function verb(n) { return function (v) { return step([n, v]); }; }
4246
+ function step(op) {
4247
+ if (f) throw new TypeError("Generator is already executing.");
4248
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
4249
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
4250
+ if (y = 0, t) op = [op[0] & 2, t.value];
4251
+ switch (op[0]) {
4252
+ case 0: case 1: t = op; break;
4253
+ case 4: _.label++; return { value: op[1], done: false };
4254
+ case 5: _.label++; y = op[1]; op = [0]; continue;
4255
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
4256
+ default:
4257
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
4258
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
4259
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
4260
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
4261
+ if (t[2]) _.ops.pop();
4262
+ _.trys.pop(); continue;
4263
+ }
4264
+ op = body.call(thisArg, _);
4265
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
4266
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
4267
+ }
4268
+ };
4269
+
4270
+
4271
+
4272
+
4273
+
4274
+
4275
+
4276
+
4277
+
4278
+
4279
+
4280
+
4281
+
4282
+
4283
+
4284
+
4285
+
4286
+
4287
+
4288
+
4289
+
4290
+
4291
+ var mergeOptions = function (options) {
4292
+ var _a;
4293
+ var defaultOption = {
4294
+ anchor: 0,
4295
+ cdn: constants/* Constants.CDN */.g.CDN,
4296
+ customEmoji: {},
4297
+ emojiPath: "".concat(constants/* Constants.CDN */.g.CDN, "/dist/images/emoji"),
4298
+ hljs: constants/* Constants.HLJS_OPTIONS */.g.HLJS_OPTIONS,
4299
+ icon: "ant",
4300
+ lang: "zh_CN",
4301
+ markdown: constants/* Constants.MARKDOWN_OPTIONS */.g.MARKDOWN_OPTIONS,
4302
+ math: constants/* Constants.MATH_OPTIONS */.g.MATH_OPTIONS,
4303
+ mode: "light",
4304
+ speech: {
4305
+ enable: false,
4306
+ },
4307
+ render: {
4308
+ media: {
4309
+ enable: true,
4310
+ }
4311
+ },
4312
+ theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,
4313
+ };
4314
+ if (options.cdn) {
4315
+ if (!((_a = options.theme) === null || _a === void 0 ? void 0 : _a.path)) {
4316
+ defaultOption.theme.path = "".concat(options.cdn, "/dist/css/content-theme");
4317
+ }
4318
+ if (!options.emojiPath) {
4319
+ defaultOption.emojiPath = "".concat(options.cdn, "/dist/images/emoji");
4320
+ }
4321
+ }
4322
+ return (0,merge/* merge */.T)(defaultOption, options);
4323
+ };
4324
+ var md2html = function (mdText, options) {
4325
+ var mergedOptions = mergeOptions(options);
4326
+ return (0,addScript/* addScript */.G)("".concat(mergedOptions.cdn, "/dist/js/lute/lute.min.js"), "vditorLuteScript").then(function () {
4327
+ var lute = (0,setLute/* setLute */.X)({
4328
+ autoSpace: mergedOptions.markdown.autoSpace,
4329
+ gfmAutoLink: mergedOptions.markdown.gfmAutoLink,
4330
+ codeBlockPreview: mergedOptions.markdown.codeBlockPreview,
4331
+ emojiSite: mergedOptions.emojiPath,
4332
+ emojis: mergedOptions.customEmoji,
4333
+ fixTermTypo: mergedOptions.markdown.fixTermTypo,
4334
+ footnotes: mergedOptions.markdown.footnotes,
4335
+ headingAnchor: mergedOptions.anchor !== 0,
4336
+ inlineMathDigit: mergedOptions.math.inlineDigit,
4337
+ lazyLoadImage: mergedOptions.lazyLoadImage,
4338
+ linkBase: mergedOptions.markdown.linkBase,
4339
+ linkPrefix: mergedOptions.markdown.linkPrefix,
4340
+ listStyle: mergedOptions.markdown.listStyle,
4341
+ mark: mergedOptions.markdown.mark,
4342
+ mathBlockPreview: mergedOptions.markdown.mathBlockPreview,
4343
+ paragraphBeginningSpace: mergedOptions.markdown.paragraphBeginningSpace,
4344
+ sanitize: mergedOptions.markdown.sanitize,
4345
+ sub: mergedOptions.markdown.sub,
4346
+ sup: mergedOptions.markdown.sup,
4347
+ toc: mergedOptions.markdown.toc,
4348
+ });
4349
+ if (options === null || options === void 0 ? void 0 : options.renderers) {
4350
+ lute.SetJSRenderers({
4351
+ renderers: {
4352
+ Md2HTML: options.renderers,
4353
+ },
4354
+ });
4355
+ }
4356
+ lute.SetHeadingID(true);
4357
+ return lute.Md2HTML(mdText);
4358
+ });
4359
+ };
4360
+ var previewRender = function (previewElement, markdown, options) { return __awaiter(void 0, void 0, void 0, function () {
4361
+ var mergedOptions, html, i18nScriptPrefix, i18nScriptID_1;
4362
+ return __generator(this, function (_a) {
4363
+ switch (_a.label) {
4364
+ case 0:
4365
+ mergedOptions = mergeOptions(options);
4366
+ return [4 /*yield*/, md2html(markdown, mergedOptions)];
4367
+ case 1:
4368
+ html = _a.sent();
4369
+ if (mergedOptions.transform) {
4370
+ html = mergedOptions.transform(html);
4371
+ }
4372
+ previewElement.innerHTML = html;
4373
+ previewElement.classList.add("vditor-reset");
4374
+ if (!!mergedOptions.i18n) return [3 /*break*/, 5];
4375
+ if (!!["de_DE", "en_US", "es_ES", "fr_FR", "ja_JP", "ko_KR", "pt_BR", "ru_RU", "sv_SE", "vi_VN", "zh_CN", "zh_TW"].includes(mergedOptions.lang)) return [3 /*break*/, 2];
4376
+ throw new Error("options.lang error, see https://ld246.com/article/1549638745630#options");
4377
+ case 2:
4378
+ i18nScriptPrefix = "vditorI18nScript";
4379
+ i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;
4380
+ document.querySelectorAll("head script[id^=\"".concat(i18nScriptPrefix, "\"]")).forEach(function (el) {
4381
+ if (el.id !== i18nScriptID_1) {
4382
+ document.head.removeChild(el);
4383
+ }
4384
+ });
4385
+ return [4 /*yield*/, (0,addScript/* addScript */.G)("".concat(mergedOptions.cdn, "/dist/js/i18n/").concat(mergedOptions.lang, ".js"), i18nScriptID_1)];
4386
+ case 3:
4387
+ _a.sent();
4388
+ _a.label = 4;
4389
+ case 4: return [3 /*break*/, 6];
4390
+ case 5:
4391
+ window.VditorI18n = mergedOptions.i18n;
4392
+ _a.label = 6;
4393
+ case 6:
4394
+ if (!mergedOptions.icon) return [3 /*break*/, 8];
4395
+ return [4 /*yield*/, (0,addScript/* addScript */.G)("".concat(mergedOptions.cdn, "/dist/js/icons/").concat(mergedOptions.icon, ".js"), "vditorIconScript")];
4396
+ case 7:
4397
+ _a.sent();
4398
+ _a.label = 8;
4399
+ case 8:
4400
+ (0,setContentTheme/* setContentTheme */.Z)(mergedOptions.theme.current, mergedOptions.theme.path);
4401
+ if (mergedOptions.anchor === 1) {
4402
+ previewElement.classList.add("vditor-reset--anchor");
4403
+ }
4404
+ (0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs);
4405
+ (0,highlightRender/* highlightRender */.s)(mergedOptions.hljs, previewElement, mergedOptions.cdn);
4406
+ (0,mathRender/* mathRender */.H)(previewElement, {
4407
+ cdn: mergedOptions.cdn,
4408
+ math: mergedOptions.math,
4409
+ });
4410
+ (0,mermaidRender/* mermaidRender */.i)(previewElement, mergedOptions.cdn, mergedOptions.mode);
4411
+ (0,SMILESRender/* SMILESRender */.J)(previewElement, mergedOptions.cdn, mergedOptions.mode);
4412
+ (0,markmapRender/* markmapRender */.K)(previewElement, mergedOptions.cdn);
4413
+ (0,flowchartRender/* flowchartRender */.P)(previewElement, mergedOptions.cdn);
4414
+ (0,graphvizRender/* graphvizRender */.v)(previewElement, mergedOptions.cdn);
4415
+ (0,chartRender/* chartRender */.p)(previewElement, mergedOptions.cdn, mergedOptions.mode);
4416
+ (0,mindmapRender/* mindmapRender */.P)(previewElement, mergedOptions.cdn, mergedOptions.mode);
4417
+ (0,plantumlRender/* plantumlRender */.B)(previewElement, mergedOptions.cdn);
4418
+ (0,abcRender/* abcRender */.Q)(previewElement, mergedOptions.cdn);
4419
+ if (mergedOptions.render.media.enable) {
4420
+ (0,mediaRender/* mediaRender */.Y)(previewElement);
4421
+ }
4422
+ if (mergedOptions.speech.enable) {
4423
+ speechRender(previewElement);
4424
+ }
4425
+ if (mergedOptions.anchor !== 0) {
4426
+ anchorRender(mergedOptions.anchor);
4427
+ }
4428
+ if (mergedOptions.after) {
4429
+ mergedOptions.after();
4430
+ }
4431
+ if (mergedOptions.lazyLoadImage) {
4432
+ lazyLoadImageRender(previewElement);
4433
+ }
4434
+ previewElement.addEventListener("click", function (event) {
4435
+ var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, "SPAN");
4436
+ if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, "vditor-toc")) {
4437
+ var headingElement = previewElement.querySelector("#" + spanElement.getAttribute("data-target-id"));
4438
+ if (headingElement) {
4439
+ window.scrollTo(window.scrollX, headingElement.offsetTop);
4440
+ }
4441
+ return;
4442
+ }
4443
+ });
4444
+ return [2 /*return*/];
4445
+ }
4446
+ });
4447
+ }); };
4448
+
4449
+ // EXTERNAL MODULE: ./src/ts/preview/image.ts
4450
+ var preview_image = __webpack_require__(190);
4451
+ // EXTERNAL MODULE: ./src/ts/ui/setCodeTheme.ts
4452
+ var setCodeTheme = __webpack_require__(580);
4453
+ ;// CONCATENATED MODULE: ./src/method.ts
4454
+
4455
+
4456
+
4457
+
4458
+
4459
+
4460
+
4461
+
4462
+
4463
+
4464
+
4465
+
4466
+
4467
+
4468
+
4469
+
4470
+
4471
+
4472
+
4473
+
4474
+
4475
+ var Vditor = /** @class */ (function () {
4476
+ function Vditor() {
4477
+ }
4478
+ /** 点击图片放大 */
4479
+ Vditor.adapterRender = adapterRender;
4480
+ /** 点击图片放大 */
4481
+ Vditor.previewImage = preview_image/* previewImage */.E;
4482
+ /** 为 element 中的代码块添加复制按钮 */
4483
+ Vditor.codeRender = codeRender/* codeRender */.O;
4484
+ /** 对 graphviz 进行渲染 */
4485
+ Vditor.graphvizRender = graphvizRender/* graphvizRender */.v;
4486
+ /** 为 element 中的代码块进行高亮渲染 */
4487
+ Vditor.highlightRender = highlightRender/* highlightRender */.s;
4488
+ /** 对数学公式进行渲染 */
4489
+ Vditor.mathRender = mathRender/* mathRender */.H;
4490
+ /** 流程图/时序图/甘特图渲染 */
4491
+ Vditor.mermaidRender = mermaidRender/* mermaidRender */.i;
4492
+ /** 化学物质结构渲染 */
4493
+ Vditor.SMILESRender = SMILESRender/* SMILESRender */.J;
4494
+ /** 支持 markdown 的思维导图 */
4495
+ Vditor.markmapRender = markmapRender/* markmapRender */.K;
4496
+ /** flowchart.js 渲染 */
4497
+ Vditor.flowchartRender = flowchartRender/* flowchartRender */.P;
4498
+ /** 图表渲染 */
4499
+ Vditor.chartRender = chartRender/* chartRender */.p;
4500
+ /** 五线谱渲染 */
4501
+ Vditor.abcRender = abcRender/* abcRender */.Q;
4502
+ /** 脑图渲染 */
4503
+ Vditor.mindmapRender = mindmapRender/* mindmapRender */.P;
4504
+ /** plantuml渲染 */
4505
+ Vditor.plantumlRender = plantumlRender/* plantumlRender */.B;
4506
+ /** 大纲渲染 */
4507
+ Vditor.outlineRender = outlineRender/* outlineRender */.k;
4508
+ /** 为[特定链接](https://github.com/Vanessa219/vditor/issues/7)分别渲染为视频、音频、嵌入的 iframe */
4509
+ Vditor.mediaRender = mediaRender/* mediaRender */.Y;
4510
+ /** 对选中的文字进行阅读 */
4511
+ Vditor.speechRender = speechRender;
4512
+ /** 对图片进行懒加载 */
4513
+ Vditor.lazyLoadImageRender = lazyLoadImageRender;
4514
+ /** Markdown 文本转换为 HTML,该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vaness) */
4515
+ Vditor.md2html = md2html;
4516
+ /** 页面 Markdown 文章渲染 */
4517
+ Vditor.preview = previewRender;
4518
+ /** 设置代码主题 */
4519
+ Vditor.setCodeTheme = setCodeTheme/* setCodeTheme */.Y;
4520
+ /** 设置内容主题 */
4521
+ Vditor.setContentTheme = setContentTheme/* setContentTheme */.Z;
4522
+ return Vditor;
4523
+ }());
4524
+ /* harmony default export */ const method = (Vditor);
4525
+
4526
+ })();
4527
+
4528
+ __webpack_exports__ = __webpack_exports__["default"];
4529
+ /******/ return __webpack_exports__;
4530
+ /******/ })()
4531
+ ;
4532
+ });