diff --git a/esbuild.publish.mjs b/esbuild.publish.mjs new file mode 100644 index 0000000..8e7cb39 --- /dev/null +++ b/esbuild.publish.mjs @@ -0,0 +1,41 @@ +import esbuild from "esbuild"; +import process from "process"; +import builtins from "builtin-modules"; +import { config } from "dotenv"; +import { sassPlugin } from "esbuild-sass-plugin"; + +config(); + +const banner = `/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ +`; + +const prod = process.argv[2] === "production"; + +const dir = prod ? "./" : process.env.OUTDIR; + +esbuild + .build({ + banner: { + js: banner + }, + entryPoints: ["src/publish/publish.admonition.ts"], + bundle: true, + external: ["obsidian", "electron"], + format: "cjs", + watch: !prod, + minify: prod, + target: "es2020", + logLevel: "info", + sourcemap: !prod ? "inline" : false, + treeShaking: true, + outfile: "./publish/publish.admonition.txt", + define: { + ADMONITION_ICON_MAP: "ADMONITION_ICON_MAP" + }, + tsconfig: "./src/publish/tsconfig.json", + plugins: [sassPlugin()] + }) + .catch(() => process.exit(1)); diff --git a/package.json b/package.json index d823872..8a404e9 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "dev": "node ./esbuild.config.mjs", "build": "node ./esbuild.config.mjs production", + "publish": "node ./esbuild.publish.mjs production", "release": "standard-version" }, "standard-version": { diff --git a/publish/publish.admonition.css b/publish/publish.admonition.css index a785185..d89a64b 100644 --- a/publish/publish.admonition.css +++ b/publish/publish.admonition.css @@ -1,263 +1 @@ -/** Constants */ -:root { - --admonition-details-icon: url("data:image/svg+xml;charset=utf-8,"); -} - -.admonition { - margin: 1.5625em 0; - padding: 0; - overflow: hidden; - color: var(--text-normal); - page-break-inside: avoid; - background-color: var(--background-secondary); - border-left: 0.2rem solid rgb(var(--admonition-color)); - border-radius: 0.1rem; - box-shadow: 0 0.2rem 0.5rem var(--background-modifier-box-shadow); -} - -.admonition-title { - position: relative; - padding: 0.6rem 0.25em; - font-weight: 700; - background-color: rgba(var(--admonition-color), 0.1); -} - -.admonition-title-content { - display: flex; - justify-content: flex-start; - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.admonition-title-icon { - color: rgb(var(--admonition-color)); - display: flex; - align-items: center; - justify-content: center; - margin: 0 0.5em 0 0.25em; - min-width: 1em; - width: min-content; -} - -.admonition-title-markdown { - display: block; -} - -.admonition-title.no-title { - display: none; -} - -.admonition > .admonition-title.no-title + .admonition-content-holder { - margin-top: 1rem; - margin-bottom: 1rem; -} - -.admonition-content-holder { - position: relative; -} - -.admonition-content { - margin: 10px 15px; - position: relative; - overflow-x: auto; -} - -.admonition-content-copy { - color: var(--text-faint); - cursor: pointer; - opacity: 0; - position: absolute; - right: 0.375rem; - top: -5px; - transition: 0.3s opacity ease-in; -} - -.admonition-content-copy:hover { - color: var(--text-normal); -} - -.admonition:hover .admonition-content-copy, -.admonition-content-copy:hover { - opacity: 1; -} -.admonition-title:hover + .admonition-content .admonition-content-copy { - opacity: 0; -} - -details.admonition:not([open]) { - padding-bottom: 0; -} - -details.admonition > summary { - outline: none; - display: block !important; - list-style: none !important; - list-style-type: none !important; - min-height: 1rem; - border-top-left-radius: 0.1rem; - border-top-right-radius: 0.1rem; - cursor: pointer; -} - -details.admonition > summary::-webkit-details-marker, -details.admonition > summary::marker { - display: none !important; -} - -details.admonition > summary > .collapser { - position: absolute; - top: 50%; - right: 8px; - transform: translateY(-50%); - content: ""; -} - -details.admonition > summary > .collapser > .handle { - transform: rotate(0deg); - transition: transform 0.25s; - background-color: currentColor; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: var(--admonition-details-icon); - mask-image: var(--admonition-details-icon); - width: 20px; - height: 20px; -} - -details.admonition[open] > summary > .collapser > .handle { - transform: rotate(90deg); -} - -/** Settings */ -.admonition-setting-additional-container - > .setting-item:not(.setting-item-heading) { - border: 0px; -} - -.admonition-setting-additional-container { - border-bottom: 1px solid var(--background-modifier-border); - border-top: 1px solid var(--background-modifier-border); - padding: 18px 0 0 0; -} - -.admonition-setting-additional-container > .setting-item-heading:only-child { - padding-bottom: 18px; -} - -.admonition-setting-additional-container > .additional { - margin: 6px 12px; -} -.admonition-setting-additional-container > .additional > .setting-item { - border-top: 0; - padding-top: 9px; -} -.admonition-setting-additional-container - > .additional - > .setting-item - > .setting-item-control - > *:first-child { - margin: 0 6px; -} - -.setting-item > .admonition { - width: 50%; - margin: 0; -} - -.unset-align-items { - align-items: unset; -} - -.has-invalid-message { - display: grid; - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr 1fr; - grid-template-areas: - "text image" - "inv inv"; -} - -input.is-invalid { - border-color: #dc3545 !important; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} - -.admonition-type-setting input { - grid-column: span 2; -} - -.invalid-feedback { - display: block; - grid-area: inv; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: #dc3545; -} - -.suggestion-content.admonition-icon { - display: flex; - align-items: center; - justify-content: space-between; - flex-flow: row wrap; -} - -.suggestion-content.admonition-icon > .suggestion-text.admonition-text { - width: fit-content; -} - -.suggestion-content.admonition-icon - > .suggestion-flair.admonition-suggester-icon { - width: min-content; - position: relative; - top: unset; - left: unset; - right: unset; - bottom: unset; - display: flex; - align-items: center; -} - -.suggestion-content.admonition-icon > .suggestion-note { - width: 100%; -} - -.admonition-suggester-icon svg { - width: 1em; -} - -/** Internal */ - -.admonition li.task-list-item.is-checked p { - text-decoration: line-through; -} - -.admonition-settings .coffee { - width: 60%; - color: var(--text-faint); - margin: 1rem auto; - text-align: center; -} -.admonition-settings .coffee img { - height: 30px; -} - -.admonition-file-upload { - margin-right: 0; - margin-left: 12px; -} -.admonition-file-upload > input[type="file"] { - display: none; -} - -.insert-admonition-modal button:focus, -.insert-admonition-modal .clickable-icon:focus { - box-shadow: 0px 0px 5px rgb(0 0 0 / 50%); - border-color: var(--background-modifier-border-focus); -} - +:root{--admonition-details-icon: url("data:image/svg+xml;charset=utf-8,");--admonition-margin-top: 1.5625em;--admonition-margin-bottom: var(--admonition-margin-top);--admonition-margin-top-lp: 0px;--admonition-margin-bottom-lp: 12px}.admonition{margin-top:var(--admonition-margin-top);margin-bottom:var(--admonition-margin-bottom);margin-left:0;margin-right:0;padding:0;overflow:hidden;color:var(--text-normal);page-break-inside:avoid;background-color:var(--background-secondary);border-left:.2rem solid rgb(var(--admonition-color));border-radius:.1rem;box-shadow:0 .2rem .5rem var(--background-modifier-box-shadow)}*:not(.is-live-preview) .admonition.no-content{display:none}.is-live-preview .admonition.no-content{opacity:.1}.admonition-title{position:relative;padding:.6rem .25em;font-weight:700;background-color:rgba(var(--admonition-color),.1)}.admonition-title-content{display:flex;justify-content:flex-start;margin-top:0!important;margin-bottom:0!important}.admonition-title-icon{color:rgb(var(--admonition-color));display:flex;align-items:center;justify-content:center;margin:0 .5em 0 .25em;min-width:1em;width:min-content}.admonition-title-markdown{display:block}.admonition-title.no-title{display:none}.admonition-plugin.no-title .admonition-content-holder,.admonition-plugin.no-title .admonition-content-holder>.admonition-content{margin-top:0;margin-bottom:0}.admonition-content-holder{position:relative}.admonition-content{margin:10px 15px;position:relative;overflow-x:auto}.admonition-content-copy{color:var(--text-faint);cursor:pointer;opacity:0;position:absolute;right:.375rem;top:-5px;transition:.3s opacity ease-in}.admonition-content-copy:hover{color:var(--text-normal)}.admonition:hover .admonition-content-copy,.admonition-content-copy:hover{opacity:1}.admonition-title:hover+.admonition-content .admonition-content-copy{opacity:0}details.admonition:not([open]){padding-bottom:0}details.admonition>summary{outline:none;display:block!important;list-style:none!important;list-style-type:none!important;min-height:1rem;border-top-left-radius:.1rem;border-top-right-radius:.1rem;cursor:pointer}details.admonition>summary::-webkit-details-marker,details.admonition>summary::marker{display:none!important}details.admonition>summary>.collapser{position:absolute;top:50%;right:8px;transform:translateY(-50%);content:""}details.admonition>summary>.collapser>.handle{transform:rotate(0);transition:transform .25s;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:var(--admonition-details-icon);mask-image:var(--admonition-details-icon);width:20px;height:20px}details.admonition[open]>summary>.collapser>.handle{transform:rotate(90deg)}.admonition-settings .additional{margin:6px 12px}.admonition-settings .additional>.setting-item{border-top:0;padding-top:9px}.setting-item>.admonition{width:50%;margin:0}.unset-align-items{align-items:unset}.has-invalid-message{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;grid-template-areas:"text image" "inv inv"}input.is-invalid{border-color:#dc3545!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.admonition-type-setting input{grid-column:span 2}.invalid-feedback{display:block;grid-area:inv;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.suggestion-content.admonition-icon{display:flex;align-items:center;justify-content:space-between;flex-flow:row wrap}.suggestion-content.admonition-icon>.suggestion-text.admonition-text{width:fit-content}.suggestion-content.admonition-icon>.suggestion-flair.admonition-suggester-icon{width:min-content;position:relative;top:unset;left:unset;right:unset;bottom:unset;display:flex;align-items:center}.suggestion-content.admonition-icon>.suggestion-note{width:100%}.admonition-suggester-icon svg{width:1em}.admonition-color-settings .setting-item-control{gap:1rem}.admonition-color-settings input[type=color]:disabled{opacity:.75;cursor:not-allowed}.admonition-convert{display:flex;align-items:center;gap:.25rem}.admonition-convert-icon{display:flex;align-items:center}.admonition-convert-icon .admonition-spin{animation:admonition-convert 1s ease-in-out infinite;fill:currentColor}@keyframes admonition-convert{0%{transform:rotate(-45deg)}to{transform:rotate(315deg)}}.admonition-settings .admonition-convert{color:var(--text-error)}.notice-container .admonition-convert{justify-content:space-between;gap:1rem}.admonition li.task-list-item.is-checked p{text-decoration:line-through}.admonition-settings .coffee{width:60%;color:var(--text-faint);margin:1rem auto;text-align:center}.admonition-settings .coffee img{height:30px}.admonition-file-upload{margin-right:0;margin-left:12px}.admonition-file-upload>input[type=file]{display:none}.insert-admonition-modal button:focus,.insert-admonition-modal .clickable-icon:focus{box-shadow:0 0 5px #0000007f;border-color:var(--background-modifier-border-focus)}.admonition-settings details>summary{outline:none;display:block!important;list-style:none!important;list-style-type:none!important;min-height:1rem;border-top-left-radius:.1rem;border-top-right-radius:.1rem;cursor:pointer;position:relative}.admonition-settings details>summary::-webkit-details-marker,.admonition-settings details>summary::marker{display:none!important}.admonition-settings details>summary>.collapser{position:absolute;top:50%;right:8px;transform:translateY(-50%);content:""}.admonition-settings details>summary>.collapser>.handle{transform:rotate(0);transition:transform .25s;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:var(--admonition-details-icon);mask-image:var(--admonition-details-icon);width:20px;height:20px}.admonition-settings details[open]>summary>.collapser>.handle{transform:rotate(90deg)}.admonition-setting-warning{display:flex;gap:.25rem;align-items:center}.admonition-setting-warning.text-warning{color:var(--text-error)}.admonitions-nested-settings .setting-item{border:0px;padding-bottom:0}.admonitions-nested-settings{padding-bottom:18px}.admonitions-nested-settings[open] .setting-item-heading,.admonitions-nested-settings:not(details) .setting-item-heading{border-top:0px;border-bottom:1px solid var(--background-modifier-border)}.admonition.no-drop{box-shadow:none}.admonition.no-drop>.admonition-title.no-title+.admonition-content-holder{margin-top:0;margin-bottom:0}.admonition.no-drop .admonition .admonition-content-holder{border-right:1px solid rgba(var(--admonition-color),.2);border-bottom:1px solid rgba(var(--admonition-color),.2)}.admonition.no-drop .admonition .admonition-title.no-title+.admonition-content-holder{border-top:1px solid rgba(var(--admonition-color),.2);margin-top:0;margin-bottom:0}.is-live-preview .admonition{margin-top:var(--admonition-margin-top-lp);margin-bottom:var(--admonition-margin-bottom-lp)}.is-live-preview .admonition-content>*{margin-top:0;margin-bottom:0}.is-live-preview .admonition-content>* br{display:none}.is-live-preview .admonition-content>*:first-child{margin-top:16px}.is-live-preview .admonition-content>*:last-child{margin-bottom:16px}.is-live-preview .admonition-content ul,.is-live-preview .admonition-content ol{white-space:normal}.is-live-preview .admonition-content .math-block>mjx-container{padding:0} diff --git a/publish/publish.admonition.txt b/publish/publish.admonition.txt index 67e6fa9..7b1b7f7 100644 --- a/publish/publish.admonition.txt +++ b/publish/publish.admonition.txt @@ -1,295 +1,8 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else { - var a = factory(); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(self, function() { -return /******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ // The require scope -/******/ var __webpack_require__ = {}; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -__webpack_require__.r(__webpack_exports__); +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ -function createEl(tag, t, e) { - const i = document.createElement(tag); - "string" == typeof t && - (t = { - cls: t - }); - const r = t || {}, o = r.cls, s = r.text, a = r.attr, l = r.title, c = r.value, u = r.type, h = e ? e : r.parent, p = r.prepend, d = r.href; - return (o && - (Array.isArray(o) - ? (i.className = o.join(" ")) - : (i.className = o)), - s && (i.textContent = s), - a && - Object.keys(a).forEach((t) => { - const n = a[t]; - null !== n && i.setAttribute(t, String(n)); - }), - l && (i.title = l), - c && - (i instanceof HTMLInputElement || - i instanceof HTMLSelectElement || - i instanceof HTMLOptionElement) && - (i.value = c), - /* u && i instanceof HTMLInputElement && (i.type = u), */ - u && i instanceof HTMLStyleElement && i.setAttribute("type", u), - d && - (i instanceof HTMLAnchorElement || i instanceof HTMLLinkElement) && - (i.href = d), - h && (p ? h.insertBefore(i, h.firstChild) : h.appendChild(i)), - i); -} -//@ts-ignore-line -const createDiv = function (o, e) { - return createEl("div", o, e); -}; -Node.prototype.createDiv = function (o, cb) { - return createDiv(o, this); -}; -Node.prototype.createEl = function (tag, o, cb) { - return createEl(tag, o, this); -}; -Element.prototype.addClass = function (...args) { - const e = []; - for (let t = 0; t < args.length; t++) - e[t] = args[t]; - this.addClasses(e); -}; -Element.prototype.addClasses = function (e) { - for (let t = 0; t < e.length; t++) - this.classList.add(e[t]); -}; -function getAdmonitionElement(type, title, icon, color, collapse, id) { - var _a; - let admonition, titleEl, attrs = { - style: `--admonition-color: ${color};` - }; - if (collapse && collapse != "none") { - if (collapse === "open") { - attrs.open = "open"; - } - admonition = createEl("details", { - cls: `admonition admonition-${type} admonition-plugin`, - attr: attrs - }); - titleEl = admonition.createEl("summary", { - cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}` - }); - } - else { - admonition = createDiv({ - cls: `admonition admonition-${type} admonition-plugin`, - attr: attrs - }); - titleEl = admonition.createDiv({ - cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}` - }); - } - if (id) { - admonition.id = id; - } - if (title && title.trim().length) { - /** - * Title structure - * .admonition-title - * .admonition-title-content - Rendered Markdown top-level element (e.g. H1/2/3 etc, p) - * div.admonition-title-icon - * svg - * div.admonition-title-markdown - Container of rendered markdown - * ...rendered markdown children... - */ - //get markdown - const markdownHolder = createDiv(); - //MarkdownRenderer.renderMarkdown(title, markdownHolder, "", null); - //admonition-title-content is first child of rendered markdown - const admonitionTitleContent = - /* markdownHolder?.children[0]?.tagName === "P" - ? createDiv() - : markdownHolder.children[0] ?? */ createDiv(); - //get children of markdown element, then remove them - const markdownElements = Array.from(((_a = markdownHolder.children[0]) === null || _a === void 0 ? void 0 : _a.childNodes) || []); - admonitionTitleContent.innerHTML = ""; - admonitionTitleContent.addClass("admonition-title-content"); - //build icon element - const iconEl = admonitionTitleContent.createDiv("admonition-title-icon"); - if (icon) { - iconEl.innerHTML = icon; - } - //add markdown children back - const admonitionTitleMarkdown = admonitionTitleContent.createDiv("admonition-title-markdown"); - admonitionTitleMarkdown.innerText = title; - /* for (let i = 0; i < markdownElements.length; i++) { - admonitionTitleMarkdown.appendChild(markdownElements[i]); - } */ - titleEl.appendChild(admonitionTitleContent || createDiv()); - } - //add them to title element - if (collapse) { - titleEl.createDiv("collapser").createDiv("handle"); - } - return admonition; -} -function startsWithAny(str, needles) { - for (let i = 0; i < needles.length; i++) { - if (str.startsWith(needles[i])) { - return i; - } - } - return false; -} -function getParametersFromSource(type, src) { - const keywordTokens = ["title:", "collapse:", "icon:", "color:"]; - const keywords = ["title", "collapse", "icon", "color"]; - let lines = src.split("\n"); - let skipLines = 0; - let params = {}; - for (let i = 0; i < lines.length; i++) { - let keywordIndex = startsWithAny(lines[i], keywordTokens); - if (keywordIndex === false) { - break; - } - let foundKeyword = keywords[keywordIndex]; - if (params[foundKeyword] !== undefined) { - break; - } - params[foundKeyword] = lines[i] - .substr(keywordTokens[keywordIndex].length) - .trim(); - ++skipLines; - } - let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, icon, color } = params; - let content = lines.slice(skipLines).join("\n"); - /** - * If the admonition should collapse, but something other than open or closed was provided, set to closed. - */ - if (collapse !== undefined && - collapse !== "none" && - collapse !== "open" && - collapse !== "closed") { - collapse = "closed"; - } - /** - * If the admonition should collapse, but title was blanked, set the default title. - */ - if (title.trim() === "" && collapse !== undefined && collapse !== "none") { - title = type[0].toUpperCase() + type.slice(1).toLowerCase(); - return; - } - return { title, collapse, content, icon, color }; -} -const blockSet = new Set(); -const ADMONITION_ICON_MAP = {}; -if (document.readyState === "complete") { - postprocess(); - registerToProcess(); -} -else { - window.onload = () => { - postprocess(); - registerToProcess(); - }; -} -function registerToProcess() { - const sizer = document.querySelector(".markdown-preview-sizer"); - const observer = new MutationObserver((mutations) => { - mutations.forEach((mutation) => { - if (mutation.type == "childList" && mutation.addedNodes.length) { - mutation.addedNodes.forEach((node) => { - var _a; - if (node && - node instanceof Element && - node.children.length && - ((_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.tagName) === "PRE") { - //postprocess(node); - preObserver.observe(node.firstChild, { - attributes: true, - childList: false, - characterData: false, - subtree: false - }); - } - }); - } - }); - }); - observer.observe(sizer, { - attributes: false, - childList: true, - subtree: false - }); - const preObserver = new MutationObserver((mutations) => { - mutations.forEach((mutation) => { - if (mutation.target instanceof HTMLPreElement && - !blockSet.has(mutation.target) && - mutation.type === "attributes" && - mutation.attributeName === "class" && - Array.from(mutation.target.classList).some((cls) => /language-ad-(\w+)/.test(cls))) { - blockSet.add(mutation.target); - processAdmonitionBlock(mutation.target); - } - }); - }); -} -function processAdmonitionBlock(admonitionBlock) { - const [, type] = admonitionBlock.classList - .toString() - .match(/language-ad-(\w+)/); - if (!type) - return; - if (!(type in ADMONITION_ICON_MAP)) - return; - let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); - let admonition = getAdmonitionElement(type, title, icon, color, collapse); - const contentHolder = admonition.createDiv("admonition-content-holder"); - const admonitionContent = contentHolder.createDiv("admonition-content"); - admonitionContent.innerText = content; - admonitionBlock.replaceWith(admonition); -} -function postprocess() { - //do work - const admonitions = document.querySelectorAll("pre[class*='language-ad']"); - if (!admonitions.length) - return; - for (let admonitionBlock of Array.from(admonitions)) { - blockSet.add(admonitionBlock); - const [, type] = admonitionBlock.classList - .toString() - .match(/language-ad-(\w+)/); - if (!type) - continue; - if (!(type in ADMONITION_ICON_MAP)) - continue; - let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); - let admonition = getAdmonitionElement(type, title, icon, color, collapse); - const contentHolder = admonition.createDiv("admonition-content-holder"); - const admonitionContent = contentHolder.createDiv("admonition-content"); - admonitionContent.innerText = content; - admonitionBlock.replaceWith(admonition); - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5hZG1vbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGlzaC5hZG1vbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsU0FBUyxRQUFRLENBQ2IsR0FBTSxFQUNOLENBQTJCLEVBQzNCLENBQWU7SUFFZixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEdBQUc7WUFDRCxHQUFHLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQ1QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFDYixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLE9BQU8sQ0FDSCxDQUFDO1FBQ0csQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxX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QUFJLEVBQ3JDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQzFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FDakMsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLFFBQVEsQ0FDWCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhFLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFFdEMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi9hc3NldHMvbWFpbi5jc3NcIjtcclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUVsPEsgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxyXG4gICAgdGFnOiBLLFxyXG4gICAgdD86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxyXG4gICAgZT86IEhUTUxFbGVtZW50XHJcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XHJcbiAgICBjb25zdCBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xyXG4gICAgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCAmJlxyXG4gICAgICAgICh0ID0ge1xyXG4gICAgICAgICAgICBjbHM6IHRcclxuICAgICAgICB9KTtcclxuICAgIGNvbnN0IHIgPSB0IHx8IHt9LFxyXG4gICAgICAgIG8gPSByLmNscyxcclxuICAgICAgICBzID0gci50ZXh0LFxyXG4gICAgICAgIGEgPSByLmF0dHIsXHJcbiAgICAgICAgbCA9IHIudGl0bGUsXHJcbiAgICAgICAgYyA9IHIudmFsdWUsXHJcbiAgICAgICAgdSA9IHIudHlwZSxcclxuICAgICAgICBoID0gZSA/IGUgOiByLnBhcmVudCxcclxuICAgICAgICBwID0gci5wcmVwZW5kLFxyXG4gICAgICAgIGQgPSByLmhyZWY7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIG8gJiZcclxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkobylcclxuICAgICAgICAgICAgICAgID8gKGkuY2xhc3NOYW1lID0gby5qb2luKFwiIFwiKSlcclxuICAgICAgICAgICAgICAgIDogKGkuY2xhc3NOYW1lID0gbykpLFxyXG4gICAgICAgIHMgJiYgKGkudGV4dENvbnRlbnQgPSBzKSxcclxuICAgICAgICBhICYmXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGEpLmZvckVhY2goKHQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBhW3RdO1xyXG4gICAgICAgICAgICAgICAgbnVsbCAhPT0gbiAmJiBpLnNldEF0dHJpYnV0ZSh0LCBTdHJpbmcobikpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICBsICYmIChpLnRpdGxlID0gbCksXHJcbiAgICAgICAgYyAmJlxyXG4gICAgICAgICAgICAoaSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcclxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCB8fFxyXG4gICAgICAgICAgICAgICAgaSBpbnN0YW5jZW9mIEhUTUxPcHRpb25FbGVtZW50KSAmJlxyXG4gICAgICAgICAgICAoaS52YWx1ZSA9IGMpLFxyXG4gICAgICAgIC8qIHUgJiYgaSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgKGkudHlwZSA9IHUpLCAqL1xyXG4gICAgICAgIHUgJiYgaSBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQgJiYgaS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIHUpLFxyXG4gICAgICAgIGQgJiZcclxuICAgICAgICAgICAgKGkgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCB8fCBpIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSAmJlxyXG4gICAgICAgICAgICAoaS5ocmVmID0gZCksXHJcbiAgICAgICAgaCAmJiAocCA/IGguaW5zZXJ0QmVmb3JlKGksIGguZmlyc3RDaGlsZCkgOiBoLmFwcGVuZENoaWxkKGkpKSxcclxuICAgICAgICBpXHJcbiAgICApO1xyXG59XHJcbi8vQHRzLWlnbm9yZS1saW5lXHJcbmNvbnN0IGNyZWF0ZURpdiA9IGZ1bmN0aW9uIChcclxuICAgIG8/OiBzdHJpbmcgfCBEb21FbGVtZW50SW5mbyxcclxuICAgIGU/OiBIVE1MRWxlbWVudFxyXG4pOiBIVE1MRGl2RWxlbWVudCB7XHJcbiAgICByZXR1cm4gY3JlYXRlRWwoXCJkaXZcIiwgbywgZSk7XHJcbn07XHJcblxyXG5Ob2RlLnByb3RvdHlwZS5jcmVhdGVEaXYgPSBmdW5jdGlvbiAoXHJcbiAgICBvPzogc3RyaW5nIHwgRG9tRWxlbWVudEluZm8sXHJcbiAgICBjYj86IChlbDogSFRNTERpdkVsZW1lbnQpID0+IHZvaWRcclxuKTogSFRNTERpdkVsZW1lbnQge1xyXG4gICAgcmV0dXJuIGNyZWF0ZURpdihvLCB0aGlzKTtcclxufTtcclxuTm9kZS5wcm90b3R5cGUuY3JlYXRlRWwgPSBmdW5jdGlvbiA8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXHJcbiAgICB0YWc6IEssXHJcbiAgICBvPzogc3RyaW5nIHwgRG9tRWxlbWVudEluZm8sXHJcbiAgICBjYj86IChlbDogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdKSA9PiB2b2lkXHJcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XHJcbiAgICByZXR1cm4gY3JlYXRlRWwodGFnLCBvLCB0aGlzKTtcclxufTtcclxuXHJcbkVsZW1lbnQucHJvdG90eXBlLmFkZENsYXNzID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IGUgPSBbXTtcclxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgYXJncy5sZW5ndGg7IHQrKykgZVt0XSA9IGFyZ3NbdF07XHJcbiAgICB0aGlzLmFkZENsYXNzZXMoZSk7XHJcbn07XHJcblxyXG5FbGVtZW50LnByb3RvdHlwZS5hZGRDbGFzc2VzID0gZnVuY3Rpb24gKGUpIHtcclxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQrKykgdGhpcy5jbGFzc0xpc3QuYWRkKGVbdF0pO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gZ2V0QWRtb25pdGlvbkVsZW1lbnQoXHJcbiAgICB0eXBlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgaWNvbjogc3RyaW5nLFxyXG4gICAgY29sb3I6IHN0cmluZyxcclxuICAgIGNvbGxhcHNlPzogc3RyaW5nLFxyXG4gICAgaWQ/OiBzdHJpbmdcclxuKTogSFRNTEVsZW1lbnQge1xyXG4gICAgbGV0IGFkbW9uaXRpb24sXHJcbiAgICAgICAgdGl0bGVFbCxcclxuICAgICAgICBhdHRyczogeyBzdHlsZTogc3RyaW5nOyBvcGVuPzogc3RyaW5nIH0gPSB7XHJcbiAgICAgICAgICAgIHN0eWxlOiBgLS1hZG1vbml0aW9uLWNvbG9yOiAke2NvbG9yfTtgXHJcbiAgICAgICAgfTtcclxuICAgIGlmIChjb2xsYXBzZSAmJiBjb2xsYXBzZSAhPSBcIm5vbmVcIikge1xyXG4gICAgICAgIGlmIChjb2xsYXBzZSA9PT0gXCJvcGVuXCIpIHtcclxuICAgICAgICAgICAgYXR0cnMub3BlbiA9IFwib3BlblwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZG1vbml0aW9uID0gY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcclxuICAgICAgICAgICAgY2xzOiBgYWRtb25pdGlvbiBhZG1vbml0aW9uLSR7dHlwZX0gYWRtb25pdGlvbi1wbHVnaW5gLFxyXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRpdGxlRWwgPSBhZG1vbml0aW9uLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7XHJcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24gYWRtb25pdGlvbi0ke3R5cGV9IGFkbW9uaXRpb24tcGx1Z2luYCxcclxuICAgICAgICAgICAgYXR0cjogYXR0cnNcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aXRsZUVsID0gYWRtb25pdGlvbi5jcmVhdGVEaXYoe1xyXG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uLXRpdGxlICR7IXRpdGxlPy50cmltKCkubGVuZ3RoID8gXCJuby10aXRsZVwiIDogXCJcIn1gXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgICAgYWRtb25pdGlvbi5pZCA9IGlkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aXRsZSAmJiB0aXRsZS50cmltKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGl0bGUgc3RydWN0dXJlXHJcbiAgICAgICAgICogPGRpdnxzdW1tYXJ5Pi5hZG1vbml0aW9uLXRpdGxlXHJcbiAgICAgICAgICogICAgICA8ZWxlbWVudD4uYWRtb25pdGlvbi10aXRsZS1jb250ZW50IC0gUmVuZGVyZWQgTWFya2Rvd24gdG9wLWxldmVsIGVsZW1lbnQgKGUuZy4gSDEvMi8zIGV0YywgcClcclxuICAgICAgICAgKiAgICAgICAgICBkaXYuYWRtb25pdGlvbi10aXRsZS1pY29uXHJcbiAgICAgICAgICogICAgICAgICAgICAgIHN2Z1xyXG4gICAgICAgICAqICAgICAgICAgIGRpdi5hZG1vbml0aW9uLXRpdGxlLW1hcmtkb3duIC0gQ29udGFpbmVyIG9mIHJlbmRlcmVkIG1hcmtkb3duXHJcbiAgICAgICAgICogICAgICAgICAgICAgIC4uLnJlbmRlcmVkIG1hcmtkb3duIGNoaWxkcmVuLi4uXHJcbiAgICAgICAgICovXHJcblxyXG4gICAgICAgIC8vZ2V0IG1hcmtkb3duXHJcbiAgICAgICAgY29uc3QgbWFya2Rvd25Ib2xkZXIgPSBjcmVhdGVEaXYoKTtcclxuICAgICAgICAvL01hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24odGl0bGUsIG1hcmtkb3duSG9sZGVyLCBcIlwiLCBudWxsKTtcclxuXHJcbiAgICAgICAgLy9hZG1vbml0aW9uLXRpdGxlLWNvbnRlbnQgaXMgZmlyc3QgY2hpbGQgb2YgcmVuZGVyZWQgbWFya2Rvd25cclxuXHJcbiAgICAgICAgY29uc3QgYWRtb25pdGlvblRpdGxlQ29udGVudCA9XHJcbiAgICAgICAgICAgIC8qIG1hcmtkb3duSG9sZGVyPy5jaGlsZHJlblswXT8udGFnTmFtZSA9PT0gXCJQXCJcclxuICAgICAgICA/IGNyZWF0ZURpdigpXHJcbiAgICAgICAgOiBtYXJrZG93bkhvbGRlci5jaGlsZHJlblswXSA/PyAgKi8gY3JlYXRlRGl2KCk7XHJcblxyXG4gICAgICAgIC8vZ2V0IGNoaWxkcmVuIG9mIG1hcmtkb3duIGVsZW1lbnQsIHRoZW4gcmVtb3ZlIHRoZW1cclxuICAgICAgICBjb25zdCBtYXJrZG93bkVsZW1lbnRzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgbWFya2Rvd25Ib2xkZXIuY2hpbGRyZW5bMF0/LmNoaWxkTm9kZXMgfHwgW11cclxuICAgICAgICApO1xyXG4gICAgICAgIGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICBhZG1vbml0aW9uVGl0bGVDb250ZW50LmFkZENsYXNzKFwiYWRtb25pdGlvbi10aXRsZS1jb250ZW50XCIpO1xyXG5cclxuICAgICAgICAvL2J1aWxkIGljb24gZWxlbWVudFxyXG4gICAgICAgIGNvbnN0IGljb25FbCA9IGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuY3JlYXRlRGl2KFxyXG4gICAgICAgICAgICBcImFkbW9uaXRpb24tdGl0bGUtaWNvblwiXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaWNvbikge1xyXG4gICAgICAgICAgICBpY29uRWwuaW5uZXJIVE1MID0gaWNvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vYWRkIG1hcmtkb3duIGNoaWxkcmVuIGJhY2tcclxuICAgICAgICBjb25zdCBhZG1vbml0aW9uVGl0bGVNYXJrZG93biA9IGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuY3JlYXRlRGl2KFxyXG4gICAgICAgICAgICBcImFkbW9uaXRpb24tdGl0bGUtbWFya2Rvd25cIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uaW5uZXJUZXh0ID0gdGl0bGU7XHJcbiAgICAgICAgLyogZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrZG93bkVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFkbW9uaXRpb25UaXRsZU1hcmtkb3duLmFwcGVuZENoaWxkKG1hcmtkb3duRWxlbWVudHNbaV0pO1xyXG4gICAgICAgIH0gKi9cclxuICAgICAgICB0aXRsZUVsLmFwcGVuZENoaWxkKGFkbW9uaXRpb25UaXRsZUNvbnRlbnQgfHwgY3JlYXRlRGl2KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vYWRkIHRoZW0gdG8gdGl0bGUgZWxlbWVudFxyXG5cclxuICAgIGlmIChjb2xsYXBzZSkge1xyXG4gICAgICAgIHRpdGxlRWwuY3JlYXRlRGl2KFwiY29sbGFwc2VyXCIpLmNyZWF0ZURpdihcImhhbmRsZVwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhZG1vbml0aW9uO1xyXG59XHJcbmZ1bmN0aW9uIHN0YXJ0c1dpdGhBbnkoc3RyOiBzdHJpbmcsIG5lZWRsZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc3RyLnN0YXJ0c1dpdGgobmVlZGxlc1tpXSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZTogc3RyaW5nLCBzcmM6IHN0cmluZykge1xyXG4gICAgY29uc3Qga2V5d29yZFRva2VucyA9IFtcInRpdGxlOlwiLCBcImNvbGxhcHNlOlwiLCBcImljb246XCIsIFwiY29sb3I6XCJdO1xyXG5cclxuICAgIGNvbnN0IGtleXdvcmRzID0gW1widGl0bGVcIiwgXCJjb2xsYXBzZVwiLCBcImljb25cIiwgXCJjb2xvclwiXTtcclxuXHJcbiAgICBsZXQgbGluZXMgPSBzcmMuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gICAgbGV0IHNraXBMaW5lcyA9IDA7XHJcblxyXG4gICAgbGV0IHBhcmFtczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGtleXdvcmRJbmRleCA9IHN0YXJ0c1dpdGhBbnkobGluZXNbaV0sIGtleXdvcmRUb2tlbnMpO1xyXG5cclxuICAgICAgICBpZiAoa2V5d29yZEluZGV4ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb3VuZEtleXdvcmQgPSBrZXl3b3Jkc1trZXl3b3JkSW5kZXhdO1xyXG5cclxuICAgICAgICBpZiAocGFyYW1zW2ZvdW5kS2V5d29yZF0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBhcmFtc1tmb3VuZEtleXdvcmRdID0gbGluZXNbaV1cclxuICAgICAgICAgICAgLnN1YnN0cihrZXl3b3JkVG9rZW5zW2tleXdvcmRJbmRleF0ubGVuZ3RoKVxyXG4gICAgICAgICAgICAudHJpbSgpO1xyXG4gICAgICAgICsrc2tpcExpbmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB7XHJcbiAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgY29sbGFwc2UsXHJcbiAgICAgICAgaWNvbixcclxuICAgICAgICBjb2xvclxyXG4gICAgfSA9IHBhcmFtcztcclxuXHJcbiAgICBsZXQgY29udGVudCA9IGxpbmVzLnNsaWNlKHNraXBMaW5lcykuam9pbihcIlxcblwiKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSBhZG1vbml0aW9uIHNob3VsZCBjb2xsYXBzZSwgYnV0IHNvbWV0aGluZyBvdGhlciB0aGFuIG9wZW4gb3IgY2xvc2VkIHdhcyBwcm92aWRlZCwgc2V0IHRvIGNsb3NlZC5cclxuICAgICAqL1xyXG4gICAgaWYgKFxyXG4gICAgICAgIGNvbGxhcHNlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJub25lXCIgJiZcclxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJvcGVuXCIgJiZcclxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJjbG9zZWRcIlxyXG4gICAgKSB7XHJcbiAgICAgICAgY29sbGFwc2UgPSBcImNsb3NlZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdGhlIGFkbW9uaXRpb24gc2hvdWxkIGNvbGxhcHNlLCBidXQgdGl0bGUgd2FzIGJsYW5rZWQsIHNldCB0aGUgZGVmYXVsdCB0aXRsZS5cclxuICAgICAqL1xyXG4gICAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gXCJcIiAmJiBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmIGNvbGxhcHNlICE9PSBcIm5vbmVcIikge1xyXG4gICAgICAgIHRpdGxlID0gdHlwZVswXS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyB0aXRsZSwgY29sbGFwc2UsIGNvbnRlbnQsIGljb24sIGNvbG9yIH07XHJcbn1cclxuXHJcbmludGVyZmFjZSBBZG1vbml0aW9uUHVibGlzaERlZmluaXRpb24ge1xyXG4gICAgaWNvbjogc3RyaW5nO1xyXG4gICAgY29sb3I6IHN0cmluZztcclxufVxyXG5cclxuY29uc3QgYmxvY2tTZXQ6IFNldDxIVE1MUHJlRWxlbWVudD4gPSBuZXcgU2V0KCk7XHJcbmNvbnN0IEFETU9OSVRJT05fSUNPTl9NQVA6IHtcclxuICAgIFthZG1vbml0aW9uVHlwZTogc3RyaW5nXTogQWRtb25pdGlvblB1Ymxpc2hEZWZpbml0aW9uO1xyXG59ID0ge307XHJcbmlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuICAgIHBvc3Rwcm9jZXNzKCk7XHJcbiAgICByZWdpc3RlclRvUHJvY2VzcygpO1xyXG59IGVsc2Uge1xyXG4gICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBwb3N0cHJvY2VzcygpO1xyXG4gICAgICAgIHJlZ2lzdGVyVG9Qcm9jZXNzKCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWdpc3RlclRvUHJvY2VzcygpIHtcclxuICAgIGNvbnN0IHNpemVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5tYXJrZG93bi1wcmV2aWV3LXNpemVyXCIpO1xyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09IFwiY2hpbGRMaXN0XCIgJiYgbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIG11dGF0aW9uLmFkZGVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmZpcnN0RWxlbWVudENoaWxkPy50YWdOYW1lID09PSBcIlBSRVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9zdHByb2Nlc3Mobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZU9ic2VydmVyLm9ic2VydmUobm9kZS5maXJzdENoaWxkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckRhdGE6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHJlZTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShzaXplciwge1xyXG4gICAgICAgIGF0dHJpYnV0ZXM6IGZhbHNlLFxyXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICBzdWJ0cmVlOiBmYWxzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcHJlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIG11dGF0aW9uLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxQcmVFbGVtZW50ICYmXHJcbiAgICAgICAgICAgICAgICAhYmxvY2tTZXQuaGFzKG11dGF0aW9uLnRhcmdldCkgJiZcclxuICAgICAgICAgICAgICAgIG11dGF0aW9uLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiICYmXHJcbiAgICAgICAgICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSBcImNsYXNzXCIgJiZcclxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20obXV0YXRpb24udGFyZ2V0LmNsYXNzTGlzdCkuc29tZSgoY2xzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIC9sYW5ndWFnZS1hZC0oXFx3KykvLnRlc3QoY2xzKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGJsb2NrU2V0LmFkZChtdXRhdGlvbi50YXJnZXQpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhtdXRhdGlvbi50YXJnZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhhZG1vbml0aW9uQmxvY2s6IEhUTUxQcmVFbGVtZW50KSB7XHJcbiAgICBjb25zdCBbLCB0eXBlXSA9IGFkbW9uaXRpb25CbG9jay5jbGFzc0xpc3RcclxuICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgIC5tYXRjaCgvbGFuZ3VhZ2UtYWQtKFxcdyspLyk7XHJcbiAgICBpZiAoIXR5cGUpIHJldHVybjtcclxuICAgIGlmICghKHR5cGUgaW4gQURNT05JVElPTl9JQ09OX01BUCkpIHJldHVybjtcclxuXHJcbiAgICBsZXQge1xyXG4gICAgICAgIHRpdGxlID0gdHlwZVswXS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgIGNvbGxhcHNlLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgaWNvbiA9IEFETU9OSVRJT05fSUNPTl9NQVBbdHlwZV0uaWNvbixcclxuICAgICAgICBjb2xvciA9IEFETU9OSVRJT05fSUNPTl9NQVBbdHlwZV0uY29sb3JcclxuICAgIH0gPSBnZXRQYXJhbWV0ZXJzRnJvbVNvdXJjZSh0eXBlLCBhZG1vbml0aW9uQmxvY2suaW5uZXJUZXh0KTtcclxuXHJcbiAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KHR5cGUsIHRpdGxlLCBpY29uLCBjb2xvciwgY29sbGFwc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnRIb2xkZXIgPSBhZG1vbml0aW9uLmNyZWF0ZURpdihcImFkbW9uaXRpb24tY29udGVudC1ob2xkZXJcIik7XHJcblxyXG4gICAgY29uc3QgYWRtb25pdGlvbkNvbnRlbnQgPSBjb250ZW50SG9sZGVyLmNyZWF0ZURpdihcImFkbW9uaXRpb24tY29udGVudFwiKTtcclxuXHJcbiAgICBhZG1vbml0aW9uQ29udGVudC5pbm5lclRleHQgPSBjb250ZW50O1xyXG5cclxuICAgIGFkbW9uaXRpb25CbG9jay5yZXBsYWNlV2l0aChhZG1vbml0aW9uKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcG9zdHByb2Nlc3MoKSB7XHJcbiAgICAvL2RvIHdvcmtcclxuICAgIGNvbnN0IGFkbW9uaXRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MUHJlRWxlbWVudD4oXHJcbiAgICAgICAgXCJwcmVbY2xhc3MqPSdsYW5ndWFnZS1hZCddXCJcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCFhZG1vbml0aW9ucy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBmb3IgKGxldCBhZG1vbml0aW9uQmxvY2sgb2YgQXJyYXkuZnJvbShhZG1vbml0aW9ucykpIHtcclxuICAgICAgICBibG9ja1NldC5hZGQoYWRtb25pdGlvbkJsb2NrKTtcclxuICAgICAgICBjb25zdCBbLCB0eXBlXSA9IGFkbW9uaXRpb25CbG9jay5jbGFzc0xpc3RcclxuICAgICAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgLm1hdGNoKC9sYW5ndWFnZS1hZC0oXFx3KykvKTtcclxuICAgICAgICBpZiAoIXR5cGUpIGNvbnRpbnVlO1xyXG4gICAgICAgIGlmICghKHR5cGUgaW4gQURNT05JVElPTl9JQ09OX01BUCkpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBsZXQge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICAgICAgY29sbGFwc2UsXHJcbiAgICAgICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgICAgIGljb24gPSBBRE1PTklUSU9OX0lDT05fTUFQW3R5cGVdLmljb24sXHJcbiAgICAgICAgICAgIGNvbG9yID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5jb2xvclxyXG4gICAgICAgIH0gPSBnZXRQYXJhbWV0ZXJzRnJvbVNvdXJjZSh0eXBlLCBhZG1vbml0aW9uQmxvY2suaW5uZXJUZXh0KTtcclxuXHJcbiAgICAgICAgbGV0IGFkbW9uaXRpb24gPSBnZXRBZG1vbml0aW9uRWxlbWVudChcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgdGl0bGUsXHJcbiAgICAgICAgICAgIGljb24sXHJcbiAgICAgICAgICAgIGNvbG9yLFxyXG4gICAgICAgICAgICBjb2xsYXBzZVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnRlbnRIb2xkZXIgPSBhZG1vbml0aW9uLmNyZWF0ZURpdihcImFkbW9uaXRpb24tY29udGVudC1ob2xkZXJcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XHJcblxyXG4gICAgICAgIGFkbW9uaXRpb25Db250ZW50LmlubmVyVGV4dCA9IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgIGFkbW9uaXRpb25CbG9jay5yZXBsYWNlV2l0aChhZG1vbml0aW9uKTtcclxuICAgIH1cclxufVxyXG4iXX0= -/******/ return __webpack_exports__; -/******/ })() -; -}); \ No newline at end of file +function T(n,e,o){let t=document.createElement(n);typeof e=="string"&&(e={cls:e});let i=e||{},l=i.cls,a=i.text,s=i.attr,r=i.title,d=i.value,c=i.type,g=o||i.parent,f=i.prepend,m=i.href;return l&&(Array.isArray(l)?t.className=l.join(" "):t.className=l),a&&(t.textContent=a),s&&Object.keys(s).forEach(p=>{let E=s[p];E!==null&&t.setAttribute(p,String(E))}),r&&(t.title=r),d&&(t instanceof HTMLInputElement||t instanceof HTMLSelectElement||t instanceof HTMLOptionElement)&&(t.value=d),c&&t instanceof HTMLStyleElement&&t.setAttribute("type",c),m&&(t instanceof HTMLAnchorElement||t instanceof HTMLLinkElement)&&(t.href=m),g&&(f?g.insertBefore(t,g.firstChild):g.appendChild(t)),t}var h=function(n,e){return T("div",n,e)};Node.prototype.createDiv=function(n,e){return h(n,this)};Node.prototype.createEl=function(n,e,o){return T(n,e,this)};Element.prototype.addClass=function(...n){let e=[];for(let o=0;o{y(),b()};function w(){return new Promise((n,e)=>{let o=document.querySelector(".markdown-preview-sizer");if(o)n(o);else{let t=new MutationObserver(i=>{for(let l of i)if(l.type=="childList"&&l.addedNodes.length){for(let a of Array.from(l.addedNodes))if(a instanceof HTMLDivElement){if(a.hasClass("publish-renderer")){let s=a.querySelector(".markdown-preview-sizer");s&&(t.disconnect(),console.log(s),n(s))}a.hasClass("markdown-preview-sizer")&&(t.disconnect(),console.log(o),n(o))}}});t.observe(document.body,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}})}async function b(){let n=await w();new MutationObserver(o=>{o.forEach(t=>{t.type=="childList"&&t.addedNodes.length&&t.addedNodes.forEach(i=>{if(i&&i instanceof HTMLDivElement&&!i.childElementCount){let l=new MutationObserver(a=>{for(let s of a)if(s.type=="childList"&&s.addedNodes.length)for(let r of Array.from(s.addedNodes))r instanceof HTMLPreElement&&(!M.has(r)&&Array.from(r.classList).some(d=>/language-ad-(\w+)/.test(d))?(l.disconnect(),M.add(r),v(r)):(l.disconnect(),H(r)))});l.observe(i,{attributes:!1,childList:!0,characterData:!1,subtree:!1})}i&&i instanceof HTMLElement&&i.children.length&&i.firstElementChild instanceof HTMLPreElement&&H(i.firstElementChild)})})}).observe(n,{attributes:!1,childList:!0,subtree:!1})}function H(n){let e=new MutationObserver(o=>{o.forEach(t=>{t.target instanceof HTMLPreElement&&!M.has(t.target)&&t.type==="attributes"&&t.attributeName==="class"&&Array.from(t.target.classList).some(i=>/language-ad-(\w+)/.test(i))&&(e.disconnect(),M.add(t.target),v(t.target))})});e.observe(n,{attributes:!0,childList:!1,characterData:!1,subtree:!1})}function v(n){let[,e]=n.classList.toString().match(/language-ad-(\w+)/);if(!e||!(e in u.ADMONITION_ICON_MAP))return;let{title:o=e[0].toUpperCase()+e.slice(1).toLowerCase(),collapse:t,content:i,icon:l=u.ADMONITION_ICON_MAP[e].icon,color:a=u.ADMONITION_ICON_MAP[e].color}=N(e,n.innerText),s=L(e,o,l,a,t),d=s.createDiv("admonition-content-holder").createDiv("admonition-content");d.innerText=i,n.replaceWith(s)}function y(){let n=document.querySelectorAll("pre[class*='language-ad']");if(!!n.length)for(let e of Array.from(n)){M.add(e);let[,o]=e.classList.toString().match(/language-ad-(\w+)/);if(!o||!(o in u.ADMONITION_ICON_MAP))continue;let{title:t=o[0].toUpperCase()+o.slice(1).toLowerCase(),collapse:i,content:l,icon:a=u.ADMONITION_ICON_MAP[o].icon,color:s=u.ADMONITION_ICON_MAP[o].color}=N(o,e.innerText),r=L(o,t,a,s,i),c=r.createDiv("admonition-content-holder").createDiv("admonition-content");c.innerText=l,e.replaceWith(r)}} diff --git a/src/publish/publish.admonition.ts b/src/publish/publish.admonition.ts index aad1299..191a074 100644 --- a/src/publish/publish.admonition.ts +++ b/src/publish/publish.admonition.ts @@ -25,7 +25,7 @@ function createEl( (Array.isArray(o) ? (i.className = o.join(" ")) : (i.className = o)), - s && (i.textContent = s), + s && (i.textContent = s as string), a && Object.keys(a).forEach((t) => { const n = a[t]; @@ -249,9 +249,11 @@ interface AdmonitionPublishDefinition { } const blockSet: Set = new Set(); -const ADMONITION_ICON_MAP: { - [admonitionType: string]: AdmonitionPublishDefinition; -} = {}; +class AdmonitionIcons { + static ADMONITION_ICON_MAP: { + [admonitionType: string]: AdmonitionPublishDefinition; + } = {}; +} if (document.readyState === "complete") { postprocess(); registerToProcess(); @@ -261,27 +263,108 @@ if (document.readyState === "complete") { registerToProcess(); }; } - -function registerToProcess() { - const sizer = document.querySelector(".markdown-preview-sizer"); +function findSizer(): Promise { + return new Promise((resolve, reject) => { + const sizer = document.querySelector( + ".markdown-preview-sizer" + ); + if (sizer) { + resolve(sizer); + } else { + const observer = new MutationObserver((mutations) => { + for (const mutation of mutations) { + if ( + mutation.type == "childList" && + mutation.addedNodes.length + ) { + for (const node of Array.from(mutation.addedNodes)) { + if (!(node instanceof HTMLDivElement)) continue; + if (node.hasClass("publish-renderer")) { + let sizer = node.querySelector( + ".markdown-preview-sizer" + ); + if (sizer) { + observer.disconnect(); + console.log(sizer); + resolve(sizer); + } + } + if (node.hasClass("markdown-preview-sizer")) { + observer.disconnect(); + console.log(sizer); + resolve(sizer); + } + } + } + } + }); + observer.observe(document.body, { + attributes: false, + childList: true, + characterData: false, + subtree: true + }); + } + }); +} +async function registerToProcess() { + const sizer = await findSizer(); const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type == "childList" && mutation.addedNodes.length) { mutation.addedNodes.forEach((node) => { if ( node && - node instanceof Element && - node.children.length && - node.firstElementChild?.tagName === "PRE" + node instanceof HTMLDivElement && + !node.childElementCount ) { - //postprocess(node); - preObserver.observe(node.firstChild, { - attributes: true, - childList: false, + const observer = new MutationObserver((mutations) => { + for (const mutation of mutations) { + if ( + mutation.type == "childList" && + mutation.addedNodes.length + ) { + for (const node of Array.from( + mutation.addedNodes + )) { + if (!(node instanceof HTMLPreElement)) { + continue; + } + if ( + !blockSet.has(node) && + Array.from(node.classList).some( + (cls) => + /language-ad-(\w+)/.test( + cls + ) + ) + ) { + observer.disconnect(); + blockSet.add(node); + processAdmonitionBlock(node); + } else { + observer.disconnect(); + createPreObserver(node); + } + } + } + } + }); + observer.observe(node, { + attributes: false, + childList: true, characterData: false, subtree: false }); } + if ( + node && + node instanceof HTMLElement && + node.children.length && + node.firstElementChild instanceof HTMLPreElement + ) { + createPreObserver(node.firstElementChild); + } }); } }); @@ -291,7 +374,9 @@ function registerToProcess() { childList: true, subtree: false }); +} +function createPreObserver(node: HTMLPreElement) { const preObserver = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if ( @@ -303,11 +388,18 @@ function registerToProcess() { /language-ad-(\w+)/.test(cls) ) ) { + preObserver.disconnect(); blockSet.add(mutation.target); processAdmonitionBlock(mutation.target); } }); }); + preObserver.observe(node, { + attributes: true, + childList: false, + characterData: false, + subtree: false + }); } function processAdmonitionBlock(admonitionBlock: HTMLPreElement) { @@ -315,14 +407,14 @@ function processAdmonitionBlock(admonitionBlock: HTMLPreElement) { .toString() .match(/language-ad-(\w+)/); if (!type) return; - if (!(type in ADMONITION_ICON_MAP)) return; + if (!(type in AdmonitionIcons.ADMONITION_ICON_MAP)) return; let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, - icon = ADMONITION_ICON_MAP[type].icon, - color = ADMONITION_ICON_MAP[type].color + icon = AdmonitionIcons.ADMONITION_ICON_MAP[type].icon, + color = AdmonitionIcons.ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); let admonition = getAdmonitionElement(type, title, icon, color, collapse); @@ -350,14 +442,14 @@ function postprocess() { .toString() .match(/language-ad-(\w+)/); if (!type) continue; - if (!(type in ADMONITION_ICON_MAP)) continue; + if (!(type in AdmonitionIcons.ADMONITION_ICON_MAP)) continue; let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, - icon = ADMONITION_ICON_MAP[type].icon, - color = ADMONITION_ICON_MAP[type].color + icon = AdmonitionIcons.ADMONITION_ICON_MAP[type].icon, + color = AdmonitionIcons.ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); let admonition = getAdmonitionElement( diff --git a/src/settings.ts b/src/settings.ts index 0180d12..264a8e7 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -564,20 +564,21 @@ export default class AdmonitionSetting extends PluginSettingTab { } const js = CONTENT.replace( - "const ADMONITION_ICON_MAP = {}", - "const ADMONITION_ICON_MAP = " + + /ADMONITION_ICON_MAP\s?=\s?\{\}/, + "ADMONITION_ICON_MAP=" + JSON.stringify(admonition_icons) ); - let csvFile = new Blob([js], { + const file = new Blob([js], { type: "text/javascript" }); - let downloadLink = document.createElement("a"); - downloadLink.download = "publish.admonition.js"; - downloadLink.href = window.URL.createObjectURL(csvFile); - downloadLink.style.display = "none"; - document.body.appendChild(downloadLink); - downloadLink.click(); - document.body.removeChild(downloadLink); + const link = createEl("a", { + href: URL.createObjectURL(file), + attr: { + download: "publish.admonition.js" + } + }); + link.click(); + link.detach(); }); }); }