{"mappings":"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","names":["globalKey","prismGlobal","plainTextGrammar","rest","tokenize","resolve","id","languages","tokenizeText","text","grammar","withoutTokenizer","startNode","restGrammar","array","i","matchGrammar","escapeHtml","string","pattern","replacement","closingTag","openingTags","closingTags","highlightTokens","tokens","str","token","stringify","Token","type","alias","content","prevOpening","prevClosing","opening","contentStr","highlightText","ref","startPos","rematch","j","p","patternObj","patterns","inside","lookbehind","greedy","currentNode","pos","removeCount","match","lookbehindLength","from","matchStr","to","k","after","reach","newToken","next","nestedRematch","matchedStr"],"sources":["../esm/npm/@cyfung1031/prism-code-editor@5.2.0-cdn-esm.2/node_modules/@cyfung1031/prism-code-editor/src/prism/core.js"],"sourcesContent":["// Slimmed down Prism core with most high level functions removed\n\nvar globalKey = Symbol.for(\"prism-code-editor.prism\");\nvar prismGlobal = globalThis[globalKey] || (globalThis[globalKey] = {});\n\nvar plainTextGrammar = prismGlobal.plainTextGrammar || (prismGlobal.plainTextGrammar = {});\nvar rest = prismGlobal.rest || (prismGlobal.rest = Symbol.for(\"prism-code-editor.prism.rest\"));\nvar tokenize =\n\tprismGlobal.tokenize || (prismGlobal.tokenize = Symbol.for(\"prism-code-editor.prism.tokenize\"));\n\n/** @param {*} id */\nvar resolve = id =\u003e typeof id == 'string' ? languages[id] : id;\n\n/** @type {Record\u003cstring, any\u003e} */\nvar languages =\n\tprismGlobal.languages ||\n\t(prismGlobal.languages = {\n\t\tplain: plainTextGrammar,\n\t\tplaintext: plainTextGrammar,\n\t\ttext: plainTextGrammar,\n\t\ttxt: plainTextGrammar,\n\t});\n\n/**\n * @param {string} text\n * @param {any} grammar\n */\nvar tokenizeText = (text, grammar) =\u003e (grammar[tokenize] || withoutTokenizer)(text, grammar);\n\n/**\n * @param {string} text\n * @param {any} grammar\n */\nvar withoutTokenizer = (text, grammar) =\u003e {\n\t/** @type {LinkedListNode} */\n\tvar startNode = [text];\n\tvar restGrammar;\n\t/** @type {(string | Token)[]} */\n\tvar array = [], i = 0;\n\twhile (restGrammar = resolve(grammar[rest])) {\n\t\tdelete grammar[rest];\n\t\tObject.assign(grammar, restGrammar);\n\t}\n\n\tmatchGrammar(text, grammar, startNode, 0);\n\n\twhile (array[i++] = startNode[0], startNode = startNode[1]);\n\treturn array;\n};\n\n/**\n * @param {string} string\n * @param {RegExp} pattern\n * @param {string} replacement\n */\nvar escapeHtml = (string, pattern, replacement) =\u003e {\n\treturn string.replace(/\u0026/g, '\u0026amp;').replace(pattern, replacement);\n};\n\nvar closingTag = '\u003c/span\u003e';\nvar openingTags = '';\nvar closingTags = '';\n\n/** @param {(string | Token)[]} tokens */\nvar highlightTokens = tokens =\u003e {\n\tvar str = '', token, i = 0;\n\twhile (token = tokens[i++]) str += stringify(token);\n\treturn str;\n};\n\n/**\n * @param {string | Token | (string | Token)[]} token\n * @returns {string}\n */\nvar stringify = token =\u003e {\n\tif (token instanceof Token) {\n\t\tvar { type, alias, content } = token;\n\t\tvar prevOpening = openingTags;\n\t\tvar prevClosing = closingTags;\n\t\tvar opening = `\u003cspan class=\"token ${\n\t\t\ttype + (alias ? ' ' + alias : '') +\n\t\t\t(type == 'keyword' \u0026\u0026 typeof content == 'string' ? ' keyword-' + content : '')\n\t\t}\"\u003e`;\n\n\t\tclosingTags += closingTag;\n\t\topeningTags += opening;\n\t\tvar contentStr = stringify(content);\n\t\topeningTags = prevOpening;\n\t\tclosingTags = prevClosing;\n\t\treturn opening + contentStr + closingTag;\n\t}\n\n\tif (typeof token != 'string') return highlightTokens(token);\n\n\ttoken = escapeHtml(token, /\u003c/g, '\u0026lt;');\n\tif (closingTags \u0026\u0026 token.includes('\\n')) {\n\t\treturn token.replace(/\\n/g, closingTags + '\\n' + openingTags);\n\t}\n\treturn token;\n};\n\n/**\n * @param {string} text\n * @param {*} ref\n */\nvar highlightText = (text, ref) =\u003e highlightTokens(tokenizeText(text, resolve(ref)));\n\n/**\n * @param {string} text\n * @param {any} grammar\n * @param {LinkedListNode} startNode\n * @param {number} startPos\n * @param {[string, number, number]} [rematch]\n *\n * @typedef {[string | Token, LinkedListNode?]} LinkedListNode\n */\nvar matchGrammar = (text, grammar, startNode, startPos, rematch) =\u003e {\n\tfor (var token in grammar) {\n\t\tif (grammar[token]) for (var j = 0, p = grammar[token], patternObj, patterns = Array.isArray(p) ? p : [p]; patternObj = patterns[j]; j++) {\n\t\t\tif (rematch \u0026\u0026 rematch[0] == token \u0026\u0026 rematch[1] == j) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/** @type {RegExp} */\n\t\t\tvar pattern = patternObj.pattern || patternObj;\n\t\t\tvar inside = resolve(patternObj.inside);\n\t\t\tvar lookbehind = patternObj.lookbehind;\n\t\t\tvar greedy = pattern.global;\n\t\t\tvar alias = patternObj.alias;\n\n\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\tvar currentNode = startNode, pos = startPos;\n\t\t\t\tcurrentNode \u0026\u0026 (!rematch || pos \u003c rematch[2]);\n\t\t\t\tpos += currentNode[0].length, currentNode = currentNode[1]\n\t\t\t) {\n\t\t\t\tvar str = currentNode[0];\n\t\t\t\tvar removeCount = 0;\n\t\t\t\tvar match;\n\n\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tpattern.lastIndex = greedy ? pos : 0;\n\t\t\t\tmatch = pattern.exec(greedy ? text : str);\n\n\t\t\t\tif (!match \u0026\u0026 greedy) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (!(match \u0026\u0026 match[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\t\tvar lookbehindLength = lookbehind \u0026\u0026 match[1] ? match[1].length : 0;\n\t\t\t\tvar from = match.index + lookbehindLength;\n\t\t\t\tvar matchStr = match[0].slice(lookbehindLength);\n\t\t\t\tvar to = from + matchStr.length;\n\t\t\t\tvar k, p;\n\n\t\t\t\tif (greedy) {\n\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\tfor (\n\t\t\t\t\t\t;\n\t\t\t\t\t\tp = pos + currentNode[0].length, from \u003e= p;\n\t\t\t\t\t\tcurrentNode = currentNode[1], pos = p\n\t\t\t\t\t);\n\n\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\tif (currentNode[0] instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\tfor (\n\t\t\t\t\t\tk = currentNode, p = pos;\n\t\t\t\t\t\t(p += k[0].length) \u003c to;\n\t\t\t\t\t\tk = k[1], removeCount++\n\t\t\t\t\t);\n\n\t\t\t\t\t// replace with the new match\n\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\tfrom -= pos;\n\t\t\t\t\tto -= pos;\n\t\t\t\t}\n\n\t\t\t\tvar after = str.slice(to);\n\t\t\t\tvar reach = pos + str.length;\n\t\t\t\tvar newToken = new Token(token, inside ? tokenizeText(matchStr, inside) : matchStr, matchStr, alias);\n\t\t\t\tvar next = currentNode, i = 0;\n\t\t\t\tvar nestedRematch;\n\n\t\t\t\twhile (next = next[1], i++ \u003c removeCount);\n\n\t\t\t\tif (after) {\n\t\t\t\t\tif (!next || next[0] instanceof Token) next = [after, next];\n\t\t\t\t\telse next[0] = after + next[0];\n\t\t\t\t};\n\n\t\t\t\tpos += from;\n\t\t\t\tcurrentNode[0] = from ? str.slice(0, from) : newToken;\n\n\t\t\t\tif (from) currentNode = currentNode[1] = [newToken, next];\n\t\t\t\telse currentNode[1] = next;\n\n\t\t\t\tif (removeCount) {\n\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\tmatchGrammar(text, grammar, currentNode, pos, nestedRematch = [token, j, reach]);\n\t\t\t\t\treach = nestedRematch[2];\n\t\t\t\t}\n\n\t\t\t\tif (rematch \u0026\u0026 reach \u003e rematch[2]) rematch[2] = reach;\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * Creates a new token.\n *\n * @param {string} type\n * @param {string | any[]} content\n * @param {string} matchedStr\n * @param {string} alias\n * @class\n */\nfunction Token(type, content, matchedStr, alias) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\tthis.length = matchedStr.length;\n}\n\nexport {\n\trest,\n\ttokenize,\n\tToken,\n\tlanguages,\n\ttokenizeText,\n\twithoutTokenizer,\n\tresolve,\n\tescapeHtml,\n\thighlightTokens,\n\thighlightText\n};\n"],"version":3}
