@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.
- package/LICENSE +21 -0
- package/README.md +623 -0
- package/dist/css/content-theme/ant-design.css +210 -0
- package/dist/css/content-theme/dark.css +177 -0
- package/dist/css/content-theme/light.css +136 -0
- package/dist/css/content-theme/wechat.css +94 -0
- package/dist/images/emoji/b3log.png +0 -0
- package/dist/images/emoji/chainbook.png +0 -0
- package/dist/images/emoji/doge.png +0 -0
- package/dist/images/emoji/hacpai.png +0 -0
- package/dist/images/emoji/huaji.gif +0 -0
- package/dist/images/emoji/latke.png +0 -0
- package/dist/images/emoji/liandi.png +0 -0
- package/dist/images/emoji/lute.png +0 -0
- package/dist/images/emoji/octocat.png +0 -0
- package/dist/images/emoji/pipe.png +0 -0
- package/dist/images/emoji/siyuan.png +0 -0
- package/dist/images/emoji/solo.png +0 -0
- package/dist/images/emoji/sym.png +0 -0
- package/dist/images/emoji/trollface.png +0 -0
- package/dist/images/emoji/vditor.png +0 -0
- package/dist/images/emoji/wide.png +0 -0
- package/dist/images/emoji/wulian.png +0 -0
- package/dist/images/img-loading.svg +1 -0
- package/dist/images/logo.png +0 -0
- package/dist/index.css +1919 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.js +18263 -0
- package/dist/index.min.js +1 -0
- package/dist/js/abcjs/abcjs_basic.min.js +3 -0
- package/dist/js/color-picker/color-picker.min.css +6 -0
- package/dist/js/color-picker/color-picker.nano.css +2 -0
- package/dist/js/color-picker/color-picker.nano.js +3 -0
- package/dist/js/docx/docx.min.js +1 -0
- package/dist/js/echarts/echarts.min.js +45 -0
- package/dist/js/flowchart.js/flowchart.min.js +8 -0
- package/dist/js/graphviz/full.render.js +90 -0
- package/dist/js/graphviz/viz.js +333 -0
- package/dist/js/highlight.js/LICENSE +29 -0
- package/dist/js/highlight.js/highlight.min.js +3835 -0
- package/dist/js/highlight.js/styles/a11y-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/a11y-light.min.css +7 -0
- package/dist/js/highlight.js/styles/agate.min.css +20 -0
- package/dist/js/highlight.js/styles/an-old-hope.min.css +9 -0
- package/dist/js/highlight.js/styles/androidstudio.min.css +1 -0
- package/dist/js/highlight.js/styles/ant-design.min.css +84 -0
- package/dist/js/highlight.js/styles/arduino-light.min.css +1 -0
- package/dist/js/highlight.js/styles/arta.min.css +1 -0
- package/dist/js/highlight.js/styles/ascetic.min.css +1 -0
- package/dist/js/highlight.js/styles/atom-one-dark-reasonable.min.css +1 -0
- package/dist/js/highlight.js/styles/atom-one-dark.min.css +1 -0
- package/dist/js/highlight.js/styles/atom-one-light.min.css +1 -0
- package/dist/js/highlight.js/styles/base16/3024.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/apathy.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/apprentice.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ashes.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-cave-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-cave.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-dune-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-dune.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-estuary-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-estuary.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-forest-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-forest.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-heath-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-heath.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-lakeside-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-lakeside.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-plateau-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-plateau.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-savanna-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-savanna.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-seaside-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-seaside.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-sulphurpool-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atelier-sulphurpool.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/atlas.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/bespin.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-bathory.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-burzum.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-dark-funeral.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-gorgoroth.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-immortal.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-khold.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-marduk.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-mayhem.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-nile.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal-venom.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/black-metal.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/brewer.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/bright.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/brogrammer.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/brush-trees-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/brush-trees.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/chalk.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/circus.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/classic-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/classic-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/codeschool.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/colors.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/cupcake.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/cupertino.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/danqing.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/darcula.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/dark-violet.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/darkmoss.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/darktooth.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/decaf.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/default-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/default-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/dirtysea.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/dracula.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/edge-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/edge-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/eighties.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/embers.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/equilibrium-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/equilibrium-gray-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/equilibrium-gray-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/equilibrium-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/espresso.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/eva-dim.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/eva.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/flat.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/framer.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/fruit-soda.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gigavolt.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/github.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/google-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/google-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/grayscale-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/grayscale-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/green-screen.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-hard.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-medium.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-pale.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gruvbox-dark-soft.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gruvbox-light-hard.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gruvbox-light-medium.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/gruvbox-light-soft.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/hardcore.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/harmonic16-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/harmonic16-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/heetch-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/heetch-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/helios.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/hopscotch.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/horizon-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/horizon-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/humanoid-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/humanoid-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ia-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ia-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/icy-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ir-black.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/isotope.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/kimber.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/london-tube.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/macintosh.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/marrakesh.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/materia.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/material-darker.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/material-lighter.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/material-palenight.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/material-vivid.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/material.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/mellow-purple.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/mexico-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/mocha.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/monokai.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/nebula.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/nord.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/nova.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ocean.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/oceanicnext.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/one-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/onedark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/outrun-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/papercolor-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/papercolor-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/paraiso.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/pasque.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/phd.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/pico.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/pop.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/porple.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/qualia.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/railscasts.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/rebecca.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ros-pine-dawn.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ros-pine-moon.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/ros-pine.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/sagelight.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/sandcastle.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/seti-ui.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/shapeshifter.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/silk-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/silk-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/snazzy.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/solar-flare-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/solar-flare.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/solarized-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/solarized-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/spacemacs.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/summercamp.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/summerfruit-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/summerfruit-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/synth-midnight-terminal-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/tango.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/tender.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/tomorrow-night.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/tomorrow.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/twilight.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/unikitty-dark.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/unikitty-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/vulcan.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-10-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-10.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-95-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-95.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-high-contrast-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-high-contrast.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-nt-light.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/windows-nt.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/woodland.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/xcode-dusk.min.css +7 -0
- package/dist/js/highlight.js/styles/base16/zenburn.min.css +7 -0
- package/dist/js/highlight.js/styles/brown-paper.min.css +1 -0
- package/dist/js/highlight.js/styles/brown-papersq.png +0 -0
- package/dist/js/highlight.js/styles/codepen-embed.min.css +1 -0
- package/dist/js/highlight.js/styles/color-brewer.min.css +1 -0
- package/dist/js/highlight.js/styles/dark.min.css +1 -0
- package/dist/js/highlight.js/styles/default.min.css +9 -0
- package/dist/js/highlight.js/styles/devibeans.min.css +7 -0
- package/dist/js/highlight.js/styles/docco.min.css +1 -0
- package/dist/js/highlight.js/styles/far.min.css +1 -0
- package/dist/js/highlight.js/styles/felipec.min.css +7 -0
- package/dist/js/highlight.js/styles/foundation.min.css +1 -0
- package/dist/js/highlight.js/styles/github-dark-dimmed.min.css +9 -0
- package/dist/js/highlight.js/styles/github-dark.min.css +10 -0
- package/dist/js/highlight.js/styles/github.min.css +10 -0
- package/dist/js/highlight.js/styles/gml.min.css +1 -0
- package/dist/js/highlight.js/styles/googlecode.min.css +1 -0
- package/dist/js/highlight.js/styles/gradient-dark.min.css +1 -0
- package/dist/js/highlight.js/styles/gradient-light.min.css +1 -0
- package/dist/js/highlight.js/styles/grayscale.min.css +1 -0
- package/dist/js/highlight.js/styles/hybrid.min.css +1 -0
- package/dist/js/highlight.js/styles/idea.min.css +1 -0
- package/dist/js/highlight.js/styles/intellij-light.min.css +1 -0
- package/dist/js/highlight.js/styles/ir-black.min.css +1 -0
- package/dist/js/highlight.js/styles/isbl-editor-dark.min.css +1 -0
- package/dist/js/highlight.js/styles/isbl-editor-light.min.css +1 -0
- package/dist/js/highlight.js/styles/kimbie-dark.min.css +1 -0
- package/dist/js/highlight.js/styles/kimbie-light.min.css +1 -0
- package/dist/js/highlight.js/styles/lightfair.min.css +1 -0
- package/dist/js/highlight.js/styles/lioshi.min.css +1 -0
- package/dist/js/highlight.js/styles/magula.min.css +1 -0
- package/dist/js/highlight.js/styles/mono-blue.min.css +1 -0
- package/dist/js/highlight.js/styles/monokai-sublime.min.css +1 -0
- package/dist/js/highlight.js/styles/monokai.min.css +1 -0
- package/dist/js/highlight.js/styles/night-owl.min.css +1 -0
- package/dist/js/highlight.js/styles/nnfx-dark.min.css +10 -0
- package/dist/js/highlight.js/styles/nnfx-light.min.css +10 -0
- package/dist/js/highlight.js/styles/nord.min.css +1 -0
- package/dist/js/highlight.js/styles/obsidian.min.css +1 -0
- package/dist/js/highlight.js/styles/panda-syntax-dark.min.css +1 -0
- package/dist/js/highlight.js/styles/panda-syntax-light.min.css +1 -0
- package/dist/js/highlight.js/styles/paraiso-dark.min.css +1 -0
- package/dist/js/highlight.js/styles/paraiso-light.min.css +1 -0
- package/dist/js/highlight.js/styles/pojoaque.jpg +0 -0
- package/dist/js/highlight.js/styles/pojoaque.min.css +1 -0
- package/dist/js/highlight.js/styles/purebasic.min.css +1 -0
- package/dist/js/highlight.js/styles/qtcreator-dark.min.css +1 -0
- package/dist/js/highlight.js/styles/qtcreator-light.min.css +1 -0
- package/dist/js/highlight.js/styles/rainbow.min.css +1 -0
- package/dist/js/highlight.js/styles/routeros.min.css +1 -0
- package/dist/js/highlight.js/styles/school-book.min.css +1 -0
- package/dist/js/highlight.js/styles/shades-of-purple.min.css +1 -0
- package/dist/js/highlight.js/styles/srcery.min.css +1 -0
- package/dist/js/highlight.js/styles/stackoverflow-dark.min.css +13 -0
- package/dist/js/highlight.js/styles/stackoverflow-light.min.css +13 -0
- package/dist/js/highlight.js/styles/sunburst.min.css +1 -0
- package/dist/js/highlight.js/styles/tokyo-night-dark.min.css +8 -0
- package/dist/js/highlight.js/styles/tokyo-night-light.min.css +8 -0
- package/dist/js/highlight.js/styles/tomorrow-night-blue.min.css +1 -0
- package/dist/js/highlight.js/styles/tomorrow-night-bright.min.css +1 -0
- package/dist/js/highlight.js/styles/vs.min.css +1 -0
- package/dist/js/highlight.js/styles/vs2015.min.css +1 -0
- package/dist/js/highlight.js/styles/xcode.min.css +1 -0
- package/dist/js/highlight.js/styles/xt256.min.css +1 -0
- package/dist/js/highlight.js/third-languages.js +135 -0
- package/dist/js/html2canvas/html2canvas.min.20251104.js +20 -0
- package/dist/js/html2canvas/html2canvas.min.js +20 -0
- package/dist/js/i18n/de_DE.js +86 -0
- package/dist/js/i18n/en_US.js +86 -0
- package/dist/js/i18n/es_ES.js +86 -0
- package/dist/js/i18n/fr_FR.js +86 -0
- package/dist/js/i18n/ja_JP.js +86 -0
- package/dist/js/i18n/ko_KR.js +86 -0
- package/dist/js/i18n/pt_BR.js +86 -0
- package/dist/js/i18n/ru_RU.js +86 -0
- package/dist/js/i18n/sv_SE.js +86 -0
- package/dist/js/i18n/vi_VN.js +86 -0
- package/dist/js/i18n/zh_CN.js +86 -0
- package/dist/js/i18n/zh_TW.js +86 -0
- package/dist/js/icons/ant.js +174 -0
- package/dist/js/icons/material.js +195 -0
- package/dist/js/jspdf/jspdf.umd.min.20251104.js +398 -0
- package/dist/js/jspdf/jspdf.umd.min.js +398 -0
- package/dist/js/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Bold.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Italic.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Math-Italic.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Script-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/js/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/js/katex/katex.min.css +1 -0
- package/dist/js/katex/katex.min.js +1 -0
- package/dist/js/katex/mhchem.min.js +1 -0
- package/dist/js/lute/lute.min.js +1 -0
- package/dist/js/markmap/katex.min.css +1 -0
- package/dist/js/markmap/markmap.min.js +8251 -0
- package/dist/js/markmap/prism.css +140 -0
- package/dist/js/mathjax/LICENSE +202 -0
- package/dist/js/mathjax/a11y/assistive-mml.js +1 -0
- package/dist/js/mathjax/a11y/complexity.js +1 -0
- package/dist/js/mathjax/a11y/explorer.js +1 -0
- package/dist/js/mathjax/a11y/semantic-enrich.js +1 -0
- package/dist/js/mathjax/input/asciimath.js +1 -0
- package/dist/js/mathjax/input/mml/entities.js +1 -0
- package/dist/js/mathjax/input/mml.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/action.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/all-packages.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/ams.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/amscd.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/autoload.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/bbox.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/boldsymbol.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/braket.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/bussproofs.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/cancel.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/color.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/colorV2.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/configMacros.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/enclose.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/extpfeil.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/html.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/mhchem.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/newcommand.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/noerrors.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/noundefined.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/physics.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/require.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/tagFormat.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/textmacros.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/unicode.js +1 -0
- package/dist/js/mathjax/input/tex/extensions/verb.js +1 -0
- package/dist/js/mathjax/input/tex-base.js +1 -0
- package/dist/js/mathjax/input/tex-full.js +1 -0
- package/dist/js/mathjax/input/tex.js +1 -0
- package/dist/js/mathjax/sre/mathmaps/de.js +104 -0
- package/dist/js/mathjax/sre/mathmaps/en.js +110 -0
- package/dist/js/mathjax/sre/mathmaps/es.js +104 -0
- package/dist/js/mathjax/sre/mathmaps/fr.js +104 -0
- package/dist/js/mathjax/sre/mathmaps/mathmaps_ie.js +518 -0
- package/dist/js/mathjax/sre/mathmaps/nemeth.js +104 -0
- package/dist/js/mathjax/sre/sre-node.js +11 -0
- package/dist/js/mathjax/sre/sre_browser.js +1633 -0
- package/dist/js/mathjax/tex-svg-full.js +1 -0
- package/dist/js/mermaid/mermaid.min.js +2694 -0
- package/dist/js/plantuml/plantuml-encoder.min.js +1 -0
- package/dist/js/smiles-drawer/smiles-drawer.min.js +71 -0
- package/dist/method.d.ts +51 -0
- package/dist/method.js +4532 -0
- package/dist/method.min.js +1 -0
- package/dist/ts/constants.d.ts +46 -0
- package/dist/ts/devtools/index.d.ts +6 -0
- package/dist/ts/export/index.d.ts +4 -0
- package/dist/ts/hint/index.d.ts +13 -0
- package/dist/ts/ir/expandMarker.d.ts +1 -0
- package/dist/ts/ir/highlightToolbarIR.d.ts +1 -0
- package/dist/ts/ir/index.d.ts +12 -0
- package/dist/ts/ir/input.d.ts +1 -0
- package/dist/ts/ir/process.d.ts +8 -0
- package/dist/ts/ir/processKeydown.d.ts +1 -0
- package/dist/ts/markdown/SMILESRender.d.ts +1 -0
- package/dist/ts/markdown/abcRender.d.ts +1 -0
- package/dist/ts/markdown/adapterRender.d.ts +51 -0
- package/dist/ts/markdown/anchorRender.d.ts +1 -0
- package/dist/ts/markdown/chartRender.d.ts +1 -0
- package/dist/ts/markdown/codeRender.d.ts +1 -0
- package/dist/ts/markdown/flowchartRender.d.ts +1 -0
- package/dist/ts/markdown/getHTML.d.ts +1 -0
- package/dist/ts/markdown/getMarkdown.d.ts +1 -0
- package/dist/ts/markdown/graphvizRender.d.ts +1 -0
- package/dist/ts/markdown/highlightRender.d.ts +1 -0
- package/dist/ts/markdown/lazyLoadImageRender.d.ts +6 -0
- package/dist/ts/markdown/markmapRender.d.ts +1 -0
- package/dist/ts/markdown/mathContextMenu.d.ts +17 -0
- package/dist/ts/markdown/mathRender.d.ts +19 -0
- package/dist/ts/markdown/mediaRender.d.ts +1 -0
- package/dist/ts/markdown/mermaidRender.d.ts +1 -0
- package/dist/ts/markdown/mindmapRender.d.ts +1 -0
- package/dist/ts/markdown/outlineRender.d.ts +1 -0
- package/dist/ts/markdown/plantumlRender.d.ts +1 -0
- package/dist/ts/markdown/previewRender.d.ts +2 -0
- package/dist/ts/markdown/setLute.d.ts +1 -0
- package/dist/ts/markdown/speechRender.d.ts +6 -0
- package/dist/ts/outline/index.d.ts +6 -0
- package/dist/ts/preview/image.d.ts +1 -0
- package/dist/ts/preview/index.d.ts +26 -0
- package/dist/ts/resize/index.d.ts +5 -0
- package/dist/ts/sv/combineFootnote.d.ts +6 -0
- package/dist/ts/sv/index.d.ts +12 -0
- package/dist/ts/sv/inputEvent.d.ts +1 -0
- package/dist/ts/sv/process.d.ts +11 -0
- package/dist/ts/sv/processKeydown.d.ts +1 -0
- package/dist/ts/tip/index.d.ts +6 -0
- package/dist/ts/toolbar/Both.d.ts +4 -0
- package/dist/ts/toolbar/Br.d.ts +4 -0
- package/dist/ts/toolbar/CodeTheme.d.ts +5 -0
- package/dist/ts/toolbar/ContentTheme.d.ts +5 -0
- package/dist/ts/toolbar/Counter.d.ts +5 -0
- package/dist/ts/toolbar/Custom.d.ts +4 -0
- package/dist/ts/toolbar/Devtools.d.ts +4 -0
- package/dist/ts/toolbar/Divider.d.ts +4 -0
- package/dist/ts/toolbar/EditMode.d.ts +7 -0
- package/dist/ts/toolbar/Emoji.d.ts +6 -0
- package/dist/ts/toolbar/Export.d.ts +5 -0
- package/dist/ts/toolbar/Fullscreen.d.ts +5 -0
- package/dist/ts/toolbar/Headings.d.ts +6 -0
- package/dist/ts/toolbar/Help.d.ts +4 -0
- package/dist/ts/toolbar/Indent.d.ts +4 -0
- package/dist/ts/toolbar/Info.d.ts +4 -0
- package/dist/ts/toolbar/InsertAfter.d.ts +4 -0
- package/dist/ts/toolbar/InsertBefore.d.ts +4 -0
- package/dist/ts/toolbar/MenuItem.d.ts +4 -0
- package/dist/ts/toolbar/Outdent.d.ts +4 -0
- package/dist/ts/toolbar/Outline.d.ts +4 -0
- package/dist/ts/toolbar/Preview.d.ts +5 -0
- package/dist/ts/toolbar/Record.d.ts +5 -0
- package/dist/ts/toolbar/Redo.d.ts +4 -0
- package/dist/ts/toolbar/Undo.d.ts +4 -0
- package/dist/ts/toolbar/Upload.d.ts +5 -0
- package/dist/ts/toolbar/index.d.ts +9 -0
- package/dist/ts/toolbar/setToolbar.d.ts +20 -0
- package/dist/ts/ui/initUI.d.ts +4 -0
- package/dist/ts/ui/setCodeTheme.d.ts +1 -0
- package/dist/ts/ui/setContentTheme.d.ts +1 -0
- package/dist/ts/ui/setPreviewMode.d.ts +1 -0
- package/dist/ts/ui/setTheme.d.ts +6 -0
- package/dist/ts/undo/index.d.ts +18 -0
- package/dist/ts/upload/getElement.d.ts +1 -0
- package/dist/ts/upload/index.d.ts +8 -0
- package/dist/ts/upload/setHeaders.d.ts +1 -0
- package/dist/ts/util/Options.d.ts +19 -0
- package/dist/ts/util/RecordMedia.d.ts +18 -0
- package/dist/ts/util/addScript.d.ts +2 -0
- package/dist/ts/util/addStyle.d.ts +1 -0
- package/dist/ts/util/code160to32.d.ts +1 -0
- package/dist/ts/util/compatibility.d.ts +7 -0
- package/dist/ts/util/editorCommonEvent.d.ts +13 -0
- package/dist/ts/util/fixBrowserBehavior.d.ts +39 -0
- package/dist/ts/util/function.d.ts +3 -0
- package/dist/ts/util/getSelectText.d.ts +1 -0
- package/dist/ts/util/hasClosest.d.ts +9 -0
- package/dist/ts/util/hasClosestByHeadings.d.ts +2 -0
- package/dist/ts/util/highlightToolbar.d.ts +1 -0
- package/dist/ts/util/hotKey.d.ts +1 -0
- package/dist/ts/util/log.d.ts +1 -0
- package/dist/ts/util/merge.d.ts +1 -0
- package/dist/ts/util/processCode.d.ts +2 -0
- package/dist/ts/util/selection.d.ts +14 -0
- package/dist/ts/util/toc.d.ts +5 -0
- package/dist/ts/wysiwyg/afterRenderEvent.d.ts +5 -0
- package/dist/ts/wysiwyg/highlightToolbarWYSIWYG.d.ts +9 -0
- package/dist/ts/wysiwyg/index.d.ts +27 -0
- package/dist/ts/wysiwyg/inlineTag.d.ts +10 -0
- package/dist/ts/wysiwyg/input.d.ts +1 -0
- package/dist/ts/wysiwyg/processKeydown.d.ts +2 -0
- package/dist/ts/wysiwyg/renderDomByMd.d.ts +5 -0
- package/dist/ts/wysiwyg/setHeading.d.ts +2 -0
- package/dist/ts/wysiwyg/showCode.d.ts +1 -0
- package/dist/ts/wysiwyg/toolbarEvent.d.ts +1 -0
- package/dist/types/index.d.ts +930 -0
- package/package.json +63 -0
- package/src/assets/less/_content.less +247 -0
- package/src/assets/less/_hint.less +67 -0
- package/src/assets/less/_ir.less +282 -0
- package/src/assets/less/_line-number.less +30 -0
- package/src/assets/less/_math-menu.less +78 -0
- package/src/assets/less/_panel.less +110 -0
- package/src/assets/less/_reset.less +628 -0
- package/src/assets/less/_sv.less +132 -0
- package/src/assets/less/_toolbar.less +180 -0
- package/src/assets/less/_tooltipped.less +171 -0
- package/src/assets/less/_wysiwyg.less +215 -0
- package/src/assets/less/index.less +99 -0
- package/src/index.ts +641 -0
- package/src/method.ts +71 -0
- package/src/ts/constants.ts +350 -0
- package/src/ts/devtools/index.ts +83 -0
- package/src/ts/export/index.ts +84 -0
- package/src/ts/hint/index.ts +276 -0
- package/src/ts/ir/expandMarker.ts +79 -0
- package/src/ts/ir/highlightToolbarIR.ts +97 -0
- package/src/ts/ir/index.ts +268 -0
- package/src/ts/ir/input.ts +250 -0
- package/src/ts/ir/process.ts +222 -0
- package/src/ts/ir/processKeydown.ts +238 -0
- package/src/ts/markdown/SMILESRender.ts +29 -0
- package/src/ts/markdown/abcRender.ts +27 -0
- package/src/ts/markdown/adapterRender.ts +96 -0
- package/src/ts/markdown/anchorRender.ts +19 -0
- package/src/ts/markdown/chartRender.ts +1153 -0
- package/src/ts/markdown/codeRender.ts +60 -0
- package/src/ts/markdown/flowchartRender.ts +25 -0
- package/src/ts/markdown/getHTML.ts +11 -0
- package/src/ts/markdown/getMarkdown.ts +12 -0
- package/src/ts/markdown/graphvizRender.ts +49 -0
- package/src/ts/markdown/highlightRender.ts +94 -0
- package/src/ts/markdown/lazyLoadImageRender.ts +56 -0
- package/src/ts/markdown/markmapRender.ts +56 -0
- package/src/ts/markdown/mathContextMenu.ts +423 -0
- package/src/ts/markdown/mathRender.ts +281 -0
- package/src/ts/markdown/mediaRender.ts +105 -0
- package/src/ts/markdown/mermaidRender.ts +60 -0
- package/src/ts/markdown/mindmapRender.ts +74 -0
- package/src/ts/markdown/outlineRender.ts +110 -0
- package/src/ts/markdown/plantumlRender.ts +32 -0
- package/src/ts/markdown/previewRender.ts +171 -0
- package/src/ts/markdown/setLute.ts +26 -0
- package/src/ts/markdown/speechRender.ts +107 -0
- package/src/ts/outline/index.ts +45 -0
- package/src/ts/preview/image.ts +50 -0
- package/src/ts/preview/index.ts +299 -0
- package/src/ts/resize/index.ts +57 -0
- package/src/ts/sv/combineFootnote.ts +27 -0
- package/src/ts/sv/index.ts +128 -0
- package/src/ts/sv/inputEvent.ts +188 -0
- package/src/ts/sv/process.ts +215 -0
- package/src/ts/sv/processKeydown.ts +202 -0
- package/src/ts/tip/index.ts +39 -0
- package/src/ts/toolbar/Both.ts +28 -0
- package/src/ts/toolbar/Br.ts +8 -0
- package/src/ts/toolbar/CodeTheme.ts +36 -0
- package/src/ts/toolbar/ContentTheme.ts +44 -0
- package/src/ts/toolbar/Counter.ts +40 -0
- package/src/ts/toolbar/Custom.ts +17 -0
- package/src/ts/toolbar/Devtools.ts +28 -0
- package/src/ts/toolbar/Divider.ts +8 -0
- package/src/ts/toolbar/EditMode.ts +198 -0
- package/src/ts/toolbar/Emoji.ts +79 -0
- package/src/ts/toolbar/Export.ts +41 -0
- package/src/ts/toolbar/Fullscreen.ts +66 -0
- package/src/ts/toolbar/Headings.ts +73 -0
- package/src/ts/toolbar/Help.ts +30 -0
- package/src/ts/toolbar/Indent.ts +25 -0
- package/src/ts/toolbar/Info.ts +28 -0
- package/src/ts/toolbar/InsertAfter.ts +18 -0
- package/src/ts/toolbar/InsertBefore.ts +18 -0
- package/src/ts/toolbar/MenuItem.ts +54 -0
- package/src/ts/toolbar/Outdent.ts +24 -0
- package/src/ts/toolbar/Outline.ts +21 -0
- package/src/ts/toolbar/Preview.ts +55 -0
- package/src/ts/toolbar/Record.ts +60 -0
- package/src/ts/toolbar/Redo.ts +18 -0
- package/src/ts/toolbar/Undo.ts +18 -0
- package/src/ts/toolbar/Upload.ts +41 -0
- package/src/ts/toolbar/index.ts +195 -0
- package/src/ts/toolbar/setToolbar.ts +120 -0
- package/src/ts/ui/initUI.ts +214 -0
- package/src/ts/ui/setCodeTheme.ts +16 -0
- package/src/ts/ui/setContentTheme.ts +15 -0
- package/src/ts/ui/setPreviewMode.ts +31 -0
- package/src/ts/ui/setTheme.ts +14 -0
- package/src/ts/undo/index.ts +270 -0
- package/src/ts/upload/getElement.ts +10 -0
- package/src/ts/upload/index.ts +273 -0
- package/src/ts/upload/setHeaders.ts +10 -0
- package/src/ts/util/Options.ts +458 -0
- package/src/ts/util/RecordMedia.ts +170 -0
- package/src/ts/util/addScript.ts +43 -0
- package/src/ts/util/addStyle.ts +10 -0
- package/src/ts/util/code160to32.ts +4 -0
- package/src/ts/util/compatibility.ts +67 -0
- package/src/ts/util/editorCommonEvent.ts +270 -0
- package/src/ts/util/fixBrowserBehavior.ts +2234 -0
- package/src/ts/util/function.ts +15 -0
- package/src/ts/util/getSelectText.ts +8 -0
- package/src/ts/util/hasClosest.ts +154 -0
- package/src/ts/util/hasClosestByHeadings.ts +27 -0
- package/src/ts/util/highlightToolbar.ts +10 -0
- package/src/ts/util/hotKey.ts +54 -0
- package/src/ts/util/log.ts +6 -0
- package/src/ts/util/merge.ts +18 -0
- package/src/ts/util/processCode.ts +218 -0
- package/src/ts/util/selection.ts +349 -0
- package/src/ts/util/toc.ts +83 -0
- package/src/ts/wysiwyg/afterRenderEvent.ts +41 -0
- package/src/ts/wysiwyg/highlightToolbarWYSIWYG.ts +1169 -0
- package/src/ts/wysiwyg/index.ts +604 -0
- package/src/ts/wysiwyg/inlineTag.ts +129 -0
- package/src/ts/wysiwyg/input.ts +212 -0
- package/src/ts/wysiwyg/processKeydown.ts +363 -0
- package/src/ts/wysiwyg/renderDomByMd.ts +18 -0
- package/src/ts/wysiwyg/setHeading.ts +43 -0
- package/src/ts/wysiwyg/showCode.ts +32 -0
- package/src/ts/wysiwyg/toolbarEvent.ts +333 -0
package/README.md
ADDED
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
## ✨ 特性
|
|
2
|
+
|
|
3
|
+
- 支持三种编辑模式:所见即所得(wysiwyg)、即时渲染(ir)、分屏预览(sv)
|
|
4
|
+
- 支持大纲、数学公式、脑图、图表、流程图、甘特图、时序图、五线谱、[多媒体](https://ld246.com/article/1589813914768)、语音阅读、标题锚点、代码高亮及复制、graphviz 渲染、[plantuml](https://plantuml.com)UML图
|
|
5
|
+
- 导出、图片懒加载、任务列表、多平台预览、多主题切换、复制到微信公众号/知乎功能
|
|
6
|
+
- 实现 CommonMark 和 GFM 规范,可对 Markdown 进行格式化和语法树查看,并支持[10+项](https://ld246.com/article/1549638745630#options-preview-markdown)配置
|
|
7
|
+
- 工具栏包含 36+ 项操作,除支持扩展外还可对每一项中的[快捷键](https://ld246.com/article/1582778815353)、提示、提示位置、图标、点击事件、类名、子工具栏进行自定义
|
|
8
|
+
- 表情/at/话题等自动补全扩展
|
|
9
|
+
- 可使用拖拽、剪切板粘贴上传,显示实时上传进度,支持 CORS 跨域上传
|
|
10
|
+
- 实时保存内容,防止意外丢失
|
|
11
|
+
- 录音支持,用户可直接发布语音
|
|
12
|
+
- 粘贴 HTML 自动转换为 Markdown,如粘贴中包含外链图片可通过指定接口上传到服务器
|
|
13
|
+
- 支持主窗口大小拖拽、字符计数
|
|
14
|
+
- 多主题支持,内置黑白绿三套主题
|
|
15
|
+
- 多语言支持,内置中、英、韩文本地化
|
|
16
|
+
- 支持主流浏览器,对移动端友好
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
## 🔮 编辑模式
|
|
23
|
+
|
|
24
|
+
### 所见即所得(WYSIWYG)
|
|
25
|
+
|
|
26
|
+
*所见即所得*模式对不熟悉 Markdown 的用户较为友好,熟悉 Markdown 的话也可以无缝使用。
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
### 即时渲染(IR)
|
|
31
|
+
|
|
32
|
+
*即时渲染*模式对熟悉 Typora 的用户应该不会感到陌生,理论上这是最优雅的 Markdown 编辑方式。
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
### 分屏预览(SV)
|
|
37
|
+
|
|
38
|
+
传统的*分屏预览*模式适合大屏下的 Markdown 编辑。
|
|
39
|
+
|
|
40
|
+

|
|
41
|
+
|
|
42
|
+
## 🍱 语法支持
|
|
43
|
+
|
|
44
|
+
- 所有 CommonMark 语法:分隔线、ATX 标题、Setext 标题、缩进代码块、围栏代码块、HTML 块、链接引用定义、段落、块引用、列表、反斜杠转义、HTML 实体、行级代码、强调、加粗、链接、图片、行级 HTML、硬换行、软换行和纯文本。
|
|
45
|
+
- 所有 GFM 语法:表格、任务列表项、删除线、自动链接、XSS 过滤
|
|
46
|
+
- 常用 Markdown 扩展语法:脚注、ToC、自定义标题 ID
|
|
47
|
+
- 图表语法
|
|
48
|
+
- 流程图、时序图、甘特图,通过 Mermaid 支持
|
|
49
|
+
- Graphviz
|
|
50
|
+
- 折线图、饼图、脑图等,通过 ECharts 支持
|
|
51
|
+
- 五线谱:通过 abc.js 支持
|
|
52
|
+
- 数学公式:数学公式块、行级数学公式,通过 MathJax 和 KaTeX 支持
|
|
53
|
+
- YAML Front Matter
|
|
54
|
+
- 中文语境优化
|
|
55
|
+
- 中西文之间插入空格
|
|
56
|
+
- 术语拼写修正
|
|
57
|
+
- 中文后跟英文逗号句号等标点替换为中文对应标点
|
|
58
|
+
|
|
59
|
+
以上大部分特性可以通过开关配置是否启用,开发者可根据自己的应用场景选择搭配。
|
|
60
|
+
|
|
61
|
+
## 🗃 案例
|
|
62
|
+
|
|
63
|
+
- [Sym](https://github.com/88250/symphony) 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台
|
|
64
|
+
- [Solo](https://github.com/88250/solo) & [Pipe](https://github.com/88250/pipe) B3log 分布式社区的博客端节点,欢迎加入下一代社区网络
|
|
65
|
+
- [Tditor](https://tditor.com) 基于React、Vditor、Springboot,一款打造极致文字创作体验的在线Markdown编辑平台
|
|
66
|
+
- [Arya](https://github.com/nicejade/markdown-online-editor) 基于 Vue、Vditor,所构建的在线 Markdown 编辑器
|
|
67
|
+
- [更多案例](https://github.com/Vanessa219/vditor/network/dependents?package_id=UGFja2FnZS0zMTY2Mzg4MzE%3D)
|
|
68
|
+
|
|
69
|
+
## 🛠️ 使用文档
|
|
70
|
+
|
|
71
|
+
### CommonJS
|
|
72
|
+
|
|
73
|
+
- 安装依赖
|
|
74
|
+
|
|
75
|
+
```shell
|
|
76
|
+
npm install vditor --save
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- 在代码中引入并初始化对象,可参考 [index.js](/demo/index.js)
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
import Vditor from 'vditor'
|
|
83
|
+
import "~vditor/src/assets/less/index"
|
|
84
|
+
|
|
85
|
+
const vditor = new Vditor(id, {options...})
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 主题
|
|
89
|
+
|
|
90
|
+
#### 编辑器主题
|
|
91
|
+
|
|
92
|
+
编辑器所展现的外观。内置classic,dark 2 套主题。
|
|
93
|
+
|
|
94
|
+
- 编辑器初始化时可通过 `options.theme` 设置内置主题
|
|
95
|
+
- 初始化完成后可通过 `setTheme` 更新编辑器主题
|
|
96
|
+
- 可通过修改 [index.less](/src/assets/less/index.less) 中的变量对主题颜色进行定制
|
|
97
|
+
- 可参考现有结构和类名在原有基础上进行修改
|
|
98
|
+
|
|
99
|
+
#### 内容主题
|
|
100
|
+
|
|
101
|
+
Markdown 输出的 HTML 所展现的外观。内置 ant-design, light,dark,wechat 4 套主题。支持内容主题扩展接口。
|
|
102
|
+
|
|
103
|
+
- 需在显示元素上添加 `class="vditor-reset"`
|
|
104
|
+
- 编辑器初始化时可通过 `options.preview.theme` 设置内置或自己开发的主题列表
|
|
105
|
+
- 内容渲染初始化时可通过 `IPreviewOptions.theme` 设置内置或自己开发的主题
|
|
106
|
+
- 初始化完成后可通过 `setTheme` 或 `setContentTheme` 更新内容主题
|
|
107
|
+
|
|
108
|
+
#### 代码主题
|
|
109
|
+
|
|
110
|
+
代码块所展现的外观。内置 github 等 36 套主题。
|
|
111
|
+
|
|
112
|
+
- 编辑器初始化时可通过 `options.preview.hljs` 对代码块样式、行号、是否启用进行设置
|
|
113
|
+
- 内容渲染初始化时可通过 `IPreviewOptions.hljs` 对代码块样式、行号、是否启用进行设置
|
|
114
|
+
- 初始化完成后可通过 `setTheme` 或 `setCodeTheme` 更新代码主题
|
|
115
|
+
|
|
116
|
+
### API
|
|
117
|
+
|
|
118
|
+
#### id
|
|
119
|
+
|
|
120
|
+
可填入元素 `id` 或元素自身 `HTMLElement`
|
|
121
|
+
|
|
122
|
+
⚠️:当填入元素自身的 `HTMLElement` 时需设置 `options.cache.id` 或将 `options.cache.enable` 设置为 `false`
|
|
123
|
+
|
|
124
|
+
#### options
|
|
125
|
+
|
|
126
|
+
| | 说明 | 默认值 |
|
|
127
|
+
| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
|
|
128
|
+
| i18n | 多语言,参见 ITips | - |
|
|
129
|
+
| undoDelay | 历史记录间隔 | - |
|
|
130
|
+
| after | 编辑器异步渲染完成后的回调方法 | - |
|
|
131
|
+
| height | 编辑器总高度 | 'auto' |
|
|
132
|
+
| minHeight | 编辑区域最小高度 | - |
|
|
133
|
+
| width | 编辑器总宽度,支持 % | 'auto' |
|
|
134
|
+
| placeholder | 输入区域为空时的提示 | '' |
|
|
135
|
+
| lang | 语言种类:de_DE, en_US, es_ES, fr_FR, ja_JP, ko_KR, pt_BR, ru_RU, sv_SE, vi_VN, zh_CN, zh_TW | 'zh_CN' |
|
|
136
|
+
| input(value: string) | 输入后触发 | - |
|
|
137
|
+
| focus(value: string) | 聚焦后触发 | - |
|
|
138
|
+
| blur(value: string) | 失焦后触发 | - |
|
|
139
|
+
| keydown(event: KeyboardEvent) | 按下后触发 | - |
|
|
140
|
+
| esc(value: string) | <kbd>esc</kbd> 按下后触发 | - |
|
|
141
|
+
| ctrlEnter(value: string) | <kbd>⌘/ctrl+enter</kbd> 按下后触发 | - |
|
|
142
|
+
| select(value: string) | 编辑器中选中文字后触发 | - |
|
|
143
|
+
| unSelect() | 编辑器中未选中文字后触发 | - |
|
|
144
|
+
| tab | <kbd>tab</kbd> 键操作字符串,支持 `\t` 及任意字符串 | - |
|
|
145
|
+
| typewriterMode | 是否启用打字机模式 | false |
|
|
146
|
+
| cdn | 配置自建 CDN 地址 | `https://webcdn.wujieai.com/vditor@${VDITOR_VERSION}` |
|
|
147
|
+
| mode | 可选模式:sv, ir, wysiwyg | 'ir' |
|
|
148
|
+
| debugger | 是否显示日志 | false |
|
|
149
|
+
| value | 编辑器初始化值 | '' |
|
|
150
|
+
| theme | 主题:classic, dark | 'classic' |
|
|
151
|
+
| icon | 图标风格:ant, material | 'ant' |
|
|
152
|
+
| customRenders: {language: string, render: (element: HTMLElement, vditor: IVditor) => void}[] | 自定义渲染器 | [] |
|
|
153
|
+
| customWysiwygToolbar(type: TWYSISYGToolbar, element: HTMLElement): void | 对 wysiwyg 模式下的工具栏进行自定义 | - |
|
|
154
|
+
|
|
155
|
+
#### options.toolbar
|
|
156
|
+
|
|
157
|
+
- 工具栏,可使用 name 进行简写: `toolbar: ['emoji', 'br', 'bold', '|', 'line']` 。默认值参见 [src/ts/util/Options.ts](/src/ts/util/Options.ts)
|
|
158
|
+
- name 可枚举为: `emoji`,`headings`,`bold`,`italic`,`strike`,`|`,`line`,`quote`,`list`,`ordered-list`,`check` ,`outdent` ,`indent`,`code`,`inline-code`,`insert-after`,`insert-before` ,`undo`,`redo`,`upload`,`link`,`table`,`record`,`edit-mode`,`both`,`preview`,`fullscreen`,`outline`,`code-theme`,`content-theme`,`export`, `devtools`,`info`,`help`,`br`
|
|
159
|
+
- 当 `name` 不在枚举中时,可以添加自定义按钮,格式如下:
|
|
160
|
+
|
|
161
|
+
```js
|
|
162
|
+
new Vditor("vditor", {
|
|
163
|
+
toolbar: [
|
|
164
|
+
{
|
|
165
|
+
hotkey: "⇧⌘S",
|
|
166
|
+
name: "sponsor",
|
|
167
|
+
tipPosition: "s",
|
|
168
|
+
tip: "成为赞助者",
|
|
169
|
+
className: "right",
|
|
170
|
+
icon: '<svg t="1589994565028" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2808" width="32" height="32"><path d="M506.6 423.6m-29.8 0a29.8 29.8 0 1 0 59.6 0 29.8 29.8 0 1 0-59.6 0Z" fill="#0F0F0F" p-id="2809"></path><path d="M717.8 114.5c-83.5 0-158.4 65.4-211.2 122-52.7-56.6-127.7-122-211.2-122-159.5 0-273.9 129.3-273.9 288.9C21.5 562.9 429.3 913 506.6 913s485.1-350.1 485.1-509.7c0.1-159.5-114.4-288.8-273.9-288.8z" fill="#FAFCFB" p-id="2810"></path><path d="M506.6 926c-22 0-61-20.1-116-59.6-51.5-37-109.9-86.4-164.6-139-65.4-63-217.5-220.6-217.5-324 0-81.4 28.6-157.1 80.6-213.1 53.2-57.2 126.4-88.8 206.3-88.8 40 0 81.8 14.1 124.2 41.9 28.1 18.4 56.6 42.8 86.9 74.2 30.3-31.5 58.9-55.8 86.9-74.2 42.5-27.8 84.3-41.9 124.2-41.9 79.9 0 153.2 31.5 206.3 88.8 52 56 80.6 131.7 80.6 213.1 0 103.4-152.1 261-217.5 324-54.6 52.6-113.1 102-164.6 139-54.8 39.5-93.8 59.6-115.8 59.6zM295.4 127.5c-72.6 0-139.1 28.6-187.3 80.4-47.5 51.2-73.7 120.6-73.7 195.4 0 64.8 78.3 178.9 209.6 305.3 53.8 51.8 111.2 100.3 161.7 136.6 56.1 40.4 88.9 54.8 100.9 54.8s44.7-14.4 100.9-54.8c50.5-36.3 108-84.9 161.7-136.6 131.2-126.4 209.6-240.5 209.6-305.3 0-74.9-26.2-144.2-73.7-195.4-48.2-51.9-114.7-80.4-187.3-80.4-61.8 0-127.8 38.5-201.7 117.9-2.5 2.6-5.9 4.1-9.5 4.1s-7.1-1.5-9.5-4.1C423.2 166 357.2 127.5 295.4 127.5z" fill="#141414" p-id="2811"></path><path d="M353.9 415.6m-33.8 0a33.8 33.8 0 1 0 67.6 0 33.8 33.8 0 1 0-67.6 0Z" fill="#0F0F0F" p-id="2812"></path><path d="M659.3 415.6m-33.8 0a33.8 33.8 0 1 0 67.6 0 33.8 33.8 0 1 0-67.6 0Z" fill="#0F0F0F" p-id="2813"></path><path d="M411.6 538.5c0 52.3 42.8 95 95 95 52.3 0 95-42.8 95-95v-31.7h-190v31.7z" fill="#5B5143" p-id="2814"></path><path d="M506.6 646.5c-59.6 0-108-48.5-108-108v-31.7c0-7.2 5.8-13 13-13h190.1c7.2 0 13 5.8 13 13v31.7c0 59.5-48.5 108-108.1 108z m-82-126.7v18.7c0 45.2 36.8 82 82 82s82-36.8 82-82v-18.7h-164z" fill="#141414" p-id="2815"></path><path d="M450.4 578.9a54.7 27.5 0 1 0 109.4 0 54.7 27.5 0 1 0-109.4 0Z" fill="#EA64F9" p-id="2816"></path><path d="M256 502.7a32.1 27.5 0 1 0 64.2 0 32.1 27.5 0 1 0-64.2 0Z" fill="#EFAFF9" p-id="2817"></path><path d="M703.3 502.7a32.1 27.5 0 1 0 64.2 0 32.1 27.5 0 1 0-64.2 0Z" fill="#EFAFF9" p-id="2818"></path></svg>',
|
|
171
|
+
click() {
|
|
172
|
+
alert("捐赠地址:https://ld246.com/sponsor");
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
});
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
| | 说明 | 默认值 |
|
|
180
|
+
| ------------------------------------ | ------------------------------------------------------ | ------ |
|
|
181
|
+
| name | 唯一标示 | - |
|
|
182
|
+
| icon | svg 图标 | - |
|
|
183
|
+
| tip | 提示 | - |
|
|
184
|
+
| tipPosition | 提示位置:'n', 'ne', 'nw', 's', 'se', 'sw', 'w', 'e' | - |
|
|
185
|
+
| hotkey | 快捷键,格式为<kbd>⇧⌘</kbd>/<kbd>⌘</kbd>/<kbd>⌥⌘</kbd> | - |
|
|
186
|
+
| suffix | 插入编辑器中的后缀 | - |
|
|
187
|
+
| prefix | 插入编辑器中的前缀 | - |
|
|
188
|
+
| click(event: Event, vditor: IVditor) | 自定义按钮点击时触发的事件 | - |
|
|
189
|
+
| className | 样式名 | '' |
|
|
190
|
+
| toolbar?: Array<options.toolbar> | 子菜单 | - |
|
|
191
|
+
|
|
192
|
+
#### options.toolbarConfig
|
|
193
|
+
|
|
194
|
+
| | 说明 | 默认值 |
|
|
195
|
+
| ---- | -------------- | ------ |
|
|
196
|
+
| hide | 是否隐藏工具栏 | false |
|
|
197
|
+
| pin | 是否固定工具栏 | false |
|
|
198
|
+
|
|
199
|
+
#### options.counter
|
|
200
|
+
|
|
201
|
+
| | 说明 | 默认值 |
|
|
202
|
+
| ----------------------------------------------------- | ---------------------------- | ---------- |
|
|
203
|
+
| enable | 是否启用计数器 | false |
|
|
204
|
+
| after(length: number, counter: options.counter): void | 字数统计回调 | - |
|
|
205
|
+
| max | 允许输入的最大值 | - |
|
|
206
|
+
| type | 统计类型:'markdown', 'text' | 'markdown' |
|
|
207
|
+
|
|
208
|
+
#### options.cache
|
|
209
|
+
|
|
210
|
+
| | 说明 | 默认值 |
|
|
211
|
+
| --------------------------- | ---------------------------------------------- | ------ |
|
|
212
|
+
| enable | 是否使用 localStorage 进行缓存 | true |
|
|
213
|
+
| id | 缓存 key,第一个参数为元素且启用缓存时**必填** | - |
|
|
214
|
+
| after(html: string): string | 缓存后的回调 | - |
|
|
215
|
+
|
|
216
|
+
#### options.comment
|
|
217
|
+
|
|
218
|
+
⚠️:仅支持 wysiwyg 模式
|
|
219
|
+
|
|
220
|
+
| | 说明 | 默认值 |
|
|
221
|
+
| ------------------------------------------------------------ | ------------------------ | ------ |
|
|
222
|
+
| enable | 是否启用评论模式 | false |
|
|
223
|
+
| add(id: string, text: string, commentsData: ICommentsData[]) | 添加评论回调 | - |
|
|
224
|
+
| remove(ids: string[]) | 删除评论回调 | - |
|
|
225
|
+
| scroll(top: number) | 滚动回调 | - |
|
|
226
|
+
| adjustTop(commentsData: ICommentsData[]) | 文档修改时,适配评论高度 | - |
|
|
227
|
+
|
|
228
|
+
#### options.preview
|
|
229
|
+
|
|
230
|
+
| | 说明 | 默认值 |
|
|
231
|
+
| ------------------------------- | ---------------------- | ------ |
|
|
232
|
+
| delay | 预览 debounce 毫秒间隔 | 1000 |
|
|
233
|
+
| maxWidth | 预览区域最大宽度 | 800 |
|
|
234
|
+
| mode | 显示模式:both, editor | 'both' |
|
|
235
|
+
| url | md 解析请求 | - |
|
|
236
|
+
| parse(element: HTMLElement) | 预览回调 | - |
|
|
237
|
+
| transform(html: string): string | 渲染之前回调 | - |
|
|
238
|
+
|
|
239
|
+
#### options.preview.hljs
|
|
240
|
+
|
|
241
|
+
| | 说明 | 默认值 |
|
|
242
|
+
| ------------------------------------------------ | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
243
|
+
| defaultLang | 未指定语言时默认使用该语言 | '' |
|
|
244
|
+
| enable | 是否启用代码高亮 | true |
|
|
245
|
+
| style | 可选值参见[Chroma](https://xyproto.github.io/splash/docs/longer/all.html) | `github` |
|
|
246
|
+
| lineNumber | 是否启用行号 | false |
|
|
247
|
+
| langs | 自定义指定语言 | [CODE_LANGUAGES](https://github.com/Vanessa219/vditor/blob/53ca8f9a0e511b37b5dae7c6b15eb933e9e02ccd/src/ts/constants.ts#L20) |
|
|
248
|
+
| renderMenu(code: HTMLElement, copy: HTMLElement) | 渲染菜单按钮 | - |
|
|
249
|
+
|
|
250
|
+
#### options.preview.markdown
|
|
251
|
+
|
|
252
|
+
| | 说明 | 默认值 |
|
|
253
|
+
| ----------------------- | ------------------------------------------ | ------ |
|
|
254
|
+
| autoSpace | 自动空格 | false |
|
|
255
|
+
| gfmAutoLink | 自动链接 | true |
|
|
256
|
+
| fixTermTypo | 自动矫正术语 | false |
|
|
257
|
+
| toc | 插入目录 | false |
|
|
258
|
+
| footnotes | 脚注 | true |
|
|
259
|
+
| codeBlockPreview | wysiwyg 和 ir 模式下是否对代码块进行渲染 | true |
|
|
260
|
+
| mathBlockPreview | wysiwyg 和 ir 模式下是否对数学公式进行渲染 | true |
|
|
261
|
+
| paragraphBeginningSpace | 段落开头空两个 | false |
|
|
262
|
+
| sanitize | 是否启用过滤 XSS | true |
|
|
263
|
+
| listStyle | 为列表添加 data-style 属性 | false |
|
|
264
|
+
| linkBase | 链接相对路径前缀 | '' |
|
|
265
|
+
| linkPrefix | 链接强制前缀 | '' |
|
|
266
|
+
| mark | 启用 mark 标记 | false |
|
|
267
|
+
| sup | 上标 | false |
|
|
268
|
+
| sub | 下标 | false |
|
|
269
|
+
|
|
270
|
+
#### options.preview.theme
|
|
271
|
+
|
|
272
|
+
| | 说明 | 默认值 |
|
|
273
|
+
| ------- | ------------ | ------------------------------------------------------------------------------ |
|
|
274
|
+
| current | 当前主题 | "light" |
|
|
275
|
+
| list | 可选主题列表 | { "ant-design": "Ant Design", dark: "Dark", light: "Light", wechat: "WeChat" } |
|
|
276
|
+
| path | 主题样式地址 | `https://webcdn.wujieai.com/vditor@${VDITOR_VERSION}/dist/css/content-theme` |
|
|
277
|
+
|
|
278
|
+
#### options.preview.math
|
|
279
|
+
|
|
280
|
+
| | 说明 | 默认值 |
|
|
281
|
+
| -------------- | ----------------------------------- | ------- |
|
|
282
|
+
| inlineDigit | 内联数学公式起始 $ 后是否允许数字 | false |
|
|
283
|
+
| macros | 使用 MathJax 渲染时传入的宏定义 | {} |
|
|
284
|
+
| engine | 数学公式渲染引擎:KaTeX, MathJax | 'KaTeX' |
|
|
285
|
+
| mathJaxOptions | 数学公式渲染引擎为 MathJax 时的参数 | - |
|
|
286
|
+
|
|
287
|
+
#### options.preview.actions?: Array<IPreviewAction | IPreviewActionCustom>
|
|
288
|
+
|
|
289
|
+
默认值为 ["desktop", "tablet", "mobile", "mp-wechat", "zhihu"]。
|
|
290
|
+
可从默认值中挑选进行配置,也可使用以下字段进行自定制开发。
|
|
291
|
+
|
|
292
|
+
| | 说明 | 默认值 |
|
|
293
|
+
| ------------------ | ---------------------- | ------ |
|
|
294
|
+
| key | 按钮唯一标识,不能为空 | - |
|
|
295
|
+
| text | 按钮文字 | - |
|
|
296
|
+
| tooltip | 提示 | - |
|
|
297
|
+
| className | 按钮类名 | - |
|
|
298
|
+
| click(key: string) | 按钮点击回调事件 | - |
|
|
299
|
+
|
|
300
|
+
#### options.preview.render.media
|
|
301
|
+
|
|
302
|
+
| | 说明 | 默认值 |
|
|
303
|
+
| ------ | ------------------ | ------ |
|
|
304
|
+
| enable | 是否启用多媒体渲染 | true |
|
|
305
|
+
|
|
306
|
+
#### options.image
|
|
307
|
+
|
|
308
|
+
| | 说明 | 默认值 |
|
|
309
|
+
| ----------------------------- | ------------ | ------ |
|
|
310
|
+
| isPreview | 是否预览图片 | true |
|
|
311
|
+
| preview(bom: Element) => void | 图片预览处理 | - |
|
|
312
|
+
|
|
313
|
+
#### options.link
|
|
314
|
+
|
|
315
|
+
| | 说明 | 默认值 |
|
|
316
|
+
| --------------------------- | ---------------- | ------ |
|
|
317
|
+
| isOpen | 是否打开链接地址 | true |
|
|
318
|
+
| click(bom: Element) => void | 点击链接事件 | - |
|
|
319
|
+
|
|
320
|
+
#### options.hint
|
|
321
|
+
|
|
322
|
+
| | 说明 | 默认值 |
|
|
323
|
+
| --------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
324
|
+
| parse | 是否进行 md 解析 | true |
|
|
325
|
+
| delay | 提示 debounce 毫秒间隔 | 200 |
|
|
326
|
+
| emoji | 默认表情,可从[lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go) 中选取,也可自定义 | { '+1': '👍', '-1': '👎', 'heart': '❤️', 'cold_sweat': '😰' } |
|
|
327
|
+
| emojiTail | 常用表情提示 | - |
|
|
328
|
+
| emojiPath | 表情图片地址 | `https://webcdn.wujieai.com/vditor@${VDITOR_VERSION}/dist/images/emoji` |
|
|
329
|
+
| extend: IHintExtend[] | 对 @/话题等关键字自动补全的扩展 | [] |
|
|
330
|
+
|
|
331
|
+
```ts
|
|
332
|
+
interface IHintData {
|
|
333
|
+
html: string;
|
|
334
|
+
value: string;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
interface IHintExtend {
|
|
338
|
+
key: string;
|
|
339
|
+
|
|
340
|
+
hint?(value: string): IHintData[] | Promise<IHintData[]>;
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
#### options.upload
|
|
345
|
+
|
|
346
|
+
- 文件上传的数据结构如下。后端返回的数据结构不一致时,可使用 `format` 进行转换。
|
|
347
|
+
|
|
348
|
+
```js
|
|
349
|
+
// POST data
|
|
350
|
+
xhr.send(formData); // formData = FormData.append("file[]", File)
|
|
351
|
+
// return data
|
|
352
|
+
{
|
|
353
|
+
"msg": "",
|
|
354
|
+
"code": 0,
|
|
355
|
+
"data": {
|
|
356
|
+
"errFiles": ['filename', 'filename2'],
|
|
357
|
+
"succMap": {
|
|
358
|
+
"filename3": "filepath3",
|
|
359
|
+
"filename3": "filepath3"
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
- 为了防止站外图片失效,`linkToImgUrl` 可将剪贴板中的站外图片地址传到服务器端进行保存处理,其数据结构如下:
|
|
366
|
+
|
|
367
|
+
```js
|
|
368
|
+
// POST data
|
|
369
|
+
xhr.send(JSON.stringify({url: src})); // src 为站外图片地址
|
|
370
|
+
// return data
|
|
371
|
+
{
|
|
372
|
+
msg: '',
|
|
373
|
+
code: 0,
|
|
374
|
+
data : {
|
|
375
|
+
originalURL: '',
|
|
376
|
+
url: ''
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
- `success`,`format`,`error` 不会同时触发,具体调用情况如下:
|
|
382
|
+
|
|
383
|
+
```js
|
|
384
|
+
if (xhr.status === 200) {
|
|
385
|
+
if (vditor.options.upload.success) {
|
|
386
|
+
vditor.options.upload.success(editorElement, xhr.responseText);
|
|
387
|
+
} else {
|
|
388
|
+
let responseText = xhr.responseText;
|
|
389
|
+
if (vditor.options.upload.format) {
|
|
390
|
+
responseText = vditor.options.upload.format(files as File [], xhr.responseText);
|
|
391
|
+
}
|
|
392
|
+
genUploadedLabel(responseText, vditor);
|
|
393
|
+
}
|
|
394
|
+
} else {
|
|
395
|
+
if (vditor.options.upload.error) {
|
|
396
|
+
vditor.options.upload.error(xhr.responseText);
|
|
397
|
+
} else {
|
|
398
|
+
vditor.tip.show(xhr.responseText);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
| | 说明 | 默认值 |
|
|
404
|
+
| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------- |
|
|
405
|
+
| xhr | 上传时使用的 XMLHttpRequest | - |
|
|
406
|
+
| url | 上传 url,为空则不会触发上传相关事件 | '' |
|
|
407
|
+
| max | 上传文件最大 Byte | 10 _ 1024 _ 1024 |
|
|
408
|
+
| linkToImgUrl | 剪切板中包含图片地址时,使用此 url 重新上传 | '' |
|
|
409
|
+
| linkToImgCallback(responseText: string) | 图片地址上传回调 | - |
|
|
410
|
+
| linkToImgFormat(responseText: string): string | 对图片地址上传的返回值进行格式化 | - |
|
|
411
|
+
| success(editor: HTMLPreElement, msg: string) | 上传成功回调 | - |
|
|
412
|
+
| error(msg: string) | 上传失败回调 | - |
|
|
413
|
+
| token | CORS 上传验证,头为 X-Upload-Token | - |
|
|
414
|
+
| withCredentials | 跨站点访问控制 | false |
|
|
415
|
+
| headers | 请求头设置 | - |
|
|
416
|
+
| filename(name: string): string | 文件名安全处理 | name => name.replace(/\W/g, '') |
|
|
417
|
+
| accept | 文件上传类型,同[input accept](https://www.w3schools.com/tags/att_input_accept.asp) | - |
|
|
418
|
+
| validate(files: File[]) => string \| boolean | 校验,成功时返回 true 否则返回错误信息 | - |
|
|
419
|
+
| handler(files: File[]) => string \| null \| Promise<string> \| Promise<null> | 自定义上传,当发生错误时返回错误信息 | - |
|
|
420
|
+
| format(files: File[], responseText: string): string | 对服务端返回的数据进行转换,以满足内置的数据结构 | - |
|
|
421
|
+
| file(files: File[]): File[] \| Promise<File[]> | 将上传的文件处理后再返回 | - |
|
|
422
|
+
| cancel(files: File[]): void | 取消正在上传的文件 | - |
|
|
423
|
+
| setHeaders(): { [key: string]: string } | 上传前使用返回值设置头 | - |
|
|
424
|
+
| extraData: { [key: string]: string \| Blob } | 为 FormData 添加额外的参数 | - |
|
|
425
|
+
| multiple | 上传文件是否为多个 | true |
|
|
426
|
+
| fieldName | 上传字段名称 | 'file[]' |
|
|
427
|
+
| renderLinkDest?(vditor: IVditor, node: ILuteNode, entering: boolean): [string, number] | 处理剪贴板中的图片地址 | '' |
|
|
428
|
+
|
|
429
|
+
#### options.resize
|
|
430
|
+
|
|
431
|
+
| | 说明 | 默认值 |
|
|
432
|
+
| --------------------- | --------------------------- | -------- |
|
|
433
|
+
| enable | 是否支持大小拖拽 | false |
|
|
434
|
+
| position | 拖拽栏位置:'top', 'bottom' | 'bottom' |
|
|
435
|
+
| after(height: number) | 拖拽结束的回调 | - |
|
|
436
|
+
|
|
437
|
+
#### options.classes
|
|
438
|
+
|
|
439
|
+
| | 说明 | 默认值 |
|
|
440
|
+
| ------- | ---------------------- | ------ |
|
|
441
|
+
| preview | 预览元素上的 className | '' |
|
|
442
|
+
|
|
443
|
+
#### options.fullscreen
|
|
444
|
+
|
|
445
|
+
| | 说明 | 默认值 |
|
|
446
|
+
| ----- | -------- | ------ |
|
|
447
|
+
| index | 全屏层级 | 90 |
|
|
448
|
+
|
|
449
|
+
#### options.outline
|
|
450
|
+
|
|
451
|
+
| | 说明 | 默认值 |
|
|
452
|
+
| -------- | ------------------------- | ------ |
|
|
453
|
+
| enable | 初始化是否展现大纲 | false |
|
|
454
|
+
| position | 大纲位置:'left', 'right' | 'left' |
|
|
455
|
+
|
|
456
|
+
#### methods
|
|
457
|
+
|
|
458
|
+
| | 说明 |
|
|
459
|
+
| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
|
|
460
|
+
| exportJSON(markdown: string) | 根据 Markdown 获取对应 JSON |
|
|
461
|
+
| getValue() | 获取 Markdown 内容 |
|
|
462
|
+
| getHTML() | 获取 HTML 内容 |
|
|
463
|
+
| insertValue(value: string, render = true) | 在焦点处插入内容,并默认进行 Markdown 渲染 |
|
|
464
|
+
| focus() | 聚焦到编辑器 |
|
|
465
|
+
| blur() | 让编辑器失焦 |
|
|
466
|
+
| disabled() | 禁用编辑器 |
|
|
467
|
+
| enable() | 解除编辑器禁用 |
|
|
468
|
+
| getSelection(): string | 返回选中的字符串 |
|
|
469
|
+
| setValue(markdown: string, clearStack = false) | 设置编辑器内容且选中清空历史栈 |
|
|
470
|
+
| clearStack() | 清空撤销和重做记录栈 |
|
|
471
|
+
| renderPreview(value?: string) | 设置预览区域内容 |
|
|
472
|
+
| getCursorPosition():{top: number, left: number} | 获取焦点位置 |
|
|
473
|
+
| deleteValue() | 删除选中内容 |
|
|
474
|
+
| updateValue(value: string) | 更新选中内容 |
|
|
475
|
+
| isUploading() | 上传是否还在进行中 |
|
|
476
|
+
| clearCache() | 清除缓存 |
|
|
477
|
+
| disabledCache() | 禁用缓存 |
|
|
478
|
+
| enableCache() | 启用缓存 |
|
|
479
|
+
| html2md(value: string) | HTML 转 md |
|
|
480
|
+
| tip(text: string, time: number) | 消息提示。time 为 0 将一直显示 |
|
|
481
|
+
| setPreviewMode(mode: "both" \| "editor") | 设置预览模式 |
|
|
482
|
+
| setTheme(theme: "dark" \| "classic", contentTheme?: string, codeTheme?: string, contentThemePath?: string) | 设置主题、内容主题及代码块风格 |
|
|
483
|
+
| getCurrentMode(): string | 获取编辑器当前编辑模式 |
|
|
484
|
+
| destroy() | 销毁编辑器 |
|
|
485
|
+
| getCommentIds(): {id: string, top: number}[] | 获取所有评论 |
|
|
486
|
+
| hlCommentIds(ids: string[]) | 高亮评论 |
|
|
487
|
+
| unHlCommentIds(ids: string[]) | 取消评论高亮 |
|
|
488
|
+
| removeCommentIds(removeIds: string[]) | 删除评论 |
|
|
489
|
+
| updateToolbarConfig(config: {hide?: boolean, pin?: boolean}) | 更新工具栏配置 |
|
|
490
|
+
| insertEmptyBlock(position: InsertPosition) | 插入空快 |
|
|
491
|
+
|
|
492
|
+
#### static methods
|
|
493
|
+
|
|
494
|
+
- 不需要进行编辑操作时,仅需引入 [`method.min.js`](https://unpkg.com/vditor/dist/) 后如下直接调用
|
|
495
|
+
|
|
496
|
+
```js
|
|
497
|
+
Vditor.mermaidRender(document);
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
```js
|
|
501
|
+
import VditorPreview from "vditor/dist/method.min";
|
|
502
|
+
VditorPreview.mermaidRender(document);
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
- 需要对页面中的 Markdown 进行渲染时可直接调用 `preview` 方法,参数如下:
|
|
506
|
+
|
|
507
|
+
```ts
|
|
508
|
+
previewElement: HTMLDivElement, // 使用该元素进行渲染
|
|
509
|
+
markdown: string, // 需要渲染的 markdown 原文
|
|
510
|
+
options?: IPreviewOptions {
|
|
511
|
+
mode: "dark" | "light";
|
|
512
|
+
anchor?: number; // 为标题添加锚点 0:不渲染;1:渲染于标题前;2:渲染于标题后,默认 0
|
|
513
|
+
customEmoji?: { [key: string]: string }; // 自定义 emoji,默认为 {}
|
|
514
|
+
lang?: (keyof II18nLang); // 语言,默认为 'zh_CN'
|
|
515
|
+
emojiPath?: string; // 表情图片路径
|
|
516
|
+
hljs?: IHljs; // 参见 options.preview.hljs
|
|
517
|
+
speech?: { // 对选中后的内容进行阅读
|
|
518
|
+
enable?: boolean,
|
|
519
|
+
};
|
|
520
|
+
math?: IMath; // 数学公式渲染配置
|
|
521
|
+
cdn?: string; // 自建 CDN 地址
|
|
522
|
+
transform?(html: string): string; // 在渲染前进行的回调方法
|
|
523
|
+
after?(); // 渲染完成后的回调
|
|
524
|
+
lazyLoadImage?: string; // 设置为 Loading 图片地址后将启用图片的懒加载
|
|
525
|
+
markdown?: options.preview.markdown;
|
|
526
|
+
theme?: options.preview.theme;
|
|
527
|
+
render?: options.preview.render;
|
|
528
|
+
renderers?: ILuteRender; // 自定义渲染 https://ld246.com/article/1588412297062
|
|
529
|
+
}
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
- ⚠️ `method.min.js` 和 `index.min.js` 不可同时引入
|
|
533
|
+
|
|
534
|
+
| | 说明 |
|
|
535
|
+
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
|
|
536
|
+
| previewImage(oldImgElement: HTMLImageElement, lang: keyof II18n = "zh_CN", theme = "classic") | 点击图片预览 |
|
|
537
|
+
| mermaidRender(element: HTMLElement, cdn = options.cdn, theme = options.theme) | 流程图/时序图/甘特图 |
|
|
538
|
+
| SMILESRender(element: HTMLElement, cdn = options.cdn, theme = options.theme) | 化学物质结构 |
|
|
539
|
+
| markmapRender(element: HTMLElement, cdn = options.cdn) | markdown 思维导图 |
|
|
540
|
+
| flowchartRender(element: HTMLElement, cdn = options.cdn) | flowchart 渲染 |
|
|
541
|
+
| codeRender(element: HTMLElement, option?: IHljs) | 为 element 中的代码块添加复制按钮 |
|
|
542
|
+
| chartRender(element: (HTMLElement \| Document) = document, cdn = options.cdn, theme = options.theme) | 图表渲染 |
|
|
543
|
+
| mindmapRender(element: (HTMLElement \| Document) = document, cdn = options.cdn, theme = options.theme) | 脑图渲染 |
|
|
544
|
+
| plantumlRender(element: (HTMLElement \| Document) = document, cdn = options.cdn) | plantuml 渲染 |
|
|
545
|
+
| abcRender(element: (HTMLElement \| Document) = document, cdn = options.cdn) | 五线谱渲染 |
|
|
546
|
+
| md2html(mdText: string, options?: IPreviewOptions): Promise\<string> | Markdown 文本转换为 HTML,该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vanessa#toc_h3_1) |
|
|
547
|
+
| preview(previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions) | 页面 Markdown 文章渲染 |
|
|
548
|
+
| highlightRender(hljsOption?: IHljs, element?: HTMLElement \| Document, cdn = options.cdn) | 为 element 中的代码块进行高亮渲染 |
|
|
549
|
+
| mediaRender(element: HTMLElement) | 为[特定链接](https://ld246.com/article/1589813914768)分别渲染为视频、音频、嵌入的 iframe |
|
|
550
|
+
| mathRender(element: HTMLElement, options?: {cdn?: string, math?: IMath}) | 对数学公式进行渲染 |
|
|
551
|
+
| speechRender(element: HTMLElement, lang?: (keyof II18nLang)) | 对选中的文字进行阅读 |
|
|
552
|
+
| graphvizRender(element: HTMLElement, cdn?: string) | 对 graphviz 进行渲染 |
|
|
553
|
+
| outlineRender(contentElement: HTMLElement, targetElement: Element) | 对大纲进行渲染 |
|
|
554
|
+
| lazyLoadImageRender(element: (HTMLElement \| Document) = document) | 对启用懒加载的图片进行渲染 |
|
|
555
|
+
| setCodeTheme(codeTheme: string, cdn = options.cdn) | 设置代码主题,codeTheme 参见 options.preview.hljs.style |
|
|
556
|
+
| setContentTheme(contentTheme: string, path: string) | 设置内容主题,contentTheme 参见 options.preview.theme.list |
|
|
557
|
+
|
|
558
|
+
## 🏗 开发文档
|
|
559
|
+
|
|
560
|
+
### 原理相关
|
|
561
|
+
|
|
562
|
+
- [关于所见即所得 Markdown 编辑器的讨论](https://ld246.com/article/1579414663700)
|
|
563
|
+
- [Vditor 实现 Markdown 所见即所得](https://ld246.com/article/1577370404903)
|
|
564
|
+
- [Lute 一款对中文语境优化的 Markdown 引擎,支持 Go 和 JavaScript](https://ld246.com/article/1567047822949)
|
|
565
|
+
|
|
566
|
+
### 环境
|
|
567
|
+
|
|
568
|
+
1. 安装 [node](https://nodejs.org/) LTS 版本
|
|
569
|
+
2. [下载](https://github.com/Vanessa219/vditor/archive/master.zip)最新代码并解压
|
|
570
|
+
3. 根目录运行 `npm install`
|
|
571
|
+
4. `npm run start` 启动本地服务器,打开 http://localhost:9000
|
|
572
|
+
5. 修改代码
|
|
573
|
+
6. `npm run build` 打包代码到 dist 目录
|
|
574
|
+
|
|
575
|
+
### CDN 切换
|
|
576
|
+
|
|
577
|
+
由于使用了按需加载的机制,默认 CDN 为 [https://unpkg.com/vditor](https://unpkg.com/vditor)@版本号
|
|
578
|
+
|
|
579
|
+
如果代码有修改或需要使用自建 CDN 的话,可按以下步骤进行操作:
|
|
580
|
+
|
|
581
|
+
- 初始化时,需对 `options` 及 `IPreviewOptions` 中的 `cdn`,`emojiPath`, `themes` 进行配置
|
|
582
|
+
- `highlightRender`,`mathRender`,`abcRender`,`chartRender`,`mermaidRender`,`SMILESRender`,`markmapRender`,`flowchartRender`,`mindmapRender`,`plantumlRender`,`graphvizRender`,`setCodeTheme`,`setContentTheme` 方法中需添加 cdn 参数
|
|
583
|
+
- 将 build 成功的 dist 目录或 [jsDelivr](https://www.jsdelivr.com/package/npm/vditor?path=dist) 中的 dist 目录拷贝至正确的位置
|
|
584
|
+
|
|
585
|
+
### 升级
|
|
586
|
+
|
|
587
|
+
版本升级时请**仔细阅读** [CHANGELOG](/CHANGELOG.md) 中的**升级**部分
|
|
588
|
+
|
|
589
|
+
## Ⓜ️ Markdown 使用指南
|
|
590
|
+
|
|
591
|
+
- [基础语法](https://ld246.com/article/1583129520165)
|
|
592
|
+
- [扩展语法](https://ld246.com/article/1583305480675)
|
|
593
|
+
- [速查手册](https://ld246.com/article/1583308420519)
|
|
594
|
+
|
|
595
|
+
## 🏘️ 社区
|
|
596
|
+
|
|
597
|
+
- [官网](https://b3log.org/vditor)
|
|
598
|
+
- [讨论区](https://ld246.com/tag/vditor)
|
|
599
|
+
- [报告问题](https://github.com/Vanessa219/vditor/issues/new)
|
|
600
|
+
|
|
601
|
+
## 📄 授权
|
|
602
|
+
|
|
603
|
+
Vditor 使用 [MIT](https://opensource.org/licenses/MIT) 开源协议。
|
|
604
|
+
|
|
605
|
+
## 🙏 鸣谢
|
|
606
|
+
|
|
607
|
+
- [Lute](https://github.com/88250/lute):🎼 一款结构化的 Markdown 引擎,支持 Go 和 JavaScript
|
|
608
|
+
- [highlight.js](https://github.com/highlightjs/highlight.js):JavaScript syntax highlighter
|
|
609
|
+
- [mermaid](https://github.com/knsv/mermaid):Generation of diagram and flowchart from text in a similar manner as Markdown
|
|
610
|
+
- [incubator-echarts](https://github.com/apache/incubator-echarts):A powerful, interactive charting and visualization library for browser
|
|
611
|
+
- [abcjs](https://github.com/paulrosen/abcjs):JavaScript library for rendering standard music notation in a browser
|
|
612
|
+
|
|
613
|
+
## 📽️ 历史
|
|
614
|
+
|
|
615
|
+
我们在开发 [Sym](https://github.com/88250/symphony) 的初期是直接使用 WYSIWYG 富文本编辑器的。那时候基于 HTML 的编辑器非常流行,项目中引用起来也很方便,也符合用户当时的使用习惯。
|
|
616
|
+
|
|
617
|
+
后来,Markdown 的崛起逐步改变了大家的排版方式。再加上我们其他几个项目都是面向程序员用户的,所以迁移到 md 上也是大势所趋。我们选择了 [CodeMirror](https://github.com/codemirror/CodeMirror),这是一款优秀的编辑器,它对开发者提供了丰富的编程接口,对各种浏览器的兼容性也比较好。
|
|
618
|
+
|
|
619
|
+
再后来,随着我们项目业务需求方面的沉淀,使用 CodeMirror 有时候会感到比较“笨重”。比如要实现 @自动完成用户名列表、插入 Emoji、上传文件等就需要比较深入的二次开发,而这些业务需求恰恰是很多项目场景共有且必备的。
|
|
620
|
+
|
|
621
|
+
终于,我们决定开始在 Sym 中自己实现编辑器。随着几个版本的迭代,Sym 的编辑器也日趋成熟。在我们运营的社区[链滴](https://ld246.com)上陆续有人问我们是否能将编辑器单独抽离出来提供给大家使用。与此同时,我们的前端主程 [V](https://ld246.com/member/Vanessa) 同学对于维护分散在各个项目中的编辑器也感到有点力不从心,外加对 TypeScript 的好感,所以就决定使用 ts 来实现一个全新的浏览器端 md 编辑器。
|
|
622
|
+
|
|
623
|
+
于是,Vditor 就这样诞生了。
|