uview-next
Version:
基于uView UI 2.0,110+高质量组件库,支持vue2和vue3,支持鸿蒙,支持多语言,搭配便捷工具助力,让开发更得心应手
1,554 lines (1,510 loc) • 208 kB
JavaScript
/*
Highlight.js v11.7.0
(c) 2006-2022 undefined and other contributors
License: BSD-3-Clause
*/
var e = {
exports: {}
};
function n(e) {
return e instanceof Map ? e.clear = e.delete = e.set = () => {
throw Error("map is read-only")
} : e instanceof Set && (e.add = e.clear = e.delete = () => {
throw Error("set is read-only")
}), Object.freeze(e), Object.getOwnPropertyNames(e).forEach((t => {
var a = e[t];
"object" != typeof a || Object.isFrozen(a) || n(a)
})), e
}
e.exports = n, e.exports.default = n;
class t {
constructor(e) {
void 0 === e.data && (e.data = {}), this.data = e.data, this.isMatchIgnored = !1
}
ignoreMatch() {
this.isMatchIgnored = !0
}
}
function a(e) {
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g,
"'")
}
function i(e, ...n) {
const t = Object.create(null);
for (const n in e) t[n] = e[n];
return n.forEach((e => {
for (const n in e) t[n] = e[n]
})), t
}
const r = e => !!e.scope || e.sublanguage && e.language;
class s {
constructor(e, n) {
this.buffer = "", this.classPrefix = n.classPrefix, e.walk(this)
}
addText(e) {
this.buffer += a(e)
}
openNode(e) {
if (!r(e)) return;
let n = "";
n = e.sublanguage ? "language-" + e.language : ((e, {
prefix: n
}) => {
if (e.includes(".")) {
const t = e.split(".");
return [`${n}${t.shift()}`, ...t.map(((e, n) => `${e}${"_".repeat(n+1)}`))].join(" ")
}
return `${n}${e}`
})(e.scope, {
prefix: this.classPrefix
}), this.span(n)
}
closeNode(e) {
r(e) && (this.buffer += "</span>")
}
value() {
return this.buffer
}
span(e) {
this.buffer += `<span class="${e}">`
}
}
const o = (e = {}) => {
const n = {
children: []
};
return Object.assign(n, e), n
};
class l {
constructor() {
this.rootNode = o(), this.stack = [this.rootNode]
}
get top() {
return this.stack[this.stack.length - 1]
}
get root() {
return this.rootNode
}
add(e) {
this.top.children.push(e)
}
openNode(e) {
const n = o({
scope: e
});
this.add(n), this.stack.push(n)
}
closeNode() {
if (this.stack.length > 1) return this.stack.pop()
}
closeAllNodes() {
for (; this.closeNode(););
}
toJSON() {
return JSON.stringify(this.rootNode, null, 4)
}
walk(e) {
return this.constructor._walk(e, this.rootNode)
}
static _walk(e, n) {
return "string" == typeof n ? e.addText(n) : n.children && (e.openNode(n),
n.children.forEach((n => this._walk(e, n))), e.closeNode(n)), e
}
static _collapse(e) {
"string" != typeof e && e.children && (e.children.every((e => "string" == typeof e)) ? e.children = [e.children
.join("")
] : e.children.forEach((e => {
l._collapse(e)
})))
}
}
class c extends l {
constructor(e) {
super(), this.options = e
}
addKeyword(e, n) {
"" !== e && (this.openNode(n), this.addText(e), this.closeNode())
}
addText(e) {
"" !== e && this.add(e)
}
addSublanguage(e, n) {
const t = e.root;
t.sublanguage = !0, t.language = n, this.add(t)
}
toHTML() {
return new s(this, this.options).value()
}
finalize() {
return !0
}
}
function d(e) {
return e ? "string" == typeof e ? e : e.source : null
}
function g(e) {
return m("(?=", e, ")")
}
function u(e) {
return m("(?:", e, ")*")
}
function b(e) {
return m("(?:", e, ")?")
}
function m(...e) {
return e.map((e => d(e))).join("")
}
function p(...e) {
const n = (e => {
const n = e[e.length - 1];
return "object" == typeof n && n.constructor === Object ? (e.splice(e.length - 1, 1), n) : {}
})(e);
return "(" + (n.capture ? "" : "?:") + e.map((e => d(e))).join("|") + ")"
}
function _(e) {
return RegExp(e.toString() + "|").exec("").length - 1
}
const h = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
function f(e, {
joinWith: n
}) {
let t = 0;
return e.map((e => {
t += 1;
const n = t;
let a = d(e),
i = "";
for (; a.length > 0;) {
const e = h.exec(a);
if (!e) {
i += a;
break
}
i += a.substring(0, e.index),
a = a.substring(e.index + e[0].length), "\\" === e[0][0] && e[1] ? i += "\\" + (Number(e[1]) + n) : (i +=
e[0],
"(" === e[0] && t++)
}
return i
})).map((e => `(${e})`)).join(n)
}
const E = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
y = {
begin: "\\\\[\\s\\S]",
relevance: 0
},
w = {
scope: "string",
begin: "'",
end: "'",
illegal: "\\n",
contains: [y]
},
N = {
scope: "string",
begin: '"',
end: '"',
illegal: "\\n",
contains: [y]
},
v = (e, n, t = {}) => {
const a = i({
scope: "comment",
begin: e,
end: n,
contains: []
}, t);
a.contains.push({
scope: "doctag",
begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,
excludeBegin: !0,
relevance: 0
});
const r = p("I", "a", "is", "so", "us", "to", "at", "if", "in", "it", "on", /[A-Za-z]+['](d|ve|re|ll|t|s|n)/,
/[A-Za-z]+[-][a-z]+/, /[A-Za-z][a-z]{2,}/);
return a.contains.push({
begin: m(/[ ]+/, "(", r, /[.]?[:]?([.][ ]|[ ])/, "){3}")
}), a
},
O = v("//", "$"),
k = v("/\\*", "\\*/"),
x = v("#", "$");
var M = Object.freeze({
__proto__: null,
MATCH_NOTHING_RE: /\b\B/,
IDENT_RE: "[a-zA-Z]\\w*",
UNDERSCORE_IDENT_RE: "[a-zA-Z_]\\w*",
NUMBER_RE: "\\b\\d+(\\.\\d+)?",
C_NUMBER_RE: E,
BINARY_NUMBER_RE: "\\b(0b[01]+)",
RE_STARTERS_RE: "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
SHEBANG: (e = {}) => {
const n = /^#![ ]*\//;
return e.binary && (e.begin = m(n, /.*\b/, e.binary, /\b.*/)), i({
scope: "meta",
begin: n,
end: /$/,
relevance: 0,
"on:begin": (e, n) => {
0 !== e.index && n.ignoreMatch()
}
}, e)
},
BACKSLASH_ESCAPE: y,
APOS_STRING_MODE: w,
QUOTE_STRING_MODE: N,
PHRASAL_WORDS_MODE: {
begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
},
COMMENT: v,
C_LINE_COMMENT_MODE: O,
C_BLOCK_COMMENT_MODE: k,
HASH_COMMENT_MODE: x,
NUMBER_MODE: {
scope: "number",
begin: "\\b\\d+(\\.\\d+)?",
relevance: 0
},
C_NUMBER_MODE: {
scope: "number",
begin: E,
relevance: 0
},
BINARY_NUMBER_MODE: {
scope: "number",
begin: "\\b(0b[01]+)",
relevance: 0
},
REGEXP_MODE: {
begin: /(?=\/[^/\n]*\/)/,
contains: [{
scope: "regexp",
begin: /\//,
end: /\/[gimuy]*/,
illegal: /\n/,
contains: [y, {
begin: /\[/,
end: /\]/,
relevance: 0,
contains: [y]
}]
}]
},
TITLE_MODE: {
scope: "title",
begin: "[a-zA-Z]\\w*",
relevance: 0
},
UNDERSCORE_TITLE_MODE: {
scope: "title",
begin: "[a-zA-Z_]\\w*",
relevance: 0
},
METHOD_GUARD: {
begin: "\\.\\s*[a-zA-Z_]\\w*",
relevance: 0
},
END_SAME_AS_BEGIN: e => Object.assign(e, {
"on:begin": (e, n) => {
n.data._beginMatch = e[1]
},
"on:end": (e, n) => {
n.data._beginMatch !== e[1] && n.ignoreMatch()
}
})
});
function S(e, n) {
"." === e.input[e.index - 1] && n.ignoreMatch()
}
function A(e, n) {
void 0 !== e.className && (e.scope = e.className, delete e.className)
}
function C(e, n) {
n && e.beginKeywords && (e.begin = "\\b(" + e.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)",
e.__beforeBegin = S, e.keywords = e.keywords || e.beginKeywords, delete e.beginKeywords,
void 0 === e.relevance && (e.relevance = 0))
}
function T(e, n) {
Array.isArray(e.illegal) && (e.illegal = p(...e.illegal))
}
function R(e, n) {
if (e.match) {
if (e.begin || e.end) throw Error("begin & end are not supported with match");
e.begin = e.match, delete e.match
}
}
function D(e, n) {
void 0 === e.relevance && (e.relevance = 1)
}
const I = (e, n) => {
if (!e.beforeMatch) return;
if (e.starts) throw Error("beforeMatch cannot be used with starts");
const t = Object.assign({}, e);
Object.keys(e).forEach((n => {
delete e[n]
})), e.keywords = t.keywords, e.begin = m(t.beforeMatch, g(t.begin)), e.starts = {
relevance: 0,
contains: [Object.assign(t, {
endsParent: !0
})]
}, e.relevance = 0, delete t.beforeMatch
},
L = ["of", "and", "for", "in", "not", "or", "if", "then", "parent", "list", "value"];
function B(e, n, t = "keyword") {
const a = Object.create(null);
return "string" == typeof e ? i(t, e.split(" ")) : Array.isArray(e) ? i(t, e) : Object.keys(e).forEach((t => {
Object.assign(a, B(e[t], n, t))
})), a;
function i(e, t) {
n && (t = t.map((e => e.toLowerCase()))), t.forEach((n => {
const t = n.split("|");
a[t[0]] = [e, $(t[0], t[1])]
}))
}
}
function $(e, n) {
return n ? Number(n) : (e => L.includes(e.toLowerCase()))(e) ? 0 : 1
}
const z = {},
F = e => {
console.error(e)
},
U = (e, ...n) => {
console.log("WARN: " + e, ...n)
},
j = (e, n) => {
z[`${e}/${n}`] || (console.log(`Deprecated as of ${e}. ${n}`), z[`${e}/${n}`] = !0)
},
P = Error();
function K(e, n, {
key: t
}) {
let a = 0;
const i = e[t],
r = {},
s = {};
for (let e = 1; e <= n.length; e++) s[e + a] = i[e], r[e + a] = !0, a += _(n[e - 1]);
e[t] = s, e[t]._emit = r, e[t]._multi = !0
}
function H(e) {
(e => {
e.scope && "object" == typeof e.scope && null !== e.scope && (e.beginScope = e.scope,
delete e.scope)
})(e), "string" == typeof e.beginScope && (e.beginScope = {
_wrap: e.beginScope
}), "string" == typeof e.endScope && (e.endScope = {
_wrap: e.endScope
}), (e => {
if (Array.isArray(e.begin)) {
if (e.skip || e.excludeBegin || e.returnBegin) throw F(
"skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
P;
if ("object" != typeof e.beginScope || null === e.beginScope) throw F("beginScope must be object"),
P;
K(e, e.begin, {
key: "beginScope"
}), e.begin = f(e.begin, {
joinWith: ""
})
}
})(e), (e => {
if (Array.isArray(e.end)) {
if (e.skip || e.excludeEnd || e.returnEnd) throw F(
"skip, excludeEnd, returnEnd not compatible with endScope: {}"),
P;
if ("object" != typeof e.endScope || null === e.endScope) throw F("endScope must be object"),
P;
K(e, e.end, {
key: "endScope"
}), e.end = f(e.end, {
joinWith: ""
})
}
})(e)
}
function q(e) {
function n(n, t) {
return RegExp(d(n), "m" + (e.case_insensitive ? "i" : "") + (e.unicodeRegex ? "u" : "") + (t ? "g" : ""))
}
class t {
constructor() {
this.matchIndexes = {}, this.regexes = [], this.matchAt = 1, this.position = 0
}
addRule(e, n) {
n.position = this.position++, this.matchIndexes[this.matchAt] = n, this.regexes.push([n, e]),
this.matchAt += _(e) + 1
}
compile() {
0 === this.regexes.length && (this.exec = () => null);
const e = this.regexes.map((e => e[1]));
this.matcherRe = n(f(e, {
joinWith: "|"
}), !0), this.lastIndex = 0
}
exec(e) {
this.matcherRe.lastIndex = this.lastIndex;
const n = this.matcherRe.exec(e);
if (!n) return null;
const t = n.findIndex(((e, n) => n > 0 && void 0 !== e)),
a = this.matchIndexes[t];
return n.splice(0, t), Object.assign(n, a)
}
}
class a {
constructor() {
this.rules = [], this.multiRegexes = [],
this.count = 0, this.lastIndex = 0, this.regexIndex = 0
}
getMatcher(e) {
if (this.multiRegexes[e]) return this.multiRegexes[e];
const n = new t;
return this.rules.slice(e).forEach((([e, t]) => n.addRule(e, t))),
n.compile(), this.multiRegexes[e] = n, n
}
resumingScanAtSamePosition() {
return 0 !== this.regexIndex
}
considerAll() {
this.regexIndex = 0
}
addRule(e, n) {
this.rules.push([e, n]), "begin" === n.type && this.count++
}
exec(e) {
const n = this.getMatcher(this.regexIndex);
n.lastIndex = this.lastIndex;
let t = n.exec(e);
if (this.resumingScanAtSamePosition())
if (t && t.index === this.lastIndex);
else {
const n = this.getMatcher(0);
n.lastIndex = this.lastIndex + 1, t = n.exec(e)
}
return t && (this.regexIndex += t.position + 1,
this.regexIndex === this.count && this.considerAll()), t
}
}
if (e.compilerExtensions || (e.compilerExtensions = []),
e.contains && e.contains.includes("self")) throw Error(
"ERR: contains `self` is not supported at the top-level of a language. See documentation.");
return e.classNameAliases = i(e.classNameAliases || {}),
function t(r, s) {
const o = r;
if (r.isCompiled) return o;
[A, R, H, I].forEach((e => e(r, s))), e.compilerExtensions.forEach((e => e(r, s))),
r.__beforeBegin = null, [C, T, D].forEach((e => e(r, s))), r.isCompiled = !0;
let l = null;
return "object" == typeof r.keywords && r.keywords.$pattern && (r.keywords = Object.assign({}, r.keywords),
l = r.keywords.$pattern,
delete r.keywords.$pattern), l = l || /\w+/, r.keywords && (r.keywords = B(r.keywords, e.case_insensitive)),
o.keywordPatternRe = n(l, !0),
s && (r.begin || (r.begin = /\B|\b/), o.beginRe = n(o.begin), r.end || r.endsWithParent || (r.end = /\B|\b/),
r.end && (o.endRe = n(o.end)),
o.terminatorEnd = d(o.end) || "", r.endsWithParent && s.terminatorEnd && (o.terminatorEnd += (r.end ? "|" :
"") + s.terminatorEnd)),
r.illegal && (o.illegalRe = n(r.illegal)),
r.contains || (r.contains = []), r.contains = [].concat(...r.contains.map((e => (e => (e.variants && !e
.cachedVariants && (e.cachedVariants = e.variants.map((n => i(e, {
variants: null
}, n)))), e.cachedVariants ? e.cachedVariants : Z(e) ? i(e, {
starts: e.starts ? i(e.starts) : null
}) : Object.isFrozen(e) ? i(e) : e))("self" === e ? r : e)))), r.contains.forEach((e => {
t(e, o)
})), r.starts && t(r.starts, s), o.matcher = (e => {
const n = new a;
return e.contains.forEach((e => n.addRule(e.begin, {
rule: e,
type: "begin"
}))), e.terminatorEnd && n.addRule(e.terminatorEnd, {
type: "end"
}), e.illegal && n.addRule(e.illegal, {
type: "illegal"
}), n
})(o), o
}(e)
}
function Z(e) {
return !!e && (e.endsWithParent || Z(e.starts))
}
class G extends Error {
constructor(e, n) {
super(e), this.name = "HTMLInjectionError", this.html = n
}
}
const W = a,
Q = i,
X = Symbol("nomatch");
var V = (n => {
const a = Object.create(null),
i = Object.create(null),
r = [];
let s = !0;
const o = "Could not find the language '{}', did you forget to load/include a language module?",
l = {
disableAutodetect: !0,
name: "Plain text",
contains: []
};
let d = {
ignoreUnescapedHTML: !1,
throwUnescapedHTML: !1,
noHighlightRe: /^(no-?highlight)$/i,
languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
classPrefix: "hljs-",
cssSelector: "pre code",
languages: null,
__emitter: c
};
function _(e) {
return d.noHighlightRe.test(e)
}
function h(e, n, t) {
let a = "",
i = "";
"object" == typeof n ? (a = e,
t = n.ignoreIllegals, i = n.language) : (j("10.7.0", "highlight(lang, code, ...args) has been deprecated."),
j("10.7.0",
"Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
i = e, a = n), void 0 === t && (t = !0);
const r = {
code: a,
language: i
};
x("before:highlight", r);
const s = r.result ? r.result : f(r.language, r.code, t);
return s.code = r.code, x("after:highlight", s), s
}
function f(e, n, i, r) {
const l = Object.create(null);
function c() {
if (!k.keywords) return void M.addText(S);
let e = 0;
k.keywordPatternRe.lastIndex = 0;
let n = k.keywordPatternRe.exec(S),
t = "";
for (; n;) {
t += S.substring(e, n.index);
const i = w.case_insensitive ? n[0].toLowerCase() : n[0],
r = (a = i, k.keywords[a]);
if (r) {
const [e, a] = r
;
if (M.addText(t), t = "", l[i] = (l[i] || 0) + 1, l[i] <= 7 && (A += a), e.startsWith("_")) t += n[0];
else {
const t = w.classNameAliases[e] || e;
M.addKeyword(n[0], t)
}
} else t += n[0];
e = k.keywordPatternRe.lastIndex, n = k.keywordPatternRe.exec(S)
}
var a;
t += S.substring(e), M.addText(t)
}
function g() {
null != k.subLanguage ? (() => {
if ("" === S) return;
let e = null;
if ("string" == typeof k.subLanguage) {
if (!a[k.subLanguage]) return void M.addText(S);
e = f(k.subLanguage, S, !0, x[k.subLanguage]), x[k.subLanguage] = e._top
} else e = E(S, k.subLanguage.length ? k.subLanguage : null);
k.relevance > 0 && (A += e.relevance), M.addSublanguage(e._emitter, e.language)
})() : c(), S = ""
}
function u(e, n) {
let t = 1;
const a = n.length - 1;
for (; t <= a;) {
if (!e._emit[t]) {
t++;
continue
}
const a = w.classNameAliases[e[t]] || e[t],
i = n[t];
a ? M.addKeyword(i, a) : (S = i, c(), S = ""), t++
}
}
function b(e, n) {
return e.scope && "string" == typeof e.scope && M.openNode(w.classNameAliases[e.scope] || e.scope),
e.beginScope && (e.beginScope._wrap ? (M.addKeyword(S, w.classNameAliases[e.beginScope._wrap] || e
.beginScope._wrap),
S = "") : e.beginScope._multi && (u(e.beginScope, n), S = "")), k = Object.create(e, {
parent: {
value: k
}
}), k
}
function m(e, n, a) {
let i = ((e, n) => {
const t = e && e.exec(n);
return t && 0 === t.index
})(e.endRe, a);
if (i) {
if (e["on:end"]) {
const a = new t(e);
e["on:end"](n, a), a.isMatchIgnored && (i = !1)
}
if (i) {
for (; e.endsParent && e.parent;) e = e.parent;
return e
}
}
if (e.endsWithParent) return m(e.parent, n, a)
}
function p(e) {
return 0 === k.matcher.regexIndex ? (S += e[0], 1) : (R = !0, 0)
}
function _(e) {
const t = e[0],
a = n.substring(e.index),
i = m(k, e, a);
if (!i) return X;
const r = k;
k.endScope && k.endScope._wrap ? (g(),
M.addKeyword(t, k.endScope._wrap)) : k.endScope && k.endScope._multi ? (g(),
u(k.endScope, e)) : r.skip ? S += t : (r.returnEnd || r.excludeEnd || (S += t),
g(), r.excludeEnd && (S = t));
do {
k.scope && M.closeNode(), k.skip || k.subLanguage || (A += k.relevance), k = k.parent
} while (k !== i.parent);
return i.starts && b(i.starts, e), r.returnEnd ? 0 : t.length
}
let h = {};
function y(a, r) {
const o = r && r[0];
if (S += a, null == o) return g(), 0;
if ("begin" === h.type && "end" === r.type && h.index === r.index && "" === o) {
if (S += n.slice(r.index, r.index + 1), !s) {
const n = Error(`0 width match regex (${e})`);
throw n.languageName = e, n.badRule = h.rule, n
}
return 1
}
if (h = r, "begin" === r.type) return (e => {
const n = e[0],
a = e.rule,
i = new t(a),
r = [a.__beforeBegin, a["on:begin"]];
for (const t of r)
if (t && (t(e, i), i.isMatchIgnored)) return p(n);
return a.skip ? S += n : (a.excludeBegin && (S += n),
g(), a.returnBegin || a.excludeBegin || (S = n)), b(a, e), a.returnBegin ? 0 : n.length
})(r);
if ("illegal" === r.type && !i) {
const e = Error('Illegal lexeme "' + o + '" for mode "' + (k.scope || "<unnamed>") + '"');
throw e.mode = k, e
}
if ("end" === r.type) {
const e = _(r);
if (e !== X) return e
}
if ("illegal" === r.type && "" === o) return 1;
if (T > 1e5 && T > 3 * r.index) throw Error("potential infinite loop, way more iterations than matches");
return S += o, o.length
}
const w = v(e);
if (!w) throw F(o.replace("{}", e)), Error('Unknown language: "' + e + '"');
const N = q(w);
let O = "",
k = r || N;
const x = {},
M = new d.__emitter(d);
(() => {
const e = [];
for (let n = k; n !== w; n = n.parent) n.scope && e.unshift(n.scope);
e.forEach((e => M.openNode(e)))
})();
let S = "",
A = 0,
C = 0,
T = 0,
R = !1;
try {
for (k.matcher.considerAll();;) {
T++, R ? R = !1 : k.matcher.considerAll(), k.matcher.lastIndex = C;
const e = k.matcher.exec(n);
if (!e) break;
const t = y(n.substring(C, e.index), e);
C = e.index + t
}
return y(n.substring(C)), M.closeAllNodes(), M.finalize(), O = M.toHTML(), {
language: e,
value: O,
relevance: A,
illegal: !1,
_emitter: M,
_top: k
}
} catch (t) {
if (t.message && t.message.includes("Illegal")) return {
language: e,
value: W(n),
illegal: !0,
relevance: 0,
_illegalBy: {
message: t.message,
index: C,
context: n.slice(C - 100, C + 100),
mode: t.mode,
resultSoFar: O
},
_emitter: M
};
if (s) return {
language: e,
value: W(n),
illegal: !1,
relevance: 0,
errorRaised: t,
_emitter: M,
_top: k
};
throw t
}
}
function E(e, n) {
n = n || d.languages || Object.keys(a);
const t = (e => {
const n = {
value: W(e),
illegal: !1,
relevance: 0,
_top: l,
_emitter: new d.__emitter(d)
};
return n._emitter.addText(e), n
})(e),
i = n.filter(v).filter(k).map((n => f(n, e, !1)));
i.unshift(t);
const r = i.sort(((e, n) => {
if (e.relevance !== n.relevance) return n.relevance - e.relevance;
if (e.language && n.language) {
if (v(e.language).supersetOf === n.language) return 1;
if (v(n.language).supersetOf === e.language) return -1
}
return 0
})),
[s, o] = r,
c = s;
return c.secondBest = o, c
}
function y(e) {
let n = null;
const t = (e => {
let n = e.className + " ";
n += e.parentNode ? e.parentNode.className : "";
const t = d.languageDetectRe.exec(n);
if (t) {
const n = v(t[1]);
return n || (U(o.replace("{}", t[1])),
U("Falling back to no-highlight mode for this block.", e)), n ? t[1] : "no-highlight"
}
return n.split(/\s+/).find((e => _(e) || v(e)))
})(e);
if (_(t)) return;
if (x("before:highlightElement", {
el: e,
language: t
}), e.children.length > 0 && (d.ignoreUnescapedHTML || (console.warn(
"One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
console.warn("The element with unescaped HTML:"),
console.warn(e)), d.throwUnescapedHTML)) throw new G("One of your code blocks includes unescaped HTML.", e
.innerHTML);
n = e;
const a = n.textContent,
r = t ? h(a, {
language: t,
ignoreIllegals: !0
}) : E(a);
e.innerHTML = r.value, ((e, n, t) => {
const a = n && i[n] || t;
e.classList.add("hljs"), e.classList.add("language-" + a)
})(e, t, r.language), e.result = {
language: r.language,
re: r.relevance,
relevance: r.relevance
}, r.secondBest && (e.secondBest = {
language: r.secondBest.language,
relevance: r.secondBest.relevance
}), x("after:highlightElement", {
el: e,
result: r,
text: a
})
}
let w = !1;
function N() {
"loading" !== document.readyState ? document.querySelectorAll(d.cssSelector).forEach(y) : w = !0
}
function v(e) {
return e = (e || "").toLowerCase(), a[e] || a[i[e]]
}
function O(e, {
languageName: n
}) {
"string" == typeof e && (e = [e]), e.forEach((e => {
i[e.toLowerCase()] = n
}))
}
function k(e) {
const n = v(e);
return n && !n.disableAutodetect
}
function x(e, n) {
const t = e;
r.forEach((e => {
e[t] && e[t](n)
}))
}
"undefined" != typeof window && window.addEventListener && window.addEventListener("DOMContentLoaded", (() => {
w && N()
}), !1), Object.assign(n, {
highlight: h,
highlightAuto: E,
highlightAll: N,
highlightElement: y,
highlightBlock: e => (j("10.7.0", "highlightBlock will be removed entirely in v12.0"),
j("10.7.0", "Please use highlightElement now."), y(e)),
configure: e => {
d = Q(d, e)
},
initHighlighting: () => {
N(), j("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.")
},
initHighlightingOnLoad: () => {
N(), j("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.")
},
registerLanguage: (e, t) => {
let i = null;
try {
i = t(n)
} catch (n) {
if (F("Language definition for '{}' could not be registered.".replace("{}", e)),
!s) throw n;
F(n), i = l
}
i.name || (i.name = e), a[e] = i, i.rawDefinition = t.bind(null, n), i.aliases && O(i.aliases, {
languageName: e
})
},
unregisterLanguage: e => {
delete a[e];
for (const n of Object.keys(i)) i[n] === e && delete i[n]
},
listLanguages: () => Object.keys(a),
getLanguage: v,
registerAliases: O,
autoDetection: k,
inherit: Q,
addPlugin: e => {
(e => {
e["before:highlightBlock"] && !e["before:highlightElement"] && (e["before:highlightElement"] =
n => {
e["before:highlightBlock"](Object.assign({
block: n.el
}, n))
}), e["after:highlightBlock"] && !e["after:highlightElement"] && (e["after:highlightElement"] =
n => {
e["after:highlightBlock"](Object.assign({
block: n.el
}, n))
})
})(e), r.push(e)
}
}), n.debugMode = () => {
s = !1
}, n.safeMode = () => {
s = !0
}, n.versionString = "11.7.0", n.regex = {
concat: m,
lookahead: g,
either: p,
optional: b,
anyNumberOfTimes: u
};
for (const n in M) "object" == typeof M[n] && e.exports(M[n]);
return Object.assign(n, M), n
})({});
const J = e => ({
IMPORTANT: {
scope: "meta",
begin: "!important"
},
BLOCK_COMMENT: e.C_BLOCK_COMMENT_MODE,
HEXCOLOR: {
scope: "number",
begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/
},
FUNCTION_DISPATCH: {
className: "built_in",
begin: /[\w-]+(?=\()/
},
ATTRIBUTE_SELECTOR_MODE: {
scope: "selector-attr",
begin: /\[/,
end: /\]/,
illegal: "$",
contains: [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE]
},
CSS_NUMBER_MODE: {
scope: "number",
begin: e.NUMBER_RE +
"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
relevance: 0
},
CSS_VARIABLE: {
className: "attr",
begin: /--[A-Za-z][A-Za-z0-9_-]*/
}
}),
Y = ["a", "abbr", "address", "article", "aside", "audio", "b", "blockquote", "body", "button", "canvas", "caption",
"cite", "code", "dd", "del", "details", "dfn", "div", "dl", "dt", "em", "fieldset", "figcaption", "figure",
"footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "html", "i", "iframe", "img", "input",
"ins", "kbd", "label", "legend", "li", "main", "mark", "menu", "nav", "object", "ol", "p", "q", "quote", "samp",
"section", "span", "strong", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time",
"tr", "ul", "var", "video"
],
ee = ["any-hover", "any-pointer", "aspect-ratio", "color", "color-gamut", "color-index", "device-aspect-ratio",
"device-height", "device-width", "display-mode", "forced-colors", "grid", "height", "hover", "inverted-colors",
"monochrome", "orientation", "overflow-block", "overflow-inline", "pointer", "prefers-color-scheme",
"prefers-contrast", "prefers-reduced-motion", "prefers-reduced-transparency", "resolution", "scan", "scripting",
"update", "width", "min-width", "max-width", "min-height", "max-height"
],
ne = ["active", "any-link", "blank", "checked", "current", "default", "defined", "dir", "disabled", "drop", "empty",
"enabled", "first", "first-child", "first-of-type", "fullscreen", "future", "focus", "focus-visible",
"focus-within", "has", "host", "host-context", "hover", "indeterminate", "in-range", "invalid", "is", "lang",
"last-child", "last-of-type", "left", "link", "local-link", "not", "nth-child", "nth-col", "nth-last-child",
"nth-last-col", "nth-last-of-type", "nth-of-type", "only-child", "only-of-type", "optional", "out-of-range", "past",
"placeholder-shown", "read-only", "read-write", "required", "right", "root", "scope", "target", "target-within",
"user-invalid", "valid", "visited", "where"
],
te = ["after", "backdrop", "before", "cue", "cue-region", "first-letter", "first-line", "grammar-error", "marker",
"part", "placeholder", "selection", "slotted", "spelling-error"
],
ae = ["align-content", "align-items", "align-self", "all", "animation", "animation-delay", "animation-direction",
"animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state",
"animation-timing-function", "backface-visibility", "background", "background-attachment", "background-blend-mode",
"background-clip", "background-color", "background-image", "background-origin", "background-position",
"background-repeat", "background-size", "block-size", "border", "border-block", "border-block-color",
"border-block-end", "border-block-end-color", "border-block-end-style", "border-block-end-width",
"border-block-start", "border-block-start-color", "border-block-start-style", "border-block-start-width",
"border-block-style", "border-block-width", "border-bottom", "border-bottom-color", "border-bottom-left-radius",
"border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color",
"border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source",
"border-image-width", "border-inline", "border-inline-color", "border-inline-end", "border-inline-end-color",
"border-inline-end-style", "border-inline-end-width", "border-inline-start", "border-inline-start-color",
"border-inline-start-style", "border-inline-start-width", "border-inline-style", "border-inline-width",
"border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right",
"border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top",
"border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width",
"border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before",
"break-inside", "caption-side", "caret-color", "clear", "clip", "clip-path", "clip-rule", "color", "column-count",
"column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width",
"column-span", "column-width", "columns", "contain", "content", "content-visibility", "counter-increment",
"counter-reset", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "empty-cells", "filter",
"flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "flow",
"font", "font-display", "font-family", "font-feature-settings", "font-kerning", "font-language-override",
"font-size", "font-size-adjust", "font-smoothing", "font-stretch", "font-style", "font-synthesis", "font-variant",
"font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric",
"font-variant-position", "font-variation-settings", "font-weight", "gap", "glyph-orientation-vertical", "grid",
"grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end",
"grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-start", "grid-template",
"grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphens",
"icon", "image-orientation", "image-rendering", "image-resolution", "ime-mode", "inline-size", "isolation",
"justify-content", "left", "letter-spacing", "line-break", "line-height", "list-style", "list-style-image",
"list-style-position", "list-style-type", "margin", "margin-block", "margin-block-end", "margin-block-start",
"margin-bottom", "margin-inline", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right",
"margin-top", "marks", "mask", "mask-border", "mask-border-mode", "mask-border-outset", "mask-border-repeat",
"mask-border-slice", "mask-border-source", "mask-border-width", "mask-clip", "mask-composite", "mask-image",
"mask-mode", "mask-origin", "mask-position", "mask-repeat", "mask-size", "mask-type", "max-block-size",
"max-height", "max-inline-size", "max-width", "min-block-size", "min-height", "min-inline-size", "min-width",
"mix-blend-mode", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "none", "normal", "object-fit",
"object-position", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style",
"outline-width", "overflow", "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-block",
"padding-block-end", "padding-block-start", "padding-bottom", "padding-inline", "padding-inline-end",
"padding-inline-start", "padding-left", "padding-right", "padding-top", "page-break-after", "page-break-before",
"page-break-inside", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "pointer-events",
"position", "quotes", "resize", "rest", "rest-after", "rest-before", "right", "row-gap", "scroll-margin",
"scroll-margin-block", "scroll-margin-block-end", "scroll-margin-block-start", "scroll-margin-bottom",
"scroll-margin-inline", "scroll-margin-inline-end", "scroll-margin-inline-start", "scroll-margin-left",
"scroll-margin-right", "scroll-margin-top", "scroll-padding", "scroll-padding-block", "scroll-padding-block-end",
"scroll-padding-block-start", "scroll-padding-bottom", "scroll-padding-inline", "scroll-padding-inline-end",
"scroll-padding-inline-start", "scroll-padding-left", "scroll-padding-right", "scroll-padding-top",
"scroll-snap-align", "scroll-snap-stop", "scroll-snap-type", "scrollbar-color", "scrollbar-gutter",
"scrollbar-width", "shape-image-threshold", "shape-margin", "shape-outside", "speak", "speak-as", "src", "tab-size",
"table-layout", "text-align", "text-align-all", "text-align-last", "text-combine-upright", "text-decoration",
"text-decoration-color", "text-decoration-line", "text-decoration-style", "text-emphasis", "text-emphasis-color",
"text-emphasis-position", "text-emphasis-style", "text-indent", "text-justify", "text-orientation", "text-overflow",
"text-rendering", "text-shadow", "text-transform", "text-underline-position", "top", "transform", "transform-box",
"transform-origin", "transform-style", "transition", "transition-delay", "transition-duration",
"transition-property", "transition-timing-function", "unicode-bidi", "vertical-align", "visibility",
"voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
"voice-volume", "white-space", "widows", "width", "will-change", "word-break", "word-spacing", "word-wrap",
"writing-mode", "z-index"
].reverse(),
ie = ne.concat(te);
var re = "\\.([0-9](_*[0-9])*)",
se = "[0-9a-fA-F](_*[0-9a-fA-F])*",
oe = {
className: "number",
variants: [{
begin: `(\\b([0-9](_*[0-9])*)((${re})|\\.)?|(${re}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
}, {
begin: `\\b([0-9](_*[0-9])*)((${re})[fFdD]?\\b|\\.([fFdD]\\b)?)`
}, {
begin: `(${re})[fFdD]?\\b`
}, {
begin: "\\b([0-9](_*[0-9])*)[fFdD]\\b"
}, {
begin: `\\b0[xX]((${se})\\.?|(${se})?\\.(${se}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
}, {
begin: "\\b(0|[1-9](_*[0-9])*)[lL]?\\b"
}, {
begin: `\\b0[xX](${se})[lL]?\\b`
}, {
begin: "\\b0(_*[0-7])*[lL]?\\b"
}, {
begin: "\\b0[bB][01](_*[01])*[lL]?\\b"
}],
relevance: 0
};
function le(e, n, t) {
return -1 === t ? "" : e.replace(n, (a => le(e, n, t - 1)))
}
const ce = "[A-Za-z$_][0-9A-Za-z$_]*",
de = ["as", "in", "of", "if", "for", "while", "finally", "var", "new", "function", "do", "return", "void", "else",
"break", "catch", "instanceof", "with", "throw", "case", "default", "try", "switch", "continue", "typeof", "delete",
"let", "yield", "const", "class", "debugger", "async", "await", "static", "import", "from", "export", "extends"
],
ge = ["true", "false", "null", "undefined", "NaN", "Infinity"],
ue = ["Object", "Function", "Boolean", "Symbol", "Math", "Date", "Number", "BigInt", "String", "RegExp", "Array",
"Float32Array", "Float64Array", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Int32Array",
"Uint16Array", "Uint32Array", "BigInt64Array", "BigUint64Array", "Set", "Map", "WeakSet", "WeakMap", "ArrayBuffer",
"SharedArrayBuffer", "Atomics", "DataView", "JSON", "Promise", "Generator", "GeneratorFunction", "AsyncFunction",
"Reflect", "Proxy", "Intl", "WebAssembly"
],
be = ["Error", "EvalError", "InternalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError"],
me = ["setInterval", "setTimeout", "clearInterval", "clearTimeout", "require", "exports", "eval", "isFinite", "isNaN",
"parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "unescape"
],
pe = ["arguments", "this", "super", "console", "window", "document", "localStorage", "module", "global"],
_e = [].concat(me, ue, be);
function he(e) {
const n = e.regex,
t = ce,
a = {
begin: /<[A-Za-z0-9\\._:-]+/,
end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
isTrulyOpeningTag: (e, n) => {
const t = e[0].length + e.index,
a = e.input[t];
if ("<" === a || "," === a) return void n.ignoreMatch();
let i;
">" === a && (((e, {
after: n
}) => {
const t = "</" + e[0].slice(1);
return -1 !== e.input.indexOf(t, n)
})(e, {
after: t
}) || n.ignoreMatch());
const r = e.input.substring(t);
((i = r.match(/^\s*=/)) || (i = r.match(/^\s+extends\s+/)) && 0 === i.index) && n.ignoreMatch()
}
},
i = {
$pattern: ce,
keyword: de,
literal: ge,
built_in: _e,
"variable.language": pe
},
r = "\\.([0-9](_?[0-9])*)",
s = "0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",
o = {
className: "number",
variants: [{
begin: `(\\b(${s})((${r})|\\.)?|(${r}))[eE][+-]?([0-9](_?[0-9])*)\\b`
}, {
begin: `\\b(${s})\\b((${r})\\b|\\.)?|(${r})\\b`
}, {
begin: "\\b(0|[1-9](_?[0-9])*)n\\b"
}, {
begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"
}, {
begin: "\\b0[bB][0-1](_?[0-1])*n?\\b"
}, {
begin: "\\b0[oO][0-7](_?[0-7])*n?\\b"
}, {
begin: "\\b0[0-7]+n?\\b"
}],
relevance: 0
},
l = {
className: "subst",
begin: "\\$\\{",
end: "\\}",
keywords: i,
contains: []
},
c = {
begin: "html`",
end: "",
starts: {
end: "`",
returnEnd: !1,
contains: [e.BACKSLASH_ESCAPE, l],
subLanguage: "xml"
}
},
d = {
begin: "css`",
end: "",
starts: {
end: "`",
returnEnd: !1,
contains: [e.BACKSLASH_ESCAPE, l],
subLanguage: "css"
}
},
g = {
className: "string",
begin: "`",
end: "`",
contains: [e.BACKSLASH_ESCAPE, l]
},
u = {
className: "comment",
variants: [e.COMMENT(/\/\*\*(?!\/)/, "\\*/", {
relevance: 0,
contains: [{
begin: "(?=@[A-Za-z]+)",
relevance: 0,
contains: [{
className: "doctag",
begin: "@[A-Za-z]+"
}, {
className: "type",
begin: "\\{",
end: "\\}",
excludeEnd: !0,
excludeBegin: !0,
relevance: 0
}, {
className: "variable",
begin: t + "(?=\\s*(-)|$)",
endsParent: !0,
relevance: 0
}, {
begin: /(?=[^\n])\s/,
relevance: 0
}]
}]
}), e.C_BLOCK_COMMENT_MODE, e.C_LINE_COMMENT_MODE]
},
b = [e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, c, d, g, {
match: /\$\d+/
}, o];
l.contains = b.concat({
begin: /\{/,
end: /\}/,
keywords: i,
contains: ["self"].concat(b)
});
const m = [].concat(u, l.contains),
p = m.concat([{
begin: /\(/,
end: /\)/,
keywords: i,
contains: ["self"].concat(m)
}]),
_ = {
className: "params",
begin: /\(/,
end: /\)/,
excludeBegin: !0,
excludeEnd: !0,
keywords: i,
contains: p
},
h = {
variants: [{
match: [/class/, /\s+/, t, /\s+/, /extends/, /\s+/, n.concat(t, "(", n.concat(/\./, t), ")*")],
scope: {
1: "keyword",
3: "title.class",
5: "keyword",
7: "title.class.inherited"
}
}, {
match: [/class/, /\s+/, t],
scope: {
1: "keyword",
3: "title.class"
}
}]
},
f = {
relevance: 0,
match: n.either(/\bJSON/, /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,
/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),
className: "title.class",
keywords: {
_: [...ue, ...be]
}
},
E = {
variants: [{
match: [/function/, /\s+/, t, /(?=\s*\()/]
}, {
match: [/function/, /\s*(?=\()/]
}],
className: {
1: "keyword",
3: "title.function"
},
label: "func.def",
contains: [_],
illegal: /%/
},
y = {
match: n.concat(/\b/, (w = [...me, "super", "import"], n.concat("(?!", w.join("|"), ")")), t, n.lookahead(/\(/)),
className: "title.function",
relevance: 0
};
var w;
const N = {
begin: n.concat(/\./, n.lookahead(n.concat(t, /(?![0-9A-Za-z$_(])/))),
end: t,
excludeBegin: !0,
keywords: "prototype",
className: "property",
relevance: 0
},
v = {
match: [/get|set/, /\s+/, t, /(?=\()/],
className: {
1: "keyword",
3: "title.function"
},
contains: [{
begin: /\(\)/
}, _]
},
O = "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + e.UNDERSCORE_IDENT_RE + ")\\s*=>",
k = {
match: [/const|var|let/, /\s+/, t, /\s*/, /=\s*/, /(async\s*)?/, n.lookahead(O)],
keywords: "async",
className: {
1: "keyword",
3: "title.function"
},
contains: [_]
};
return {
name: "Javascript",
aliases: ["js", "jsx", "mjs", "cjs"],
keywords: i,
exports: {
PARAMS_CONTAINS: p,
CLASS_REFERENCE: f
},
illegal: /#(?![$_A-z])/,
contains: [e.SHEBANG({
label: "shebang",
binary: "node",
relevance: 5
}), {
label: "use_strict",
className: "meta",
relevance: 10,
begin: /^\s*['"]use (strict|asm)['"]/
}, e.APOS_STRING_MODE, e.QUOTE_STRING_MODE, c, d, g, u, {
match: /\$\d+/
}, o, f, {
className: "attr",
begin: t + n.lookahead(":"),
relevance: 0
}, k, {
begin: "(" + e.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*",
keywords: "return throw case",
relevance: 0,
contains: [u, e.REGEXP_MODE, {
className: "function",
begin: O,
returnBegin: !0,
end: "\\s*=>",
contains: [{
className: "params",
variants: [{
begin: e.UNDERSCORE_IDENT_RE,
relevance: 0
}, {
className: null,
begin: /\(\s*\)/,
skip: !0
}, {
begin: /\(/,
end: /\)/,
excludeBegin: !0,
excludeEnd: !0,
keywords: i,
contains: p
}]
}]
}, {
begin: /,/,
relevance: 0
}, {
match: /\s+/,
relevance: 0
}, {
variants: [{
begin: "<>",
end: "</>"
}, {
match: /<[A-Za-z0-9\\._:-]+\s*\/>/
}, {
begin: a.begin,
"on:begin": a.isTrulyOpeningTag,
end: a.end
}],
subLanguage: "xml",
contains: [{
begin: a.begin,
end: a.end,
skip: !0,
contains: ["self"]
}]
}]
}, E, {
beginKeywords: "while if switch catch for"
}, {
begin: "\\b(?!function)" + e.UNDERSCORE_IDENT_RE +
"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
returnBegin: !0,
label: "func.def",
contains: [_, e.inherit(e.TITLE_MODE, {
begin: t,
className: "title.function"
})]
}, {
match: /\.\.\./,
relevance: 0
}, N, {
match: "\\$" + t,
relevance: 0
}, {
match: [/\bconstructor(?=\s*\()/],
className: {
1: "title.function"
},
contains: [_]
}, y, {
relevance: 0,
match: /\b[A-Z][A-Z_0-9]+\b/,
className: "variable.constant"
}, h, v, {
match: /\$[(.]/
}]
}
}
const fe = e => m(/\b/, e, /\w$/.test(e) ? /\b/ : /\B/),
Ee = ["Protocol", "Type"].map(fe),
ye = ["init", "self"].map(fe),
we = ["Any", "Self"],
Ne = ["actor", "any", "associatedtype", "async", "await", /as\?/, /as!/, "as", "break", "case", "catch", "class",
"continue", "convenience", "default", "defer", "deinit", "didSet", "distributed", "do", "dynamic", "else", "enum",
"extension", "fallthrough", /fileprivate\(set\)/, "fileprivate", "final", "for", "func", "get", "guard", "if",
"import", "indirect", "infix", /init\?/, /init!/, "inout", /internal\(set\)/, "internal", "in", "is", "isolated",
"nonisolated", "lazy", "let", "mutating", "nonmutating", /open\(set\)/, "open", "operator", "optional", "override",
"postfix", "precedencegroup", "prefix", /private\(set\)/, "private", "protocol", /public\(set\)/, "public",
"repeat", "required", "rethrows", "return", "set", "some", "static", "struct", "subscript", "super", "switch",
"throws", "throw", /try\?/, /try!/, "try", "typealias", /unowned\(safe\)/, /unowned\(unsafe\)/, "unowned", "var",
"weak", "where", "while", "willSet"
],
ve = ["false", "nil", "true"],
Oe = ["assignment", "associativity", "higherThan", "left", "lowerThan", "none", "right"],
ke = ["#colorLiteral", "#column", "#dsohandle", "#else", "#elseif", "#endif", "#error", "#file", "#fileID",
"#fileLiteral", "#filePath", "#function", "#if", "#imageLiteral", "#keyPath", "#line", "#selector",
"#sourceLocation", "#warn_unqualified_access", "#warning"
],
xe = ["abs", "all", "any", "assert", "assertionFailure", "debugPrint", "dump", "fatalError", "getVaList",
"isKnownUniquelyReferenced", "max", "min", "numericCast", "pointwiseMax", "pointwiseMin", "precondition",
"preconditionFailure", "print", "readLine", "repeatElement", "sequence", "stride", "swap",
"swift_unboxFromSwiftValueWithType", "transcode", "type", "unsafeBitCast", "unsafeDowncast", "withExtendedLifetime",
"withUnsafeMutablePointer", "withUnsafePointer", "withVaList", "withoutActuallyEscaping", "zip"
],
Me = p(/[/=\-+!*%<>&|^~?]/, /[\u00A1-\u00A7]/, /[\u00A9\u00AB]/, /[\u00AC\u00AE]/, /[\u00B0\u00B1]/,
/[\u00B6\u00BB\u00BF\u00D7\u00F7]/, /[\u2016-\u2017]/, /[\u2020-\u2027]/, /[\u2030-\u203E]/, /[\u2041-\u2053]/,
/[\u2055-\u205E]/, /[\u2190-\u23FF]/, /[\u2500-\u2775]/, /[\u2794-\u2BFF]/, /[\u2E00-\u2E7F]/, /[\u3001-\u3003]/,
/[\u3008-\u3020]/, /[\u3030]/),
Se = p(Me, /[\u0300-\u036F]/, /[\u1DC0-\u1DFF]/, /[\u20D0-\u20FF]/, /[\uFE00-\uFE0F]/, /[\uFE20-\uFE2F]/),
Ae = m(Me, Se, "*"),
Ce = p(/[a-zA-Z_]/, /[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,
/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/, /[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,
/[\u1E00-\u1FFF]/, /[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,
/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/, /[\u2C00-\u2DFF\u2E80-\u2FFF]/,
/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/, /[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,
/[\uFE47-\uFEFE\uFF00-\uFFFD]/),
Te = p(Ce, /\d/, /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),
Re = m(Ce, Te, "*"),
De = m(/[A-Z]/, Te, "*"),
Ie = ["autoclosure", m(/convention\(/, p("swift", "block", "c"), /\)/), "discardableResult", "dynamicCallable",
"dynamicMemberLookup", "escaping", "frozen", "GKInspectable", "IBAction", "IBDesignable", "IBInspectable",
"IBOutlet", "IBSegueAction", "inlinable", "main", "nonobjc", "NSApplicationMain", "NSCopying", "NSManaged", m(
/objc\(/, Re, /\)/), "objc", "objcMembers", "propertyWrapper", "requires_stored_property_inits", "resultBuilder",
"testable", "UIApplicationMain", "unknown", "usableFromInline"
],
Le = ["iOS", "iOSApplicationExtension", "macOS", "macOSApplicationExtension", "macCatalyst",
"macCatalystApplicationExtension", "watchOS", "watchOSApplicationExtension", "tvOS", "tvOSApplicationExtension",
"swift"
];
var Be = Object.freeze({
__proto__: null,
grmr_bash: e => {
const n = e.regex,
t = {},
a = {
begin: /\$\{/,
end: /\}/,
contains: ["self", {
begin: /:-/,
contains: [t]
}]
};
Object.assign(t, {
className: "variable",
variants: [{
begin: n.concat(/\$[\w\d#@][\w\d_]*/, "(?![\\w\\d])(?![$])")
}, a]
});
const i = {
className: "subst",
begin: /\$\(/,
end: /\)/,
contains: [e.BACKSLASH_ESCAPE]
},
r = {
begin: /<<-?\s*(?=\w+)/,
starts: {
contains: [e.END_SAME_AS_BEGIN({
begin: /(\w+)/,
end: /(\w+)/,
className: "string"
})]
}
},
s = {
className: "string",
begin: /"/,
end: /"/,
contains: [e.BACKSLASH_ESCAPE, t, i]
};
i.contains.push(s);
const o = {
begin: /\$?\(\(/,
end: /\)\)/,
contains: [{