@asicupv/paella-extra-plugins
Version:
Extra plugins for Paella Player.
1,381 lines (1,380 loc) • 76.9 kB
JavaScript
import { t as e } from "./paella-extra-plugins-rolldown-runtime.esm.js";
//#region ../../node_modules/marked-alert/dist/index.js
var t = /* @__PURE__ */ e({ default: () => o }), n = [
{
type: "note",
icon: "<svg class=\"octicon octicon-info mr-2\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\"></path></svg>"
},
{
type: "tip",
icon: "<svg class=\"octicon octicon-light-bulb mr-2\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z\"></path></svg>"
},
{
type: "important",
icon: "<svg class=\"octicon octicon-report mr-2\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path></svg>"
},
{
type: "warning",
icon: "<svg class=\"octicon octicon-alert mr-2\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path></svg>"
},
{
type: "caution",
icon: "<svg class=\"octicon octicon-stop mr-2\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\"></path></svg>"
}
];
function r(e) {
return e.length ? Object.values([...n, ...e].reduce((e, t) => (e[t.type] = t, e), {})) : n;
}
function i(e) {
return `^(?:\\[!${e.toUpperCase()}])\\s*?
*`;
}
function a(e) {
return e.slice(0, 1).toUpperCase() + e.slice(1).toLowerCase();
}
function o(e = {}) {
let { className: t = "markdown-alert", variants: n = [] } = e, o = r(n);
return {
walkTokens(e) {
var n;
if (e.type !== "blockquote") return;
let r = o.find(({ type: t }) => new RegExp(i(t)).test(e.text));
if (r) {
let { type: o, icon: s, title: c = a(o), titleClassName: l = `${t}-title` } = r, u = new RegExp(i(o));
Object.assign(e, {
type: "alert",
meta: {
className: t,
variant: o,
icon: s,
title: c,
titleClassName: l
}
});
let d = e.tokens?.[0];
if (d.raw?.replace(u, "").trim()) {
let e = d.tokens[0];
Object.assign(e, {
raw: e.raw.replace(u, ""),
text: e.text.replace(u, "")
}), d.tokens[1]?.type === "br" && d.tokens.splice(1, 1);
} else (n = e.tokens) == null || n.shift();
}
},
extensions: [{
name: "alert",
level: "block",
renderer({ meta: e, tokens: t = [] }) {
let n = `<div class="${e.className} ${e.className}-${e.variant}">
`;
return n += `<p class="${e.titleClassName}">`, n += e.icon, n += e.title, n += "</p>\n", n += this.parser.parse(t), n += "</div>\n", n;
}
}]
};
}
//#endregion
//#region ../../node_modules/marked-emoji/src/index.js
var s = /* @__PURE__ */ e({ markedEmoji: () => l }), c = { renderer: void 0 };
function l(e) {
if (e = {
...c,
...e
}, !e.emojis) throw Error("Must provide emojis to markedEmoji");
let t = Object.keys(e.emojis).map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"), n = RegExp(`:(${t}):`), r = RegExp(`^${n.source}`);
return { extensions: [{
name: "emoji",
level: "inline",
start(e) {
return e.match(n)?.index;
},
tokenizer(t, n) {
let i = r.exec(t);
if (!i) return;
let a = i[1], o = e.emojis[a];
if (o) return {
type: "emoji",
raw: i[0],
name: a,
emoji: o
};
},
renderer(t) {
return e.renderer ? e.renderer(t) : `<img alt="${t.name}" src="${t.emoji}" class="marked-emoji-img">`;
}
}] };
}
//#endregion
//#region ../../node_modules/marked/lib/marked.esm.js
var u = /* @__PURE__ */ e({
Hooks: () => X,
Lexer: () => K,
Marked: () => Ue,
Parser: () => Y,
Renderer: () => q,
TextRenderer: () => J,
Tokenizer: () => G,
defaults: () => f,
getDefaults: () => d,
marked: () => Q
});
function d() {
return {
async: !1,
breaks: !1,
extensions: null,
gfm: !0,
hooks: null,
pedantic: !1,
renderer: null,
silent: !1,
tokenizer: null,
walkTokens: null
};
}
var f = d();
function p(e) {
f = e;
}
var m = { exec: () => null };
function h(e, t = "") {
let n = typeof e == "string" ? e : e.source, r = {
replace: (e, t) => {
let i = typeof t == "string" ? t : t.source;
return i = i.replace(g.caret, "$1"), n = n.replace(e, i), r;
},
getRegex: () => new RegExp(n, t)
};
return r;
}
var ee = ((e = "") => {
try {
return !!RegExp("(?<=1)(?<!1)" + e);
} catch {
return !1;
}
})(), g = {
codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm,
outputLinkReplace: /\\([\[\]])/g,
indentCodeCompensation: /^(\s+)(?:```)/,
beginningSpace: /^\s+/,
endingHash: /#$/,
startingSpaceChar: /^ /,
endingSpaceChar: / $/,
nonSpaceChar: /[^ ]/,
newLineCharGlobal: /\n/g,
tabCharGlobal: /\t/g,
multipleSpaceGlobal: /\s+/g,
blankLine: /^[ \t]*$/,
doubleBlankLine: /\n[ \t]*\n[ \t]*$/,
blockquoteStart: /^ {0,3}>/,
blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g,
blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm,
listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,
listIsTask: /^\[[ xX]\] +\S/,
listReplaceTask: /^\[[ xX]\] +/,
listTaskCheckbox: /\[[ xX]\]/,
anyLine: /\n.*\n/,
hrefBrackets: /^<(.*)>$/,
tableDelimiter: /[:|]/,
tableAlignChars: /^\||\| *$/g,
tableRowBlankLine: /\n[ \t]*$/,
tableAlignRight: /^ *-+: *$/,
tableAlignCenter: /^ *:-+: *$/,
tableAlignLeft: /^ *:-+ *$/,
startATag: /^<a /i,
endATag: /^<\/a>/i,
startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i,
endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i,
startAngleBracket: /^</,
endAngleBracket: />$/,
pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/,
unicodeAlphaNumeric: /[\p{L}\p{N}]/u,
escapeTest: /[&<>"']/,
escapeReplace: /[&<>"']/g,
escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,
escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,
caret: /(^|[^\[])\^/g,
percentDecode: /%25/g,
findPipe: /\|/g,
splitPipe: / \|/,
slashPipe: /\\\|/g,
carriageReturn: /\r\n|\r/g,
spaceLine: /^ +$/gm,
notSpaceStart: /^\S*/,
endingNewline: /\n$/,
listItemRegex: (e) => RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),
nextBulletRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),
hrRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),
fencesBeginRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}(?:\`\`\`|~~~)`),
headingBeginRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}#`),
htmlBeginRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}<(?:[a-z].*>|!--)`, "i"),
blockquoteBeginRegex: (e) => RegExp(`^ {0,${Math.min(3, e - 1)}}>`)
}, te = /^(?:[ \t]*(?:\n|$))+/, ne = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/, re = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/, _ = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/, ie = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, v = / {0,3}(?:[*+-]|\d{1,9}[.)])/, ae = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/, oe = h(ae).replace(/bull/g, v).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex(), se = h(ae).replace(/bull/g, v).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(), y = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, ce = /^[^\n]+/, b = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/, le = h(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", b).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(), ue = h(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, v).getRegex(), x = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul", S = /<!--(?:-?>|[\s\S]*?(?:-->|$))/, de = h("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", S).replace("tag", x).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(), C = h(y).replace("hr", _).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", x).getRegex(), w = {
blockquote: h(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", C).getRegex(),
code: ne,
def: le,
fences: re,
heading: ie,
hr: _,
html: de,
lheading: oe,
list: ue,
newline: te,
paragraph: C,
table: m,
text: ce
}, T = h("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", _).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", x).getRegex(), fe = {
...w,
lheading: se,
table: T,
paragraph: h(y).replace("hr", _).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", T).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", x).getRegex()
}, pe = {
...w,
html: h("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment", S).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),
def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
heading: /^(#{1,6})(.*)(?:\n+|$)/,
fences: m,
lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
paragraph: h(y).replace("hr", _).replace("heading", " *#{1,6} *[^\n]").replace("lheading", oe).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex()
}, me = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, he = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, ge = /^( {2,}|\\)\n(?!\s*$)/, _e = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/, E = /[\p{P}\p{S}]/u, D = /[\s\p{P}\p{S}]/u, O = /[^\s\p{P}\p{S}]/u, ve = h(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, D).getRegex(), k = /(?!~)[\p{P}\p{S}]/u, ye = /(?!~)[\s\p{P}\p{S}]/u, be = /(?:[^\s\p{P}\p{S}]|~)/u, xe = h(/link|precode-code|html/, "g").replace("link", /\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", ee ? "(?<!`)()" : "(^^|[^`])").replace("code", /(?<b>`+)[^`]+\k<b>(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex(), A = /^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/, Se = h(A, "u").replace(/punct/g, E).getRegex(), Ce = h(A, "u").replace(/punct/g, k).getRegex(), j = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)", we = h(j, "gu").replace(/notPunctSpace/g, O).replace(/punctSpace/g, D).replace(/punct/g, E).getRegex(), Te = h(j, "gu").replace(/notPunctSpace/g, be).replace(/punctSpace/g, ye).replace(/punct/g, k).getRegex(), Ee = h("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, O).replace(/punctSpace/g, D).replace(/punct/g, E).getRegex(), De = h(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, E).getRegex(), Oe = h("^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)", "gu").replace(/notPunctSpace/g, O).replace(/punctSpace/g, D).replace(/punct/g, E).getRegex(), ke = h(/\\(punct)/, "gu").replace(/punct/g, E).getRegex(), Ae = h(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(), je = h(S).replace("(?:-->|$)", "-->").getRegex(), Me = h("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", je).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(), M = /(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/, Ne = h(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label", M).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(), N = h(/^!?\[(label)\]\[(ref)\]/).replace("label", M).replace("ref", b).getRegex(), P = h(/^!?\[(ref)\](?:\[\])?/).replace("ref", b).getRegex(), Pe = h("reflink|nolink(?!\\()", "g").replace("reflink", N).replace("nolink", P).getRegex(), F = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/, I = {
_backpedal: m,
anyPunctuation: ke,
autolink: Ae,
blockSkip: xe,
br: ge,
code: he,
del: m,
delLDelim: m,
delRDelim: m,
emStrongLDelim: Se,
emStrongRDelimAst: we,
emStrongRDelimUnd: Ee,
escape: me,
link: Ne,
nolink: P,
punctuation: ve,
reflink: N,
reflinkSearch: Pe,
tag: Me,
text: _e,
url: m
}, Fe = {
...I,
link: h(/^!?\[(label)\]\((.*?)\)/).replace("label", M).getRegex(),
reflink: h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", M).getRegex()
}, L = {
...I,
emStrongRDelimAst: Te,
emStrongLDelim: Ce,
delLDelim: De,
delRDelim: Oe,
url: h(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", F).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),
_backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,
text: h(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol", F).getRegex()
}, Ie = {
...L,
br: h(ge).replace("{2,}", "*").getRegex(),
text: h(L.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex()
}, R = {
normal: w,
gfm: fe,
pedantic: pe
}, z = {
normal: I,
gfm: L,
breaks: Ie,
pedantic: Fe
}, Le = {
"&": "&",
"<": "<",
">": ">",
"\"": """,
"'": "'"
}, B = (e) => Le[e];
function V(e, t) {
if (t) {
if (g.escapeTest.test(e)) return e.replace(g.escapeReplace, B);
} else if (g.escapeTestNoEncode.test(e)) return e.replace(g.escapeReplaceNoEncode, B);
return e;
}
function H(e) {
try {
e = encodeURI(e).replace(g.percentDecode, "%");
} catch {
return null;
}
return e;
}
function U(e, t) {
let n = e.replace(g.findPipe, (e, t, n) => {
let r = !1, i = t;
for (; --i >= 0 && n[i] === "\\";) r = !r;
return r ? "|" : " |";
}).split(g.splitPipe), r = 0;
if (n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), t) if (n.length > t) n.splice(t);
else for (; n.length < t;) n.push("");
for (; r < n.length; r++) n[r] = n[r].trim().replace(g.slashPipe, "|");
return n;
}
function W(e, t, n) {
let r = e.length;
if (r === 0) return "";
let i = 0;
for (; i < r;) {
let a = e.charAt(r - i - 1);
if (a === t && !n) i++;
else if (a !== t && n) i++;
else break;
}
return e.slice(0, r - i);
}
function Re(e) {
let t = e.split("\n"), n = t.length - 1;
for (; n >= 0 && g.blankLine.test(t[n]);) n--;
return t.length - n <= 2 ? e : t.slice(0, n + 1).join("\n");
}
function ze(e, t) {
if (e.indexOf(t[1]) === -1) return -1;
let n = 0;
for (let r = 0; r < e.length; r++) if (e[r] === "\\") r++;
else if (e[r] === t[0]) n++;
else if (e[r] === t[1] && (n--, n < 0)) return r;
return n > 0 ? -2 : -1;
}
function Be(e, t = 0) {
let n = t, r = "";
for (let t of e) if (t === " ") {
let e = 4 - n % 4;
r += " ".repeat(e), n += e;
} else r += t, n++;
return r;
}
function Ve(e, t, n, r, i) {
let a = t.href, o = t.title || null, s = e[1].replace(i.other.outputLinkReplace, "$1");
r.state.inLink = !0;
let c = {
type: e[0].charAt(0) === "!" ? "image" : "link",
raw: n,
href: a,
title: o,
text: s,
tokens: r.inlineTokens(s)
};
return r.state.inLink = !1, c;
}
function He(e, t, n) {
let r = e.match(n.other.indentCodeCompensation);
if (r === null) return t;
let i = r[1];
return t.split("\n").map((e) => {
let t = e.match(n.other.beginningSpace);
if (t === null) return e;
let [r] = t;
return r.length >= i.length ? e.slice(i.length) : e;
}).join("\n");
}
var G = class {
options;
rules;
lexer;
constructor(e) {
this.options = e || f;
}
space(e) {
let t = this.rules.block.newline.exec(e);
if (t && t[0].length > 0) return {
type: "space",
raw: t[0]
};
}
code(e) {
let t = this.rules.block.code.exec(e);
if (t) {
let e = this.options.pedantic ? t[0] : Re(t[0]);
return {
type: "code",
raw: e,
codeBlockStyle: "indented",
text: e.replace(this.rules.other.codeRemoveIndent, "")
};
}
}
fences(e) {
let t = this.rules.block.fences.exec(e);
if (t) {
let e = t[0], n = He(e, t[3] || "", this.rules);
return {
type: "code",
raw: e,
lang: t[2] ? t[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t[2],
text: n
};
}
}
heading(e) {
let t = this.rules.block.heading.exec(e);
if (t) {
let e = t[2].trim();
if (this.rules.other.endingHash.test(e)) {
let t = W(e, "#");
(this.options.pedantic || !t || this.rules.other.endingSpaceChar.test(t)) && (e = t.trim());
}
return {
type: "heading",
raw: W(t[0], "\n"),
depth: t[1].length,
text: e,
tokens: this.lexer.inline(e)
};
}
}
hr(e) {
let t = this.rules.block.hr.exec(e);
if (t) return {
type: "hr",
raw: W(t[0], "\n")
};
}
blockquote(e) {
let t = this.rules.block.blockquote.exec(e);
if (t) {
let e = W(t[0], "\n").split("\n"), n = "", r = "", i = [];
for (; e.length > 0;) {
let t = !1, a = [], o;
for (o = 0; o < e.length; o++) if (this.rules.other.blockquoteStart.test(e[o])) a.push(e[o]), t = !0;
else if (!t) a.push(e[o]);
else break;
e = e.slice(o);
let s = a.join("\n"), c = s.replace(this.rules.other.blockquoteSetextReplace, "\n $1").replace(this.rules.other.blockquoteSetextReplace2, "");
n = n ? `${n}
${s}` : s, r = r ? `${r}
${c}` : c;
let l = this.lexer.state.top;
if (this.lexer.state.top = !0, this.lexer.blockTokens(c, i, !0), this.lexer.state.top = l, e.length === 0) break;
let u = i.at(-1);
if (u?.type === "code") break;
if (u?.type === "blockquote") {
let t = u, a = t.raw + "\n" + e.join("\n"), o = this.blockquote(a);
i[i.length - 1] = o, n = n.substring(0, n.length - t.raw.length) + o.raw, r = r.substring(0, r.length - t.text.length) + o.text;
break;
} else if (u?.type === "list") {
let t = u, a = t.raw + "\n" + e.join("\n"), o = this.list(a);
i[i.length - 1] = o, n = n.substring(0, n.length - u.raw.length) + o.raw, r = r.substring(0, r.length - t.raw.length) + o.raw, e = a.substring(i.at(-1).raw.length).split("\n");
continue;
}
}
return {
type: "blockquote",
raw: n,
tokens: i,
text: r
};
}
}
list(e) {
let t = this.rules.block.list.exec(e);
if (t) {
let n = t[1].trim(), r = n.length > 1, i = {
type: "list",
raw: "",
ordered: r,
start: r ? +n.slice(0, -1) : "",
loose: !1,
items: []
};
n = r ? `\\d{1,9}\\${n.slice(-1)}` : `\\${n}`, this.options.pedantic && (n = r ? n : "[*+-]");
let a = this.rules.other.listItemRegex(n), o = !1;
for (; e;) {
let n = !1, r = "", s = "";
if (!(t = a.exec(e)) || this.rules.block.hr.test(e)) break;
r = t[0], e = e.substring(r.length);
let c = Be(t[2].split("\n", 1)[0], t[1].length), l = e.split("\n", 1)[0], u = !c.trim(), d = 0;
if (this.options.pedantic ? (d = 2, s = c.trimStart()) : u ? d = t[1].length + 1 : (d = c.search(this.rules.other.nonSpaceChar), d = d > 4 ? 1 : d, s = c.slice(d), d += t[1].length), u && this.rules.other.blankLine.test(l) && (r += l + "\n", e = e.substring(l.length + 1), n = !0), !n) {
let t = this.rules.other.nextBulletRegex(d), n = this.rules.other.hrRegex(d), i = this.rules.other.fencesBeginRegex(d), a = this.rules.other.headingBeginRegex(d), o = this.rules.other.htmlBeginRegex(d), f = this.rules.other.blockquoteBeginRegex(d);
for (; e;) {
let p = e.split("\n", 1)[0], m;
if (l = p, this.options.pedantic ? (l = l.replace(this.rules.other.listReplaceNesting, " "), m = l) : m = l.replace(this.rules.other.tabCharGlobal, " "), i.test(l) || a.test(l) || o.test(l) || f.test(l) || t.test(l) || n.test(l)) break;
if (m.search(this.rules.other.nonSpaceChar) >= d || !l.trim()) s += "\n" + m.slice(d);
else {
if (u || c.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || i.test(c) || a.test(c) || n.test(c)) break;
s += "\n" + l;
}
u = !l.trim(), r += p + "\n", e = e.substring(p.length + 1), c = m.slice(d);
}
}
i.loose || (o ? i.loose = !0 : this.rules.other.doubleBlankLine.test(r) && (o = !0)), i.items.push({
type: "list_item",
raw: r,
task: !!this.options.gfm && this.rules.other.listIsTask.test(s),
loose: !1,
text: s,
tokens: []
}), i.raw += r;
}
let s = i.items.at(-1);
if (s) s.raw = s.raw.trimEnd(), s.text = s.text.trimEnd();
else return;
i.raw = i.raw.trimEnd();
for (let e of i.items) {
if (this.lexer.state.top = !1, e.tokens = this.lexer.blockTokens(e.text, []), e.task) {
if (e.text = e.text.replace(this.rules.other.listReplaceTask, ""), e.tokens[0]?.type === "text" || e.tokens[0]?.type === "paragraph") {
e.tokens[0].raw = e.tokens[0].raw.replace(this.rules.other.listReplaceTask, ""), e.tokens[0].text = e.tokens[0].text.replace(this.rules.other.listReplaceTask, "");
for (let e = this.lexer.inlineQueue.length - 1; e >= 0; e--) if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)) {
this.lexer.inlineQueue[e].src = this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask, "");
break;
}
}
let t = this.rules.other.listTaskCheckbox.exec(e.raw);
if (t) {
let n = {
type: "checkbox",
raw: t[0] + " ",
checked: t[0] !== "[ ]"
};
e.checked = n.checked, i.loose ? e.tokens[0] && ["paragraph", "text"].includes(e.tokens[0].type) && "tokens" in e.tokens[0] && e.tokens[0].tokens ? (e.tokens[0].raw = n.raw + e.tokens[0].raw, e.tokens[0].text = n.raw + e.tokens[0].text, e.tokens[0].tokens.unshift(n)) : e.tokens.unshift({
type: "paragraph",
raw: n.raw,
text: n.raw,
tokens: [n]
}) : e.tokens.unshift(n);
}
}
if (!i.loose) {
let t = e.tokens.filter((e) => e.type === "space");
i.loose = t.length > 0 && t.some((e) => this.rules.other.anyLine.test(e.raw));
}
}
if (i.loose) for (let e of i.items) {
e.loose = !0;
for (let t of e.tokens) t.type === "text" && (t.type = "paragraph");
}
return i;
}
}
html(e) {
let t = this.rules.block.html.exec(e);
if (t) {
let e = Re(t[0]);
return {
type: "html",
block: !0,
raw: e,
pre: t[1] === "pre" || t[1] === "script" || t[1] === "style",
text: e
};
}
}
def(e) {
let t = this.rules.block.def.exec(e);
if (t) {
let e = t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, " "), n = t[2] ? t[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", r = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t[3];
return {
type: "def",
tag: e,
raw: W(t[0], "\n"),
href: n,
title: r
};
}
}
table(e) {
let t = this.rules.block.table.exec(e);
if (!t || !this.rules.other.tableDelimiter.test(t[2])) return;
let n = U(t[1]), r = t[2].replace(this.rules.other.tableAlignChars, "").split("|"), i = t[3]?.trim() ? t[3].replace(this.rules.other.tableRowBlankLine, "").split("\n") : [], a = {
type: "table",
raw: W(t[0], "\n"),
header: [],
align: [],
rows: []
};
if (n.length === r.length) {
for (let e of r) this.rules.other.tableAlignRight.test(e) ? a.align.push("right") : this.rules.other.tableAlignCenter.test(e) ? a.align.push("center") : this.rules.other.tableAlignLeft.test(e) ? a.align.push("left") : a.align.push(null);
for (let e = 0; e < n.length; e++) a.header.push({
text: n[e],
tokens: this.lexer.inline(n[e]),
header: !0,
align: a.align[e]
});
for (let e of i) a.rows.push(U(e, a.header.length).map((e, t) => ({
text: e,
tokens: this.lexer.inline(e),
header: !1,
align: a.align[t]
})));
return a;
}
}
lheading(e) {
let t = this.rules.block.lheading.exec(e);
if (t) {
let e = t[1].trim();
return {
type: "heading",
raw: W(t[0], "\n"),
depth: t[2].charAt(0) === "=" ? 1 : 2,
text: e,
tokens: this.lexer.inline(e)
};
}
}
paragraph(e) {
let t = this.rules.block.paragraph.exec(e);
if (t) {
let e = t[1].charAt(t[1].length - 1) === "\n" ? t[1].slice(0, -1) : t[1];
return {
type: "paragraph",
raw: t[0],
text: e,
tokens: this.lexer.inline(e)
};
}
}
text(e) {
let t = this.rules.block.text.exec(e);
if (t) return {
type: "text",
raw: t[0],
text: t[0],
tokens: this.lexer.inline(t[0])
};
}
escape(e) {
let t = this.rules.inline.escape.exec(e);
if (t) return {
type: "escape",
raw: t[0],
text: t[1]
};
}
tag(e) {
let t = this.rules.inline.tag.exec(e);
if (t) return !this.lexer.state.inLink && this.rules.other.startATag.test(t[0]) ? this.lexer.state.inLink = !0 : this.lexer.state.inLink && this.rules.other.endATag.test(t[0]) && (this.lexer.state.inLink = !1), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(t[0]) ? this.lexer.state.inRawBlock = !0 : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(t[0]) && (this.lexer.state.inRawBlock = !1), {
type: "html",
raw: t[0],
inLink: this.lexer.state.inLink,
inRawBlock: this.lexer.state.inRawBlock,
block: !1,
text: t[0]
};
}
link(e) {
let t = this.rules.inline.link.exec(e);
if (t) {
let e = t[2].trim();
if (!this.options.pedantic && this.rules.other.startAngleBracket.test(e)) {
if (!this.rules.other.endAngleBracket.test(e)) return;
let t = W(e.slice(0, -1), "\\");
if ((e.length - t.length) % 2 == 0) return;
} else {
let e = ze(t[2], "()");
if (e === -2) return;
if (e > -1) {
let n = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length + e;
t[2] = t[2].substring(0, e), t[0] = t[0].substring(0, n).trim(), t[3] = "";
}
}
let n = t[2], r = "";
if (this.options.pedantic) {
let e = this.rules.other.pedanticHrefTitle.exec(n);
e && (n = e[1], r = e[3]);
} else r = t[3] ? t[3].slice(1, -1) : "";
return n = n.trim(), this.rules.other.startAngleBracket.test(n) && (n = this.options.pedantic && !this.rules.other.endAngleBracket.test(e) ? n.slice(1) : n.slice(1, -1)), Ve(t, {
href: n && n.replace(this.rules.inline.anyPunctuation, "$1"),
title: r && r.replace(this.rules.inline.anyPunctuation, "$1")
}, t[0], this.lexer, this.rules);
}
}
reflink(e, t) {
let n;
if ((n = this.rules.inline.reflink.exec(e)) || (n = this.rules.inline.nolink.exec(e))) {
let e = t[(n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, " ").toLowerCase()];
if (!e) {
let e = n[0].charAt(0);
return {
type: "text",
raw: e,
text: e
};
}
return Ve(n, e, n[0], this.lexer, this.rules);
}
}
emStrong(e, t, n = "") {
let r = this.rules.inline.emStrongLDelim.exec(e);
if (!(!r || !r[1] && !r[2] && !r[3] && !r[4] || r[4] && n.match(this.rules.other.unicodeAlphaNumeric)) && (!(r[1] || r[3]) || !n || this.rules.inline.punctuation.exec(n))) {
let n = [...r[0]].length - 1, i, a, o = n, s = 0, c = r[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
for (c.lastIndex = 0, t = t.slice(-1 * e.length + n); (r = c.exec(t)) !== null;) {
if (i = r[1] || r[2] || r[3] || r[4] || r[5] || r[6], !i) continue;
if (a = [...i].length, r[3] || r[4]) {
o += a;
continue;
} else if ((r[5] || r[6]) && n % 3 && !((n + a) % 3)) {
s += a;
continue;
}
if (o -= a, o > 0) continue;
a = Math.min(a, a + o + s);
let t = [...r[0]][0].length, c = e.slice(0, n + r.index + t + a);
if (Math.min(n, a) % 2) {
let e = c.slice(1, -1);
return {
type: "em",
raw: c,
text: e,
tokens: this.lexer.inlineTokens(e)
};
}
let l = c.slice(2, -2);
return {
type: "strong",
raw: c,
text: l,
tokens: this.lexer.inlineTokens(l)
};
}
}
}
codespan(e) {
let t = this.rules.inline.code.exec(e);
if (t) {
let e = t[2].replace(this.rules.other.newLineCharGlobal, " "), n = this.rules.other.nonSpaceChar.test(e), r = this.rules.other.startingSpaceChar.test(e) && this.rules.other.endingSpaceChar.test(e);
return n && r && (e = e.substring(1, e.length - 1)), {
type: "codespan",
raw: t[0],
text: e
};
}
}
br(e) {
let t = this.rules.inline.br.exec(e);
if (t) return {
type: "br",
raw: t[0]
};
}
del(e, t, n = "") {
let r = this.rules.inline.delLDelim.exec(e);
if (r && (!r[1] || !n || this.rules.inline.punctuation.exec(n))) {
let n = [...r[0]].length - 1, i, a, o = n, s = this.rules.inline.delRDelim;
for (s.lastIndex = 0, t = t.slice(-1 * e.length + n); (r = s.exec(t)) !== null;) {
if (i = r[1] || r[2] || r[3] || r[4] || r[5] || r[6], !i || (a = [...i].length, a !== n)) continue;
if (r[3] || r[4]) {
o += a;
continue;
}
if (o -= a, o > 0) continue;
a = Math.min(a, a + o);
let t = [...r[0]][0].length, s = e.slice(0, n + r.index + t + a), c = s.slice(n, -n);
return {
type: "del",
raw: s,
text: c,
tokens: this.lexer.inlineTokens(c)
};
}
}
}
autolink(e) {
let t = this.rules.inline.autolink.exec(e);
if (t) {
let e, n;
return t[2] === "@" ? (e = t[1], n = "mailto:" + e) : (e = t[1], n = e), {
type: "link",
raw: t[0],
text: e,
href: n,
tokens: [{
type: "text",
raw: e,
text: e
}]
};
}
}
url(e) {
let t;
if (t = this.rules.inline.url.exec(e)) {
let e, n;
if (t[2] === "@") e = t[0], n = "mailto:" + e;
else {
let r;
do
r = t[0], t[0] = this.rules.inline._backpedal.exec(t[0])?.[0] ?? "";
while (r !== t[0]);
e = t[0], n = t[1] === "www." ? "http://" + t[0] : t[0];
}
return {
type: "link",
raw: t[0],
text: e,
href: n,
tokens: [{
type: "text",
raw: e,
text: e
}]
};
}
}
inlineText(e) {
let t = this.rules.inline.text.exec(e);
if (t) {
let e = this.lexer.state.inRawBlock;
return {
type: "text",
raw: t[0],
text: t[0],
escaped: e
};
}
}
}, K = class e {
tokens;
options;
state;
inlineQueue;
tokenizer;
constructor(e) {
this.tokens = [], this.tokens.links = Object.create(null), this.options = e || f, this.options.tokenizer = this.options.tokenizer || new G(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = {
inLink: !1,
inRawBlock: !1,
top: !0
};
let t = {
other: g,
block: R.normal,
inline: z.normal
};
this.options.pedantic ? (t.block = R.pedantic, t.inline = z.pedantic) : this.options.gfm && (t.block = R.gfm, this.options.breaks ? t.inline = z.breaks : t.inline = z.gfm), this.tokenizer.rules = t;
}
static get rules() {
return {
block: R,
inline: z
};
}
static lex(t, n) {
return new e(n).lex(t);
}
static lexInline(t, n) {
return new e(n).inlineTokens(t);
}
lex(e) {
e = e.replace(g.carriageReturn, "\n"), this.blockTokens(e, this.tokens);
for (let e = 0; e < this.inlineQueue.length; e++) {
let t = this.inlineQueue[e];
this.inlineTokens(t.src, t.tokens);
}
return this.inlineQueue = [], this.tokens;
}
blockTokens(e, t = [], n = !1) {
this.tokenizer.lexer = this, this.options.pedantic && (e = e.replace(g.tabCharGlobal, " ").replace(g.spaceLine, ""));
let r = Infinity;
for (; e;) {
if (e.length < r) r = e.length;
else {
this.infiniteLoopError(e.charCodeAt(0));
break;
}
let i;
if (this.options.extensions?.block?.some((n) => (i = n.call({ lexer: this }, e, t)) ? (e = e.substring(i.raw.length), t.push(i), !0) : !1)) continue;
if (i = this.tokenizer.space(e)) {
e = e.substring(i.raw.length);
let n = t.at(-1);
i.raw.length === 1 && n !== void 0 ? n.raw += "\n" : t.push(i);
continue;
}
if (i = this.tokenizer.code(e)) {
e = e.substring(i.raw.length);
let n = t.at(-1);
n?.type === "paragraph" || n?.type === "text" ? (n.raw += (n.raw.endsWith("\n") ? "" : "\n") + i.raw, n.text += "\n" + i.text, this.inlineQueue.at(-1).src = n.text) : t.push(i);
continue;
}
if (i = this.tokenizer.fences(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
if (i = this.tokenizer.heading(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
if (i = this.tokenizer.hr(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
if (i = this.tokenizer.blockquote(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
if (i = this.tokenizer.list(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
if (i = this.tokenizer.html(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
if (i = this.tokenizer.def(e)) {
e = e.substring(i.raw.length);
let n = t.at(-1);
n?.type === "paragraph" || n?.type === "text" ? (n.raw += (n.raw.endsWith("\n") ? "" : "\n") + i.raw, n.text += "\n" + i.raw, this.inlineQueue.at(-1).src = n.text) : this.tokens.links[i.tag] || (this.tokens.links[i.tag] = {
href: i.href,
title: i.title
}, t.push(i));
continue;
}
if (i = this.tokenizer.table(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
if (i = this.tokenizer.lheading(e)) {
e = e.substring(i.raw.length), t.push(i);
continue;
}
let a = e;
if (this.options.extensions?.startBlock) {
let t = Infinity, n = e.slice(1), r;
this.options.extensions.startBlock.forEach((e) => {
r = e.call({ lexer: this }, n), typeof r == "number" && r >= 0 && (t = Math.min(t, r));
}), t < Infinity && t >= 0 && (a = e.substring(0, t + 1));
}
if (this.state.top && (i = this.tokenizer.paragraph(a))) {
let r = t.at(-1);
n && r?.type === "paragraph" ? (r.raw += (r.raw.endsWith("\n") ? "" : "\n") + i.raw, r.text += "\n" + i.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = r.text) : t.push(i), n = a.length !== e.length, e = e.substring(i.raw.length);
continue;
}
if (i = this.tokenizer.text(e)) {
e = e.substring(i.raw.length);
let n = t.at(-1);
n?.type === "text" ? (n.raw += (n.raw.endsWith("\n") ? "" : "\n") + i.raw, n.text += "\n" + i.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = n.text) : t.push(i);
continue;
}
if (e) {
this.infiniteLoopError(e.charCodeAt(0));
break;
}
}
return this.state.top = !0, t;
}
inline(e, t = []) {
return this.inlineQueue.push({
src: e,
tokens: t
}), t;
}
inlineTokens(e, t = []) {
this.tokenizer.lexer = this;
let n = e, r = null;
if (this.tokens.links) {
let e = Object.keys(this.tokens.links);
if (e.length > 0) for (; (r = this.tokenizer.rules.inline.reflinkSearch.exec(n)) !== null;) e.includes(r[0].slice(r[0].lastIndexOf("[") + 1, -1)) && (n = n.slice(0, r.index) + "[" + "a".repeat(r[0].length - 2) + "]" + n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex));
}
for (; (r = this.tokenizer.rules.inline.anyPunctuation.exec(n)) !== null;) n = n.slice(0, r.index) + "++" + n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
let i;
for (; (r = this.tokenizer.rules.inline.blockSkip.exec(n)) !== null;) i = r[2] ? r[2].length : 0, n = n.slice(0, r.index + i) + "[" + "a".repeat(r[0].length - i - 2) + "]" + n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;
let a = !1, o = "", s = Infinity;
for (; e;) {
if (e.length < s) s = e.length;
else {
this.infiniteLoopError(e.charCodeAt(0));
break;
}
a || (o = ""), a = !1;
let r;
if (this.options.extensions?.inline?.some((n) => (r = n.call({ lexer: this }, e, t)) ? (e = e.substring(r.raw.length), t.push(r), !0) : !1)) continue;
if (r = this.tokenizer.escape(e)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (r = this.tokenizer.tag(e)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (r = this.tokenizer.link(e)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (r = this.tokenizer.reflink(e, this.tokens.links)) {
e = e.substring(r.raw.length);
let n = t.at(-1);
r.type === "text" && n?.type === "text" ? (n.raw += r.raw, n.text += r.text) : t.push(r);
continue;
}
if (r = this.tokenizer.emStrong(e, n, o)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (r = this.tokenizer.codespan(e)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (r = this.tokenizer.br(e)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (r = this.tokenizer.del(e, n, o)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (r = this.tokenizer.autolink(e)) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
if (!this.state.inLink && (r = this.tokenizer.url(e))) {
e = e.substring(r.raw.length), t.push(r);
continue;
}
let i = e;
if (this.options.extensions?.startInline) {
let t = Infinity, n = e.slice(1), r;
this.options.extensions.startInline.forEach((e) => {
r = e.call({ lexer: this }, n), typeof r == "number" && r >= 0 && (t = Math.min(t, r));
}), t < Infinity && t >= 0 && (i = e.substring(0, t + 1));
}
if (r = this.tokenizer.inlineText(i)) {
e = e.substring(r.raw.length), r.raw.slice(-1) !== "_" && (o = r.raw.slice(-1)), a = !0;
let n = t.at(-1);
n?.type === "text" ? (n.raw += r.raw, n.text += r.text) : t.push(r);
continue;
}
if (e) {
this.infiniteLoopError(e.charCodeAt(0));
break;
}
}
return t;
}
infiniteLoopError(e) {
let t = "Infinite loop on byte: " + e;
if (this.options.silent) console.error(t);
else throw Error(t);
}
}, q = class {
options;
parser;
constructor(e) {
this.options = e || f;
}
space(e) {
return "";
}
code({ text: e, lang: t, escaped: n }) {
let r = (t || "").match(g.notSpaceStart)?.[0], i = e.replace(g.endingNewline, "") + "\n";
return r ? "<pre><code class=\"language-" + V(r) + "\">" + (n ? i : V(i, !0)) + "</code></pre>\n" : "<pre><code>" + (n ? i : V(i, !0)) + "</code></pre>\n";
}
blockquote({ tokens: e }) {
return `<blockquote>
${this.parser.parse(e)}</blockquote>
`;
}
html({ text: e }) {
return e;
}
def(e) {
return "";
}
heading({ tokens: e, depth: t }) {
return `<h${t}>${this.parser.parseInline(e)}</h${t}>
`;
}
hr(e) {
return "<hr>\n";
}
list(e) {
let t = e.ordered, n = e.start, r = "";
for (let t = 0; t < e.items.length; t++) {
let n = e.items[t];
r += this.listitem(n);
}
let i = t ? "ol" : "ul", a = t && n !== 1 ? " start=\"" + n + "\"" : "";
return "<" + i + a + ">\n" + r + "</" + i + ">\n";
}
listitem(e) {
return `<li>${this.parser.parse(e.tokens)}</li>
`;
}
checkbox({ checked: e }) {
return "<input " + (e ? "checked=\"\" " : "") + "disabled=\"\" type=\"checkbox\"> ";
}
paragraph({ tokens: e }) {
return `<p>${this.parser.parseInline(e)}</p>
`;
}
table(e) {
let t = "", n = "";
for (let t = 0; t < e.header.length; t++) n += this.tablecell(e.header[t]);
t += this.tablerow({ text: n });
let r = "";
for (let t = 0; t < e.rows.length; t++) {
let i = e.rows[t];
n = "";
for (let e = 0; e < i.length; e++) n += this.tablecell(i[e]);
r += this.tablerow({ text: n });
}
return r &&= `<tbody>${r}</tbody>`, "<table>\n<thead>\n" + t + "</thead>\n" + r + "</table>\n";
}
tablerow({ text: e }) {
return `<tr>
${e}</tr>
`;
}
tablecell(e) {
let t = this.parser.parseInline(e.tokens), n = e.header ? "th" : "td";
return (e.align ? `<${n} align="${e.align}">` : `<${n}>`) + t + `</${n}>
`;
}
strong({ tokens: e }) {
return `<strong>${this.parser.parseInline(e)}</strong>`;
}
em({ tokens: e }) {
return `<em>${this.parser.parseInline(e)}</em>`;
}
codespan({ text: e }) {
return `<code>${V(e, !0)}</code>`;
}
br(e) {
return "<br>";
}
del({ tokens: e }) {
return `<del>${this.parser.parseInline(e)}</del>`;
}
link({ href: e, title: t, tokens: n }) {
let r = this.parser.parseInline(n), i = H(e);
if (i === null) return r;
e = i;
let a = "<a href=\"" + e + "\"";
return t && (a += " title=\"" + V(t) + "\""), a += ">" + r + "</a>", a;
}
image({ href: e, title: t, text: n, tokens: r }) {
r && (n = this.parser.parseInline(r, this.parser.textRenderer));
let i = H(e);
if (i === null) return V(n);
e = i;
let a = `<img src="${e}" alt="${V(n)}"`;
return t && (a += ` title="${V(t)}"`), a += ">", a;
}
text(e) {
return "tokens" in e && e.tokens ? this.parser.parseInline(e.tokens) : "escaped" in e && e.escaped ? e.text : V(e.text);
}
}, J = class {
strong({ text: e }) {
return e;
}
em({ text: e }) {
return e;
}
codespan({ text: e }) {
return e;
}
del({ text: e }) {
return e;
}
html({ text: e }) {
return e;
}
text({ text: e }) {
return e;
}
link({ text: e }) {
return "" + e;
}
image({ text: e }) {
return "" + e;
}
br() {
return "";
}
checkbox({ raw: e }) {
return e;
}
}, Y = class e {
options;
renderer;
textRenderer;
constructor(e) {
this.options = e || f, this.options.renderer = this.options.renderer || new q(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new J();
}
static parse(t, n) {
return new e(n).parse(t);
}
static parseInline(t, n) {
return new e(n).parseInline(t);
}
parse(e) {
this.renderer.parser = this;
let t = "";
for (let n = 0; n < e.length; n++) {
let r = e[n];
if (this.options.extensions?.renderers?.[r.type]) {
let e = r, n = this.options.extensions.renderers[e.type].call({ parser: this }, e);
if (n !== !1 || ![
"space",
"hr",
"heading",
"code",
"table",
"blockquote",
"list",
"html",
"def",
"paragraph",
"text"
].includes(e.type)) {
t += n || "";
continue;
}
}
let i = r;
switch (i.type) {
case "space":
t += this.renderer.space(i);
break;
case "hr":
t += this.renderer.hr(i);
break;
case "heading":
t += this.renderer.heading(i);
break;
case "code":
t += this.renderer.code(i);
break;
case "table":
t += this.renderer.table(i);
break;
case "blockquote":
t += this.renderer.blockquote(i);
break;
case "list":
t += this.renderer.list(i);
break;
case "checkbox":
t += this.renderer.checkbox(i);
break;
case "html":
t += this.renderer.html(i);
break;
case "def":
t += this.renderer.def(i);
break;
case "paragraph":
t += this.renderer.paragraph(i);
break;
case "text":
t += this.renderer.text(i);
break;
default: {
let e = "Token with \"" + i.type + "\" type was not found.";
if (this.options.silent) return console.error(e), "";
throw Error(e);
}
}
}
return t;
}
parseInline(e, t = this.renderer) {
this.renderer.parser = this;
let n = "";
for (let r = 0; r < e.length; r++) {
let i = e[r];
if (this.options.extensions?.renderers?.[i.type]) {
let e = this.options.extensions.renderers[i.type].call({ parser: this }, i);
if (e !== !1 || ![
"escape",
"html",
"link",
"image",
"strong",
"em",
"codespan",
"br",
"del",
"text"
].includes(i.type)) {
n += e || "";
continue;
}
}
let a = i;
switch (a.type) {
case "escape":
n += t.text(a);
break;
case "html":
n += t.html(a);
break;
case "link":
n += t.link(a);
break;
case "image":
n += t.image(a);
break;
case "checkbox":
n += t.checkbox(a);
break;
case "strong":
n += t.strong(a);
break;
case "em":
n += t.em(a);
break;
case "codespan":
n += t.codespan(a);
break;
case "br":
n += t.br(a);
break;
case "del":
n += t.del(a);
break;
case "text":
n += t.text(a);
break;
default: {
let e = "Token with \"" + a.type + "\" type was not found.";
if (this.options.silent) return console.error(e), "";
throw Error(e);
}
}
}
return n;
}
}, X = class {
options;
block;
constructor(e) {
this.options = e || f;
}
static passThroughHooks = new Set([
"preprocess",
"postprocess",
"processAllTokens",
"emStrongMask"
]);
static passThroughHooksRespectAsync = new Set([
"preprocess",
"postprocess",
"processAllTokens"
]);
preprocess(e) {
return e;
}
postprocess(e) {
return e;
}
processAllTokens(e) {
return e;
}
emStrongMask(e) {
return e;
}
provideLexer(e = this.block) {
return e ? K.lex : K.lexInline;
}
provideParser(e = this.block) {
return e ? Y.parse : Y.parseInline;
}
}, Ue = class {
defaults = d();
options = this.setOptions;