@8btc/mditor 0.0.14 → 0.0.16

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 (265) hide show
  1. package/dist/index.css +16 -9
  2. package/dist/index.js +105 -25
  3. package/dist/index.min.js +1 -1
  4. package/dist/js/highlight.js/styles/a11y-dark.min.css +82 -2
  5. package/dist/js/highlight.js/styles/a11y-light.min.css +80 -2
  6. package/dist/js/highlight.js/styles/agate.min.css +101 -2
  7. package/dist/js/highlight.js/styles/an-old-hope.min.css +60 -2
  8. package/dist/js/highlight.js/styles/androidstudio.min.css +57 -1
  9. package/dist/js/highlight.js/styles/arduino-light.min.css +74 -1
  10. package/dist/js/highlight.js/styles/arta.min.css +63 -1
  11. package/dist/js/highlight.js/styles/ascetic.min.css +41 -1
  12. package/dist/js/highlight.js/styles/atom-one-dark-reasonable.min.css +95 -1
  13. package/dist/js/highlight.js/styles/atom-one-dark.min.css +72 -1
  14. package/dist/js/highlight.js/styles/atom-one-light.min.css +72 -1
  15. package/dist/js/highlight.js/styles/base16/3024.min.css +97 -1
  16. package/dist/js/highlight.js/styles/base16/apathy.min.css +97 -1
  17. package/dist/js/highlight.js/styles/base16/apprentice.min.css +97 -1
  18. package/dist/js/highlight.js/styles/base16/ashes.min.css +97 -1
  19. package/dist/js/highlight.js/styles/base16/atelier-cave-light.min.css +97 -1
  20. package/dist/js/highlight.js/styles/base16/atelier-cave.min.css +97 -1
  21. package/dist/js/highlight.js/styles/base16/atelier-dune-light.min.css +97 -1
  22. package/dist/js/highlight.js/styles/base16/atelier-dune.min.css +97 -1
  23. package/dist/js/highlight.js/styles/base16/atelier-estuary-light.min.css +97 -1
  24. package/dist/js/highlight.js/styles/base16/atelier-estuary.min.css +97 -1
  25. package/dist/js/highlight.js/styles/base16/atelier-forest-light.min.css +97 -1
  26. package/dist/js/highlight.js/styles/base16/atelier-forest.min.css +97 -1
  27. package/dist/js/highlight.js/styles/base16/atelier-heath-light.min.css +97 -1
  28. package/dist/js/highlight.js/styles/base16/atelier-heath.min.css +97 -1
  29. package/dist/js/highlight.js/styles/base16/atelier-lakeside-light.min.css +97 -1
  30. package/dist/js/highlight.js/styles/base16/atelier-lakeside.min.css +97 -1
  31. package/dist/js/highlight.js/styles/base16/atelier-plateau-light.min.css +97 -1
  32. package/dist/js/highlight.js/styles/base16/atelier-plateau.min.css +97 -1
  33. package/dist/js/highlight.js/styles/base16/atelier-savanna-light.min.css +97 -1
  34. package/dist/js/highlight.js/styles/base16/atelier-savanna.min.css +97 -1
  35. package/dist/js/highlight.js/styles/base16/atelier-seaside-light.min.css +97 -1
  36. package/dist/js/highlight.js/styles/base16/atelier-seaside.min.css +97 -1
  37. package/dist/js/highlight.js/styles/base16/atelier-sulphurpool-light.min.css +97 -1
  38. package/dist/js/highlight.js/styles/base16/atelier-sulphurpool.min.css +97 -1
  39. package/dist/js/highlight.js/styles/base16/atlas.min.css +97 -1
  40. package/dist/js/highlight.js/styles/base16/bespin.min.css +97 -1
  41. package/dist/js/highlight.js/styles/base16/black-metal-bathory.min.css +97 -1
  42. package/dist/js/highlight.js/styles/base16/black-metal-burzum.min.css +97 -1
  43. package/dist/js/highlight.js/styles/base16/black-metal-dark-funeral.min.css +97 -1
  44. package/dist/js/highlight.js/styles/base16/black-metal-gorgoroth.min.css +97 -1
  45. package/dist/js/highlight.js/styles/base16/black-metal-immortal.min.css +97 -1
  46. package/dist/js/highlight.js/styles/base16/black-metal-khold.min.css +97 -1
  47. package/dist/js/highlight.js/styles/base16/black-metal-marduk.min.css +97 -1
  48. package/dist/js/highlight.js/styles/base16/black-metal-mayhem.min.css +97 -1
  49. package/dist/js/highlight.js/styles/base16/black-metal-nile.min.css +97 -1
  50. package/dist/js/highlight.js/styles/base16/black-metal-venom.min.css +97 -1
  51. package/dist/js/highlight.js/styles/base16/black-metal.min.css +97 -1
  52. package/dist/js/highlight.js/styles/base16/brewer.min.css +97 -1
  53. package/dist/js/highlight.js/styles/base16/bright.min.css +97 -1
  54. package/dist/js/highlight.js/styles/base16/brogrammer.min.css +97 -1
  55. package/dist/js/highlight.js/styles/base16/brush-trees-dark.min.css +97 -1
  56. package/dist/js/highlight.js/styles/base16/brush-trees.min.css +97 -1
  57. package/dist/js/highlight.js/styles/base16/chalk.min.css +97 -1
  58. package/dist/js/highlight.js/styles/base16/circus.min.css +97 -1
  59. package/dist/js/highlight.js/styles/base16/classic-dark.min.css +97 -1
  60. package/dist/js/highlight.js/styles/base16/classic-light.min.css +97 -1
  61. package/dist/js/highlight.js/styles/base16/codeschool.min.css +97 -1
  62. package/dist/js/highlight.js/styles/base16/colors.min.css +97 -1
  63. package/dist/js/highlight.js/styles/base16/cupcake.min.css +97 -1
  64. package/dist/js/highlight.js/styles/base16/cupertino.min.css +95 -1
  65. package/dist/js/highlight.js/styles/base16/danqing.min.css +97 -1
  66. package/dist/js/highlight.js/styles/base16/darcula.min.css +97 -1
  67. package/dist/js/highlight.js/styles/base16/dark-violet.min.css +97 -1
  68. package/dist/js/highlight.js/styles/base16/darkmoss.min.css +97 -1
  69. package/dist/js/highlight.js/styles/base16/darktooth.min.css +97 -1
  70. package/dist/js/highlight.js/styles/base16/decaf.min.css +97 -1
  71. package/dist/js/highlight.js/styles/base16/default-dark.min.css +97 -1
  72. package/dist/js/highlight.js/styles/base16/default-light.min.css +97 -1
  73. package/dist/js/highlight.js/styles/base16/dirtysea.min.css +97 -1
  74. package/dist/js/highlight.js/styles/base16/dracula.min.css +97 -1
  75. package/dist/js/highlight.js/styles/base16/edge-dark.min.css +95 -1
  76. package/dist/js/highlight.js/styles/base16/edge-light.min.css +95 -1
  77. package/dist/js/highlight.js/styles/base16/eighties.min.css +97 -1
  78. package/dist/js/highlight.js/styles/base16/embers.min.css +97 -1
  79. package/dist/js/highlight.js/styles/base16/equilibrium-dark.min.css +97 -1
  80. package/dist/js/highlight.js/styles/base16/equilibrium-gray-dark.min.css +97 -1
  81. package/dist/js/highlight.js/styles/base16/equilibrium-gray-light.min.css +97 -1
  82. package/dist/js/highlight.js/styles/base16/equilibrium-light.min.css +97 -1
  83. package/dist/js/highlight.js/styles/base16/espresso.min.css +97 -1
  84. package/dist/js/highlight.js/styles/base16/eva-dim.min.css +97 -1
  85. package/dist/js/highlight.js/styles/base16/eva.min.css +97 -1
  86. package/dist/js/highlight.js/styles/base16/flat.min.css +97 -1
  87. package/dist/js/highlight.js/styles/base16/framer.min.css +97 -1
  88. package/dist/js/highlight.js/styles/base16/fruit-soda.min.css +97 -1
  89. package/dist/js/highlight.js/styles/base16/gigavolt.min.css +97 -1
  90. package/dist/js/highlight.js/styles/base16/github.min.css +95 -1
  91. package/dist/js/highlight.js/styles/base16/google-dark.min.css +95 -1
  92. package/dist/js/highlight.js/styles/base16/google-light.min.css +95 -1
  93. package/dist/js/highlight.js/styles/base16/grayscale-dark.min.css +97 -1
  94. package/dist/js/highlight.js/styles/base16/grayscale-light.min.css +97 -1
  95. package/dist/js/highlight.js/styles/base16/green-screen.min.css +97 -1
  96. package/dist/js/highlight.js/styles/base16/gruvbox-dark-hard.min.css +97 -1
  97. package/dist/js/highlight.js/styles/base16/gruvbox-dark-medium.min.css +97 -1
  98. package/dist/js/highlight.js/styles/base16/gruvbox-dark-pale.min.css +97 -1
  99. package/dist/js/highlight.js/styles/base16/gruvbox-dark-soft.min.css +97 -1
  100. package/dist/js/highlight.js/styles/base16/gruvbox-light-hard.min.css +97 -1
  101. package/dist/js/highlight.js/styles/base16/gruvbox-light-medium.min.css +97 -1
  102. package/dist/js/highlight.js/styles/base16/gruvbox-light-soft.min.css +97 -1
  103. package/dist/js/highlight.js/styles/base16/hardcore.min.css +97 -1
  104. package/dist/js/highlight.js/styles/base16/harmonic16-dark.min.css +97 -1
  105. package/dist/js/highlight.js/styles/base16/harmonic16-light.min.css +97 -1
  106. package/dist/js/highlight.js/styles/base16/heetch-dark.min.css +97 -1
  107. package/dist/js/highlight.js/styles/base16/heetch-light.min.css +97 -1
  108. package/dist/js/highlight.js/styles/base16/helios.min.css +97 -1
  109. package/dist/js/highlight.js/styles/base16/hopscotch.min.css +97 -1
  110. package/dist/js/highlight.js/styles/base16/horizon-dark.min.css +97 -1
  111. package/dist/js/highlight.js/styles/base16/horizon-light.min.css +97 -1
  112. package/dist/js/highlight.js/styles/base16/humanoid-dark.min.css +97 -1
  113. package/dist/js/highlight.js/styles/base16/humanoid-light.min.css +97 -1
  114. package/dist/js/highlight.js/styles/base16/ia-dark.min.css +97 -1
  115. package/dist/js/highlight.js/styles/base16/ia-light.min.css +97 -1
  116. package/dist/js/highlight.js/styles/base16/icy-dark.min.css +97 -1
  117. package/dist/js/highlight.js/styles/base16/ir-black.min.css +97 -1
  118. package/dist/js/highlight.js/styles/base16/isotope.min.css +97 -1
  119. package/dist/js/highlight.js/styles/base16/kimber.min.css +97 -1
  120. package/dist/js/highlight.js/styles/base16/london-tube.min.css +97 -1
  121. package/dist/js/highlight.js/styles/base16/macintosh.min.css +95 -1
  122. package/dist/js/highlight.js/styles/base16/marrakesh.min.css +97 -1
  123. package/dist/js/highlight.js/styles/base16/materia.min.css +97 -1
  124. package/dist/js/highlight.js/styles/base16/material-darker.min.css +97 -1
  125. package/dist/js/highlight.js/styles/base16/material-lighter.min.css +97 -1
  126. package/dist/js/highlight.js/styles/base16/material-palenight.min.css +97 -1
  127. package/dist/js/highlight.js/styles/base16/material-vivid.min.css +97 -1
  128. package/dist/js/highlight.js/styles/base16/material.min.css +97 -1
  129. package/dist/js/highlight.js/styles/base16/mellow-purple.min.css +97 -1
  130. package/dist/js/highlight.js/styles/base16/mexico-light.min.css +97 -1
  131. package/dist/js/highlight.js/styles/base16/mocha.min.css +97 -1
  132. package/dist/js/highlight.js/styles/base16/monokai.min.css +97 -1
  133. package/dist/js/highlight.js/styles/base16/nebula.min.css +97 -1
  134. package/dist/js/highlight.js/styles/base16/nord.min.css +97 -1
  135. package/dist/js/highlight.js/styles/base16/nova.min.css +95 -1
  136. package/dist/js/highlight.js/styles/base16/ocean.min.css +97 -1
  137. package/dist/js/highlight.js/styles/base16/oceanicnext.min.css +97 -1
  138. package/dist/js/highlight.js/styles/base16/one-light.min.css +97 -1
  139. package/dist/js/highlight.js/styles/base16/onedark.min.css +97 -1
  140. package/dist/js/highlight.js/styles/base16/outrun-dark.min.css +97 -1
  141. package/dist/js/highlight.js/styles/base16/papercolor-dark.min.css +97 -1
  142. package/dist/js/highlight.js/styles/base16/papercolor-light.min.css +95 -1
  143. package/dist/js/highlight.js/styles/base16/paraiso.min.css +97 -1
  144. package/dist/js/highlight.js/styles/base16/pasque.min.css +97 -1
  145. package/dist/js/highlight.js/styles/base16/phd.min.css +97 -1
  146. package/dist/js/highlight.js/styles/base16/pico.min.css +97 -1
  147. package/dist/js/highlight.js/styles/base16/pop.min.css +97 -1
  148. package/dist/js/highlight.js/styles/base16/porple.min.css +97 -1
  149. package/dist/js/highlight.js/styles/base16/qualia.min.css +97 -1
  150. package/dist/js/highlight.js/styles/base16/railscasts.min.css +97 -1
  151. package/dist/js/highlight.js/styles/base16/rebecca.min.css +97 -1
  152. package/dist/js/highlight.js/styles/base16/ros-pine-dawn.min.css +97 -1
  153. package/dist/js/highlight.js/styles/base16/ros-pine-moon.min.css +97 -1
  154. package/dist/js/highlight.js/styles/base16/ros-pine.min.css +97 -1
  155. package/dist/js/highlight.js/styles/base16/sagelight.min.css +97 -1
  156. package/dist/js/highlight.js/styles/base16/sandcastle.min.css +93 -1
  157. package/dist/js/highlight.js/styles/base16/seti-ui.min.css +97 -1
  158. package/dist/js/highlight.js/styles/base16/shapeshifter.min.css +97 -1
  159. package/dist/js/highlight.js/styles/base16/silk-dark.min.css +97 -1
  160. package/dist/js/highlight.js/styles/base16/silk-light.min.css +97 -1
  161. package/dist/js/highlight.js/styles/base16/snazzy.min.css +97 -1
  162. package/dist/js/highlight.js/styles/base16/solar-flare-light.min.css +97 -1
  163. package/dist/js/highlight.js/styles/base16/solar-flare.min.css +97 -1
  164. package/dist/js/highlight.js/styles/base16/solarized-dark.min.css +97 -1
  165. package/dist/js/highlight.js/styles/base16/solarized-light.min.css +97 -1
  166. package/dist/js/highlight.js/styles/base16/spacemacs.min.css +97 -1
  167. package/dist/js/highlight.js/styles/base16/summercamp.min.css +97 -1
  168. package/dist/js/highlight.js/styles/base16/summerfruit-dark.min.css +97 -1
  169. package/dist/js/highlight.js/styles/base16/summerfruit-light.min.css +97 -1
  170. package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-dark.min.css +97 -1
  171. package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-light.min.css +97 -1
  172. package/dist/js/highlight.js/styles/base16/tango.min.css +97 -1
  173. package/dist/js/highlight.js/styles/base16/tender.min.css +97 -1
  174. package/dist/js/highlight.js/styles/base16/tomorrow-night.min.css +97 -1
  175. package/dist/js/highlight.js/styles/base16/tomorrow.min.css +97 -1
  176. package/dist/js/highlight.js/styles/base16/twilight.min.css +97 -1
  177. package/dist/js/highlight.js/styles/base16/unikitty-dark.min.css +97 -1
  178. package/dist/js/highlight.js/styles/base16/unikitty-light.min.css +97 -1
  179. package/dist/js/highlight.js/styles/base16/vulcan.min.css +93 -1
  180. package/dist/js/highlight.js/styles/base16/windows-10-light.min.css +97 -1
  181. package/dist/js/highlight.js/styles/base16/windows-10.min.css +97 -1
  182. package/dist/js/highlight.js/styles/base16/windows-95-light.min.css +97 -1
  183. package/dist/js/highlight.js/styles/base16/windows-95.min.css +97 -1
  184. package/dist/js/highlight.js/styles/base16/windows-high-contrast-light.min.css +97 -1
  185. package/dist/js/highlight.js/styles/base16/windows-high-contrast.min.css +97 -1
  186. package/dist/js/highlight.js/styles/base16/windows-nt-light.min.css +97 -1
  187. package/dist/js/highlight.js/styles/base16/windows-nt.min.css +97 -1
  188. package/dist/js/highlight.js/styles/base16/woodland.min.css +97 -1
  189. package/dist/js/highlight.js/styles/base16/xcode-dusk.min.css +97 -1
  190. package/dist/js/highlight.js/styles/base16/zenburn.min.css +97 -1
  191. package/dist/js/highlight.js/styles/brown-paper.min.css +54 -1
  192. package/dist/js/highlight.js/styles/codepen-embed.min.css +53 -1
  193. package/dist/js/highlight.js/styles/color-brewer.min.css +56 -1
  194. package/dist/js/highlight.js/styles/dark.min.css +54 -1
  195. package/dist/js/highlight.js/styles/default.min.css +79 -1
  196. package/dist/js/highlight.js/styles/devibeans.min.css +80 -2
  197. package/dist/js/highlight.js/styles/docco.min.css +81 -1
  198. package/dist/js/highlight.js/styles/far.min.css +59 -1
  199. package/dist/js/highlight.js/styles/felipec.min.css +89 -2
  200. package/dist/js/highlight.js/styles/foundation.min.css +74 -1
  201. package/dist/js/highlight.js/styles/github-dark-dimmed.min.css +87 -2
  202. package/dist/js/highlight.js/styles/github-dark.min.css +87 -2
  203. package/dist/js/highlight.js/styles/github.min.css +87 -2
  204. package/dist/js/highlight.js/styles/gml.min.css +68 -1
  205. package/dist/js/highlight.js/styles/googlecode.min.css +75 -1
  206. package/dist/js/highlight.js/styles/gradient-dark.min.css +92 -1
  207. package/dist/js/highlight.js/styles/gradient-light.min.css +94 -1
  208. package/dist/js/highlight.js/styles/grayscale.min.css +85 -1
  209. package/dist/js/highlight.js/styles/hybrid.min.css +75 -1
  210. package/dist/js/highlight.js/styles/idea.min.css +82 -1
  211. package/dist/js/highlight.js/styles/intellij-light.min.css +91 -1
  212. package/dist/js/highlight.js/styles/ir-black.min.css +64 -1
  213. package/dist/js/highlight.js/styles/isbl-editor-dark.min.css +84 -1
  214. package/dist/js/highlight.js/styles/isbl-editor-light.min.css +84 -1
  215. package/dist/js/highlight.js/styles/kimbie-dark.min.css +58 -1
  216. package/dist/js/highlight.js/styles/kimbie-light.min.css +58 -1
  217. package/dist/js/highlight.js/styles/lightfair.min.css +73 -1
  218. package/dist/js/highlight.js/styles/lioshi.min.css +65 -1
  219. package/dist/js/highlight.js/styles/magula.min.css +59 -1
  220. package/dist/js/highlight.js/styles/mono-blue.min.css +54 -1
  221. package/dist/js/highlight.js/styles/monokai-sublime.min.css +72 -1
  222. package/dist/js/highlight.js/styles/monokai.min.css +66 -1
  223. package/dist/js/highlight.js/styles/night-owl.min.css +136 -1
  224. package/dist/js/highlight.js/styles/nnfx-dark.min.css +96 -2
  225. package/dist/js/highlight.js/styles/nnfx-light.min.css +96 -2
  226. package/dist/js/highlight.js/styles/nord.min.css +205 -1
  227. package/dist/js/highlight.js/styles/obsidian.min.css +76 -1
  228. package/dist/js/highlight.js/styles/panda-syntax-dark.min.css +88 -1
  229. package/dist/js/highlight.js/styles/panda-syntax-light.min.css +85 -1
  230. package/dist/js/highlight.js/styles/paraiso-dark.min.css +57 -1
  231. package/dist/js/highlight.js/styles/paraiso-light.min.css +57 -1
  232. package/dist/js/highlight.js/styles/pojoaque.min.css +70 -1
  233. package/dist/js/highlight.js/styles/purebasic.min.css +66 -1
  234. package/dist/js/highlight.js/styles/qtcreator-dark.min.css +71 -1
  235. package/dist/js/highlight.js/styles/qtcreator-light.min.css +69 -1
  236. package/dist/js/highlight.js/styles/rainbow.min.css +73 -1
  237. package/dist/js/highlight.js/styles/routeros.min.css +77 -1
  238. package/dist/js/highlight.js/styles/school-book.min.css +57 -1
  239. package/dist/js/highlight.js/styles/shades-of-purple.min.css +76 -1
  240. package/dist/js/highlight.js/styles/srcery.min.css +70 -1
  241. package/dist/js/highlight.js/styles/stackoverflow-dark.min.css +79 -2
  242. package/dist/js/highlight.js/styles/stackoverflow-light.min.css +79 -2
  243. package/dist/js/highlight.js/styles/sunburst.min.css +85 -1
  244. package/dist/js/highlight.js/styles/tokyo-night-dark.min.css +83 -2
  245. package/dist/js/highlight.js/styles/tokyo-night-light.min.css +83 -2
  246. package/dist/js/highlight.js/styles/tomorrow-night-blue.min.css +59 -1
  247. package/dist/js/highlight.js/styles/tomorrow-night-bright.min.css +59 -1
  248. package/dist/js/highlight.js/styles/vs.min.css +59 -1
  249. package/dist/js/highlight.js/styles/vs2015.min.css +94 -1
  250. package/dist/js/highlight.js/styles/xcode.min.css +85 -1
  251. package/dist/js/highlight.js/styles/xt256.min.css +74 -1
  252. package/dist/js/icons/ant.js +9 -2
  253. package/dist/js/icons/material.js +11 -3
  254. package/dist/method.d.ts +8 -1
  255. package/dist/method.js +97 -22
  256. package/dist/method.min.js +1 -1
  257. package/dist/ts/markdown/codeRender.d.ts +13 -1
  258. package/dist/types/index.d.ts +10 -1
  259. package/package.json +3 -2
  260. package/src/assets/less/_line-number.less +1 -0
  261. package/src/assets/less/_reset.less +13 -7
  262. package/src/ts/markdown/codeRender.ts +152 -58
  263. package/src/ts/markdown/previewRender.ts +69 -25
  264. package/src/ts/util/editorCommonEvent.ts +15 -8
  265. package/src/ts/wysiwyg/index.ts +6 -3
