{"version":3,"sources":["node_modules/marked/lib/marked.esm.js","node_modules/ngx-markdown/fesm2022/ngx-markdown.mjs"],"sourcesContent":["/**\n * marked v12.0.2 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = ch => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = {\n exec: () => null\n};\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$1(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$1(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, t => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {\n // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) {\n // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n list.items[list.items.length - 1].text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n } else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n } else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$1(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$1(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape$1(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [{\n type: 'text',\n raw: text,\n text\n }]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape$1(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [{\n type: 'text',\n raw: text,\n text\n }]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n } else {\n text = escape$1(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/).replace(/bull/g, bullet) // lists can interrupt\n.replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n.replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n.replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n.replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n.replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n.getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/).replace('label', _blockLabel).replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, bullet).getRegex();\nconst _tag = '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';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|\\\\n*|$)' // (4)\n+ '|\\\\n*|$)' // (5)\n+ '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n+ '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n+ ')', 'i').replace('comment', _comment).replace('tag', _tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nconst paragraph = edit(_paragraph).replace('hr', hr).replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)').replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n.replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n.getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace('paragraph', paragraph).getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n.replace('hr', hr).replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n.getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph).replace('hr', hr).replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)').replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', _comment).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(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph).replace('hr', hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', lheading).replace('|table', '').replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').replace('|tag', '').getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u').replace(/punct/g, _punctuation).getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n+ '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n.replace(/punct/g, _punctuation).getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n+ '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n.replace(/punct/g, _punctuation).getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu').replace(/punct/g, _punctuation).getRegex();\nconst autolink = edit(/^<(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();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment' + '|^' // self-closing tag\n+ '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n+ '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n+ '|^' // declaration, e.g. \n+ '|^') // CDATA section\n.replace('comment', _inlineComment).replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/).replace('label', _inlineLabel).replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/).replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/).replace('label', _inlineLabel).replace('ref', _blockLabel).getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/).replace('ref', _blockLabel).getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g').replace('reflink', reflink).replace('nolink', nolink).getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest,\n // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', _inlineLabel).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', _inlineLabel).getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i').replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(extTokenizer => {\n if (token = extTokenizer.call({\n lexer: this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(getStartIndex => {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({\n src,\n tokens\n });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(extTokenizer => {\n if (token = extTokenizer.call({\n lexer: this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(getStartIndex => {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
' + (escaped ? code : escape$1(code, true)) + '
\\n';\n }\n return '
' + (escaped ? code : escape$1(code, true)) + '
\\n';\n }\n blockquote(quote) {\n return `
\\n${quote}
\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body) body = `${body}`;\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align ? `<${type} align=\"${flags.align}\">` : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n } else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html':\n {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph':\n {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text':\n {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default:\n {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape':\n {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html':\n {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link':\n {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image':\n {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong':\n {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em':\n {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan':\n {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br':\n {\n out += renderer.br();\n break;\n }\n case 'del':\n {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text':\n {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default:\n {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set(['preprocess', 'postprocess', 'processAllTokens']);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table':\n {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list':\n {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default:\n {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach(childTokens => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n args.forEach(pack => {\n // copy options to new object\n const opts = {\n ...pack\n };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach(ext => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) {\n // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = arg => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = {\n ...this.defaults,\n ...opts\n };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = {\n ...this.defaults,\n ...opt\n };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = {\n ...options\n };\n const opt = {\n ...this.defaults,\n ...origOpt\n };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(src => lexer(src, opt)).then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then(tokens => parser(tokens, opt)).then(html => opt.hooks ? opt.hooks.postprocess(html) : html).catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return e => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    ' + escape$1(e.message + '', true) + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options = marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import { AsyncPipe, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, InjectionToken, Pipe, PLATFORM_ID, Injectable, Inject, Optional, EventEmitter, Input, Output, SecurityContext, NgModule } from '@angular/core';\nimport { Subject, merge, of, timer } from 'rxjs';\nimport { switchMap, mapTo, distinctUntilChanged, shareReplay, startWith, map, takeUntil, first } from 'rxjs/operators';\nimport { Renderer, marked } from 'marked';\nconst _c0 = [\"*\"];\nexport { Renderer as MarkedRenderer } from 'marked';\nimport * as i1 from '@angular/common/http';\nimport * as i2 from '@angular/platform-browser';\nconst BUTTON_TEXT_COPY = 'Copy';\nconst BUTTON_TEXT_COPIED = 'Copied';\nclass ClipboardButtonComponent {\n constructor() {\n this._buttonClick$ = new Subject();\n this.copied$ = this._buttonClick$.pipe(switchMap(() => merge(of(true), timer(3000).pipe(mapTo(false)))), distinctUntilChanged(), shareReplay(1));\n this.copiedText$ = this.copied$.pipe(startWith(false), map(copied => copied ? BUTTON_TEXT_COPIED : BUTTON_TEXT_COPY));\n }\n onCopyToClipboardClick() {\n this._buttonClick$.next();\n }\n static {\n this.ɵfac = function ClipboardButtonComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ClipboardButtonComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ClipboardButtonComponent,\n selectors: [[\"markdown-clipboard\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 7,\n consts: [[1, \"markdown-clipboard-button\", 3, \"click\"]],\n template: function ClipboardButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\", 0);\n i0.ɵɵpipe(1, \"async\");\n i0.ɵɵlistener(\"click\", function ClipboardButtonComponent_Template_button_click_0_listener() {\n return ctx.onCopyToClipboardClick();\n });\n i0.ɵɵtext(2);\n i0.ɵɵpipe(3, \"async\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"copied\", i0.ɵɵpipeBind1(1, 3, ctx.copied$));\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, ctx.copiedText$));\n }\n },\n dependencies: [AsyncPipe],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ClipboardButtonComponent, [{\n type: Component,\n args: [{\n selector: 'markdown-clipboard',\n template: `\n {{ copiedText$ | async }}\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [AsyncPipe]\n }]\n }], null, null);\n})();\nconst CLIPBOARD_OPTIONS = new InjectionToken('CLIPBOARD_OPTIONS');\n\n/* eslint-disable */\nclass KatexSpecificOptions {}\nclass LanguagePipe {\n transform(value, language) {\n if (value == null) {\n value = '';\n }\n if (language == null) {\n language = '';\n }\n if (typeof value !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid value type [${typeof value}]`);\n return value;\n }\n if (typeof language !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid parameter [${typeof language}]`);\n return value;\n }\n return '```' + language + '\\n' + value + '\\n```';\n }\n static {\n this.ɵfac = function LanguagePipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LanguagePipe)();\n };\n }\n static {\n this.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"language\",\n type: LanguagePipe,\n pure: true,\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LanguagePipe, [{\n type: Pipe,\n args: [{\n name: 'language',\n standalone: true\n }]\n }], null, null);\n})();\nvar PrismPlugin;\n(function (PrismPlugin) {\n PrismPlugin[\"CommandLine\"] = \"command-line\";\n PrismPlugin[\"LineHighlight\"] = \"line-highlight\";\n PrismPlugin[\"LineNumbers\"] = \"line-numbers\";\n})(PrismPlugin || (PrismPlugin = {}));\nconst MARKED_EXTENSIONS = new InjectionToken('MARKED_EXTENSIONS');\nconst MARKED_OPTIONS = new InjectionToken('MARKED_OPTIONS');\n\n/* eslint-disable max-len */\nconst errorJoyPixelsNotLoaded = '[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information';\nconst errorKatexNotLoaded = '[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information';\nconst errorMermaidNotLoaded = '[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information';\nconst errorClipboardNotLoaded = '[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information';\nconst errorClipboardViewContainerRequired = '[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function';\nconst errorSrcWithoutHttpClient = '[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information';\n/* eslint-enable max-len */\nconst SECURITY_CONTEXT = new InjectionToken('SECURITY_CONTEXT');\nclass ExtendedRenderer extends Renderer {\n constructor() {\n super(...arguments);\n this.ɵNgxMarkdownRendererExtendedForExtensions = false;\n this.ɵNgxMarkdownRendererExtendedForMermaid = false;\n }\n}\nclass MarkdownService {\n get options() {\n return this._options;\n }\n set options(value) {\n this._options = {\n ...this.DEFAULT_MARKED_OPTIONS,\n ...value\n };\n }\n get renderer() {\n return this.options.renderer;\n }\n set renderer(value) {\n this.options.renderer = value;\n }\n constructor(clipboardOptions, extensions, options, platform, securityContext, http, sanitizer) {\n this.clipboardOptions = clipboardOptions;\n this.extensions = extensions;\n this.platform = platform;\n this.securityContext = securityContext;\n this.http = http;\n this.sanitizer = sanitizer;\n this.DEFAULT_MARKED_OPTIONS = {\n renderer: new Renderer()\n };\n this.DEFAULT_KATEX_OPTIONS = {\n delimiters: [{\n left: '$$',\n right: '$$',\n display: true\n }, {\n left: '$',\n right: '$',\n display: false\n }, {\n left: '\\\\(',\n right: '\\\\)',\n display: false\n }, {\n left: '\\\\begin{equation}',\n right: '\\\\end{equation}',\n display: true\n }, {\n left: '\\\\begin{align}',\n right: '\\\\end{align}',\n display: true\n }, {\n left: '\\\\begin{alignat}',\n right: '\\\\end{alignat}',\n display: true\n }, {\n left: '\\\\begin{gather}',\n right: '\\\\end{gather}',\n display: true\n }, {\n left: '\\\\begin{CD}',\n right: '\\\\end{CD}',\n display: true\n }, {\n left: '\\\\[',\n right: '\\\\]',\n display: true\n }]\n };\n this.DEFAULT_MERMAID_OPTIONS = {\n startOnLoad: false\n };\n this.DEFAULT_CLIPBOARD_OPTIONS = {\n buttonComponent: undefined\n };\n this.DEFAULT_PARSE_OPTIONS = {\n decodeHtml: false,\n inline: false,\n emoji: false,\n mermaid: false,\n markedOptions: undefined,\n disableSanitizer: false\n };\n this.DEFAULT_RENDER_OPTIONS = {\n clipboard: false,\n clipboardOptions: undefined,\n katex: false,\n katexOptions: undefined,\n mermaid: false,\n mermaidOptions: undefined\n };\n this._reload$ = new Subject();\n this.reload$ = this._reload$.asObservable();\n this.options = options;\n }\n parse(markdown, parseOptions = this.DEFAULT_PARSE_OPTIONS) {\n const {\n decodeHtml,\n inline,\n emoji,\n mermaid,\n disableSanitizer\n } = parseOptions;\n const markedOptions = {\n ...this.options,\n ...parseOptions.markedOptions\n };\n const renderer = markedOptions.renderer || this.renderer || new Renderer();\n if (this.extensions) {\n this.renderer = this.extendsRendererForExtensions(renderer);\n }\n if (mermaid) {\n this.renderer = this.extendsRendererForMermaid(renderer);\n }\n const trimmed = this.trimIndentation(markdown);\n const decoded = decodeHtml ? this.decodeHtml(trimmed) : trimmed;\n const emojified = emoji ? this.parseEmoji(decoded) : decoded;\n const marked = this.parseMarked(emojified, markedOptions, inline);\n const sanitized = disableSanitizer ? marked : this.sanitizer.sanitize(this.securityContext, marked);\n return sanitized || '';\n }\n render(element, options = this.DEFAULT_RENDER_OPTIONS, viewContainerRef) {\n const {\n clipboard,\n clipboardOptions,\n katex,\n katexOptions,\n mermaid,\n mermaidOptions\n } = options;\n if (katex) {\n this.renderKatex(element, {\n ...this.DEFAULT_KATEX_OPTIONS,\n ...katexOptions\n });\n }\n if (mermaid) {\n this.renderMermaid(element, {\n ...this.DEFAULT_MERMAID_OPTIONS,\n ...mermaidOptions\n });\n }\n if (clipboard) {\n this.renderClipboard(element, viewContainerRef, {\n ...this.DEFAULT_CLIPBOARD_OPTIONS,\n ...this.clipboardOptions,\n ...clipboardOptions\n });\n }\n this.highlight(element);\n }\n reload() {\n this._reload$.next();\n }\n getSource(src) {\n if (!this.http) {\n throw new Error(errorSrcWithoutHttpClient);\n }\n return this.http.get(src, {\n responseType: 'text'\n }).pipe(map(markdown => this.handleExtension(src, markdown)));\n }\n highlight(element) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof Prism === 'undefined' || typeof Prism.highlightAllUnder === 'undefined') {\n return;\n }\n if (!element) {\n element = document;\n }\n const noLanguageElements = element.querySelectorAll('pre code:not([class*=\"language-\"])');\n Array.prototype.forEach.call(noLanguageElements, x => x.classList.add('language-none'));\n Prism.highlightAllUnder(element);\n }\n decodeHtml(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n const textarea = document.createElement('textarea');\n textarea.innerHTML = html;\n return textarea.value;\n }\n extendsRendererForExtensions(renderer) {\n const extendedRenderer = renderer;\n if (extendedRenderer.ɵNgxMarkdownRendererExtendedForExtensions === true) {\n return renderer;\n }\n if (this.extensions?.length > 0) {\n marked.use(...this.extensions);\n }\n extendedRenderer.ɵNgxMarkdownRendererExtendedForExtensions = true;\n return renderer;\n }\n extendsRendererForMermaid(renderer) {\n const extendedRenderer = renderer;\n if (extendedRenderer.ɵNgxMarkdownRendererExtendedForMermaid === true) {\n return renderer;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const defaultCode = renderer.code;\n renderer.code = function (code, language, isEscaped) {\n return language === 'mermaid' ? `
    ${code}
    ` : defaultCode.call(this, code, language, isEscaped);\n };\n extendedRenderer.ɵNgxMarkdownRendererExtendedForMermaid = true;\n return renderer;\n }\n handleExtension(src, markdown) {\n const urlProtocolIndex = src.lastIndexOf('://');\n const urlWithoutProtocol = urlProtocolIndex > -1 ? src.substring(urlProtocolIndex + 4) : src;\n const lastSlashIndex = urlWithoutProtocol.lastIndexOf('/');\n const lastUrlSegment = lastSlashIndex > -1 ? urlWithoutProtocol.substring(lastSlashIndex + 1).split('?')[0] : '';\n const lastDotIndex = lastUrlSegment.lastIndexOf('.');\n const extension = lastDotIndex > -1 ? lastUrlSegment.substring(lastDotIndex + 1) : '';\n return !!extension && extension !== 'md' ? '```' + extension + '\\n' + markdown + '\\n```' : markdown;\n }\n parseMarked(html, markedOptions, inline = false) {\n if (markedOptions.renderer) {\n // clone renderer and remove extended flags otherwise\n // marked throws an error thinking it is a renderer prop\n const renderer = {\n ...markedOptions.renderer\n };\n delete renderer.ɵNgxMarkdownRendererExtendedForExtensions;\n delete renderer.ɵNgxMarkdownRendererExtendedForMermaid;\n // remove renderer from markedOptions because if renderer is\n // passed to marked.parse method, it will ignore all extensions\n delete markedOptions.renderer;\n marked.use({\n renderer\n });\n }\n return inline ? marked.parseInline(html, markedOptions) : marked.parse(html, markedOptions);\n }\n parseEmoji(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n if (typeof joypixels === 'undefined' || typeof joypixels.shortnameToUnicode === 'undefined') {\n throw new Error(errorJoyPixelsNotLoaded);\n }\n return joypixels.shortnameToUnicode(html);\n }\n renderKatex(element, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof katex === 'undefined' || typeof renderMathInElement === 'undefined') {\n throw new Error(errorKatexNotLoaded);\n }\n renderMathInElement(element, options);\n }\n renderClipboard(element, viewContainerRef, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof ClipboardJS === 'undefined') {\n throw new Error(errorClipboardNotLoaded);\n }\n if (!viewContainerRef) {\n throw new Error(errorClipboardViewContainerRequired);\n }\n const {\n buttonComponent,\n buttonTemplate\n } = options;\n // target every
     elements\n    const preElements = element.querySelectorAll('pre');\n    for (let i = 0; i < preElements.length; i++) {\n      const preElement = preElements.item(i);\n      // create 
     wrapper element\n      const preWrapperElement = document.createElement('div');\n      preWrapperElement.style.position = 'relative';\n      preElement.parentNode.insertBefore(preWrapperElement, preElement);\n      preWrapperElement.appendChild(preElement);\n      // create toolbar element\n      const toolbarWrapperElement = document.createElement('div');\n      toolbarWrapperElement.classList.add('markdown-clipboard-toolbar');\n      toolbarWrapperElement.style.position = 'absolute';\n      toolbarWrapperElement.style.top = '.5em';\n      toolbarWrapperElement.style.right = '.5em';\n      toolbarWrapperElement.style.zIndex = '1';\n      preWrapperElement.insertAdjacentElement('beforeend', toolbarWrapperElement);\n      // register listener to show/hide toolbar\n      preWrapperElement.onmouseenter = () => toolbarWrapperElement.classList.add('hover');\n      preWrapperElement.onmouseleave = () => toolbarWrapperElement.classList.remove('hover');\n      // declare embeddedViewRef holding variable\n      let embeddedViewRef;\n      // use provided component via input property\n      // or provided via ClipboardOptions provider\n      if (buttonComponent) {\n        const componentRef = viewContainerRef.createComponent(buttonComponent);\n        embeddedViewRef = componentRef.hostView;\n        componentRef.changeDetectorRef.markForCheck();\n      }\n      // use provided template via input property\n      else if (buttonTemplate) {\n        embeddedViewRef = viewContainerRef.createEmbeddedView(buttonTemplate);\n      }\n      // use default component\n      else {\n        const componentRef = viewContainerRef.createComponent(ClipboardButtonComponent);\n        embeddedViewRef = componentRef.hostView;\n        componentRef.changeDetectorRef.markForCheck();\n      }\n      // declare clipboard instance variable\n      let clipboardInstance;\n      // attach clipboard.js to root node\n      embeddedViewRef.rootNodes.forEach(node => {\n        toolbarWrapperElement.appendChild(node);\n        clipboardInstance = new ClipboardJS(node, {\n          text: () => preElement.innerText\n        });\n      });\n      // destroy clipboard instance when view is destroyed\n      embeddedViewRef.onDestroy(() => clipboardInstance.destroy());\n    }\n  }\n  renderMermaid(element, options = this.DEFAULT_MERMAID_OPTIONS) {\n    if (!isPlatformBrowser(this.platform)) {\n      return;\n    }\n    if (typeof mermaid === 'undefined' || typeof mermaid.initialize === 'undefined') {\n      throw new Error(errorMermaidNotLoaded);\n    }\n    const mermaidElements = element.querySelectorAll('.mermaid');\n    if (mermaidElements.length === 0) {\n      return;\n    }\n    mermaid.initialize(options);\n    mermaid.run({\n      nodes: mermaidElements\n    });\n  }\n  trimIndentation(markdown) {\n    if (!markdown) {\n      return '';\n    }\n    let indentStart;\n    return markdown.split('\\n').map(line => {\n      let lineIdentStart = indentStart;\n      if (line.length > 0) {\n        lineIdentStart = isNaN(lineIdentStart) ? line.search(/\\S|$/) : Math.min(line.search(/\\S|$/), lineIdentStart);\n      }\n      if (isNaN(indentStart)) {\n        indentStart = lineIdentStart;\n      }\n      return lineIdentStart ? line.substring(lineIdentStart) : line;\n    }).join('\\n');\n  }\n  static {\n    this.ɵfac = function MarkdownService_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MarkdownService)(i0.ɵɵinject(CLIPBOARD_OPTIONS, 8), i0.ɵɵinject(MARKED_EXTENSIONS, 8), i0.ɵɵinject(MARKED_OPTIONS, 8), i0.ɵɵinject(PLATFORM_ID), i0.ɵɵinject(SECURITY_CONTEXT), i0.ɵɵinject(i1.HttpClient, 8), i0.ɵɵinject(i2.DomSanitizer));\n    };\n  }\n  static {\n    this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n      token: MarkdownService,\n      factory: MarkdownService.ɵfac\n    });\n  }\n}\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownService, [{\n    type: Injectable\n  }], () => [{\n    type: undefined,\n    decorators: [{\n      type: Inject,\n      args: [CLIPBOARD_OPTIONS]\n    }, {\n      type: Optional\n    }]\n  }, {\n    type: undefined,\n    decorators: [{\n      type: Inject,\n      args: [MARKED_EXTENSIONS]\n    }, {\n      type: Optional\n    }]\n  }, {\n    type: undefined,\n    decorators: [{\n      type: Inject,\n      args: [MARKED_OPTIONS]\n    }, {\n      type: Optional\n    }]\n  }, {\n    type: Object,\n    decorators: [{\n      type: Inject,\n      args: [PLATFORM_ID]\n    }]\n  }, {\n    type: i0.SecurityContext,\n    decorators: [{\n      type: Inject,\n      args: [SECURITY_CONTEXT]\n    }]\n  }, {\n    type: i1.HttpClient,\n    decorators: [{\n      type: Optional\n    }]\n  }, {\n    type: i2.DomSanitizer\n  }], null);\n})();\nclass MarkdownComponent {\n  get disableSanitizer() {\n    return this._disableSanitizer;\n  }\n  set disableSanitizer(value) {\n    this._disableSanitizer = this.coerceBooleanProperty(value);\n  }\n  get inline() {\n    return this._inline;\n  }\n  set inline(value) {\n    this._inline = this.coerceBooleanProperty(value);\n  }\n  // Plugin - clipboard\n  get clipboard() {\n    return this._clipboard;\n  }\n  set clipboard(value) {\n    this._clipboard = this.coerceBooleanProperty(value);\n  }\n  // Plugin - emoji\n  get emoji() {\n    return this._emoji;\n  }\n  set emoji(value) {\n    this._emoji = this.coerceBooleanProperty(value);\n  }\n  // Plugin - katex\n  get katex() {\n    return this._katex;\n  }\n  set katex(value) {\n    this._katex = this.coerceBooleanProperty(value);\n  }\n  // Plugin - mermaid\n  get mermaid() {\n    return this._mermaid;\n  }\n  set mermaid(value) {\n    this._mermaid = this.coerceBooleanProperty(value);\n  }\n  // Plugin - lineHighlight\n  get lineHighlight() {\n    return this._lineHighlight;\n  }\n  set lineHighlight(value) {\n    this._lineHighlight = this.coerceBooleanProperty(value);\n  }\n  // Plugin - lineNumbers\n  get lineNumbers() {\n    return this._lineNumbers;\n  }\n  set lineNumbers(value) {\n    this._lineNumbers = this.coerceBooleanProperty(value);\n  }\n  // Plugin - commandLine\n  get commandLine() {\n    return this._commandLine;\n  }\n  set commandLine(value) {\n    this._commandLine = this.coerceBooleanProperty(value);\n  }\n  constructor(element, markdownService, viewContainerRef) {\n    this.element = element;\n    this.markdownService = markdownService;\n    this.viewContainerRef = viewContainerRef;\n    // Event emitters\n    this.error = new EventEmitter();\n    this.load = new EventEmitter();\n    this.ready = new EventEmitter();\n    this._clipboard = false;\n    this._commandLine = false;\n    this._disableSanitizer = false;\n    this._emoji = false;\n    this._inline = false;\n    this._katex = false;\n    this._lineHighlight = false;\n    this._lineNumbers = false;\n    this._mermaid = false;\n    this.destroyed$ = new Subject();\n  }\n  ngOnChanges() {\n    this.loadContent();\n  }\n  loadContent() {\n    if (this.data != null) {\n      this.handleData();\n      return;\n    }\n    if (this.src != null) {\n      this.handleSrc();\n      return;\n    }\n  }\n  ngAfterViewInit() {\n    if (!this.data && !this.src) {\n      this.handleTransclusion();\n    }\n    this.markdownService.reload$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.loadContent());\n  }\n  ngOnDestroy() {\n    this.destroyed$.next();\n    this.destroyed$.complete();\n  }\n  async render(markdown, decodeHtml = false) {\n    const parsedOptions = {\n      decodeHtml,\n      inline: this.inline,\n      emoji: this.emoji,\n      mermaid: this.mermaid,\n      disableSanitizer: this.disableSanitizer\n    };\n    const renderOptions = {\n      clipboard: this.clipboard,\n      clipboardOptions: this.getClipboardOptions(),\n      katex: this.katex,\n      katexOptions: this.katexOptions,\n      mermaid: this.mermaid,\n      mermaidOptions: this.mermaidOptions\n    };\n    const parsed = await this.markdownService.parse(markdown, parsedOptions);\n    this.element.nativeElement.innerHTML = parsed;\n    this.handlePlugins();\n    this.markdownService.render(this.element.nativeElement, renderOptions, this.viewContainerRef);\n    this.ready.emit();\n  }\n  coerceBooleanProperty(value) {\n    return value != null && `${String(value)}` !== 'false';\n  }\n  getClipboardOptions() {\n    if (this.clipboardButtonComponent || this.clipboardButtonTemplate) {\n      return {\n        buttonComponent: this.clipboardButtonComponent,\n        buttonTemplate: this.clipboardButtonTemplate\n      };\n    }\n    return undefined;\n  }\n  handleData() {\n    this.render(this.data);\n  }\n  handleSrc() {\n    this.markdownService.getSource(this.src).subscribe({\n      next: markdown => {\n        this.render(markdown).then(() => {\n          this.load.emit(markdown);\n        });\n      },\n      error: error => this.error.emit(error)\n    });\n  }\n  handleTransclusion() {\n    this.render(this.element.nativeElement.innerHTML, true);\n  }\n  handlePlugins() {\n    if (this.commandLine) {\n      this.setPluginClass(this.element.nativeElement, PrismPlugin.CommandLine);\n      this.setPluginOptions(this.element.nativeElement, {\n        dataFilterOutput: this.filterOutput,\n        dataHost: this.host,\n        dataPrompt: this.prompt,\n        dataOutput: this.output,\n        dataUser: this.user\n      });\n    }\n    if (this.lineHighlight) {\n      this.setPluginOptions(this.element.nativeElement, {\n        dataLine: this.line,\n        dataLineOffset: this.lineOffset\n      });\n    }\n    if (this.lineNumbers) {\n      this.setPluginClass(this.element.nativeElement, PrismPlugin.LineNumbers);\n      this.setPluginOptions(this.element.nativeElement, {\n        dataStart: this.start\n      });\n    }\n  }\n  setPluginClass(element, plugin) {\n    const preElements = element.querySelectorAll('pre');\n    for (let i = 0; i < preElements.length; i++) {\n      const classes = plugin instanceof Array ? plugin : [plugin];\n      preElements.item(i).classList.add(...classes);\n    }\n  }\n  setPluginOptions(element, options) {\n    const preElements = element.querySelectorAll('pre');\n    for (let i = 0; i < preElements.length; i++) {\n      Object.keys(options).forEach(option => {\n        const attributeValue = options[option];\n        if (attributeValue) {\n          const attributeName = this.toLispCase(option);\n          preElements.item(i).setAttribute(attributeName, attributeValue.toString());\n        }\n      });\n    }\n  }\n  toLispCase(value) {\n    const upperChars = value.match(/([A-Z])/g);\n    if (!upperChars) {\n      return value;\n    }\n    let str = value.toString();\n    for (let i = 0, n = upperChars.length; i < n; i++) {\n      str = str.replace(new RegExp(upperChars[i]), '-' + upperChars[i].toLowerCase());\n    }\n    if (str.slice(0, 1) === '-') {\n      str = str.slice(1);\n    }\n    return str;\n  }\n  static {\n    this.ɵfac = function MarkdownComponent_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MarkdownComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(MarkdownService), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n    };\n  }\n  static {\n    this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MarkdownComponent,\n      selectors: [[\"markdown\"], [\"\", \"markdown\", \"\"]],\n      inputs: {\n        data: \"data\",\n        src: \"src\",\n        disableSanitizer: \"disableSanitizer\",\n        inline: \"inline\",\n        clipboard: \"clipboard\",\n        clipboardButtonComponent: \"clipboardButtonComponent\",\n        clipboardButtonTemplate: \"clipboardButtonTemplate\",\n        emoji: \"emoji\",\n        katex: \"katex\",\n        katexOptions: \"katexOptions\",\n        mermaid: \"mermaid\",\n        mermaidOptions: \"mermaidOptions\",\n        lineHighlight: \"lineHighlight\",\n        line: \"line\",\n        lineOffset: \"lineOffset\",\n        lineNumbers: \"lineNumbers\",\n        start: \"start\",\n        commandLine: \"commandLine\",\n        filterOutput: \"filterOutput\",\n        host: \"host\",\n        prompt: \"prompt\",\n        output: \"output\",\n        user: \"user\"\n      },\n      outputs: {\n        error: \"error\",\n        load: \"load\",\n        ready: \"ready\"\n      },\n      standalone: true,\n      features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n      ngContentSelectors: _c0,\n      decls: 1,\n      vars: 0,\n      template: function MarkdownComponent_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef();\n          i0.ɵɵprojection(0);\n        }\n      },\n      encapsulation: 2\n    });\n  }\n}\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownComponent, [{\n    type: Component,\n    args: [{\n      // eslint-disable-next-line @angular-eslint/component-selector\n      selector: 'markdown, [markdown]',\n      template: '',\n      standalone: true\n    }]\n  }], () => [{\n    type: i0.ElementRef\n  }, {\n    type: MarkdownService\n  }, {\n    type: i0.ViewContainerRef\n  }], {\n    data: [{\n      type: Input\n    }],\n    src: [{\n      type: Input\n    }],\n    disableSanitizer: [{\n      type: Input\n    }],\n    inline: [{\n      type: Input\n    }],\n    clipboard: [{\n      type: Input\n    }],\n    clipboardButtonComponent: [{\n      type: Input\n    }],\n    clipboardButtonTemplate: [{\n      type: Input\n    }],\n    emoji: [{\n      type: Input\n    }],\n    katex: [{\n      type: Input\n    }],\n    katexOptions: [{\n      type: Input\n    }],\n    mermaid: [{\n      type: Input\n    }],\n    mermaidOptions: [{\n      type: Input\n    }],\n    lineHighlight: [{\n      type: Input\n    }],\n    line: [{\n      type: Input\n    }],\n    lineOffset: [{\n      type: Input\n    }],\n    lineNumbers: [{\n      type: Input\n    }],\n    start: [{\n      type: Input\n    }],\n    commandLine: [{\n      type: Input\n    }],\n    filterOutput: [{\n      type: Input\n    }],\n    host: [{\n      type: Input\n    }],\n    prompt: [{\n      type: Input\n    }],\n    output: [{\n      type: Input\n    }],\n    user: [{\n      type: Input\n    }],\n    error: [{\n      type: Output\n    }],\n    load: [{\n      type: Output\n    }],\n    ready: [{\n      type: Output\n    }]\n  });\n})();\nclass MarkdownPipe {\n  constructor(domSanitizer, elementRef, markdownService, viewContainerRef, zone) {\n    this.domSanitizer = domSanitizer;\n    this.elementRef = elementRef;\n    this.markdownService = markdownService;\n    this.viewContainerRef = viewContainerRef;\n    this.zone = zone;\n  }\n  async transform(value, options) {\n    if (value == null) {\n      return '';\n    }\n    if (typeof value !== 'string') {\n      console.error(`MarkdownPipe has been invoked with an invalid value type [${typeof value}]`);\n      return value;\n    }\n    const markdown = await this.markdownService.parse(value, options);\n    this.zone.onStable.pipe(first()).subscribe(() => this.markdownService.render(this.elementRef.nativeElement, options, this.viewContainerRef));\n    return this.domSanitizer.bypassSecurityTrustHtml(markdown);\n  }\n  static {\n    this.ɵfac = function MarkdownPipe_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MarkdownPipe)(i0.ɵɵdirectiveInject(i2.DomSanitizer, 16), i0.ɵɵdirectiveInject(i0.ElementRef, 16), i0.ɵɵdirectiveInject(MarkdownService, 16), i0.ɵɵdirectiveInject(i0.ViewContainerRef, 16), i0.ɵɵdirectiveInject(i0.NgZone, 16));\n    };\n  }\n  static {\n    this.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n      name: \"markdown\",\n      type: MarkdownPipe,\n      pure: true,\n      standalone: true\n    });\n  }\n}\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownPipe, [{\n    type: Pipe,\n    args: [{\n      name: 'markdown',\n      standalone: true\n    }]\n  }], () => [{\n    type: i2.DomSanitizer\n  }, {\n    type: i0.ElementRef\n  }, {\n    type: MarkdownService\n  }, {\n    type: i0.ViewContainerRef\n  }, {\n    type: i0.NgZone\n  }], null);\n})();\nfunction provideMarkdown(markdownModuleConfig) {\n  return [MarkdownService, markdownModuleConfig?.loader ?? [], markdownModuleConfig?.clipboardOptions ?? [], markdownModuleConfig?.markedOptions ?? [], {\n    provide: MARKED_EXTENSIONS,\n    useValue: markdownModuleConfig?.markedExtensions ?? []\n  }, {\n    provide: SECURITY_CONTEXT,\n    useValue: markdownModuleConfig?.sanitize ?? SecurityContext.HTML\n  }];\n}\nconst sharedDeclarations = [ClipboardButtonComponent, LanguagePipe, MarkdownComponent, MarkdownPipe];\nclass MarkdownModule {\n  static forRoot(markdownModuleConfig) {\n    return {\n      ngModule: MarkdownModule,\n      providers: [provideMarkdown(markdownModuleConfig)]\n    };\n  }\n  static forChild() {\n    return {\n      ngModule: MarkdownModule\n    };\n  }\n  static {\n    this.ɵfac = function MarkdownModule_Factory(__ngFactoryType__) {\n      return new (__ngFactoryType__ || MarkdownModule)();\n    };\n  }\n  static {\n    this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n      type: MarkdownModule\n    });\n  }\n  static {\n    this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n      imports: [CommonModule]\n    });\n  }\n}\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MarkdownModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, ...sharedDeclarations],\n      exports: sharedDeclarations\n    }]\n  }], null, null);\n})();\n\n/* eslint-disable */\nvar MermaidAPI;\n(function (MermaidAPI) {\n  let SecurityLevel;\n  (function (SecurityLevel) {\n    /**\n     * (default) tags in text are encoded, click functionality is disabled\n     */\n    SecurityLevel[\"Strict\"] = \"strict\";\n    /**\n     * tags in text are allowed, click functionality is enabled\n     */\n    SecurityLevel[\"Loose\"] = \"loose\";\n    /**\n     * html tags in text are allowed, (only script element is removed), click functionality is enabled\n     */\n    SecurityLevel[\"Antiscript\"] = \"antiscript\";\n    /**\n     * with this security level all rendering takes place in a sandboxed iframe.\n     * This prevent any javascript running in the context.\n     * This may hinder interactive functionality of the diagram like scripts,\n     * popups in sequence diagram or links to other tabs/targets etc.\n     */\n    SecurityLevel[\"Sandbox\"] = \"sandbox\";\n  })(SecurityLevel = MermaidAPI.SecurityLevel || (MermaidAPI.SecurityLevel = {}));\n  let Theme;\n  (function (Theme) {\n    /**\n     * Designed to modified, as the name implies it is supposed to be used as the base for making custom themes.\n     */\n    Theme[\"Base\"] = \"base\";\n    /**\n     * A theme full of light greens that is easy on the eyes.\n     */\n    Theme[\"Forest\"] = \"forest\";\n    /**\n     * A theme that would go well with other dark colored elements.\n     */\n    Theme[\"Dark\"] = \"dark\";\n    /**\n     *  The default theme for all diagrams.\n     */\n    Theme[\"Default\"] = \"default\";\n    /**\n     * The theme to be used for black and white printing\n     */\n    Theme[\"Neutral\"] = \"neutral\";\n  })(Theme = MermaidAPI.Theme || (MermaidAPI.Theme = {}));\n  let LogLevel;\n  (function (LogLevel) {\n    LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\n    LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n    LogLevel[LogLevel[\"Warn\"] = 3] = \"Warn\";\n    LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\n    LogLevel[LogLevel[\"Fatal\"] = 5] = \"Fatal\";\n  })(LogLevel = MermaidAPI.LogLevel || (MermaidAPI.LogLevel = {}));\n})(MermaidAPI || (MermaidAPI = {}));\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CLIPBOARD_OPTIONS, ClipboardButtonComponent, ExtendedRenderer, KatexSpecificOptions, LanguagePipe, MARKED_EXTENSIONS, MARKED_OPTIONS, MarkdownComponent, MarkdownModule, MarkdownPipe, MarkdownService, MermaidAPI, PrismPlugin, SECURITY_CONTEXT, errorClipboardNotLoaded, errorClipboardViewContainerRequired, errorJoyPixelsNotLoaded, errorKatexNotLoaded, errorMermaidNotLoaded, errorSrcWithoutHttpClient, provideMarkdown };\n"],"mappings":"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","names":["html","link","lexer","options","list","tag","text","block","parser","tokens","args","ret","walkTokens","src","PrismPlugin","options","inline","mermaid","marked","katex","html","MermaidAPI","SecurityLevel","Theme","LogLevel"],"x_google_ignoreList":[0,1]}