jodit-pro
Version:
PRO Version of Jodit Editor
1,255 lines (1,252 loc) • 32.7 kB
JavaScript
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
*/
var _self =
'undefined' !== typeof window
? window
: 'undefined' !== typeof WorkerGlobalScope &&
self instanceof WorkerGlobalScope
? self
: {},
Prism = (function () {
var e = /\blang(?:uage)?-([\w-]+)\b/i,
t = 0,
n = (_self.Prism = {
manual: _self.Prism && _self.Prism.manual,
disableWorkerMessageHandler:
_self.Prism && _self.Prism.disableWorkerMessageHandler,
util: {
encode: function (e) {
return e instanceof r
? new r(e.type, n.util.encode(e.content), e.alias)
: 'Array' === n.util.type(e)
? e.map(n.util.encode)
: e
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/\u00a0/g, ' ');
},
type: function (e) {
return Object.prototype.toString
.call(e)
.match(/\[object (\w+)\]/)[1];
},
objId: function (e) {
return (
e.__id ||
Object.defineProperty(e, '__id', {
value: ++t
}),
e.__id
);
},
clone: function (e, t) {
var r = n.util.type(e);
switch (((t = t || {}), r)) {
case 'Object':
if (t[n.util.objId(e)]) {
return t[n.util.objId(e)];
}
var a = {};
t[n.util.objId(e)] = a;
for (var l in e) {
e.hasOwnProperty(l) &&
(a[l] = n.util.clone(e[l], t));
}
return a;
case 'Array':
if (t[n.util.objId(e)]) {
return t[n.util.objId(e)];
}
var a = [];
return (
(t[n.util.objId(e)] = a),
e.forEach(function (e, r) {
a[r] = n.util.clone(e, t);
}),
a
);
}
return e;
}
},
languages: {
extend: function (e, t) {
var r = n.util.clone(n.languages[e]);
for (var a in t) {
r[a] = t[a];
}
return r;
},
insertBefore: function (e, t, r, a) {
a = a || n.languages;
var l = a[e];
if (2 == arguments.length) {
r = arguments[1];
for (var i in r) {
r.hasOwnProperty(i) && (l[i] = r[i]);
}
return l;
}
var o = {};
for (var s in l) {
if (l.hasOwnProperty(s)) {
if (s == t) {
for (var i in r) {
r.hasOwnProperty(i) && (o[i] = r[i]);
}
}
o[s] = l[s];
}
}
return (
n.languages.DFS(n.languages, function (t, n) {
n === a[e] && t != e && (this[t] = o);
}),
(a[e] = o)
);
},
DFS: function (e, t, r, a) {
a = a || {};
for (var l in e) {
e.hasOwnProperty(l) &&
(t.call(e, l, e[l], r || l),
'Object' !== n.util.type(e[l]) ||
a[n.util.objId(e[l])]
? 'Array' !== n.util.type(e[l]) ||
a[n.util.objId(e[l])] ||
((a[n.util.objId(e[l])] = !0),
n.languages.DFS(e[l], t, l, a))
: ((a[n.util.objId(e[l])] = !0),
n.languages.DFS(e[l], t, null, a)));
}
}
},
plugins: {},
highlightAll: function (e, t) {
n.highlightAllUnder(document, e, t);
},
highlightAllUnder: function (e, t, r) {
var a = {
callback: r,
selector:
'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
};
n.hooks.run('before-highlightall', a);
for (
var l,
i = a.elements || e.querySelectorAll(a.selector),
o = 0;
(l = i[o++]);
) {
n.highlightElement(l, t === !0, a.callback);
}
},
highlightElement: function (t, r, a) {
for (var l, i, o = t; o && !e.test(o.className); ) {
o = o.parentNode;
}
o &&
((l = (o.className.match(e) || [
,
''
])[1].toLowerCase()),
(i = n.languages[l])),
(t.className =
t.className.replace(e, '').replace(/\s+/g, ' ') +
' language-' +
l),
t.parentNode &&
((o = t.parentNode),
/pre/i.test(o.nodeName) &&
(o.className =
o.className
.replace(e, '')
.replace(/\s+/g, ' ') +
' language-' +
l));
var s = t.textContent,
u = { element: t, language: l, grammar: i, code: s };
if (
(n.hooks.run('before-sanity-check', u),
!u.code || !u.grammar)
) {
return (
u.code &&
(n.hooks.run('before-highlight', u),
(u.element.textContent = u.code),
n.hooks.run('after-highlight', u)),
n.hooks.run('complete', u),
void 0
);
}
if (
(n.hooks.run('before-highlight', u), r && _self.Worker)
) {
var g = new Worker(n.filename);
(g.onmessage = function (e) {
(u.highlightedCode = e.data),
n.hooks.run('before-insert', u),
(u.element.innerHTML = u.highlightedCode),
a && a.call(u.element),
n.hooks.run('after-highlight', u),
n.hooks.run('complete', u);
}),
g.postMessage(
JSON.stringify({
language: u.language,
code: u.code,
immediateClose: !0
})
);
} else {
(u.highlightedCode = n.highlight(
u.code,
u.grammar,
u.language
)),
n.hooks.run('before-insert', u),
(u.element.innerHTML = u.highlightedCode),
a && a.call(t),
n.hooks.run('after-highlight', u),
n.hooks.run('complete', u);
}
},
highlight: function (e, t, a) {
var l = { code: e, grammar: t, language: a };
return (
n.hooks.run('before-tokenize', l),
(l.tokens = n.tokenize(l.code, l.grammar)),
n.hooks.run('after-tokenize', l),
r.stringify(n.util.encode(l.tokens), l.language)
);
},
matchGrammar: function (e, t, r, a, l, i, o) {
var s = n.Token;
for (var u in r) {
if (r.hasOwnProperty(u) && r[u]) {
if (u == o) {
return;
}
var g = r[u];
g = 'Array' === n.util.type(g) ? g : [g];
for (var c = 0; c < g.length; ++c) {
var h = g[c],
f = h.inside,
d = Boolean(h.lookbehind),
m = Boolean(h.greedy),
p = 0,
y = h.alias;
if (m && !h.pattern.global) {
var v = h.pattern
.toString()
.match(/[imuy]*$/)[0];
h.pattern = RegExp(
h.pattern.source,
v + 'g'
);
}
h = h.pattern || h;
for (
var b = a, k = l;
b < t.length;
k += t[b].length, ++b
) {
var w = t[b];
if (t.length > e.length) {
return;
}
if (!(w instanceof s)) {
if (m && b != t.length - 1) {
h.lastIndex = k;
var _ = h.exec(e);
if (!_) {
break;
}
for (
var j =
_.index +
(d ? _[1].length : 0),
P = _.index + _[0].length,
A = b,
x = k,
O = t.length;
O > A &&
(P > x ||
(!t[A].type &&
!t[A - 1].greedy));
++A
) {
(x += t[A].length),
j >= x && (++b, (k = x));
}
if (t[b] instanceof s) {
continue;
}
(I = A - b),
(w = e.slice(k, x)),
(_.index -= k);
} else {
h.lastIndex = 0;
var _ = h.exec(w),
I = 1;
}
if (_) {
d && (p = _[1] ? _[1].length : 0);
var j = _.index + p,
_ = _[0].slice(p),
P = j + _.length,
N = w.slice(0, j),
S = w.slice(P),
C = [b, I];
N &&
(++b,
(k += N.length),
C.push(N));
var E = new s(
u,
f ? n.tokenize(_, f) : _,
y,
_,
m
);
if (
(C.push(E),
S && C.push(S),
Array.prototype.splice.apply(
t,
C
),
1 != I &&
n.matchGrammar(
e,
t,
r,
b,
k,
!0,
u
),
i)
) {
break;
}
} else if (i) {
break;
}
}
}
}
}
}
},
tokenize: function (e, t) {
var r = [e],
a = t.rest;
if (a) {
for (var l in a) {
t[l] = a[l];
}
delete t.rest;
}
return n.matchGrammar(e, r, t, 0, 0, !1), r;
},
hooks: {
all: {},
add: function (e, t) {
var r = n.hooks.all;
(r[e] = r[e] || []), r[e].push(t);
},
run: function (e, t) {
var r = n.hooks.all[e];
if (r && r.length) {
for (var a, l = 0; (a = r[l++]); ) {
a(t);
}
}
}
}
}),
r = (n.Token = function (e, t, n, r, a) {
(this.type = e),
(this.content = t),
(this.alias = n),
(this.length = 0 | (r || '').length),
(this.greedy = Boolean(a));
});
if (
((r.stringify = function (e, t, a) {
if ('string' === typeof e) {
return e;
}
if ('Array' === n.util.type(e)) {
return e
.map(function (n) {
return r.stringify(n, t, e);
})
.join('');
}
var l = {
type: e.type,
content: r.stringify(e.content, t, a),
tag: 'span',
classes: ['token', e.type],
attributes: {},
language: t,
parent: a
};
if (e.alias) {
var i =
'Array' === n.util.type(e.alias) ? e.alias : [e.alias];
Array.prototype.push.apply(l.classes, i);
}
n.hooks.run('wrap', l);
var o = Object.keys(l.attributes)
.map(function (e) {
return (
e +
'="' +
(l.attributes[e] || '').replace(/"/g, '"') +
'"'
);
})
.join(' ');
return (
'<' +
l.tag +
' class="' +
l.classes.join(' ') +
'"' +
(o ? ' ' + o : '') +
'>' +
l.content +
'</' +
l.tag +
'>'
);
}),
!_self.document)
) {
return _self.addEventListener
? (n.disableWorkerMessageHandler ||
_self.addEventListener(
'message',
function (e) {
var t = JSON.parse(e.data),
r = t.language,
a = t.code,
l = t.immediateClose;
_self.postMessage(
n.highlight(a, n.languages[r], r)
),
l && _self.close();
},
!1
),
_self.Prism)
: _self.Prism;
}
var a =
document.currentScript ||
[].slice.call(document.getElementsByTagName('script')).pop();
return (
a &&
((n.filename = a.src),
n.manual ||
a.hasAttribute('data-manual') ||
('loading' !== document.readyState
? window.requestAnimationFrame
? window.requestAnimationFrame(n.highlightAll)
: window.setTimeout(n.highlightAll, 16)
: document.addEventListener(
'DOMContentLoaded',
n.highlightAll
))),
_self.Prism
);
})();
'undefined' !== typeof module && module.exports && (module.exports = Prism),
'undefined' !== typeof global && (global.Prism = Prism);
(Prism.languages.markup = {
comment: /<!--[\s\S]*?-->/,
prolog: /<\?[\s\S]+?\?>/,
doctype: /<!DOCTYPE[\s\S]+?>/i,
cdata: /<!\[CDATA\[[\s\S]*?]]>/i,
tag: {
pattern:
/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,
greedy: !0,
inside: {
tag: {
pattern: /^<\/?[^\s>\/]+/i,
inside: { punctuation: /^<\/?/, namespace: /^[^\s>\/:]+:/ }
},
'attr-value': {
pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,
inside: {
punctuation: [
/^=/,
{ pattern: /(^|[^\\])["']/, lookbehind: !0 }
]
}
},
punctuation: /\/?>/,
'attr-name': {
pattern: /[^\s>\/]+/,
inside: { namespace: /^[^\s>\/:]+:/ }
}
}
},
entity: /&#?[\da-z]{1,8};/i
}),
(Prism.languages.markup.tag.inside['attr-value'].inside.entity =
Prism.languages.markup.entity),
Prism.hooks.add('wrap', function (a) {
'entity' === a.type &&
(a.attributes.title = a.content.replace(/&/, '&'));
}),
(Prism.languages.xml = Prism.languages.markup),
(Prism.languages.html = Prism.languages.markup),
(Prism.languages.mathml = Prism.languages.markup),
(Prism.languages.svg = Prism.languages.markup);
(Prism.languages.css = {
comment: /\/\*[\s\S]*?\*\//,
atrule: {
pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i,
inside: { rule: /@[\w-]+/ }
},
url: /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
selector: /[^{}\s][^{};]*?(?=\s*\{)/,
string: {
pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
greedy: !0
},
property: /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,
important: /\B!important\b/i,
function: /[-a-z0-9]+(?=\()/i,
punctuation: /[(){};:]/
}),
(Prism.languages.css.atrule.inside.rest = Prism.languages.css),
Prism.languages.markup &&
(Prism.languages.insertBefore('markup', 'tag', {
style: {
pattern: /(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i,
lookbehind: !0,
inside: Prism.languages.css,
alias: 'language-css',
greedy: !0
}
}),
Prism.languages.insertBefore(
'inside',
'attr-value',
{
'style-attr': {
pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,
inside: {
'attr-name': {
pattern: /^\s*style/i,
inside: Prism.languages.markup.tag.inside
},
punctuation: /^\s*=\s*['"]|['"]\s*$/,
'attr-value': {
pattern: /.+/i,
inside: Prism.languages.css
}
},
alias: 'language-css'
}
},
Prism.languages.markup.tag
));
Prism.languages.clike = {
comment: [
{ pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, lookbehind: !0 },
{ pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0, greedy: !0 }
],
string: {
pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
greedy: !0
},
'class-name': {
pattern:
/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,
lookbehind: !0,
inside: { punctuation: /[.\\]/ }
},
keyword:
/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
boolean: /\b(?:true|false)\b/,
function: /[a-z0-9_]+(?=\()/i,
number: /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,
operator: /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
punctuation: /[{}[\];(),.:]/
};
(Prism.languages.javascript = Prism.languages.extend('clike', {
keyword:
/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,
number: /\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,
function: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,
operator:
/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/
})),
Prism.languages.insertBefore('javascript', 'keyword', {
regex: {
pattern:
/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,
lookbehind: !0,
greedy: !0
},
'function-variable': {
pattern:
/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,
alias: 'function'
},
constant: /\b[A-Z][A-Z\d_]*\b/
}),
Prism.languages.insertBefore('javascript', 'string', {
'template-string': {
pattern: /`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,
greedy: !0,
inside: {
interpolation: {
pattern: /\${[^}]+}/,
inside: {
'interpolation-punctuation': {
pattern: /^\${|}$/,
alias: 'punctuation'
},
rest: null
}
},
string: /[\s\S]+/
}
}
}),
(Prism.languages.javascript[
'template-string'
].inside.interpolation.inside.rest = Prism.languages.javascript),
Prism.languages.markup &&
Prism.languages.insertBefore('markup', 'tag', {
script: {
pattern: /(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,
lookbehind: !0,
inside: Prism.languages.javascript,
alias: 'language-javascript',
greedy: !0
}
}),
(Prism.languages.js = Prism.languages.javascript);
(Prism.languages['markup-templating'] = {}),
Object.defineProperties(Prism.languages['markup-templating'], {
buildPlaceholders: {
value: function (e, t, n, a) {
e.language === t &&
((e.tokenStack = []),
(e.code = e.code.replace(n, function (n) {
if ('function' === typeof a && !a(n)) {
return n;
}
for (
var r = e.tokenStack.length;
-1 !==
e.code.indexOf('___' + t.toUpperCase() + r + '___');
) {
++r;
}
return (
(e.tokenStack[r] = n),
'___' + t.toUpperCase() + r + '___'
);
})),
(e.grammar = Prism.languages.markup));
}
},
tokenizePlaceholders: {
value: function (e, t) {
if (e.language === t && e.tokenStack) {
e.grammar = Prism.languages[t];
var n = 0,
a = Object.keys(e.tokenStack),
r = function (o) {
if (!(n >= a.length)) {
for (var i = 0; i < o.length; i++) {
var g = o[i];
if (
'string' === typeof g ||
(g.content &&
'string' === typeof g.content)
) {
var c = a[n],
s = e.tokenStack[c],
l =
'string' === typeof g
? g
: g.content,
p = l.indexOf(
'___' +
t.toUpperCase() +
c +
'___'
);
if (p > -1) {
++n;
var f,
u = l.substring(0, p),
_ = new Prism.Token(
t,
Prism.tokenize(
s,
e.grammar,
t
),
'language-' + t,
s
),
k = l.substring(
p +
(
'___' +
t.toUpperCase() +
c +
'___'
).length
);
if (
(u || k
? ((f = [u, _, k].filter(
function (e) {
return Boolean(
e
);
}
)),
r(f))
: (f = _),
'string' === typeof g
? Array.prototype.splice.apply(
o,
[i, 1].concat(f)
)
: (g.content = f),
n >= a.length)
) {
break;
}
}
} else {
g.content &&
'string' !== typeof g.content &&
r(g.content);
}
}
}
};
r(e.tokens);
}
}
}
});
(Prism.languages.json = {
property: /"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,
string: { pattern: /"(?:\\.|[^\\"\r\n])*"(?!\s*:)/, greedy: !0 },
number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,
punctuation: /[{}[\]);,]/,
operator: /:/g,
boolean: /\b(?:true|false)\b/i,
null: /\bnull\b/i
}),
(Prism.languages.jsonp = Prism.languages.json);
!(function (e) {
(e.languages.php = e.languages.extend('clike', {
keyword:
/\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,
constant: /\b[A-Z0-9_]{2,}\b/,
comment: {
pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,
lookbehind: !0
}
})),
e.languages.insertBefore('php', 'string', {
'shell-comment': {
pattern: /(^|[^\\])#.*/,
lookbehind: !0,
alias: 'comment'
}
}),
e.languages.insertBefore('php', 'keyword', {
delimiter: { pattern: /\?>|<\?(?:php|=)?/i, alias: 'important' },
variable: /\$+(?:\w+\b|(?={))/i,
package: {
pattern: /(\\|namespace\s+|use\s+)[\w\\]+/,
lookbehind: !0,
inside: { punctuation: /\\/ }
}
}),
e.languages.insertBefore('php', 'operator', {
property: { pattern: /(->)[\w]+/, lookbehind: !0 }
}),
e.languages.insertBefore('php', 'string', {
'nowdoc-string': {
pattern: /<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,
greedy: !0,
alias: 'string',
inside: {
delimiter: {
pattern: /^<<<'[^']+'|[a-z_]\w*;$/i,
alias: 'symbol',
inside: { punctuation: /^<<<'?|[';]$/ }
}
}
},
'heredoc-string': {
pattern:
/<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,
greedy: !0,
alias: 'string',
inside: {
delimiter: {
pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,
alias: 'symbol',
inside: { punctuation: /^<<<"?|[";]$/ }
},
interpolation: null
}
},
'single-quoted-string': {
pattern: /'(?:\\[\s\S]|[^\\'])*'/,
greedy: !0,
alias: 'string'
},
'double-quoted-string': {
pattern: /"(?:\\[\s\S]|[^\\"])*"/,
greedy: !0,
alias: 'string',
inside: { interpolation: null }
}
}),
delete e.languages.php.string;
var n = {
pattern:
/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,
lookbehind: !0,
inside: { rest: e.languages.php }
};
(e.languages.php['heredoc-string'].inside.interpolation = n),
(e.languages.php['double-quoted-string'].inside.interpolation = n),
e.hooks.add('before-tokenize', function (n) {
if (/(?:<\?php|<\?)/gi.test(n.code)) {
var i = /(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/gi;
e.languages['markup-templating'].buildPlaceholders(n, 'php', i);
}
}),
e.hooks.add('after-tokenize', function (n) {
e.languages['markup-templating'].tokenizePlaceholders(n, 'php');
});
})(Prism);
Prism.languages.insertBefore('php', 'variable', {
this: /\$this\b/,
global: /\$(?:_(?:SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE)|GLOBALS|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)\b/,
scope: {
pattern: /\b[\w\\]+::/,
inside: { keyword: /static|self|parent/, punctuation: /::|\\/ }
}
});
!(function () {
if ('undefined' !== typeof self && self.Prism && self.document) {
var t = [],
e = {},
n = function () {};
Prism.plugins.toolbar = {};
var a = (Prism.plugins.toolbar.registerButton = function (n, a) {
var o;
(o =
'function' === typeof a
? a
: function (t) {
var e;
return (
'function' === typeof a.onClick
? ((e =
document.createElement(
'button'
)),
(e.type = 'button'),
e.addEventListener(
'click',
function () {
a.onClick.call(this, t);
}
))
: 'string' === typeof a.url
? ((e = document.createElement('a')),
(e.href = a.url))
: (e = document.createElement('span')),
(e.textContent = a.text),
e
);
}),
t.push((e[n] = o));
}),
o = (Prism.plugins.toolbar.hook = function (a) {
var o = a.element.parentNode;
if (
o &&
/pre/i.test(o.nodeName) &&
!o.parentNode.classList.contains('code-toolbar')
) {
var r = document.createElement('div');
r.classList.add('code-toolbar'),
o.parentNode.insertBefore(r, o),
r.appendChild(o);
var i = document.createElement('div');
i.classList.add('toolbar'),
document.body.hasAttribute('data-toolbar-order') &&
(t = document.body
.getAttribute('data-toolbar-order')
.split(',')
.map(function (t) {
return e[t] || n;
})),
t.forEach(function (t) {
var e = t(a);
if (e) {
var n = document.createElement('div');
n.classList.add('toolbar-item'),
n.appendChild(e),
i.appendChild(n);
}
}),
r.appendChild(i);
}
});
a('label', function (t) {
var e = t.element.parentNode;
if (e && /pre/i.test(e.nodeName) && e.hasAttribute('data-label')) {
var n,
a,
o = e.getAttribute('data-label');
try {
a = document.querySelector('template#' + o);
} catch (r) {}
return (
a
? (n = a.content)
: (e.hasAttribute('data-url')
? ((n = document.createElement('a')),
(n.href = e.getAttribute('data-url')))
: (n = document.createElement('span')),
(n.textContent = o)),
n
);
}
}),
Prism.hooks.add('complete', o);
}
})();
!(function () {
function e(e) {
this.defaults = r({}, e);
}
function n(e) {
return e.replace(/-(\w)/g, function (e, n) {
return n.toUpperCase();
});
}
function t(e) {
for (var n = 0, t = 0; t < e.length; ++t) {
e.charCodeAt(t) == ' '.charCodeAt(0) && (n += 3);
}
return e.length + n;
}
var r =
Object.assign ||
function (e, n) {
for (var t in n) {
n.hasOwnProperty(t) && (e[t] = n[t]);
}
return e;
};
(e.prototype = {
setDefaults: function (e) {
this.defaults = r(this.defaults, e);
},
normalize: function (e, t) {
t = r(this.defaults, t);
for (var i in t) {
var o = n(i);
'normalize' !== i &&
'setDefaults' !== o &&
t[i] &&
this[o] &&
(e = this[o].call(this, e, t[i]));
}
return e;
},
leftTrim: function (e) {
return e.replace(/^\s+/, '');
},
rightTrim: function (e) {
return e.replace(/\s+$/, '');
},
tabsToSpaces: function (e, n) {
return (n = 0 | n || 4), e.replace(/\t/g, new Array(++n).join(' '));
},
spacesToTabs: function (e, n) {
return (
(n = 0 | n || 4), e.replace(new RegExp(' {' + n + '}', 'g'), ' ')
);
},
removeTrailing: function (e) {
return e.replace(/\s*?$/gm, '');
},
removeInitialLineFeed: function (e) {
return e.replace(/^(?:\r?\n|\r)/, '');
},
removeIndent: function (e) {
var n = e.match(/^[^\S\n\r]*(?=\S)/gm);
return n && n[0].length
? (n.sort(function (e, n) {
return e.length - n.length;
}),
n[0].length ? e.replace(new RegExp('^' + n[0], 'gm'), '') : e)
: e;
},
indent: function (e, n) {
return e.replace(
/^[^\S\n\r]*(?=\S)/gm,
new Array(++n).join(' ') + '$&'
);
},
breakLines: function (e, n) {
n = n === !0 ? 80 : 0 | n || 80;
for (var r = e.split('\n'), i = 0; i < r.length; ++i) {
if (!(t(r[i]) <= n)) {
for (
var o = r[i].split(/(\s+)/g), a = 0, s = 0;
s < o.length;
++s
) {
var l = t(o[s]);
(a += l), a > n && ((o[s] = '\n' + o[s]), (a = l));
}
r[i] = o.join('');
}
}
return r.join('\n');
}
}),
'undefined' !== typeof module && module.exports && (module.exports = e),
'undefined' !== typeof Prism &&
((Prism.plugins.NormalizeWhitespace = new e({
'remove-trailing': !0,
'remove-indent': !0,
'left-trim': !0,
'right-trim': !0
})),
Prism.hooks.add('before-sanity-check', function (e) {
var n = Prism.plugins.NormalizeWhitespace;
if (
!e.settings ||
e.settings['whitespace-normalization'] !== !1
) {
if ((!e.element || !e.element.parentNode) && e.code) {
return (
(e.code = n.normalize(e.code, e.settings)), void 0
);
}
var t = e.element.parentNode,
r = /\bno-whitespace-normalization\b/;
if (
e.code &&
t &&
'pre' === t.nodeName.toLowerCase() &&
!r.test(t.className) &&
!r.test(e.element.className)
) {
for (
var i = t.childNodes, o = '', a = '', s = !1, l = 0;
l < i.length;
++l
) {
var c = i[l];
c == e.element
? (s = !0)
: '#text' === c.nodeName &&
(s ? (a += c.nodeValue) : (o += c.nodeValue),
t.removeChild(c),
--l);
}
if (
e.element.children.length &&
Prism.plugins.KeepMarkup
) {
var u = o + e.element.innerHTML + a;
(e.element.innerHTML = n.normalize(u, e.settings)),
(e.code = e.element.textContent);
} else {
(e.code = o + e.code + a),
(e.code = n.normalize(e.code, e.settings));
}
}
}
}));
})();
!(function () {
if ('undefined' !== typeof self && self.Prism && self.document) {
if (!Prism.plugins.toolbar) {
return (
console.warn(
'Show Languages plugin loaded before Toolbar plugin.'
),
void 0
);
}
var e = {
html: 'HTML',
xml: 'XML',
svg: 'SVG',
mathml: 'MathML',
css: 'CSS',
clike: 'C-like',
javascript: 'JavaScript',
abap: 'ABAP',
actionscript: 'ActionScript',
apacheconf: 'Apache Configuration',
apl: 'APL',
applescript: 'AppleScript',
arff: 'ARFF',
asciidoc: 'AsciiDoc',
asm6502: '6502 Assembly',
aspnet: 'ASP.NET (C#)',
autohotkey: 'AutoHotkey',
autoit: 'AutoIt',
basic: 'BASIC',
csharp: 'C#',
cpp: 'C++',
coffeescript: 'CoffeeScript',
csp: 'Content-Security-Policy',
'css-extras': 'CSS Extras',
django: 'Django/Jinja2',
erb: 'ERB',
fsharp: 'F#',
gedcom: 'GEDCOM',
glsl: 'GLSL',
graphql: 'GraphQL',
http: 'HTTP',
hpkp: 'HTTP Public-Key-Pins',
hsts: 'HTTP Strict-Transport-Security',
ichigojam: 'IchigoJam',
inform7: 'Inform 7',
json: 'JSON',
latex: 'LaTeX',
livescript: 'LiveScript',
lolcode: 'LOLCODE',
'markup-templating': 'Markup templating',
matlab: 'MATLAB',
mel: 'MEL',
n4js: 'N4JS',
nasm: 'NASM',
nginx: 'nginx',
nsis: 'NSIS',
objectivec: 'Objective-C',
ocaml: 'OCaml',
opencl: 'OpenCL',
parigp: 'PARI/GP',
php: 'PHP',
'php-extras': 'PHP Extras',
plsql: 'PL/SQL',
powershell: 'PowerShell',
properties: '.properties',
protobuf: 'Protocol Buffers',
q: 'Q (kdb+ database)',
jsx: 'React JSX',
tsx: 'React TSX',
renpy: "Ren'py",
rest: 'reST (reStructuredText)',
sas: 'SAS',
sass: 'Sass (Sass)',
scss: 'Sass (Scss)',
sql: 'SQL',
soy: 'Soy (Closure Template)',
tt2: 'Template Toolkit 2',
typescript: 'TypeScript',
vbnet: 'VB.Net',
vhdl: 'VHDL',
vim: 'vim',
'visual-basic': 'Visual Basic',
wasm: 'WebAssembly',
wiki: 'Wiki markup',
xojo: 'Xojo (REALbasic)',
yaml: 'YAML'
};
Prism.plugins.toolbar.registerButton('show-language', function (t) {
var a = t.element.parentNode;
if (a && /pre/i.test(a.nodeName)) {
var s =
a.getAttribute('data-language') ||
e[t.language] ||
(t.language &&
t.language.substring(0, 1).toUpperCase() +
t.language.substring(1));
if (s) {
var i = document.createElement('span');
return (i.textContent = s), i;
}
}
});
}
})();
!(function () {
if ('undefined' !== typeof self && self.Prism && self.document) {
if (!Prism.plugins.toolbar) {
return (
console.warn(
'Copy to Clipboard plugin loaded before Toolbar plugin.'
),
void 0
);
}
var o = window.ClipboardJS || void 0;
o || 'function' !== typeof require || (o = require('clipboard'));
var e = [];
if (!o) {
var t = document.createElement('script'),
n = document.querySelector('head');
(t.onload = function () {
if ((o = window.ClipboardJS)) {
for (; e.length; ) {
e.pop()();
}
}
}),
(t.src =
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js'),
n.appendChild(t);
}
Prism.plugins.toolbar.registerButton('copy-to-clipboard', function (t) {
function n() {
var e = new o(i, {
text: function () {
return t.code;
}
});
e.on('success', function () {
(i.textContent = 'Copied!'), r();
}),
e.on('error', function () {
(i.textContent = 'Press Ctrl+C to copy'), r();
});
}
function r() {
setTimeout(function () {
i.textContent = 'Copy';
}, 5e3);
}
var i = document.createElement('a');
return (i.textContent = 'Copy'), o ? n() : e.push(n), i;
});
}
})();