package/dist/index.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vditor v0.0.14 - A markdown editor written in TypeScript.
2
+ * Vditor v0.0.16 - A markdown editor written in TypeScript.
3
3
  *
4
4
  * MIT License
5
5
  *
@@ -25,7 +25,7 @@
25
25
  *
26
26
  */
27
27
  /*!
28
- * Vditor v0.0.14 - A markdown editor written in TypeScript.
28
+ * Vditor v0.0.16 - A markdown editor written in TypeScript.
29
29
  *
30
30
  * MIT License
31
31
  *
@@ -955,6 +955,7 @@
955
955
  }
956
956
  .vditor-reset pre {
957
957
  margin: 1em 0;
958
+ position: relative;
958
959
  }
959
960
  .vditor-reset pre > code {
960
961
  margin: 0;
@@ -970,8 +971,13 @@
970
971
  word-break: initial;
971
972
  word-wrap: normal;
972
973
  }
973
- .vditor-reset pre:hover div.vditor-copy {
974
- display: block;
974
+ .vditor-reset pre div.vditor-copy {
975
+ display: inline-flex;
976
+ position: absolute;
977
+ right: 0.94rem;
978
+ top: 0.5em;
979
+ align-items: center;
980
+ gap: var(--vditor-copy-gap, 0.5rem);
975
981
  }
976
982
  .vditor-reset .language-math,
977
983
  .vditor-reset .language-echarts,
@@ -1061,20 +1067,20 @@
1061
1067
  vertical-align: middle;
1062
1068
  }
1063
1069
  .vditor-copy {
1064
- position: relative;
1070
+ position: absolute;
1065
1071
  display: none;
1066
1072
  z-index: 1;
1073
+ right: 0.94rem;
1074
+ top: 0.5em;
1067
1075
  }
1068
1076
  .vditor-copy textarea {
1069
1077
  position: absolute;
1070
1078
  left: -6250rem;
1071
1079
  height: 0.63rem;
1072
1080
  }
1073
- .vditor-copy span {
1081
+ .vditor-copy__item {
1074
1082
  cursor: pointer;
1075
- position: absolute;
1076
- right: 0.94rem;
1077
- top: 0.5em;
1083
+ position: static;
1078
1084
  }
1079
1085
  .vditor-copy svg {
1080
1086
  color: #586069;
@@ -1865,6 +1871,7 @@
1865
1871
  float: left;
1866
1872
  padding-right: 0.25rem;
1867
1873
  margin-left: -3rem;
1874
+ font-weight: normal;
1868
1875
  position: absolute;
1869
1876
  top: 0;
1870
1877
  left: 0;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vditor v0.0.14 - A markdown editor written in TypeScript.
2
+ * Vditor v0.0.16 - A markdown editor written in TypeScript.
3
3
  *
4
4
  * MIT License
5
5
  *
@@ -2564,10 +2564,13 @@ var mergeOptions = function (options) {
2564
2564
  speech: {
2565
2565
  enable: false,
2566
2566
  },
2567
+ runCode: {
2568
+ enable: false,
2569
+ },
2567
2570
  render: {
2568
2571
  media: {
2569
2572
  enable: true,
2570
- }
2573
+ },
2571
2574
  },
2572
2575
  theme: constants/* Constants.THEME_OPTIONS */.g.THEME_OPTIONS,
