UNPKG

vditor

Version:

♏ 易于使用的 Markdown 编辑器,为适配不同的应用场景而生

955 lines (872 loc) 121 kB
/*! * Vditor v3.11.1 - A markdown editor written in TypeScript. * * MIT License * * Copyright (c) 2018-present B3log 开源, b3log.org * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["Vditor"] = factory(); else root["Vditor"] = factory(); })(this, function() { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ 145: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "g": () => (/* binding */ Constants) /* harmony export */ }); /* unused harmony export VDITOR_VERSION */ var _VDITOR_VERSION = (/* unused pure expression or super */ null && ("3.11.1")); var Constants = /** @class */ (function () { function Constants() { } Constants.ZWSP = "\u200b"; Constants.DROP_EDITOR = "application/editor"; Constants.MOBILE_WIDTH = 520; Constants.CLASS_MENU_DISABLED = "vditor-menu--disabled"; Constants.EDIT_TOOLBARS = ["emoji", "headings", "bold", "italic", "strike", "link", "list", "ordered-list", "outdent", "indent", "check", "line", "quote", "code", "inline-code", "insert-after", "insert-before", "upload", "record", "table"]; Constants.CODE_THEME = ["a11y-dark", "agate", "an-old-hope", "androidstudio", "arta", "atom-one-dark", "atom-one-dark-reasonable", "base16/3024", "base16/apathy", "base16/apprentice", "base16/ashes", "base16/atelier-cave", "base16/atelier-dune", "base16/atelier-estuary", "base16/atelier-forest", "base16/atelier-heath", "base16/atelier-lakeside", "base16/atelier-plateau", "base16/atelier-savanna", "base16/atelier-seaside", "base16/atelier-sulphurpool", "base16/atlas", "base16/bespin", "base16/black-metal", "base16/black-metal-bathory", "base16/black-metal-burzum", "base16/black-metal-dark-funeral", "base16/black-metal-gorgoroth", "base16/black-metal-immortal", "base16/black-metal-khold", "base16/black-metal-marduk", "base16/black-metal-mayhem", "base16/black-metal-nile", "base16/black-metal-venom", "base16/brewer", "base16/bright", "base16/brogrammer", "base16/brush-trees-dark", "base16/chalk", "base16/circus", "base16/classic-dark", "base16/codeschool", "base16/colors", "base16/danqing", "base16/darcula", "base16/dark-violet", "base16/darkmoss", "base16/darktooth", "base16/decaf", "base16/default-dark", "base16/dracula", "base16/edge-dark", "base16/eighties", "base16/embers", "base16/equilibrium-dark", "base16/equilibrium-gray-dark", "base16/espresso", "base16/eva", "base16/eva-dim", "base16/flat", "base16/framer", "base16/gigavolt", "base16/google-dark", "base16/grayscale-dark", "base16/green-screen", "base16/gruvbox-dark-hard", "base16/gruvbox-dark-medium", "base16/gruvbox-dark-pale", "base16/gruvbox-dark-soft", "base16/hardcore", "base16/harmonic16-dark", "base16/heetch-dark", "base16/helios", "base16/hopscotch", "base16/horizon-dark", "base16/humanoid-dark", "base16/ia-dark", "base16/icy-dark", "base16/ir-black", "base16/isotope", "base16/kimber", "base16/london-tube", "base16/macintosh", "base16/marrakesh", "base16/materia", "base16/material", "base16/material-darker", "base16/material-palenight", "base16/material-vivid", "base16/mellow-purple", "base16/mocha", "base16/monokai", "base16/nebula", "base16/nord", "base16/nova", "base16/ocean", "base16/oceanicnext", "base16/onedark", "base16/outrun-dark", "base16/papercolor-dark", "base16/paraiso", "base16/pasque", "base16/phd", "base16/pico", "base16/pop", "base16/porple", "base16/qualia", "base16/railscasts", "base16/rebecca", "base16/ros-pine", "base16/ros-pine-moon", "base16/sandcastle", "base16/seti-ui", "base16/silk-dark", "base16/snazzy", "base16/solar-flare", "base16/solarized-dark", "base16/spacemacs", "base16/summercamp", "base16/summerfruit-dark", "base16/synth-midnight-terminal-dark", "base16/tango", "base16/tender", "base16/tomorrow-night", "base16/twilight", "base16/unikitty-dark", "base16/vulcan", "base16/windows-10", "base16/windows-95", "base16/windows-high-contrast", "base16/windows-nt", "base16/woodland", "base16/xcode-dusk", "base16/zenburn", "codepen-embed", "dark", "devibeans", "far", "felipec", "github-dark", "github-dark-dimmed", "gml", "gradient-dark", "hybrid", "ir-black", "isbl-editor-dark", "kimbie-dark", "lioshi", "monokai", "monokai-sublime", "night-owl", "nnfx-dark", "nord", "obsidian", "panda-syntax-dark", "paraiso-dark", "pojoaque", "qtcreator-dark", "rainbow", "shades-of-purple", "srcery", "stackoverflow-dark", "sunburst", "tomorrow-night-blue", "tomorrow-night-bright", "tokyo-night-dark", "vs2015", "xt256", "ant-design", "a11y-light", "arduino-light", "ascetic", "atom-one-light", "base16/atelier-cave-light", "base16/atelier-dune-light", "base16/atelier-estuary-light", "base16/atelier-forest-light", "base16/atelier-heath-light", "base16/atelier-lakeside-light", "base16/atelier-plateau-light", "base16/atelier-savanna-light", "base16/atelier-seaside-light", "base16/atelier-sulphurpool-light", "base16/brush-trees", "base16/classic-light", "base16/cupcake", "base16/cupertino", "base16/default-light", "base16/dirtysea", "base16/edge-light", "base16/equilibrium-gray-light", "base16/equilibrium-light", "base16/fruit-soda", "base16/github", "base16/google-light", "base16/grayscale-light", "base16/gruvbox-light-hard", "base16/gruvbox-light-medium", "base16/gruvbox-light-soft", "base16/harmonic16-light", "base16/heetch-light", "base16/humanoid-light", "base16/horizon-light", "base16/ia-light", "base16/material-lighter", "base16/mexico-light", "base16/one-light", "base16/papercolor-light", "base16/ros-pine-dawn", "base16/sagelight", "base16/shapeshifter", "base16/silk-light", "base16/solar-flare-light", "base16/solarized-light", "base16/summerfruit-light", "base16/synth-midnight-terminal-light", "base16/tomorrow", "base16/unikitty-light", "base16/windows-10-light", "base16/windows-95-light", "base16/windows-high-contrast-light", "brown-paper", "base16/windows-nt-light", "color-brewer", "docco", "foundation", "github", "googlecode", "gradient-light", "grayscale", "idea", "intellij-light", "isbl-editor-light", "kimbie-light", "lightfair", "magula", "mono-blue", "nnfx-light", "panda-syntax-light", "paraiso-light", "purebasic", "qtcreator-light", "routeros", "school-book", "stackoverflow-light", "tokyo-night-light", "vs", "xcode", "default"]; Constants.ALIAS_CODE_LANGUAGES = [ // 自定义 "abc", "plantuml", "mermaid", "flowchart", "echarts", "mindmap", "graphviz", "math", "markmap", "smiles", // 别名 "js", "ts", "html", "toml", "c#", "bat" ]; Constants.CDN = "https://unpkg.com/vditor@".concat("3.11.1"); Constants.MARKDOWN_OPTIONS = { autoSpace: false, gfmAutoLink: true, codeBlockPreview: true, fixTermTypo: false, footnotes: true, linkBase: "", linkPrefix: "", listStyle: false, mark: false, mathBlockPreview: true, paragraphBeginningSpace: false, sanitize: true, toc: false, }; Constants.HLJS_OPTIONS = { enable: true, lineNumber: false, defaultLang: "", style: "github", }; Constants.MATH_OPTIONS = { engine: "KaTeX", inlineDigit: false, macros: {}, }; Constants.THEME_OPTIONS = { current: "light", list: { "ant-design": "Ant Design", "dark": "Dark", "light": "Light", "wechat": "WeChat", }, path: "".concat(Constants.CDN, "/dist/css/content-theme"), }; return Constants; }()); /***/ }), /***/ 825: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "J": () => (/* binding */ SMILESRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494); var SMILESRender = function (element, cdn, theme) { if (element === void 0) { element = document; } if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; } var SMILESElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getElements(element); if (SMILESElements.length > 0) { (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/smiles-drawer/smiles-drawer.min.js?v=2.1.7"), "vditorAbcjsScript").then(function () { var sd = new SmiDrawer({}, {}); SMILESElements.forEach(function (item) { var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.SMILESRenderAdapter.getCode(item).trim(); if (item.getAttribute("data-processed") === "true" || code.trim() === "") { return; } var id = "smiles" + (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .genUUID */ .Wb)(); item.innerHTML = "<svg id=\"".concat(id, "\"></svg>"); sd.draw(code, '#' + id, theme === "dark" ? "dark" : undefined); item.setAttribute("data-processed", "true"); }); }); } }; /***/ }), /***/ 135: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Q": () => (/* binding */ abcRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); var abcRender = function (element, cdn) { if (element === void 0) { element = document; } if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; } var abcElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getElements(element); if (abcElements.length > 0) { (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/abcjs/abcjs_basic.min.js"), "vditorAbcjsScript").then(function () { abcElements.forEach(function (item) { if (item.parentElement.classList.contains("vditor-wysiwyg__pre") || item.parentElement.classList.contains("vditor-ir__marker--pre")) { return; } if (item.getAttribute("data-processed") === "true") { return; } ABCJS.renderAbc(item, _adapterRender__WEBPACK_IMPORTED_MODULE_1__.abcRenderAdapter.getCode(item).trim()); item.style.overflowX = "auto"; item.setAttribute("data-processed", "true"); }); }); } }; /***/ }), /***/ 840: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "mathRenderAdapter": () => (/* binding */ mathRenderAdapter), /* harmony export */ "SMILESRenderAdapter": () => (/* binding */ SMILESRenderAdapter), /* harmony export */ "mermaidRenderAdapter": () => (/* binding */ mermaidRenderAdapter), /* harmony export */ "markmapRenderAdapter": () => (/* binding */ markmapRenderAdapter), /* harmony export */ "mindmapRenderAdapter": () => (/* binding */ mindmapRenderAdapter), /* harmony export */ "chartRenderAdapter": () => (/* binding */ chartRenderAdapter), /* harmony export */ "abcRenderAdapter": () => (/* binding */ abcRenderAdapter), /* harmony export */ "graphvizRenderAdapter": () => (/* binding */ graphvizRenderAdapter), /* harmony export */ "flowchartRenderAdapter": () => (/* binding */ flowchartRenderAdapter), /* harmony export */ "plantumlRenderAdapter": () => (/* binding */ plantumlRenderAdapter) /* harmony export */ }); var mathRenderAdapter = { getCode: function (el) { return el.textContent; }, getElements: function (element) { return element.querySelectorAll(".language-math"); }, }; var SMILESRenderAdapter = { getCode: function (el) { return el.textContent; }, getElements: function (element) { return element.querySelectorAll(".language-smiles"); }, }; var mermaidRenderAdapter = { /** 不仅要返回code,并且需要将 code 设置为 el 的 innerHTML */ getCode: function (el) { return el.textContent; }, getElements: function (element) { return element.querySelectorAll(".language-mermaid"); }, }; var markmapRenderAdapter = { getCode: function (el) { return el.textContent; }, getElements: function (element) { return element.querySelectorAll(".language-markmap"); }, }; var mindmapRenderAdapter = { getCode: function (el) { return el.getAttribute("data-code"); }, getElements: function (el) { return el.querySelectorAll(".language-mindmap"); }, }; var chartRenderAdapter = { getCode: function (el) { return el.innerText; }, getElements: function (el) { return el.querySelectorAll(".language-echarts"); }, }; var abcRenderAdapter = { getCode: function (el) { return el.textContent; }, getElements: function (el) { return el.querySelectorAll(".language-abc"); }, }; var graphvizRenderAdapter = { getCode: function (el) { return el.textContent; }, getElements: function (el) { return el.querySelectorAll(".language-graphviz"); }, }; var flowchartRenderAdapter = { getCode: function (el) { return el.textContent; }, getElements: function (el) { return el.querySelectorAll(".language-flowchart"); }, }; var plantumlRenderAdapter = { getCode: function (el) { return el.textContent; }, getElements: function (el) { return el.querySelectorAll(".language-plantuml"); }, }; /***/ }), /***/ 775: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "p": () => (/* binding */ chartRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(494); var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (undefined && undefined.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var chartRender = function (element, cdn, theme) { if (element === void 0) { element = document; } if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; } var echartsElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getElements(element); if (echartsElements.length > 0) { (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/echarts/echarts.min.js?v=5.5.1"), "vditorEchartsScript").then(function () { echartsElements.forEach(function (e) { return __awaiter(void 0, void 0, void 0, function () { var text, option, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: if (e.parentElement.classList.contains("vditor-wysiwyg__pre") || e.parentElement.classList.contains("vditor-ir__marker--pre")) { return [2 /*return*/]; } text = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.chartRenderAdapter.getCode(e).trim(); if (!text) { return [2 /*return*/]; } _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); if (e.getAttribute("data-processed") === "true") { return [2 /*return*/]; } return [4 /*yield*/, (0,_util_function__WEBPACK_IMPORTED_MODULE_3__/* .looseJsonParse */ .Qf)(text)]; case 2: option = _a.sent(); echarts.init(e, theme === "dark" ? "dark" : undefined).setOption(option); e.setAttribute("data-processed", "true"); return [3 /*break*/, 4]; case 3: error_1 = _a.sent(); e.className = "vditor-reset--error"; e.innerHTML = "echarts render error: <br>".concat(error_1); return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); }); }); } }; /***/ }), /***/ 428: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "O": () => (/* binding */ codeRender) /* harmony export */ }); /* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(105); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); var codeRender = function (element, option) { Array.from(element.querySelectorAll("pre > code")).filter(function (e, index) { if (e.parentElement.classList.contains("vditor-wysiwyg__pre") || e.parentElement.classList.contains("vditor-ir__marker--pre")) { return false; } if (e.classList.contains("language-mermaid") || e.classList.contains("language-flowchart") || e.classList.contains("language-echarts") || e.classList.contains("language-mindmap") || e.classList.contains("language-plantuml") || e.classList.contains("language-markmap") || e.classList.contains("language-abc") || e.classList.contains("language-graphviz") || e.classList.contains("language-math") || e.classList.contains("language-smiles")) { return false; } if (e.style.maxHeight.indexOf("px") > -1) { return false; } // 避免预览区在渲染后由于代码块过多产生性能问题 https://github.com/b3log/vditor/issues/67 if (element.classList.contains("vditor-preview") && index > 5) { return false; } return true; }).forEach(function (e) { var _a, _b, _c; var codeText = e.innerText; if (e.classList.contains("highlight-chroma")) { var codeElement = e.cloneNode(true); codeElement.querySelectorAll(".highlight-ln").forEach(function (item) { item.remove(); }); codeText = codeElement.innerText; } else if (codeText.endsWith("\n")) { codeText = codeText.substr(0, codeText.length - 1); } var iconHTML = '<svg><use xlink:href="#vditor-icon-copy"></use></svg>'; if (!document.getElementById("vditorIconScript")) { iconHTML = '<svg viewBox="0 0 32 32"><path d="M22.545-0h-17.455c-1.6 0-2.909 1.309-2.909 2.909v20.364h2.909v-20.364h17.455v-2.909zM26.909 5.818h-16c-1.6 0-2.909 1.309-2.909 2.909v20.364c0 1.6 1.309 2.909 2.909 2.909h16c1.6 0 2.909-1.309 2.909-2.909v-20.364c0-1.6-1.309-2.909-2.909-2.909zM26.909 29.091h-16v-20.364h16v20.364z"></path></svg>'; } var divElement = document.createElement("div"); divElement.className = "vditor-copy"; 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>"); var textarea = document.createElement("textarea"); textarea.value = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_1__/* .code160to32 */ .X)(codeText); divElement.insertAdjacentElement("afterbegin", textarea); if (option && option.renderMenu) { option.renderMenu(e, divElement); } e.before(divElement); e.style.maxHeight = (window.outerHeight - 40) + "px"; // https://github.com/Vanessa219/vditor/issues/1356 e.insertAdjacentHTML("afterend", "<span style=\"position: absolute\">".concat(_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.ZWSP */ .g.ZWSP, "</span>")); }); }; /***/ }), /***/ 325: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "P": () => (/* binding */ flowchartRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); var flowchartRender = function (element, cdn) { if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; } var flowchartElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getElements(element); if (flowchartElements.length === 0) { return; } (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/flowchart.js/flowchart.min.js"), "vditorFlowchartScript").then(function () { flowchartElements.forEach(function (item) { if (item.getAttribute("data-processed") === "true") { return; } var flowchartObj = flowchart.parse(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.flowchartRenderAdapter.getCode(item)); item.innerHTML = ""; flowchartObj.drawSVG(item); item.setAttribute("data-processed", "true"); }); }); }; /***/ }), /***/ 483: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "v": () => (/* binding */ graphvizRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); var graphvizRender = function (element, cdn) { if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; } var graphvizElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getElements(element); if (graphvizElements.length === 0) { return; } (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/graphviz/viz.js"), "vditorGraphVizScript").then(function () { graphvizElements.forEach(function (e) { var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.graphvizRenderAdapter.getCode(e); if (e.parentElement.classList.contains("vditor-wysiwyg__pre") || e.parentElement.classList.contains("vditor-ir__marker--pre")) { return; } if (e.getAttribute("data-processed") === "true" || code.trim() === "") { return; } try { var blob = new Blob(["importScripts('".concat(document.getElementById("vditorGraphVizScript").src.replace("viz.js", "full.render.js"), "');")], { type: "application/javascript" }); var url = window.URL || window.webkitURL; var blobUrl = url.createObjectURL(blob); var worker = new Worker(blobUrl); new Viz({ worker: worker }) .renderSVGElement(code).then(function (result) { e.innerHTML = result.outerHTML; }).catch(function (error) { e.innerHTML = "graphviz render error: <br>".concat(error); e.className = "vditor-reset--error"; }); } catch (e) { console.error("graphviz error", e); } e.setAttribute("data-processed", "true"); }); }); }; /***/ }), /***/ 999: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "s": () => (/* binding */ highlightRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(290); var highlightRender = function (hljsOption, element, cdn) { if (element === void 0) { element = document; } if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; } var style = hljsOption.style; if (!_constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CODE_THEME.includes */ .g.CODE_THEME.includes(style)) { style = "github"; } var vditorHljsStyle = document.getElementById("vditorHljsStyle"); var href = "".concat(cdn, "/dist/js/highlight.js/styles/").concat(style, ".min.css"); if (vditorHljsStyle && vditorHljsStyle.getAttribute('href') !== href) { vditorHljsStyle.remove(); } (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_1__/* .addStyle */ .c)("".concat(cdn, "/dist/js/highlight.js/styles/").concat(style, ".min.css"), "vditorHljsStyle"); if (hljsOption.enable === false) { return; } var codes = element.querySelectorAll("pre > code"); if (codes.length === 0) { return; } (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/highlight.js/highlight.min.js?v=11.7.0"), "vditorHljsScript").then(function () { (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/highlight.js/third-languages.js?v=1.0.1"), "vditorHljsThirdScript").then(function () { element.querySelectorAll("pre > code").forEach(function (block) { // ir & wysiwyg 区域不渲染 if (block.parentElement.classList.contains("vditor-ir__marker--pre") || block.parentElement.classList.contains("vditor-wysiwyg__pre")) { return; } if (block.classList.contains("language-mermaid") || block.classList.contains("language-flowchart") || block.classList.contains("language-echarts") || block.classList.contains("language-mindmap") || block.classList.contains("language-plantuml") || block.classList.contains("language-smiles") || block.classList.contains("language-abc") || block.classList.contains("language-graphviz") || block.classList.contains("language-math")) { return; } if (hljsOption.defaultLang !== "" && block.className.indexOf("language-") === -1) { block.classList.add("language-" + hljsOption.defaultLang); } var language = block.className.replace("language-", ""); if (!window.hljs.getLanguage(language)) { language = "plaintext"; } block.innerHTML = window.hljs.highlight(block.textContent, { language: language, ignoreIllegals: true }).value; block.classList.add("hljs"); if (!hljsOption.lineNumber) { return; } block.classList.add("vditor-linenumber"); var linenNumberTemp = block.querySelector(".vditor-linenumber__temp"); if (!linenNumberTemp) { linenNumberTemp = document.createElement("div"); linenNumberTemp.className = "vditor-linenumber__temp"; block.insertAdjacentElement("beforeend", linenNumberTemp); } var whiteSpace = getComputedStyle(block).whiteSpace; var isSoftWrap = false; if (whiteSpace === "pre-wrap" || whiteSpace === "pre-line") { isSoftWrap = true; } var lineNumberHTML = ""; var lineList = block.textContent.split(/\r\n|\r|\n/g); lineList.pop(); lineList.map(function (line) { var lineHeight = ""; if (isSoftWrap) { linenNumberTemp.textContent = line || "\n"; lineHeight = " style=\"height:".concat(linenNumberTemp.getBoundingClientRect().height, "px\""); } lineNumberHTML += "<span".concat(lineHeight, "></span>"); }); linenNumberTemp.style.display = "none"; lineNumberHTML = "<span class=\"vditor-linenumber__rows\">".concat(lineNumberHTML, "</span>"); block.insertAdjacentHTML("beforeend", lineNumberHTML); }); }); }); }; /***/ }), /***/ 11: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "K": () => (/* binding */ markmapRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); var enabled = {}; var transform = function (transformer, content) { var result = transformer.transform(content); var keys = Object.keys(result.features).filter(function (key) { return !enabled[key]; }); keys.forEach(function (key) { enabled[key] = true; }); var _a = transformer.getAssets(keys), styles = _a.styles, scripts = _a.scripts; var markmap = window.markmap; if (styles) markmap.loadCSS(styles); if (scripts) markmap.loadJS(scripts); return result; }; var init = function (el, code) { var _a = window.markmap, Transformer = _a.Transformer, Markmap = _a.Markmap, deriveOptions = _a.deriveOptions, globalCSS = _a.globalCSS; var transformer = new Transformer(); el.innerHTML = '<svg style="width:100%"></svg>'; var svg = el.firstChild; var mm = Markmap.create(svg, null); var _b = transform(transformer, code), root = _b.root, frontmatter = _b.frontmatter; var markmapOptions = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.markmap; var frontmatterOptions = deriveOptions(markmapOptions); mm.setData(root, frontmatterOptions); mm.fit(); }; var markmapRender = function (element, cdn) { if (element === void 0) { element = document; } if (cdn === void 0) { cdn = _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN; } var markmapElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getElements(element); if (markmapElements.length === 0) { return; } (0,_util_addScript__WEBPACK_IMPORTED_MODULE_2__/* .addScript */ .G)("".concat(cdn, "/dist/js/markmap/markmap.min.js"), "vditorMarkerScript").then(function () { markmapElements.forEach(function (item) { var code = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.markmapRenderAdapter.getCode(item); if (item.getAttribute("data-processed") === "true" || code.trim() === "") { return; } var render = document.createElement("div"); render.className = "language-markmap"; item.parentNode.appendChild(render); init(render, code); if (item.parentNode.childNodes[0].nodeName == "CODE") { item.parentNode.removeChild(item.parentNode.childNodes[0]); } }); }); }; /***/ }), /***/ 472: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "H": () => (/* binding */ mathRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(413); /* harmony import */ var _util_addStyle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(290); /* harmony import */ var _util_code160to32__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(105); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); var mathRender = function (element, options) { if (element === void 0) { element = document; } var mathElements = _adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getElements(element); if (mathElements.length === 0) { return; } var defaultOptions = { cdn: _constants__WEBPACK_IMPORTED_MODULE_0__/* .Constants.CDN */ .g.CDN, math: { engine: "KaTeX", inlineDigit: false, macros: {}, }, }; if (options && options.math) { options.math = Object.assign({}, defaultOptions.math, options.math); } options = Object.assign({}, defaultOptions, options); if (options.math.engine === "KaTeX") { (0,_util_addStyle__WEBPACK_IMPORTED_MODULE_2__/* .addStyle */ .c)("".concat(options.cdn, "/dist/js/katex/katex.min.css?v=0.16.9"), "vditorKatexStyle"); (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)("".concat(options.cdn, "/dist/js/katex/katex.min.js?v=0.16.9"), "vditorKatexScript").then(function () { (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScript */ .G)("".concat(options.cdn, "/dist/js/katex/mhchem.min.js?v=0.16.9"), "vditorKatexChemScript").then(function () { mathElements.forEach(function (mathElement) { if (mathElement.parentElement.classList.contains("vditor-wysiwyg__pre") || mathElement.parentElement.classList.contains("vditor-ir__marker--pre")) { return; } if (mathElement.getAttribute("data-math")) { return; } var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(_adapterRender__WEBPACK_IMPORTED_MODULE_1__.mathRenderAdapter.getCode(mathElement)); mathElement.setAttribute("data-math", math); try { mathElement.innerHTML = katex.renderToString(math, { displayMode: mathElement.tagName === "DIV", output: "html", macros: options.math.macros, }); } catch (e) { mathElement.innerHTML = e.message; mathElement.className = "language-math vditor-reset--error"; } mathElement.addEventListener("copy", function (event) { event.stopPropagation(); event.preventDefault(); var vditorMathElement = event.currentTarget.closest(".language-math"); event.clipboardData.setData("text/html", vditorMathElement.innerHTML); event.clipboardData.setData("text/plain", vditorMathElement.getAttribute("data-math")); }); }); }); }); } else if (options.math.engine === "MathJax") { var chainAsync_1 = function (fns) { if (fns.length === 0) { return; } var curr = 0; var last = fns[fns.length - 1]; var next = function () { var fn = fns[curr++]; fn === last ? fn() : fn(next); }; next(); }; if (!window.MathJax) { window.MathJax = { loader: { paths: { mathjax: "".concat(options.cdn, "/dist/js/mathjax") }, }, startup: { typeset: false, }, tex: { macros: options.math.macros, }, }; // https://github.com/Vanessa219/vditor/issues/1453 Object.assign(window.MathJax, options.math.mathJaxOptions); } // 循环加载会抛异常 (0,_util_addScript__WEBPACK_IMPORTED_MODULE_3__/* .addScriptSync */ .J)("".concat(options.cdn, "/dist/js/mathjax/tex-svg-full.js"), "protyleMathJaxScript"); var renderMath_1 = function (mathElement, next) { var math = (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim(); var mathOptions = window.MathJax.getMetricsFor(mathElement); mathOptions.display = mathElement.tagName === "DIV"; window.MathJax.tex2svgPromise(math, mathOptions).then(function (node) { mathElement.innerHTML = ""; mathElement.setAttribute("data-math", math); mathElement.append(node); window.MathJax.startup.document.clear(); window.MathJax.startup.document.updateDocument(); var errorTextElement = node.querySelector('[data-mml-node="merror"]'); if (errorTextElement && errorTextElement.textContent.trim() !== "") { mathElement.innerHTML = errorTextElement.textContent.trim(); mathElement.className = "vditor-reset--error"; } if (next) { next(); } }); }; window.MathJax.startup.promise.then(function () { var chains = []; var _loop_1 = function (i) { var mathElement = mathElements[i]; if (!mathElement.parentElement.classList.contains("vditor-wysiwyg__pre") && !mathElement.parentElement.classList.contains("vditor-ir__marker--pre") && !mathElement.getAttribute("data-math") && (0,_util_code160to32__WEBPACK_IMPORTED_MODULE_4__/* .code160to32 */ .X)(mathElement.textContent).trim()) { chains.push(function (next) { if (i === mathElements.length - 1) { renderMath_1(mathElement); } else { renderMath_1(mathElement, next); } }); } }; for (var i = 0; i < mathElements.length; i++) { _loop_1(i); } chainAsync_1(chains); }); } }; /***/ }), /***/ 280: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Y": () => (/* binding */ mediaRender) /* harmony export */ }); /* harmony import */ var _util_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(494); var videoRender = function (element, url) { element.insertAdjacentHTML("afterend", "<video controls=\"controls\" src=\"".concat(url, "\"></video>")); element.remove(); }; var audioRender = function (element, url) { element.insertAdjacentHTML("afterend", "<audio controls=\"controls\" src=\"".concat(url, "\"></audio>")); element.remove(); }; var iframeRender = function (element, url) { var youtubeMatch = url.match(/\/\/(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?/); var youkuMatch = url.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/); var qqMatch = url.match(/\/\/v\.qq\.com\/x\/cover\/.*\/([^\/]+)\.html\??.*/); var coubMatch = url.match(/(?:www\.|\/\/)coub\.com\/view\/(\w+)/); var facebookMatch = url.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/); var dailymotionMatch = url.match(/.+dailymotion.com\/(video|hub)\/(\w+)\?/); var bilibiliMatch = url.match(/(?:www\.|\/\/)bilibili\.com\/video\/(\w+)/); var tedMatch = url.match(/(?:www\.|\/\/)ted\.com\/talks\/(\w+)/); if (youtubeMatch && youtubeMatch[1].length === 11) { element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"//www.youtube.com/embed/".concat(youtubeMatch[1] + (youtubeMatch[2] ? "?start=" + youtubeMatch[2] : ""), "\"></iframe>")); element.remove(); } else if (youkuMatch && youkuMatch[1]) { element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"//player.youku.com/embed/".concat(youkuMatch[1], "\"></iframe>")); element.remove(); } else if (qqMatch && qqMatch[1]) { element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"https://v.qq.com/txp/iframe/player.html?vid=".concat(qqMatch[1], "\"></iframe>")); element.remove(); } else if (coubMatch && coubMatch[1]) { element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\"\n src=\"//coub.com/embed/".concat(coubMatch[1], "?muted=false&autostart=false&originalSize=true&startWithHD=true\"></iframe>")); element.remove(); } else if (facebookMatch && facebookMatch[0]) { element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\"\n src=\"https://www.facebook.com/plugins/video.php?href=".concat(encodeURIComponent(facebookMatch[0]), "\"></iframe>")); element.remove(); } else if (dailymotionMatch && dailymotionMatch[2]) { element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\"\n src=\"https://www.dailymotion.com/embed/video/".concat(dailymotionMatch[2], "\"></iframe>")); element.remove(); } else if (url.indexOf("bilibili.com") > -1 && (url.indexOf("bvid=") > -1 || (bilibiliMatch && bilibiliMatch[1]))) { var params_1 = { bvid: (0,_util_function__WEBPACK_IMPORTED_MODULE_0__/* .getSearch */ .on)("bvid", url) || (bilibiliMatch && bilibiliMatch[1]), page: "1", high_quality: "1", as_wide: "1", allowfullscreen: "true", autoplay: "0" }; new URL(url.startsWith("http") ? url : "https:" + url).search.split("&").forEach(function (item, index) { if (!item) { return; } if (index === 0) { item = item.substr(1); } var keyValue = item.split("="); params_1[keyValue[0]] = keyValue[1]; }); var src_1 = "https://player.bilibili.com/player.html?"; var keys_1 = Object.keys(params_1); keys_1.forEach(function (key, index) { src_1 += "".concat(key, "=").concat(params_1[key]); if (index < keys_1.length - 1) { src_1 += "&"; } }); element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"".concat(src_1, "\"></iframe>")); element.remove(); } else if (tedMatch && tedMatch[1]) { element.insertAdjacentHTML("afterend", "<iframe class=\"iframe__video\" src=\"//embed.ted.com/talks/".concat(tedMatch[1], "\"></iframe>")); element.remove(); } }; var mediaRender = function (element) { if (!element) { return; } element.querySelectorAll("a").forEach(function (aElement) { var url = aElement.getAttribute("href"); if (!url) { return; } if (url.match(/^.+.(mp4|m4v|ogg|ogv|webm)$/)) { videoRender(aElement, url); } else if (url.match(/^.+.(mp3|wav|flac)$/)) { audioRender(aElement, url); } else { iframeRender(aElement, url); } }); }; /***/ }), /***/ 637: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "i": () => (/* binding */ mermaidRender) /* harmony export */ }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(145); /* harmony import */ var _util_addScript__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(413); /* harmony import */ var _adapterRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(840); /* harmony import */ va