@8btc/mditor 0.0.13 → 0.0.15
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.
- package/dist/css/content-theme/dark.css +7 -2
- package/dist/index.css +67 -17
- package/dist/index.js +438 -124
- package/dist/index.min.js +1 -1
- package/dist/js/highlight.js/styles/a11y-dark.min.css +82 -2
- package/dist/js/highlight.js/styles/a11y-light.min.css +80 -2
- package/dist/js/highlight.js/styles/agate.min.css +101 -2
- package/dist/js/highlight.js/styles/an-old-hope.min.css +60 -2
- package/dist/js/highlight.js/styles/androidstudio.min.css +57 -1
- package/dist/js/highlight.js/styles/arduino-light.min.css +74 -1
- package/dist/js/highlight.js/styles/arta.min.css +63 -1
- package/dist/js/highlight.js/styles/ascetic.min.css +41 -1
- package/dist/js/highlight.js/styles/atom-one-dark-reasonable.min.css +95 -1
- package/dist/js/highlight.js/styles/atom-one-dark.min.css +72 -1
- package/dist/js/highlight.js/styles/atom-one-light.min.css +72 -1
- package/dist/js/highlight.js/styles/base16/3024.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/apathy.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/apprentice.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/ashes.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-cave-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-cave.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-dune-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-dune.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-estuary-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-estuary.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-forest-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-forest.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-heath-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-heath.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-lakeside-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-lakeside.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-plateau-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-plateau.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-savanna-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-savanna.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-seaside-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-seaside.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-sulphurpool-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atelier-sulphurpool.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/atlas.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/bespin.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-bathory.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-burzum.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-dark-funeral.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-gorgoroth.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-immortal.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-khold.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-marduk.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-mayhem.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-nile.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal-venom.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/black-metal.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/brewer.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/bright.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/brogrammer.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/brush-trees-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/brush-trees.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/chalk.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/circus.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/classic-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/classic-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/codeschool.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/colors.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/cupcake.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/cupertino.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/danqing.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/darcula.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/dark-violet.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/darkmoss.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/darktooth.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/decaf.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/default-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/default-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/dirtysea.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/dracula.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/edge-dark.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/edge-light.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/eighties.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/embers.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/equilibrium-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/equilibrium-gray-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/equilibrium-gray-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/equilibrium-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/espresso.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/eva-dim.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/eva.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/flat.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/framer.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/fruit-soda.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gigavolt.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/github.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/google-dark.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/google-light.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/grayscale-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/grayscale-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/green-screen.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-hard.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-medium.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-pale.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-soft.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gruvbox-light-hard.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gruvbox-light-medium.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/gruvbox-light-soft.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/hardcore.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/harmonic16-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/harmonic16-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/heetch-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/heetch-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/helios.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/hopscotch.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/horizon-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/horizon-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/humanoid-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/humanoid-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/ia-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/ia-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/icy-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/ir-black.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/isotope.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/kimber.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/london-tube.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/macintosh.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/marrakesh.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/materia.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/material-darker.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/material-lighter.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/material-palenight.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/material-vivid.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/material.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/mellow-purple.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/mexico-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/mocha.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/monokai.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/nebula.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/nord.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/nova.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/ocean.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/oceanicnext.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/one-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/onedark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/outrun-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/papercolor-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/papercolor-light.min.css +95 -1
- package/dist/js/highlight.js/styles/base16/paraiso.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/pasque.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/phd.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/pico.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/pop.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/porple.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/qualia.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/railscasts.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/rebecca.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/ros-pine-dawn.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/ros-pine-moon.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/ros-pine.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/sagelight.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/sandcastle.min.css +93 -1
- package/dist/js/highlight.js/styles/base16/seti-ui.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/shapeshifter.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/silk-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/silk-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/snazzy.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/solar-flare-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/solar-flare.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/solarized-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/solarized-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/spacemacs.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/summercamp.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/summerfruit-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/summerfruit-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/tango.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/tender.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/tomorrow-night.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/tomorrow.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/twilight.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/unikitty-dark.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/unikitty-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/vulcan.min.css +93 -1
- package/dist/js/highlight.js/styles/base16/windows-10-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/windows-10.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/windows-95-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/windows-95.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/windows-high-contrast-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/windows-high-contrast.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/windows-nt-light.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/windows-nt.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/woodland.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/xcode-dusk.min.css +97 -1
- package/dist/js/highlight.js/styles/base16/zenburn.min.css +97 -1
- package/dist/js/highlight.js/styles/brown-paper.min.css +54 -1
- package/dist/js/highlight.js/styles/codepen-embed.min.css +53 -1
- package/dist/js/highlight.js/styles/color-brewer.min.css +56 -1
- package/dist/js/highlight.js/styles/dark.min.css +54 -1
- package/dist/js/highlight.js/styles/default.min.css +79 -1
- package/dist/js/highlight.js/styles/devibeans.min.css +80 -2
- package/dist/js/highlight.js/styles/docco.min.css +81 -1
- package/dist/js/highlight.js/styles/far.min.css +59 -1
- package/dist/js/highlight.js/styles/felipec.min.css +89 -2
- package/dist/js/highlight.js/styles/foundation.min.css +74 -1
- package/dist/js/highlight.js/styles/github-dark-dimmed.min.css +87 -2
- package/dist/js/highlight.js/styles/github-dark.min.css +87 -2
- package/dist/js/highlight.js/styles/github.min.css +87 -2
- package/dist/js/highlight.js/styles/gml.min.css +68 -1
- package/dist/js/highlight.js/styles/googlecode.min.css +75 -1
- package/dist/js/highlight.js/styles/gradient-dark.min.css +92 -1
- package/dist/js/highlight.js/styles/gradient-light.min.css +94 -1
- package/dist/js/highlight.js/styles/grayscale.min.css +85 -1
- package/dist/js/highlight.js/styles/hybrid.min.css +75 -1
- package/dist/js/highlight.js/styles/idea.min.css +82 -1
- package/dist/js/highlight.js/styles/intellij-light.min.css +91 -1
- package/dist/js/highlight.js/styles/ir-black.min.css +64 -1
- package/dist/js/highlight.js/styles/isbl-editor-dark.min.css +84 -1
- package/dist/js/highlight.js/styles/isbl-editor-light.min.css +84 -1
- package/dist/js/highlight.js/styles/kimbie-dark.min.css +58 -1
- package/dist/js/highlight.js/styles/kimbie-light.min.css +58 -1
- package/dist/js/highlight.js/styles/lightfair.min.css +73 -1
- package/dist/js/highlight.js/styles/lioshi.min.css +65 -1
- package/dist/js/highlight.js/styles/magula.min.css +59 -1
- package/dist/js/highlight.js/styles/mono-blue.min.css +54 -1
- package/dist/js/highlight.js/styles/monokai-sublime.min.css +72 -1
- package/dist/js/highlight.js/styles/monokai.min.css +66 -1
- package/dist/js/highlight.js/styles/night-owl.min.css +136 -1
- package/dist/js/highlight.js/styles/nnfx-dark.min.css +96 -2
- package/dist/js/highlight.js/styles/nnfx-light.min.css +96 -2
- package/dist/js/highlight.js/styles/nord.min.css +205 -1
- package/dist/js/highlight.js/styles/obsidian.min.css +76 -1
- package/dist/js/highlight.js/styles/panda-syntax-dark.min.css +88 -1
- package/dist/js/highlight.js/styles/panda-syntax-light.min.css +85 -1
- package/dist/js/highlight.js/styles/paraiso-dark.min.css +57 -1
- package/dist/js/highlight.js/styles/paraiso-light.min.css +57 -1
- package/dist/js/highlight.js/styles/pojoaque.min.css +70 -1
- package/dist/js/highlight.js/styles/purebasic.min.css +66 -1
- package/dist/js/highlight.js/styles/qtcreator-dark.min.css +71 -1
- package/dist/js/highlight.js/styles/qtcreator-light.min.css +69 -1
- package/dist/js/highlight.js/styles/rainbow.min.css +73 -1
- package/dist/js/highlight.js/styles/routeros.min.css +77 -1
- package/dist/js/highlight.js/styles/school-book.min.css +57 -1
- package/dist/js/highlight.js/styles/shades-of-purple.min.css +76 -1
- package/dist/js/highlight.js/styles/srcery.min.css +70 -1
- package/dist/js/highlight.js/styles/stackoverflow-dark.min.css +79 -2
- package/dist/js/highlight.js/styles/stackoverflow-light.min.css +79 -2
- package/dist/js/highlight.js/styles/sunburst.min.css +85 -1
- package/dist/js/highlight.js/styles/tokyo-night-dark.min.css +83 -2
- package/dist/js/highlight.js/styles/tokyo-night-light.min.css +83 -2
- package/dist/js/highlight.js/styles/tomorrow-night-blue.min.css +59 -1
- package/dist/js/highlight.js/styles/tomorrow-night-bright.min.css +59 -1
- package/dist/js/highlight.js/styles/vs.min.css +59 -1
- package/dist/js/highlight.js/styles/vs2015.min.css +94 -1
- package/dist/js/highlight.js/styles/xcode.min.css +85 -1
- package/dist/js/highlight.js/styles/xt256.min.css +74 -1
- package/dist/js/icons/material.js +8 -4
- package/dist/method.d.ts +4 -1
- package/dist/method.js +430 -121
- package/dist/method.min.js +1 -1
- package/dist/ts/markdown/codeRender.d.ts +9 -1
- package/dist/ts/util/attachLineNumbers.d.ts +6 -5
- package/dist/types/index.d.ts +8 -1
- package/package.json +2 -2
- package/src/assets/less/_line-number.less +24 -13
- package/src/assets/less/_reset.less +13 -7
- package/src/ts/markdown/codeRender.ts +152 -58
- package/src/ts/markdown/previewRender.ts +69 -25
- package/src/ts/util/attachLineNumbers.ts +382 -98
- package/src/ts/util/editorCommonEvent.ts +15 -8
- package/src/ts/wysiwyg/index.ts +6 -3
package/dist/method.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vditor v0.0.
|
|
2
|
+
* Vditor v0.0.15 - A markdown editor written in TypeScript.
|
|
3
3
|
*
|
|
4
4
|
* MIT License
|
|
5
5
|
*
|
|
@@ -45,7 +45,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
45
45
|
/* harmony export */ "g": () => (/* binding */ Constants)
|
|
46
46
|
/* harmony export */ });
|
|
47
47
|
/* unused harmony export VDITOR_VERSION */
|
|
48
|
-
var _VDITOR_VERSION = (/* unused pure expression or super */ null && ("0.0.
|
|
48
|
+
var _VDITOR_VERSION = (/* unused pure expression or super */ null && ("0.0.15"));
|
|
49
49
|
|
|
50
50
|
var Constants = /** @class */ (function () {
|
|
51
51
|
function Constants() {
|
|
@@ -347,7 +347,7 @@ var Constants = /** @class */ (function () {
|
|
|
347
347
|
"c#",
|
|
348
348
|
"bat",
|
|
349
349
|
];
|
|
350
|
-
Constants.CDN = "https://webcdn.wujieai.com/vditor@".concat("0.0.
|
|
350
|
+
Constants.CDN = "https://webcdn.wujieai.com/vditor@".concat("0.0.15");
|
|
351
351
|
Constants.MARKDOWN_OPTIONS = {
|
|
352
352
|
autoSpace: false,
|
|
353
353
|
gfmAutoLink: true,
|
|
@@ -1700,17 +1700,28 @@ var attachEchartsContextMenu = function (el, option, chart, cdn) {
|
|
|
1700
1700
|
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145);
|
|
1701
1701
|
|
|
1702
1702
|
|
|
1703
|
-
|
|
1704
|
-
|
|
1703
|
+
/**
|
|
1704
|
+
* 为预览区域中的代码块添加辅助操作:
|
|
1705
|
+
* - 复制按钮:一键复制代码文本
|
|
1706
|
+
* - 运行按钮:当启用 runHtml 时,向外部回调当前代码块的 HTML 字符串
|
|
1707
|
+
*/
|
|
1708
|
+
var codeRender = function (element, option, runHtml) {
|
|
1709
|
+
Array.from(element.querySelectorAll("pre > code"))
|
|
1710
|
+
.filter(function (e, index) {
|
|
1705
1711
|
if (e.parentElement.classList.contains("vditor-wysiwyg__pre") ||
|
|
1706
1712
|
e.parentElement.classList.contains("vditor-ir__marker--pre")) {
|
|
1707
1713
|
return false;
|
|
1708
1714
|
}
|
|
1709
|
-
if (e.classList.contains("language-mermaid") ||
|
|
1710
|
-
e.classList.contains("language-
|
|
1711
|
-
e.classList.contains("language-
|
|
1712
|
-
e.classList.contains("language-
|
|
1713
|
-
e.classList.contains("language-
|
|
1715
|
+
if (e.classList.contains("language-mermaid") ||
|
|
1716
|
+
e.classList.contains("language-flowchart") ||
|
|
1717
|
+
e.classList.contains("language-echarts") ||
|
|
1718
|
+
e.classList.contains("language-mindmap") ||
|
|
1719
|
+
e.classList.contains("language-plantuml") ||
|
|
1720
|
+
e.classList.contains("language-markmap") ||
|
|
1721
|
+
e.classList.contains("language-abc") ||
|
|
1722
|
+
e.classList.contains("language-graphviz") ||
|
|
1723
|
+
e.classList.contains("language-math") ||
|
|
1724
|
+
e.classList.contains("language-smiles")) {
|
|
1714
1725
|
return false;
|
|
1715
1726
|
}
|
|
1716
1727
|
if (e.style.maxHeight.indexOf("px") > -1) {
|
|
@@ -1721,12 +1732,15 @@ var codeRender = function (element, option) {
|
|
|
1721
1732
|
return false;
|
|
1722
1733
|
}
|
|
1723
1734
|
return true;
|
|
1724
|
-
})
|
|
1725
|
-
|
|
1735
|
+
})
|
|
1736
|
+
.forEach(function (e) {
|
|
1737
|
+
var _a, _b, _c, _d;
|
|
1726
1738
|
var codeText = e.innerText;
|
|
1727
1739
|
if (e.classList.contains("highlight-chroma")) {
|
|
1728
1740
|
var codeElement = e.cloneNode(true);
|
|
1729
|
-
codeElement
|
|
1741
|
+
codeElement
|
|
1742
|
+
.querySelectorAll(".highlight-ln")
|
|
1743
|
+
.forEach(function (item) {
|
|
1730
1744
|
item.remove();
|
|
1731
1745
|
});
|
|
1732
1746
|
codeText = codeElement.innerText;
|
|
@@ -1736,19 +1750,55 @@ var codeRender = function (element, option) {
|
|
|
1736
1750
|
}
|
|
1737
1751
|
var iconHTML = '<svg><use xlink:href="#vditor-icon-copy"></use></svg>';
|
|
1738
1752
|
if (!document.getElementById("vditorIconScript")) {
|
|
1739
|
-
iconHTML =
|
|
1753
|
+
iconHTML =
|
|
1754
|
+
'<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
1755
|
}
|
|
1756
|
+
var playIconHTML = document.getElementById("vditorIconScript")
|
|
1757
|
+
? '<svg><use xlink:href="#vditor-icon-play"></use></svg>'
|
|
1758
|
+
: '<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>';
|
|
1741
1759
|
var divElement = document.createElement("div");
|
|
1742
1760
|
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
1761
|
var textarea = document.createElement("textarea");
|
|
1745
1762
|
textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText);
|
|
1746
|
-
divElement.
|
|
1763
|
+
divElement.appendChild(textarea);
|
|
1764
|
+
if (runHtml === null || runHtml === void 0 ? void 0 : runHtml.enable) {
|
|
1765
|
+
var runSpan = document.createElement("span");
|
|
1766
|
+
runSpan.setAttribute("aria-label", ((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.run) || "运行");
|
|
1767
|
+
runSpan.setAttribute("onmouseover", "this.setAttribute('aria-label', '".concat(((_b = window.VditorI18n) === null || _b === void 0 ? void 0 : _b.run) || "运行", "')"));
|
|
1768
|
+
runSpan.className =
|
|
1769
|
+
"vditor-copy__item vditor-tooltipped vditor-tooltipped__w";
|
|
1770
|
+
runSpan.innerHTML = playIconHTML;
|
|
1771
|
+
runSpan.addEventListener("click", function (evt) {
|
|
1772
|
+
evt.stopPropagation();
|
|
1773
|
+
if (typeof runHtml.callback === "function") {
|
|
1774
|
+
runHtml.callback((0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText));
|
|
1775
|
+
}
|
|
1776
|
+
});
|
|
1777
|
+
divElement.appendChild(runSpan);
|
|
1778
|
+
}
|
|
1779
|
+
var copySpan = document.createElement("span");
|
|
1780
|
+
copySpan.setAttribute("aria-label", ((_c = window.VditorI18n) === null || _c === void 0 ? void 0 : _c.copy) || "复制");
|
|
1781
|
+
copySpan.setAttribute("onmouseover", "this.setAttribute('aria-label', '".concat(((_d = window.VditorI18n) === null || _d === void 0 ? void 0 : _d.copy) || "复制", "')"));
|
|
1782
|
+
copySpan.className =
|
|
1783
|
+
"vditor-copy__item vditor-tooltipped vditor-tooltipped__w";
|
|
1784
|
+
copySpan.addEventListener("click", function (evt) {
|
|
1785
|
+
var _a;
|
|
1786
|
+
evt.stopPropagation();
|
|
1787
|
+
var ta = divElement.querySelector("textarea");
|
|
1788
|
+
if (ta) {
|
|
1789
|
+
ta.select();
|
|
1790
|
+
document.execCommand("copy");
|
|
1791
|
+
copySpan.setAttribute("aria-label", ((_a = window.VditorI18n) === null || _a === void 0 ? void 0 : _a.copied) || "已复制");
|
|
1792
|
+
ta.blur();
|
|
1793
|
+
}
|
|
1794
|
+
});
|
|
1795
|
+
copySpan.innerHTML = iconHTML;
|
|
1796
|
+
divElement.appendChild(copySpan);
|
|
1747
1797
|
if (option && option.renderMenu) {
|
|
1748
1798
|
option.renderMenu(e, divElement);
|
|
1749
1799
|
}
|
|
1750
1800
|
e.before(divElement);
|
|
1751
|
-
e.style.maxHeight =
|
|
1801
|
+
e.style.maxHeight = 300 + "px";
|
|
1752
1802
|
// https://github.com/Vanessa219/vditor/issues/1356
|
|
1753
1803
|
e.insertAdjacentHTML("afterend", "<span style=\"position: absolute\">".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, "</span>"));
|
|
1754
1804
|
});
|
|
@@ -3438,16 +3488,28 @@ var addStyle = function (url, id) {
|
|
|
3438
3488
|
/* harmony export */ "g": () => (/* binding */ attachLineNumbersToBlocksThrottled)
|
|
3439
3489
|
/* harmony export */ });
|
|
3440
3490
|
/**
|
|
3441
|
-
*
|
|
3442
|
-
* -
|
|
3443
|
-
* -
|
|
3444
|
-
*
|
|
3445
|
-
*
|
|
3491
|
+
* 功能:为编辑区域批量添加行号与列表/表格标记(O(n))
|
|
3492
|
+
* - 块级:为所有 `data-block` 写入 `data-linenumber`
|
|
3493
|
+
* - 列表:为 `ul/ol > li` 写入 `data-linenumber`、`data-list-level`、`data-list-number`
|
|
3494
|
+
* - 表格:为 `table` 的 `tr` 写入 `data-linenumber`(不为 `th` 设置)
|
|
3495
|
+
* - 性能:一次解析 Markdown 建索引,批量收集并一次性更新属性,缓存避免重复计算
|
|
3496
|
+
* - 精度:支持嵌套列表、换行列表项、多级序号;表格跨页连续行号,容忍合并单元格
|
|
3446
3497
|
*/
|
|
3447
3498
|
var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
3499
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
3448
3500
|
if (!root || !sourceMarkdown) {
|
|
3449
3501
|
return;
|
|
3450
3502
|
}
|
|
3503
|
+
var t0 = performance.now();
|
|
3504
|
+
var computeHash = function (s) {
|
|
3505
|
+
var h = 0;
|
|
3506
|
+
for (var i = 0; i < s.length; i++) {
|
|
3507
|
+
h = (h * 31 + s.charCodeAt(i)) | 0;
|
|
3508
|
+
}
|
|
3509
|
+
return "".concat(s.length, ":").concat(h);
|
|
3510
|
+
};
|
|
3511
|
+
var GLOBAL_CACHE = globalThis.__VDITOR_LINE_CACHE__ || new Map();
|
|
3512
|
+
globalThis.__VDITOR_LINE_CACHE__ = GLOBAL_CACHE;
|
|
3451
3513
|
var ZWSP = "\u200b";
|
|
3452
3514
|
var normalize = function (text) {
|
|
3453
3515
|
return text
|
|
@@ -3458,7 +3520,10 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3458
3520
|
.replace(/[\t\f\v ]+/g, " ");
|
|
3459
3521
|
};
|
|
3460
3522
|
var srcNorm = normalize(sourceMarkdown);
|
|
3461
|
-
var
|
|
3523
|
+
var tNorm = performance.now();
|
|
3524
|
+
var hash = computeHash(srcNorm);
|
|
3525
|
+
var cached = GLOBAL_CACHE.get(hash);
|
|
3526
|
+
var srcLines = (_a = cached === null || cached === void 0 ? void 0 : cached.srcLines) !== null && _a !== void 0 ? _a : srcNorm.split("\n");
|
|
3462
3527
|
var stripInlineMD = function (text) {
|
|
3463
3528
|
return (text
|
|
3464
3529
|
.replace(/\\([*_`~])/g, "$1")
|
|
@@ -3487,15 +3552,17 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3487
3552
|
.replace(/[{}]/g, "")
|
|
3488
3553
|
.trim());
|
|
3489
3554
|
};
|
|
3490
|
-
var strippedLines = srcLines.map(function (l) { return stripInlineMD(l); });
|
|
3491
|
-
var lineLookup = new Map();
|
|
3492
|
-
|
|
3493
|
-
var
|
|
3494
|
-
|
|
3495
|
-
lineLookup.
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3555
|
+
var strippedLines = (_b = cached === null || cached === void 0 ? void 0 : cached.strippedLines) !== null && _b !== void 0 ? _b : srcLines.map(function (l) { return stripInlineMD(l); });
|
|
3556
|
+
var lineLookup = (_c = cached === null || cached === void 0 ? void 0 : cached.lineLookup) !== null && _c !== void 0 ? _c : new Map();
|
|
3557
|
+
if (!cached) {
|
|
3558
|
+
for (var i = 0; i < strippedLines.length; i++) {
|
|
3559
|
+
var key = strippedLines[i];
|
|
3560
|
+
if (!lineLookup.has(key)) {
|
|
3561
|
+
lineLookup.set(key, [i + 1]);
|
|
3562
|
+
}
|
|
3563
|
+
else {
|
|
3564
|
+
lineLookup.get(key).push(i + 1);
|
|
3565
|
+
}
|
|
3499
3566
|
}
|
|
3500
3567
|
}
|
|
3501
3568
|
var usedLines = new Set();
|
|
@@ -3527,20 +3594,25 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3527
3594
|
* 预处理:收集 Markdown 中所有无序列表(ul)行及其去除行内标记后的内容,构建快速查找结构。
|
|
3528
3595
|
* 仅匹配以 `*`、`-`、`+` 开头的条目,支持任务列表如 `- [ ]`、`* [x]`。
|
|
3529
3596
|
*/
|
|
3530
|
-
var unorderedListEntries = [];
|
|
3531
|
-
var unorderedLookup = new Map();
|
|
3597
|
+
var unorderedListEntries = (_d = cached === null || cached === void 0 ? void 0 : cached.unorderedListEntries) !== null && _d !== void 0 ? _d : [];
|
|
3598
|
+
var unorderedLookup = (_e = cached === null || cached === void 0 ? void 0 : cached.unorderedLookup) !== null && _e !== void 0 ? _e : new Map();
|
|
3532
3599
|
var usedUnorderedLines = new Set();
|
|
3533
|
-
|
|
3534
|
-
var
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
unorderedLookup.
|
|
3600
|
+
if (!cached) {
|
|
3601
|
+
for (var i = 0; i < srcLines.length; i++) {
|
|
3602
|
+
var raw = srcLines[i];
|
|
3603
|
+
var m = raw.match(/^\s*[*+-]\s+(?:\[(?: |x|X)\]\s+)?(.*)$/);
|
|
3604
|
+
if (m && typeof m[1] === "string") {
|
|
3605
|
+
var contentStripped = stripInlineForList(m[1]);
|
|
3606
|
+
unorderedListEntries.push({
|
|
3607
|
+
ln: i + 1,
|
|
3608
|
+
content: contentStripped,
|
|
3609
|
+
});
|
|
3610
|
+
if (!unorderedLookup.has(contentStripped)) {
|
|
3611
|
+
unorderedLookup.set(contentStripped, [i + 1]);
|
|
3612
|
+
}
|
|
3613
|
+
else {
|
|
3614
|
+
unorderedLookup.get(contentStripped).push(i + 1);
|
|
3615
|
+
}
|
|
3544
3616
|
}
|
|
3545
3617
|
}
|
|
3546
3618
|
}
|
|
@@ -3581,44 +3653,48 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3581
3653
|
/**
|
|
3582
3654
|
* 预处理:收集 Markdown 中所有有序列表(ol)行及其内容,支持 `1.` 或 `1)` 以及任务列表前缀。
|
|
3583
3655
|
*/
|
|
3584
|
-
var orderedListEntries = [];
|
|
3585
|
-
var orderedLookup = new Map();
|
|
3656
|
+
var orderedListEntries = (_f = cached === null || cached === void 0 ? void 0 : cached.orderedListEntries) !== null && _f !== void 0 ? _f : [];
|
|
3657
|
+
var orderedLookup = (_g = cached === null || cached === void 0 ? void 0 : cached.orderedLookup) !== null && _g !== void 0 ? _g : new Map();
|
|
3586
3658
|
var usedOrderedLines = new Set();
|
|
3587
3659
|
var ORDERED_RE = /\s*\d+(?:[.)、.。]|[\uFF0E\uFF09\u3001])\s+(?:\[(?: |x|X)\]\s+)?(.*)/;
|
|
3588
3660
|
var ORDERED_FULL = new RegExp("^".concat(ORDERED_RE.source, "$"));
|
|
3589
|
-
|
|
3590
|
-
var
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
orderedLookup.
|
|
3661
|
+
if (!cached) {
|
|
3662
|
+
for (var i = 0; i < srcLines.length; i++) {
|
|
3663
|
+
var raw = srcLines[i];
|
|
3664
|
+
var m = raw.match(ORDERED_FULL);
|
|
3665
|
+
if (m && typeof m[1] === "string") {
|
|
3666
|
+
var contentStripped = stripInlineForList(m[1]);
|
|
3667
|
+
orderedListEntries.push({
|
|
3668
|
+
ln: i + 1,
|
|
3669
|
+
content: contentStripped,
|
|
3670
|
+
});
|
|
3671
|
+
if (!orderedLookup.has(contentStripped)) {
|
|
3672
|
+
orderedLookup.set(contentStripped, [i + 1]);
|
|
3673
|
+
}
|
|
3674
|
+
else {
|
|
3675
|
+
orderedLookup.get(contentStripped).push(i + 1);
|
|
3676
|
+
}
|
|
3600
3677
|
}
|
|
3601
3678
|
}
|
|
3602
3679
|
}
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3680
|
+
var orderedGroups = (_h = cached === null || cached === void 0 ? void 0 : cached.orderedGroups) !== null && _h !== void 0 ? _h : [];
|
|
3681
|
+
if (!cached) {
|
|
3682
|
+
for (var i = 0; i < srcLines.length;) {
|
|
3683
|
+
var raw = srcLines[i];
|
|
3684
|
+
if (ORDERED_FULL.test(raw)) {
|
|
3685
|
+
var group = [];
|
|
3686
|
+
while (i < srcLines.length && ORDERED_FULL.test(srcLines[i])) {
|
|
3687
|
+
group.push(i + 1);
|
|
3688
|
+
i++;
|
|
3689
|
+
}
|
|
3690
|
+
if (group.length > 0) {
|
|
3691
|
+
orderedGroups.push(group);
|
|
3692
|
+
}
|
|
3614
3693
|
}
|
|
3615
|
-
|
|
3616
|
-
|
|
3694
|
+
else {
|
|
3695
|
+
i++;
|
|
3617
3696
|
}
|
|
3618
3697
|
}
|
|
3619
|
-
else {
|
|
3620
|
-
i++;
|
|
3621
|
-
}
|
|
3622
3698
|
}
|
|
3623
3699
|
/**
|
|
3624
3700
|
* 为给定文本在有序列表候选中选择行号,精确匹配优先,包含匹配回退。
|
|
@@ -3670,6 +3746,7 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3670
3746
|
});
|
|
3671
3747
|
return buf;
|
|
3672
3748
|
};
|
|
3749
|
+
var attrUpdates = [];
|
|
3673
3750
|
var blocks = root.querySelectorAll("[data-block]");
|
|
3674
3751
|
blocks.forEach(function (el) {
|
|
3675
3752
|
try {
|
|
@@ -3678,22 +3755,26 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3678
3755
|
if (dataType === "math-block" || dataType === "code-block") {
|
|
3679
3756
|
return;
|
|
3680
3757
|
}
|
|
3681
|
-
// 仅 li 需要行号:跳过并清理 ul/ol 自身及其内部嵌套的 p/div 等块
|
|
3682
3758
|
var tagName = container.tagName;
|
|
3683
3759
|
if (tagName === "UL" || tagName === "OL") {
|
|
3684
|
-
container.
|
|
3760
|
+
if (container.getAttribute("data-linenumber")) {
|
|
3761
|
+
attrUpdates.push([container, "data-linenumber", ""]);
|
|
3762
|
+
}
|
|
3685
3763
|
return;
|
|
3686
3764
|
}
|
|
3687
3765
|
var liAncestor = container.closest("li");
|
|
3688
3766
|
if (liAncestor) {
|
|
3689
|
-
container.
|
|
3767
|
+
if (container.getAttribute("data-linenumber")) {
|
|
3768
|
+
attrUpdates.push([container, "data-linenumber", ""]);
|
|
3769
|
+
}
|
|
3690
3770
|
return;
|
|
3691
3771
|
}
|
|
3692
3772
|
var text = container.textContent || "";
|
|
3693
3773
|
var normText = normalize(text);
|
|
3694
|
-
// 跳过纯空白块
|
|
3695
3774
|
if (!normText.trim()) {
|
|
3696
|
-
container.
|
|
3775
|
+
if (container.getAttribute("data-linenumber")) {
|
|
3776
|
+
attrUpdates.push([container, "data-linenumber", ""]);
|
|
3777
|
+
}
|
|
3697
3778
|
return;
|
|
3698
3779
|
}
|
|
3699
3780
|
var lineNumber = -1;
|
|
@@ -3720,13 +3801,18 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3720
3801
|
}
|
|
3721
3802
|
if (lineNumber !== -1) {
|
|
3722
3803
|
usedLines.add(lineNumber);
|
|
3723
|
-
container.
|
|
3804
|
+
var cur = container.getAttribute("data-linenumber");
|
|
3805
|
+
var val = String(lineNumber);
|
|
3806
|
+
if (cur !== val) {
|
|
3807
|
+
attrUpdates.push([container, "data-linenumber", val]);
|
|
3808
|
+
}
|
|
3724
3809
|
}
|
|
3725
3810
|
}
|
|
3726
3811
|
catch (_a) {
|
|
3727
3812
|
void 0;
|
|
3728
3813
|
}
|
|
3729
3814
|
});
|
|
3815
|
+
var tBlockDone = performance.now();
|
|
3730
3816
|
/**
|
|
3731
3817
|
* 为所有 `ul` 下的每个直接 `li` 子元素追加 `data-linenumber`,不修改 `ul` 本身。
|
|
3732
3818
|
* 支持多层嵌套与非文本起始节点(如加粗/行内代码)。
|
|
@@ -3735,60 +3821,93 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3735
3821
|
ulElements.forEach(function (ul) {
|
|
3736
3822
|
try {
|
|
3737
3823
|
var children = Array.from(ul.children);
|
|
3738
|
-
|
|
3739
|
-
var child = children_1[_i];
|
|
3824
|
+
var _loop_1 = function (child) {
|
|
3740
3825
|
if (child.tagName !== "LI")
|
|
3741
|
-
continue;
|
|
3826
|
+
return "continue";
|
|
3742
3827
|
var li = child;
|
|
3743
3828
|
var rawText = getImmediateLiText(li);
|
|
3744
3829
|
var norm = normalize(rawText);
|
|
3745
3830
|
var firstLine = norm.split("\n").find(function (l) { return l.trim().length > 0; }) || norm;
|
|
3746
3831
|
var ln = findUnorderedListLineNumber(firstLine);
|
|
3832
|
+
var level = (function () {
|
|
3833
|
+
var depth = 0;
|
|
3834
|
+
var p = li;
|
|
3835
|
+
while (p) {
|
|
3836
|
+
p = p.parentElement;
|
|
3837
|
+
if (!p)
|
|
3838
|
+
break;
|
|
3839
|
+
var tag = p.tagName;
|
|
3840
|
+
if (tag === "UL" || tag === "OL")
|
|
3841
|
+
depth++;
|
|
3842
|
+
}
|
|
3843
|
+
return depth;
|
|
3844
|
+
})();
|
|
3845
|
+
var levelStr = String(level);
|
|
3846
|
+
var curLevel = li.getAttribute("data-list-level");
|
|
3847
|
+
if (curLevel !== levelStr) {
|
|
3848
|
+
attrUpdates.push([li, "data-list-level", levelStr]);
|
|
3849
|
+
}
|
|
3747
3850
|
if (ln !== -1) {
|
|
3748
3851
|
usedUnorderedLines.add(ln);
|
|
3749
|
-
li.
|
|
3852
|
+
var curLn = li.getAttribute("data-linenumber");
|
|
3853
|
+
var val = String(ln);
|
|
3854
|
+
if (curLn !== val) {
|
|
3855
|
+
attrUpdates.push([li, "data-linenumber", val]);
|
|
3856
|
+
}
|
|
3750
3857
|
}
|
|
3751
3858
|
else {
|
|
3752
|
-
li.
|
|
3859
|
+
if (li.getAttribute("data-linenumber")) {
|
|
3860
|
+
attrUpdates.push([li, "data-linenumber", ""]);
|
|
3861
|
+
}
|
|
3753
3862
|
}
|
|
3863
|
+
};
|
|
3864
|
+
for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
|
|
3865
|
+
var child = children_1[_i];
|
|
3866
|
+
_loop_1(child);
|
|
3754
3867
|
}
|
|
3755
3868
|
}
|
|
3756
3869
|
catch (_a) {
|
|
3757
3870
|
void 0;
|
|
3758
3871
|
}
|
|
3759
3872
|
});
|
|
3873
|
+
var tUlDone = performance.now();
|
|
3760
3874
|
/**
|
|
3761
3875
|
* 为所有 `ol` 下的每个直接 `li` 子元素追加 `data-linenumber`,不修改 `ol` 本身。
|
|
3762
3876
|
*/
|
|
3763
3877
|
var olElements = root.querySelectorAll("ol");
|
|
3878
|
+
var orderedIndexMap = new WeakMap();
|
|
3764
3879
|
olElements.forEach(function (ol) {
|
|
3765
3880
|
try {
|
|
3766
3881
|
var currentGroupIdx = -1;
|
|
3767
3882
|
var lastAssigned_1 = -1;
|
|
3883
|
+
var startAttr = Number(ol.getAttribute("start"));
|
|
3884
|
+
var start = Number.isFinite(startAttr) && startAttr > 0 ? startAttr : 1;
|
|
3768
3885
|
var children = Array.from(ol.children);
|
|
3886
|
+
var seq = start;
|
|
3769
3887
|
for (var _i = 0, children_2 = children; _i < children_2.length; _i++) {
|
|
3770
3888
|
var child = children_2[_i];
|
|
3771
3889
|
if (child.tagName !== "LI")
|
|
3772
3890
|
continue;
|
|
3891
|
+
orderedIndexMap.set(child, seq++);
|
|
3892
|
+
}
|
|
3893
|
+
var _loop_2 = function (child) {
|
|
3894
|
+
if (child.tagName !== "LI")
|
|
3895
|
+
return "continue";
|
|
3773
3896
|
var li = child;
|
|
3774
3897
|
var rawText = getImmediateLiText(li);
|
|
3775
3898
|
var norm = normalize(rawText);
|
|
3776
3899
|
var firstLine = norm.split("\n").find(function (l) { return l.trim().length > 0; }) || norm;
|
|
3777
3900
|
var stripped0 = stripInlineForList(firstLine);
|
|
3778
3901
|
var stripped = stripped0 || stripInlineMD(firstLine);
|
|
3779
|
-
|
|
3780
|
-
var available = candidates.filter(function (n) { return !usedOrderedLines.has(n); });
|
|
3902
|
+
orderedLookup.get(stripped);
|
|
3781
3903
|
var ln = findOrderedListLineNumber(firstLine);
|
|
3782
3904
|
if (ln !== -1) {
|
|
3783
3905
|
usedOrderedLines.add(ln);
|
|
3784
|
-
li.
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
line: ln,
|
|
3790
|
-
});
|
|
3791
|
-
// 记录当前组
|
|
3906
|
+
var cur = li.getAttribute("data-linenumber");
|
|
3907
|
+
var val = String(ln);
|
|
3908
|
+
if (cur !== val) {
|
|
3909
|
+
attrUpdates.push([li, "data-linenumber", val]);
|
|
3910
|
+
}
|
|
3792
3911
|
for (var gi = 0; gi < orderedGroups.length; gi++) {
|
|
3793
3912
|
if (orderedGroups[gi].includes(ln)) {
|
|
3794
3913
|
currentGroupIdx = gi;
|
|
@@ -3798,13 +3917,11 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3798
3917
|
lastAssigned_1 = ln;
|
|
3799
3918
|
}
|
|
3800
3919
|
else {
|
|
3801
|
-
// 顺序回退:基于当前组或猜测组,按序分配下一未使用行
|
|
3802
3920
|
var assigned = -1;
|
|
3803
3921
|
var pickNextFromGroup = function (gi) {
|
|
3804
3922
|
if (gi < 0 || gi >= orderedGroups.length)
|
|
3805
3923
|
return -1;
|
|
3806
3924
|
var lines = orderedGroups[gi];
|
|
3807
|
-
// 优先从上次分配后续查找
|
|
3808
3925
|
var startIdx = 0;
|
|
3809
3926
|
if (lastAssigned_1 !== -1) {
|
|
3810
3927
|
var idx = lines.indexOf(lastAssigned_1);
|
|
@@ -3826,7 +3943,6 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3826
3943
|
assigned = pickNextFromGroup(currentGroupIdx);
|
|
3827
3944
|
}
|
|
3828
3945
|
if (assigned === -1) {
|
|
3829
|
-
// 猜测组:选择拥有可用行的首个组
|
|
3830
3946
|
for (var gi = 0; gi < orderedGroups.length && assigned === -1; gi++) {
|
|
3831
3947
|
var cand = pickNextFromGroup(gi);
|
|
3832
3948
|
if (cand !== -1) {
|
|
@@ -3837,39 +3953,229 @@ var attachLineNumbersToBlocks = function (root, sourceMarkdown) {
|
|
|
3837
3953
|
}
|
|
3838
3954
|
if (assigned !== -1) {
|
|
3839
3955
|
usedOrderedLines.add(assigned);
|
|
3840
|
-
li.
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
group: currentGroupIdx,
|
|
3846
|
-
});
|
|
3956
|
+
var cur = li.getAttribute("data-linenumber");
|
|
3957
|
+
var val = String(assigned);
|
|
3958
|
+
if (cur !== val) {
|
|
3959
|
+
attrUpdates.push([li, "data-linenumber", val]);
|
|
3960
|
+
}
|
|
3847
3961
|
lastAssigned_1 = assigned;
|
|
3848
3962
|
}
|
|
3849
3963
|
else {
|
|
3850
|
-
li.
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3964
|
+
if (li.getAttribute("data-linenumber")) {
|
|
3965
|
+
attrUpdates.push([li, "data-linenumber", ""]);
|
|
3966
|
+
}
|
|
3967
|
+
}
|
|
3968
|
+
}
|
|
3969
|
+
var level = (function () {
|
|
3970
|
+
var depth = 0;
|
|
3971
|
+
var p = li;
|
|
3972
|
+
while (p) {
|
|
3973
|
+
p = p.parentElement;
|
|
3974
|
+
if (!p)
|
|
3975
|
+
break;
|
|
3976
|
+
var tag = p.tagName;
|
|
3977
|
+
if (tag === "UL" || tag === "OL")
|
|
3978
|
+
depth++;
|
|
3865
3979
|
}
|
|
3980
|
+
return depth;
|
|
3981
|
+
})();
|
|
3982
|
+
var levelStr = String(level);
|
|
3983
|
+
var curLevel = li.getAttribute("data-list-level");
|
|
3984
|
+
if (curLevel !== levelStr) {
|
|
3985
|
+
attrUpdates.push([li, "data-list-level", levelStr]);
|
|
3986
|
+
}
|
|
3987
|
+
var numbering = (function () {
|
|
3988
|
+
var _a;
|
|
3989
|
+
var parts = [];
|
|
3990
|
+
var node = li;
|
|
3991
|
+
while (node) {
|
|
3992
|
+
var parentOl = node.closest("ol");
|
|
3993
|
+
if (!parentOl)
|
|
3994
|
+
break;
|
|
3995
|
+
var parentLi = ((_a = parentOl.parentElement) === null || _a === void 0 ? void 0 : _a.closest("li")) ||
|
|
3996
|
+
parentOl.parentElement;
|
|
3997
|
+
var idx = orderedIndexMap.get(node);
|
|
3998
|
+
if (typeof idx === "number") {
|
|
3999
|
+
parts.push(idx);
|
|
4000
|
+
}
|
|
4001
|
+
node = parentLi;
|
|
4002
|
+
}
|
|
4003
|
+
return parts.reverse().join(".");
|
|
4004
|
+
})();
|
|
4005
|
+
var curNum = li.getAttribute("data-list-number") || "";
|
|
4006
|
+
if (numbering && curNum !== numbering) {
|
|
4007
|
+
attrUpdates.push([li, "data-list-number", numbering]);
|
|
4008
|
+
}
|
|
4009
|
+
};
|
|
4010
|
+
for (var _a = 0, children_3 = children; _a < children_3.length; _a++) {
|
|
4011
|
+
var child = children_3[_a];
|
|
4012
|
+
_loop_2(child);
|
|
4013
|
+
}
|
|
4014
|
+
}
|
|
4015
|
+
catch (_b) {
|
|
4016
|
+
void 0;
|
|
4017
|
+
}
|
|
4018
|
+
});
|
|
4019
|
+
var tOlDone = performance.now();
|
|
4020
|
+
var tableRowLookup = (_j = cached === null || cached === void 0 ? void 0 : cached.tableRowLookup) !== null && _j !== void 0 ? _j : new Map();
|
|
4021
|
+
var tableGroups = (_k = cached === null || cached === void 0 ? void 0 : cached.tableGroups) !== null && _k !== void 0 ? _k : [];
|
|
4022
|
+
if (!cached) {
|
|
4023
|
+
var isTableRowLine = function (line) {
|
|
4024
|
+
return /^\s*\|.*\|\s*$/.test(line);
|
|
4025
|
+
};
|
|
4026
|
+
var isAlignLine = function (line) {
|
|
4027
|
+
return /^\s*\|?(?:\s*:?-{2,}:?\s*\|)+\s*:?-{2,}:?\s*\|?\s*$/.test(line);
|
|
4028
|
+
};
|
|
4029
|
+
for (var i = 0; i < srcLines.length;) {
|
|
4030
|
+
var header = srcLines[i];
|
|
4031
|
+
var align = srcLines[i + 1];
|
|
4032
|
+
if (isTableRowLine(header) && isAlignLine(align || "")) {
|
|
4033
|
+
var groupRows = [i + 1];
|
|
4034
|
+
var groupRowTexts = [
|
|
4035
|
+
stripInlineMD(header.replace(/^\s*\|?|\|?\s*$/g, "")),
|
|
4036
|
+
];
|
|
4037
|
+
i += 2;
|
|
4038
|
+
while (i < srcLines.length && isTableRowLine(srcLines[i])) {
|
|
4039
|
+
groupRows.push(i + 1);
|
|
4040
|
+
groupRowTexts.push(stripInlineMD(srcLines[i].replace(/^\s*\|?|\|?\s*$/g, "")));
|
|
4041
|
+
i++;
|
|
4042
|
+
}
|
|
4043
|
+
tableGroups.push({
|
|
4044
|
+
rows: groupRows,
|
|
4045
|
+
rowTexts: groupRowTexts,
|
|
4046
|
+
});
|
|
4047
|
+
for (var t = 0; t < groupRowTexts.length; t++) {
|
|
4048
|
+
var key = groupRowTexts[t];
|
|
4049
|
+
var ln = groupRows[t];
|
|
4050
|
+
var arr = tableRowLookup.get(key);
|
|
4051
|
+
if (arr)
|
|
4052
|
+
arr.push(ln);
|
|
4053
|
+
else
|
|
4054
|
+
tableRowLookup.set(key, [ln]);
|
|
3866
4055
|
}
|
|
3867
4056
|
}
|
|
4057
|
+
else {
|
|
4058
|
+
i++;
|
|
4059
|
+
}
|
|
4060
|
+
}
|
|
4061
|
+
}
|
|
4062
|
+
var usedTableLines = new Set();
|
|
4063
|
+
var tIndexDone = performance.now();
|
|
4064
|
+
var tables = root.querySelectorAll("table");
|
|
4065
|
+
var groupPtr = 0;
|
|
4066
|
+
tables.forEach(function (table) {
|
|
4067
|
+
try {
|
|
4068
|
+
var trs = table.querySelectorAll("tr");
|
|
4069
|
+
trs.forEach(function (tr) {
|
|
4070
|
+
var cells = Array.from(tr.cells);
|
|
4071
|
+
var rowText = cells.map(function (c) { return c.textContent || ""; }).join("|");
|
|
4072
|
+
var normRow = stripInlineMD(normalize(rowText));
|
|
4073
|
+
var ln = pickFirstUnused(tableRowLookup.get(normRow));
|
|
4074
|
+
if (ln === -1) {
|
|
4075
|
+
while (groupPtr < tableGroups.length &&
|
|
4076
|
+
tableGroups[groupPtr].rows.every(function (r) {
|
|
4077
|
+
return usedTableLines.has(r);
|
|
4078
|
+
})) {
|
|
4079
|
+
groupPtr++;
|
|
4080
|
+
}
|
|
4081
|
+
if (groupPtr < tableGroups.length) {
|
|
4082
|
+
var g = tableGroups[groupPtr];
|
|
4083
|
+
var chosen = -1;
|
|
4084
|
+
for (var k = 0; k < g.rows.length; k++) {
|
|
4085
|
+
var cand = g.rows[k];
|
|
4086
|
+
if (!usedTableLines.has(cand)) {
|
|
4087
|
+
chosen = cand;
|
|
4088
|
+
break;
|
|
4089
|
+
}
|
|
4090
|
+
}
|
|
4091
|
+
ln = chosen;
|
|
4092
|
+
}
|
|
4093
|
+
}
|
|
4094
|
+
if (ln !== -1) {
|
|
4095
|
+
usedTableLines.add(ln);
|
|
4096
|
+
var cur = tr.getAttribute("data-linenumber");
|
|
4097
|
+
var val = String(ln);
|
|
4098
|
+
if (cur !== val) {
|
|
4099
|
+
attrUpdates.push([
|
|
4100
|
+
tr,
|
|
4101
|
+
"data-linenumber",
|
|
4102
|
+
val,
|
|
4103
|
+
]);
|
|
4104
|
+
}
|
|
4105
|
+
}
|
|
4106
|
+
else {
|
|
4107
|
+
var cur = tr.getAttribute("data-linenumber");
|
|
4108
|
+
if (cur) {
|
|
4109
|
+
attrUpdates.push([
|
|
4110
|
+
tr,
|
|
4111
|
+
"data-linenumber",
|
|
4112
|
+
"",
|
|
4113
|
+
]);
|
|
4114
|
+
}
|
|
4115
|
+
}
|
|
4116
|
+
var ths = tr.querySelectorAll("th");
|
|
4117
|
+
ths.forEach(function (th) {
|
|
4118
|
+
var curTh = th.getAttribute("data-linenumber");
|
|
4119
|
+
if (curTh) {
|
|
4120
|
+
attrUpdates.push([
|
|
4121
|
+
th,
|
|
4122
|
+
"data-linenumber",
|
|
4123
|
+
"",
|
|
4124
|
+
]);
|
|
4125
|
+
}
|
|
4126
|
+
});
|
|
4127
|
+
});
|
|
3868
4128
|
}
|
|
3869
4129
|
catch (_a) {
|
|
3870
4130
|
void 0;
|
|
3871
4131
|
}
|
|
3872
4132
|
});
|
|
4133
|
+
var tTableDone = performance.now();
|
|
4134
|
+
for (var _i = 0, attrUpdates_1 = attrUpdates; _i < attrUpdates_1.length; _i++) {
|
|
4135
|
+
var _l = attrUpdates_1[_i], el = _l[0], attr = _l[1], val = _l[2];
|
|
4136
|
+
if (val === "") {
|
|
4137
|
+
el.removeAttribute(attr);
|
|
4138
|
+
}
|
|
4139
|
+
else {
|
|
4140
|
+
el.setAttribute(attr, val);
|
|
4141
|
+
}
|
|
4142
|
+
}
|
|
4143
|
+
var tApplyDone = performance.now();
|
|
4144
|
+
if (!cached) {
|
|
4145
|
+
GLOBAL_CACHE.set(hash, {
|
|
4146
|
+
srcNorm: srcNorm,
|
|
4147
|
+
srcLines: srcLines,
|
|
4148
|
+
strippedLines: strippedLines,
|
|
4149
|
+
lineLookup: lineLookup,
|
|
4150
|
+
unorderedListEntries: unorderedListEntries,
|
|
4151
|
+
unorderedLookup: unorderedLookup,
|
|
4152
|
+
orderedListEntries: orderedListEntries,
|
|
4153
|
+
orderedLookup: orderedLookup,
|
|
4154
|
+
orderedGroups: orderedGroups,
|
|
4155
|
+
tableRowLookup: tableRowLookup,
|
|
4156
|
+
tableGroups: tableGroups,
|
|
4157
|
+
});
|
|
4158
|
+
}
|
|
4159
|
+
console.log("[LineNumber][perf]", {
|
|
4160
|
+
cached: !!cached,
|
|
4161
|
+
times: {
|
|
4162
|
+
normalize: Math.round((tNorm - t0) * 100) / 100,
|
|
4163
|
+
index: Math.round((tIndexDone - tNorm) * 100) / 100,
|
|
4164
|
+
blocks: Math.round((tBlockDone - tIndexDone) * 100) / 100,
|
|
4165
|
+
ul: Math.round((tUlDone - tBlockDone) * 100) / 100,
|
|
4166
|
+
ol: Math.round((tOlDone - tUlDone) * 100) / 100,
|
|
4167
|
+
table: Math.round((tTableDone - tIndexDone) * 100) / 100,
|
|
4168
|
+
apply: Math.round((tApplyDone - tTableDone) * 100) / 100,
|
|
4169
|
+
total: Math.round((tApplyDone - t0) * 100) / 100,
|
|
4170
|
+
},
|
|
4171
|
+
counts: {
|
|
4172
|
+
blocks: blocks.length,
|
|
4173
|
+
ul: ulElements.length,
|
|
4174
|
+
ol: olElements.length,
|
|
4175
|
+
tables: tables.length,
|
|
4176
|
+
updates: attrUpdates.length,
|
|
4177
|
+
},
|
|
4178
|
+
});
|
|
3873
4179
|
};
|
|
3874
4180
|
/**
|
|
3875
4181
|
* 节流后的行号更新函数,避免频繁更新 data-linenumber
|
|
@@ -4837,6 +5143,9 @@ var mergeOptions = function (options) {
|
|
|
4837
5143
|
speech: {
|
|
4838
5144
|
enable: false,
|
|
4839
5145
|
},
|
|
5146
|
+
runHtml: {
|
|
5147
|
+
enable: false,
|
|
5148
|
+
},
|
|
4840
5149
|
render: {
|
|
4841
5150
|
media: {
|
|
4842
5151
|
enable: true,
|
|
@@ -4934,7 +5243,7 @@ var previewRender = function (previewElement, markdown, options) { return __awai
|
|
|
4934
5243
|
if (mergedOptions.anchor === 1) {
|
|
4935
5244
|
previewElement.classList.add("vditor-reset--anchor");
|
|
4936
5245
|
}
|
|
4937
|
-
(0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs);
|
|
5246
|
+
(0,codeRender/* codeRender */.O)(previewElement, mergedOptions.hljs, mergedOptions.runHtml);
|
|
4938
5247
|
(0,highlightRender/* highlightRender */.s)(mergedOptions.hljs, previewElement, mergedOptions.cdn);
|
|
4939
5248
|
(0,mathRender/* mathRender */.H)(previewElement, {
|
|
4940
5249
|
cdn: mergedOptions.cdn,
|