2573
2576
  };
@@ -2632,12 +2635,27 @@ var previewRender = function (previewElement, markdown, options) { return __awai
2632
2635
  previewElement.innerHTML = html;
2633
2636
  previewElement.classList.add("vditor-reset");
2634
2637
  if (!!mergedOptions.i18n) return [3 /*break*/, 5];
2635
- 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];
2638
+ if (!![
2639
+ "de_DE",
2640
+ "en_US",
2641
+ "es_ES",
2642
+ "fr_FR",
2643
+ "ja_JP",
2644
+ "ko_KR",
2645
+ "pt_BR",
2646
+ "ru_RU",
2647
+ "sv_SE",
2648
+ "vi_VN",
2649
+ "zh_CN",
2650
+ "zh_TW",
2651
+ ].includes(mergedOptions.lang)) return [3 /*break*/, 2];
2636
2652
  throw new Error("options.lang error, see https://ld246.com/article/1549638745630#options");
2637
2653
  case 2:
2638
2654
  i18nScriptPrefix = "vditorI18nScript";
2639
2655
  i18nScriptID_1 = i18nScriptPrefix + mergedOptions.lang;
2640
- document.querySelectorAll("head script[id^=\"".concat(i18nScriptPrefix, "\"]")).forEach(function (el) {
2656
+ document
2657
+ .querySelectorAll("head script[id^=\"".concat(i18nScriptPrefix, "\"]"))
2658
+ .forEach(function (el) {
2641
2659
  if (el.id !== i18nScriptID_1) {
2642
2660
  document.head.removeChild(el);
2643
2661
  }
@@ -2661,7 +2679,7 @@ var previewRender = function (previewElement, markdown, options) { return __awai
2661
2679
  if (mergedOptions.anchor === 1) {
2662
2680
  previewElement.classList.add("vditor-reset--anchor");
2663
2681
  }
2664
- (0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs);
2682
+ (0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs, mergedOptions.runCode);
2665
2683
  (0,highlightRender/* highlightRender */.s)(mergedOptions.hljs, previewElement, mergedOptions.cdn);
2666
2684
  (0,mathRender/* mathRender */.H)(previewElement, {
2667
2685
  cdn: mergedOptions.cdn,
@@ -2694,7 +2712,8 @@ var previewRender = function (previewElement, markdown, options) { return __awai
2694
2712
  }
2695
2713
  previewElement.addEventListener("click", function (event) {
2696
2714
  var spanElement = (0,hasClosest/* hasClosestByMatchTag */.lG)(event.target, "SPAN");
2697
- if (spanElement && (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, "vditor-toc")) {
2715
+ if (spanElement &&
2716
+ (0,hasClosest/* hasClosestByClassName */.fb)(spanElement, "vditor-toc")) {
2698
2717
  var headingElement = previewElement.querySelector("#" + spanElement.getAttribute("data-target-id"));
2699
2718
  if (headingElement) {
2700
2719
  window.scrollTo(window.scrollX, headingElement.offsetTop);
@@ -2825,7 +2844,7 @@ var Vditor = /** @class */ (function () {
2825
2844
  /* harmony export */ "H": () => (/* binding */ _VDITOR_VERSION),
2826
2845
  /* harmony export */ "g": () => (/* binding */ Constants)
2827
2846
  /* harmony export */ });
2828
- var _VDITOR_VERSION = "0.0.14";
2847
+ var _VDITOR_VERSION = "0.0.16";
2829
2848
 
2830
2849
  var Constants = /** @class */ (function () {
2831
2850
  function Constants() {
@@ -3127,7 +3146,7 @@ var Constants = /** @class */ (function () {
3127
3146
  "c#",
3128
3147
  "bat",
3129
3148
  ];
3130
- Constants.CDN = "https://webcdn.wujieai.com/vditor@".concat("0.0.14");
3149
+ Constants.CDN = "https://webcdn.wujieai.com/vditor@".concat("0.0.16");
3131
3150
  Constants.MARKDOWN_OPTIONS = {
3132
3151
  autoSpace: false,
3133
3152
  gfmAutoLink: true,
@@ -4485,17 +4504,28 @@ var attachEchartsContextMenu = function (el, option, chart, cdn) {
4485
4504
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
4486
4505
 
4487
4506
 
4488
- var codeRender = function (element, option) {
4489
- Array.from(element.querySelectorAll("pre > code")).filter(function (e, index) {
4507
+ /**
4508
+ * 为预览区域中的代码块添加辅助操作:
4509
+ * - 复制按钮:一键复制代码文本
4510
+ * - 运行按钮:当启用 runCode 时,向外部回调当前代码块的 HTML 字符串
4511
+ */
4512
+ var codeRender = function (element, option, runCode) {
4513
+ Array.from(element.querySelectorAll("pre > code"))
4514
+ .filter(function (e, index) {
4490
4515
  if (e.parentElement.classList.contains("vditor-wysiwyg__pre") ||
4491
4516
  e.parentElement.classList.contains("vditor-ir__marker--pre")) {
4492
4517
  return false;
4493
4518
  }
4494
- if (e.classList.contains("language-mermaid") || e.classList.contains("language-flowchart") ||
4495
- e.classList.contains("language-echarts") || e.classList.contains("language-mindmap") ||
4496
- e.classList.contains("language-plantuml") || e.classList.contains("language-markmap") ||
4497
- e.classList.contains("language-abc") || e.classList.contains("language-graphviz") ||
4498
- e.classList.contains("language-math") || e.classList.contains("language-smiles")) {
4519
+ if (e.classList.contains("language-mermaid") ||
4520
+ e.classList.contains("language-flowchart") ||
4521
+ e.classList.contains("language-echarts") ||
4522
+ e.classList.contains("language-mindmap") ||
4523
+ e.classList.contains("language-plantuml") ||
4524
+ e.classList.contains("language-markmap") ||
4525
+ e.classList.contains("language-abc") ||
4526
+ e.classList.contains("language-graphviz") ||
4527
+ e.classList.contains("language-math") ||
4528
+ e.classList.contains("language-smiles")) {
4499
4529
  return false;
4500
4530
  }
4501
4531
  if (e.style.maxHeight.indexOf("px") > -1) {
@@ -4506,12 +4536,15 @@ var codeRender = function (element, option) {
4506
4536
  return false;
4507
4537
  }
4508
4538
  return true;
4509
- }).forEach(function (e) {
4510
- var _a, _b, _c;
4539
+ })
4540
+ .forEach(function (e) {
4541
+ var _a, _b, _c, _d;
4511
4542
  var codeText = e.innerText;
4512
4543
  if (e.classList.contains("highlight-chroma")) {
4513
4544
  var codeElement = e.cloneNode(true);
4514
- codeElement.querySelectorAll(".highlight-ln").forEach(function (item) {
4545
+ codeElement
4546
+ .querySelectorAll(".highlight-ln")
4547
+ .forEach(function (item) {
4515
4548
  item.remove();
4516
4549
  });
4517
4550
  codeText = codeElement.innerText;
@@ -4521,19 +4554,61 @@ var codeRender = function (element, option) {
4521
4554
  }
4522
4555
  var iconHTML = '<svg><use xlink:href="#vditor-icon-copy"></use></svg>';
4523
4556
  if (!document.getElementById("vditorIconScript")) {
4524
- 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>';
4557
+ iconHTML =
4558
+ '<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>';
4525
4559
  }
4560
+ var playIconHTML = document.getElementById("vditorIconScript")
4561
+ ? '<svg><use xlink:href="#vditor-icon-run"></use></svg>'
4562
+ : '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-play-icon lucide-circle-play"><path d="M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z"/><circle cx="12" cy="12" r="10"/></svg>';
4526
4563
  var divElement = document.createElement("div");
4527
4564
  divElement.className = "vditor-copy";
4528
- 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>");
4529
4565
  var textarea = document.createElement("textarea");
4530
4566
  textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText);
4531
- divElement.insertAdjacentElement("afterbegin", textarea);
4567
+ divElement.appendChild(textarea);
4568
+ var langMatch = e.className.match(/language-([^\s]+)/);
4569
+ var lang = langMatch ? langMatch[1] : "";
4570
+ var allowRun = !!(runCode === null || runCode === void 0 ? void 0 : runCode.enable) &&
4571
+ (!runCode.items || (lang && runCode.items.includes(lang)));
4572
+ if (allowRun) {
4573
+ var runSpan = document.createElement("span");
4574
+ runSpan.setAttribute("aria-label", ((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.run) || "运行");
4575
+ runSpan.setAttribute("onmouseover", "this.setAttribute('aria-label', '".concat(((_b = window.VditorI18n) === null || _b === void 0 ? void 0 : _b.run) || "运行", "')"));
4576
+ runSpan.className =
4577
+ "vditor-copy__item vditor-tooltipped vditor-tooltipped__w";
4578
+ runSpan.innerHTML = playIconHTML;
4579
+ runSpan.addEventListener("click", function (evt) {
4580
+ var _a;
4581
+ evt.stopPropagation();
4582
+ (_a = runCode === null || runCode === void 0 ? void 0 : runCode.callback) === null || _a === void 0 ? void 0 : _a.call(runCode, {
4583
+ code: (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText),
4584
+ lang: lang,
4585
+ });
4586
+ });
4587
+ divElement.appendChild(runSpan);
4588
+ }
4589
+ var copySpan = document.createElement("span");
4590
+ copySpan.setAttribute("aria-label", ((_c = window.VditorI18n) === null || _c === void 0 ? void 0 : _c.copy) || "复制");
4591
+ copySpan.setAttribute("onmouseover", "this.setAttribute('aria-label', '".concat(((_d = window.VditorI18n) === null || _d === void 0 ? void 0 : _d.copy) || "复制", "')"));
4592
+ copySpan.className =
4593
+ "vditor-copy__item vditor-tooltipped vditor-tooltipped__w";
4594
+ copySpan.addEventListener("click", function (evt) {
4595
+ var _a;
4596
+ evt.stopPropagation();
4597
+ var ta = divElement.querySelector("textarea");
4598
+ if (ta) {
4599
+ ta.select();
4600
+ document.execCommand("copy");
4601
+ copySpan.setAttribute("aria-label", ((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.copied) || "已复制");
4602
+ ta.blur();
4603
+ }
4604
+ });
4605
+ copySpan.innerHTML = iconHTML;
4606
+ divElement.appendChild(copySpan);
4532
4607
  if (option && option.renderMenu) {
4533
4608
  option.renderMenu(e, divElement);
4534
4609
  }
4535
4610
  e.before(divElement);
4536
- e.style.maxHeight = (window.outerHeight - 40) + "px";
4611
+ e.style.maxHeight = 300 + "px";
4537
4612
  // https://github.com/Vanessa219/vditor/issues/1356
4538
4613
  e.insertAdjacentHTML("afterend", "<span style=\"position: absolute\">".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, "</span>"));
4539
4614
  });
@@ -12111,10 +12186,14 @@ var selectEvent = function (vditor, editorElement) {
12111
12186
  editorElement.onmouseup = handleSelection;
12112
12187
  });
12113
12188
  editorElement.addEventListener("keyup", function (event) {
12114
- if (event.shiftKey && (event.key.startsWith("Arrow") || event.key === "Home" || event.key === "End")) {
12189
+ if (event.shiftKey &&
12190
+ (event.key.startsWith("Arrow") ||
12191
+ event.key === "Home" ||
12192
+ event.key === "End")) {
12115
12193
  handleSelection();
12116
12194
  }
12117
- else if (!event.shiftKey && (event.key.startsWith("Arrow") || event.key === "Escape")) {
12195
+ else if (!event.shiftKey &&
12196
+ (event.key.startsWith("Arrow") || event.key === "Escape")) {
12118
12197
  // Cancel selection or move cursor without selection
12119
12198
  handleSelection();
12120
12199
  }
@@ -18257,7 +18336,8 @@ var WYSIWYG = /** @class */ (function () {
18257
18336
  this.selectPopover.addEventListener("mousedown", function (event) {
18258
18337
  var target = event.target;
18259
18338
  // 如果点击的是 textarea 或 button,允许默认行为
18260
- if (target.tagName === "TEXTAREA" || target.tagName === "BUTTON") {
18339
+ if (target.tagName === "TEXTAREA" ||
18340
+ target.tagName === "BUTTON") {
18261
18341
  return;
18262
18342
  }
18263
18343
  // 其他情况阻止默认行为,防止编辑器失去焦点