mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 11:44:40 +00:00
1390 lines
34 KiB
JavaScript
1390 lines
34 KiB
JavaScript
/*! @license DOMPurify 3.0.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.3/LICENSE */
|
|
!(function (e, t) {
|
|
"object" == typeof exports && "undefined" != typeof module
|
|
? (module.exports = t())
|
|
: "function" == typeof define && define.amd
|
|
? define(t)
|
|
: ((e =
|
|
"undefined" != typeof globalThis ? globalThis : e || self).DOMPurify =
|
|
t());
|
|
})(this, function () {
|
|
"use strict";
|
|
const {
|
|
entries: e,
|
|
setPrototypeOf: t,
|
|
isFrozen: n,
|
|
getPrototypeOf: o,
|
|
getOwnPropertyDescriptor: r,
|
|
} = Object;
|
|
let { freeze: i, seal: a, create: l } = Object,
|
|
{ apply: c, construct: s } = "undefined" != typeof Reflect && Reflect;
|
|
c ||
|
|
(c = function (e, t, n) {
|
|
return e.apply(t, n);
|
|
}),
|
|
i ||
|
|
(i = function (e) {
|
|
return e;
|
|
}),
|
|
a ||
|
|
(a = function (e) {
|
|
return e;
|
|
}),
|
|
s ||
|
|
(s = function (e, t) {
|
|
return new e(...t);
|
|
});
|
|
const m = b(Array.prototype.forEach),
|
|
u = b(Array.prototype.pop),
|
|
f = b(Array.prototype.push),
|
|
p = b(String.prototype.toLowerCase),
|
|
d = b(String.prototype.toString),
|
|
h = b(String.prototype.match),
|
|
g = b(String.prototype.replace),
|
|
T = b(String.prototype.indexOf),
|
|
y = b(String.prototype.trim),
|
|
E = b(RegExp.prototype.test),
|
|
A =
|
|
((_ = TypeError),
|
|
function () {
|
|
for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
|
|
t[n] = arguments[n];
|
|
return s(_, t);
|
|
});
|
|
var _;
|
|
function b(e) {
|
|
return function (t) {
|
|
for (
|
|
var n = arguments.length, o = new Array(n > 1 ? n - 1 : 0), r = 1;
|
|
r < n;
|
|
r++
|
|
)
|
|
o[r - 1] = arguments[r];
|
|
return c(e, t, o);
|
|
};
|
|
}
|
|
function N(e, o, r) {
|
|
var i;
|
|
(r = null !== (i = r) && void 0 !== i ? i : p), t && t(e, null);
|
|
let a = o.length;
|
|
for (; a--; ) {
|
|
let t = o[a];
|
|
if ("string" == typeof t) {
|
|
const e = r(t);
|
|
e !== t && (n(o) || (o[a] = e), (t = e));
|
|
}
|
|
e[t] = !0;
|
|
}
|
|
return e;
|
|
}
|
|
function S(t) {
|
|
const n = l(null);
|
|
for (const [o, r] of e(t)) n[o] = r;
|
|
return n;
|
|
}
|
|
function R(e, t) {
|
|
for (; null !== e; ) {
|
|
const n = r(e, t);
|
|
if (n) {
|
|
if (n.get) return b(n.get);
|
|
if ("function" == typeof n.value) return b(n.value);
|
|
}
|
|
e = o(e);
|
|
}
|
|
return function (e) {
|
|
return console.warn("fallback value for", e), null;
|
|
};
|
|
}
|
|
const w = i([
|
|
"a",
|
|
"abbr",
|
|
"acronym",
|
|
"address",
|
|
"area",
|
|
"article",
|
|
"aside",
|
|
"audio",
|
|
"b",
|
|
"bdi",
|
|
"bdo",
|
|
"big",
|
|
"blink",
|
|
"blockquote",
|
|
"body",
|
|
"br",
|
|
"button",
|
|
"canvas",
|
|
"caption",
|
|
"center",
|
|
"cite",
|
|
"code",
|
|
"col",
|
|
"colgroup",
|
|
"content",
|
|
"data",
|
|
"datalist",
|
|
"dd",
|
|
"decorator",
|
|
"del",
|
|
"details",
|
|
"dfn",
|
|
"dialog",
|
|
"dir",
|
|
"div",
|
|
"dl",
|
|
"dt",
|
|
"element",
|
|
"em",
|
|
"fieldset",
|
|
"figcaption",
|
|
"figure",
|
|
"font",
|
|
"footer",
|
|
"form",
|
|
"h1",
|
|
"h2",
|
|
"h3",
|
|
"h4",
|
|
"h5",
|
|
"h6",
|
|
"head",
|
|
"header",
|
|
"hgroup",
|
|
"hr",
|
|
"html",
|
|
"i",
|
|
"img",
|
|
"input",
|
|
"ins",
|
|
"kbd",
|
|
"label",
|
|
"legend",
|
|
"li",
|
|
"main",
|
|
"map",
|
|
"mark",
|
|
"marquee",
|
|
"menu",
|
|
"menuitem",
|
|
"meter",
|
|
"nav",
|
|
"nobr",
|
|
"ol",
|
|
"optgroup",
|
|
"option",
|
|
"output",
|
|
"p",
|
|
"picture",
|
|
"pre",
|
|
"progress",
|
|
"q",
|
|
"rp",
|
|
"rt",
|
|
"ruby",
|
|
"s",
|
|
"samp",
|
|
"section",
|
|
"select",
|
|
"shadow",
|
|
"small",
|
|
"source",
|
|
"spacer",
|
|
"span",
|
|
"strike",
|
|
"strong",
|
|
"style",
|
|
"sub",
|
|
"summary",
|
|
"sup",
|
|
"table",
|
|
"tbody",
|
|
"td",
|
|
"template",
|
|
"textarea",
|
|
"tfoot",
|
|
"th",
|
|
"thead",
|
|
"time",
|
|
"tr",
|
|
"track",
|
|
"tt",
|
|
"u",
|
|
"ul",
|
|
"var",
|
|
"video",
|
|
"wbr",
|
|
]),
|
|
D = i([
|
|
"svg",
|
|
"a",
|
|
"altglyph",
|
|
"altglyphdef",
|
|
"altglyphitem",
|
|
"animatecolor",
|
|
"animatemotion",
|
|
"animatetransform",
|
|
"circle",
|
|
"clippath",
|
|
"defs",
|
|
"desc",
|
|
"ellipse",
|
|
"filter",
|
|
"font",
|
|
"g",
|
|
"glyph",
|
|
"glyphref",
|
|
"hkern",
|
|
"image",
|
|
"line",
|
|
"lineargradient",
|
|
"marker",
|
|
"mask",
|
|
"metadata",
|
|
"mpath",
|
|
"path",
|
|
"pattern",
|
|
"polygon",
|
|
"polyline",
|
|
"radialgradient",
|
|
"rect",
|
|
"stop",
|
|
"style",
|
|
"switch",
|
|
"symbol",
|
|
"text",
|
|
"textpath",
|
|
"title",
|
|
"tref",
|
|
"tspan",
|
|
"view",
|
|
"vkern",
|
|
]),
|
|
L = i([
|
|
"feBlend",
|
|
"feColorMatrix",
|
|
"feComponentTransfer",
|
|
"feComposite",
|
|
"feConvolveMatrix",
|
|
"feDiffuseLighting",
|
|
"feDisplacementMap",
|
|
"feDistantLight",
|
|
"feDropShadow",
|
|
"feFlood",
|
|
"feFuncA",
|
|
"feFuncB",
|
|
"feFuncG",
|
|
"feFuncR",
|
|
"feGaussianBlur",
|
|
"feImage",
|
|
"feMerge",
|
|
"feMergeNode",
|
|
"feMorphology",
|
|
"feOffset",
|
|
"fePointLight",
|
|
"feSpecularLighting",
|
|
"feSpotLight",
|
|
"feTile",
|
|
"feTurbulence",
|
|
]),
|
|
v = i([
|
|
"animate",
|
|
"color-profile",
|
|
"cursor",
|
|
"discard",
|
|
"font-face",
|
|
"font-face-format",
|
|
"font-face-name",
|
|
"font-face-src",
|
|
"font-face-uri",
|
|
"foreignobject",
|
|
"hatch",
|
|
"hatchpath",
|
|
"mesh",
|
|
"meshgradient",
|
|
"meshpatch",
|
|
"meshrow",
|
|
"missing-glyph",
|
|
"script",
|
|
"set",
|
|
"solidcolor",
|
|
"unknown",
|
|
"use",
|
|
]),
|
|
x = i([
|
|
"math",
|
|
"menclose",
|
|
"merror",
|
|
"mfenced",
|
|
"mfrac",
|
|
"mglyph",
|
|
"mi",
|
|
"mlabeledtr",
|
|
"mmultiscripts",
|
|
"mn",
|
|
"mo",
|
|
"mover",
|
|
"mpadded",
|
|
"mphantom",
|
|
"mroot",
|
|
"mrow",
|
|
"ms",
|
|
"mspace",
|
|
"msqrt",
|
|
"mstyle",
|
|
"msub",
|
|
"msup",
|
|
"msubsup",
|
|
"mtable",
|
|
"mtd",
|
|
"mtext",
|
|
"mtr",
|
|
"munder",
|
|
"munderover",
|
|
"mprescripts",
|
|
]),
|
|
C = i([
|
|
"maction",
|
|
"maligngroup",
|
|
"malignmark",
|
|
"mlongdiv",
|
|
"mscarries",
|
|
"mscarry",
|
|
"msgroup",
|
|
"mstack",
|
|
"msline",
|
|
"msrow",
|
|
"semantics",
|
|
"annotation",
|
|
"annotation-xml",
|
|
"mprescripts",
|
|
"none",
|
|
]),
|
|
k = i(["#text"]),
|
|
O = i([
|
|
"accept",
|
|
"action",
|
|
"align",
|
|
"alt",
|
|
"autocapitalize",
|
|
"autocomplete",
|
|
"autopictureinpicture",
|
|
"autoplay",
|
|
"background",
|
|
"bgcolor",
|
|
"border",
|
|
"capture",
|
|
"cellpadding",
|
|
"cellspacing",
|
|
"checked",
|
|
"cite",
|
|
"class",
|
|
"clear",
|
|
"color",
|
|
"cols",
|
|
"colspan",
|
|
"controls",
|
|
"controlslist",
|
|
"coords",
|
|
"crossorigin",
|
|
"datetime",
|
|
"decoding",
|
|
"default",
|
|
"dir",
|
|
"disabled",
|
|
"disablepictureinpicture",
|
|
"disableremoteplayback",
|
|
"download",
|
|
"draggable",
|
|
"enctype",
|
|
"enterkeyhint",
|
|
"face",
|
|
"for",
|
|
"headers",
|
|
"height",
|
|
"hidden",
|
|
"high",
|
|
"href",
|
|
"hreflang",
|
|
"id",
|
|
"inputmode",
|
|
"integrity",
|
|
"ismap",
|
|
"kind",
|
|
"label",
|
|
"lang",
|
|
"list",
|
|
"loading",
|
|
"loop",
|
|
"low",
|
|
"max",
|
|
"maxlength",
|
|
"media",
|
|
"method",
|
|
"min",
|
|
"minlength",
|
|
"multiple",
|
|
"muted",
|
|
"name",
|
|
"nonce",
|
|
"noshade",
|
|
"novalidate",
|
|
"nowrap",
|
|
"open",
|
|
"optimum",
|
|
"pattern",
|
|
"placeholder",
|
|
"playsinline",
|
|
"poster",
|
|
"preload",
|
|
"pubdate",
|
|
"radiogroup",
|
|
"readonly",
|
|
"rel",
|
|
"required",
|
|
"rev",
|
|
"reversed",
|
|
"role",
|
|
"rows",
|
|
"rowspan",
|
|
"spellcheck",
|
|
"scope",
|
|
"selected",
|
|
"shape",
|
|
"size",
|
|
"sizes",
|
|
"span",
|
|
"srclang",
|
|
"start",
|
|
"src",
|
|
"srcset",
|
|
"step",
|
|
"style",
|
|
"summary",
|
|
"tabindex",
|
|
"title",
|
|
"translate",
|
|
"type",
|
|
"usemap",
|
|
"valign",
|
|
"value",
|
|
"width",
|
|
"xmlns",
|
|
"slot",
|
|
]),
|
|
I = i([
|
|
"accent-height",
|
|
"accumulate",
|
|
"additive",
|
|
"alignment-baseline",
|
|
"ascent",
|
|
"attributename",
|
|
"attributetype",
|
|
"azimuth",
|
|
"basefrequency",
|
|
"baseline-shift",
|
|
"begin",
|
|
"bias",
|
|
"by",
|
|
"class",
|
|
"clip",
|
|
"clippathunits",
|
|
"clip-path",
|
|
"clip-rule",
|
|
"color",
|
|
"color-interpolation",
|
|
"color-interpolation-filters",
|
|
"color-profile",
|
|
"color-rendering",
|
|
"cx",
|
|
"cy",
|
|
"d",
|
|
"dx",
|
|
"dy",
|
|
"diffuseconstant",
|
|
"direction",
|
|
"display",
|
|
"divisor",
|
|
"dur",
|
|
"edgemode",
|
|
"elevation",
|
|
"end",
|
|
"fill",
|
|
"fill-opacity",
|
|
"fill-rule",
|
|
"filter",
|
|
"filterunits",
|
|
"flood-color",
|
|
"flood-opacity",
|
|
"font-family",
|
|
"font-size",
|
|
"font-size-adjust",
|
|
"font-stretch",
|
|
"font-style",
|
|
"font-variant",
|
|
"font-weight",
|
|
"fx",
|
|
"fy",
|
|
"g1",
|
|
"g2",
|
|
"glyph-name",
|
|
"glyphref",
|
|
"gradientunits",
|
|
"gradienttransform",
|
|
"height",
|
|
"href",
|
|
"id",
|
|
"image-rendering",
|
|
"in",
|
|
"in2",
|
|
"k",
|
|
"k1",
|
|
"k2",
|
|
"k3",
|
|
"k4",
|
|
"kerning",
|
|
"keypoints",
|
|
"keysplines",
|
|
"keytimes",
|
|
"lang",
|
|
"lengthadjust",
|
|
"letter-spacing",
|
|
"kernelmatrix",
|
|
"kernelunitlength",
|
|
"lighting-color",
|
|
"local",
|
|
"marker-end",
|
|
"marker-mid",
|
|
"marker-start",
|
|
"markerheight",
|
|
"markerunits",
|
|
"markerwidth",
|
|
"maskcontentunits",
|
|
"maskunits",
|
|
"max",
|
|
"mask",
|
|
"media",
|
|
"method",
|
|
"mode",
|
|
"min",
|
|
"name",
|
|
"numoctaves",
|
|
"offset",
|
|
"operator",
|
|
"opacity",
|
|
"order",
|
|
"orient",
|
|
"orientation",
|
|
"origin",
|
|
"overflow",
|
|
"paint-order",
|
|
"path",
|
|
"pathlength",
|
|
"patterncontentunits",
|
|
"patterntransform",
|
|
"patternunits",
|
|
"points",
|
|
"preservealpha",
|
|
"preserveaspectratio",
|
|
"primitiveunits",
|
|
"r",
|
|
"rx",
|
|
"ry",
|
|
"radius",
|
|
"refx",
|
|
"refy",
|
|
"repeatcount",
|
|
"repeatdur",
|
|
"restart",
|
|
"result",
|
|
"rotate",
|
|
"scale",
|
|
"seed",
|
|
"shape-rendering",
|
|
"specularconstant",
|
|
"specularexponent",
|
|
"spreadmethod",
|
|
"startoffset",
|
|
"stddeviation",
|
|
"stitchtiles",
|
|
"stop-color",
|
|
"stop-opacity",
|
|
"stroke-dasharray",
|
|
"stroke-dashoffset",
|
|
"stroke-linecap",
|
|
"stroke-linejoin",
|
|
"stroke-miterlimit",
|
|
"stroke-opacity",
|
|
"stroke",
|
|
"stroke-width",
|
|
"style",
|
|
"surfacescale",
|
|
"systemlanguage",
|
|
"tabindex",
|
|
"targetx",
|
|
"targety",
|
|
"transform",
|
|
"transform-origin",
|
|
"text-anchor",
|
|
"text-decoration",
|
|
"text-rendering",
|
|
"textlength",
|
|
"type",
|
|
"u1",
|
|
"u2",
|
|
"unicode",
|
|
"values",
|
|
"viewbox",
|
|
"visibility",
|
|
"version",
|
|
"vert-adv-y",
|
|
"vert-origin-x",
|
|
"vert-origin-y",
|
|
"width",
|
|
"word-spacing",
|
|
"wrap",
|
|
"writing-mode",
|
|
"xchannelselector",
|
|
"ychannelselector",
|
|
"x",
|
|
"x1",
|
|
"x2",
|
|
"xmlns",
|
|
"y",
|
|
"y1",
|
|
"y2",
|
|
"z",
|
|
"zoomandpan",
|
|
]),
|
|
M = i([
|
|
"accent",
|
|
"accentunder",
|
|
"align",
|
|
"bevelled",
|
|
"close",
|
|
"columnsalign",
|
|
"columnlines",
|
|
"columnspan",
|
|
"denomalign",
|
|
"depth",
|
|
"dir",
|
|
"display",
|
|
"displaystyle",
|
|
"encoding",
|
|
"fence",
|
|
"frame",
|
|
"height",
|
|
"href",
|
|
"id",
|
|
"largeop",
|
|
"length",
|
|
"linethickness",
|
|
"lspace",
|
|
"lquote",
|
|
"mathbackground",
|
|
"mathcolor",
|
|
"mathsize",
|
|
"mathvariant",
|
|
"maxsize",
|
|
"minsize",
|
|
"movablelimits",
|
|
"notation",
|
|
"numalign",
|
|
"open",
|
|
"rowalign",
|
|
"rowlines",
|
|
"rowspacing",
|
|
"rowspan",
|
|
"rspace",
|
|
"rquote",
|
|
"scriptlevel",
|
|
"scriptminsize",
|
|
"scriptsizemultiplier",
|
|
"selection",
|
|
"separator",
|
|
"separators",
|
|
"stretchy",
|
|
"subscriptshift",
|
|
"supscriptshift",
|
|
"symmetric",
|
|
"voffset",
|
|
"width",
|
|
"xmlns",
|
|
]),
|
|
U = i(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]),
|
|
P = a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),
|
|
F = a(/<%[\w\W]*|[\w\W]*%>/gm),
|
|
H = a(/\${[\w\W]*}/gm),
|
|
z = a(/^data-[\-\w.\u00B7-\uFFFF]/),
|
|
B = a(/^aria-[\-\w]+$/),
|
|
W = a(
|
|
/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,
|
|
),
|
|
G = a(/^(?:\w+script|data):/i),
|
|
Y = a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),
|
|
j = a(/^html$/i);
|
|
var q = Object.freeze({
|
|
__proto__: null,
|
|
MUSTACHE_EXPR: P,
|
|
ERB_EXPR: F,
|
|
TMPLIT_EXPR: H,
|
|
DATA_ATTR: z,
|
|
ARIA_ATTR: B,
|
|
IS_ALLOWED_URI: W,
|
|
IS_SCRIPT_OR_DATA: G,
|
|
ATTR_WHITESPACE: Y,
|
|
DOCTYPE_NAME: j,
|
|
});
|
|
const X = () => ("undefined" == typeof window ? null : window),
|
|
K = function (e, t) {
|
|
if ("object" != typeof e || "function" != typeof e.createPolicy)
|
|
return null;
|
|
let n = null;
|
|
const o = "data-tt-policy-suffix";
|
|
t && t.hasAttribute(o) && (n = t.getAttribute(o));
|
|
const r = "dompurify" + (n ? "#" + n : "");
|
|
try {
|
|
return e.createPolicy(r, {
|
|
createHTML: (e) => e,
|
|
createScriptURL: (e) => e,
|
|
});
|
|
} catch (e) {
|
|
return (
|
|
console.warn("TrustedTypes policy " + r + " could not be created."),
|
|
null
|
|
);
|
|
}
|
|
};
|
|
var V = (function t() {
|
|
let n =
|
|
arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : X();
|
|
const o = (e) => t(e);
|
|
if (
|
|
((o.version = "3.0.3"),
|
|
(o.removed = []),
|
|
!n || !n.document || 9 !== n.document.nodeType)
|
|
)
|
|
return (o.isSupported = !1), o;
|
|
const r = n.document,
|
|
a = r.currentScript;
|
|
let { document: l } = n;
|
|
const {
|
|
DocumentFragment: c,
|
|
HTMLTemplateElement: s,
|
|
Node: _,
|
|
Element: b,
|
|
NodeFilter: P,
|
|
NamedNodeMap: F = n.NamedNodeMap || n.MozNamedAttrMap,
|
|
HTMLFormElement: H,
|
|
DOMParser: z,
|
|
trustedTypes: B,
|
|
} = n,
|
|
G = b.prototype,
|
|
Y = R(G, "cloneNode"),
|
|
V = R(G, "nextSibling"),
|
|
$ = R(G, "childNodes"),
|
|
Z = R(G, "parentNode");
|
|
if ("function" == typeof s) {
|
|
const e = l.createElement("template");
|
|
e.content && e.content.ownerDocument && (l = e.content.ownerDocument);
|
|
}
|
|
let J,
|
|
Q = "";
|
|
const {
|
|
implementation: ee,
|
|
createNodeIterator: te,
|
|
createDocumentFragment: ne,
|
|
getElementsByTagName: oe,
|
|
} = l,
|
|
{ importNode: re } = r;
|
|
let ie = {};
|
|
o.isSupported =
|
|
"function" == typeof e &&
|
|
"function" == typeof Z &&
|
|
ee &&
|
|
void 0 !== ee.createHTMLDocument;
|
|
const {
|
|
MUSTACHE_EXPR: ae,
|
|
ERB_EXPR: le,
|
|
TMPLIT_EXPR: ce,
|
|
DATA_ATTR: se,
|
|
ARIA_ATTR: me,
|
|
IS_SCRIPT_OR_DATA: ue,
|
|
ATTR_WHITESPACE: fe,
|
|
} = q;
|
|
let { IS_ALLOWED_URI: pe } = q,
|
|
de = null;
|
|
const he = N({}, [...w, ...D, ...L, ...x, ...k]);
|
|
let ge = null;
|
|
const Te = N({}, [...O, ...I, ...M, ...U]);
|
|
let ye = Object.seal(
|
|
Object.create(null, {
|
|
tagNameCheck: {
|
|
writable: !0,
|
|
configurable: !1,
|
|
enumerable: !0,
|
|
value: null,
|
|
},
|
|
attributeNameCheck: {
|
|
writable: !0,
|
|
configurable: !1,
|
|
enumerable: !0,
|
|
value: null,
|
|
},
|
|
allowCustomizedBuiltInElements: {
|
|
writable: !0,
|
|
configurable: !1,
|
|
enumerable: !0,
|
|
value: !1,
|
|
},
|
|
}),
|
|
),
|
|
Ee = null,
|
|
Ae = null,
|
|
_e = !0,
|
|
be = !0,
|
|
Ne = !1,
|
|
Se = !0,
|
|
Re = !1,
|
|
we = !1,
|
|
De = !1,
|
|
Le = !1,
|
|
ve = !1,
|
|
xe = !1,
|
|
Ce = !1,
|
|
ke = !0,
|
|
Oe = !1;
|
|
const Ie = "user-content-";
|
|
let Me = !0,
|
|
Ue = !1,
|
|
Pe = {},
|
|
Fe = null;
|
|
const He = N({}, [
|
|
"annotation-xml",
|
|
"audio",
|
|
"colgroup",
|
|
"desc",
|
|
"foreignobject",
|
|
"head",
|
|
"iframe",
|
|
"math",
|
|
"mi",
|
|
"mn",
|
|
"mo",
|
|
"ms",
|
|
"mtext",
|
|
"noembed",
|
|
"noframes",
|
|
"noscript",
|
|
"plaintext",
|
|
"script",
|
|
"style",
|
|
"svg",
|
|
"template",
|
|
"thead",
|
|
"title",
|
|
"video",
|
|
"xmp",
|
|
]);
|
|
let ze = null;
|
|
const Be = N({}, ["audio", "video", "img", "source", "image", "track"]);
|
|
let We = null;
|
|
const Ge = N({}, [
|
|
"alt",
|
|
"class",
|
|
"for",
|
|
"id",
|
|
"label",
|
|
"name",
|
|
"pattern",
|
|
"placeholder",
|
|
"role",
|
|
"summary",
|
|
"title",
|
|
"value",
|
|
"style",
|
|
"xmlns",
|
|
]),
|
|
Ye = "http://www.w3.org/1998/Math/MathML",
|
|
je = "http://www.w3.org/2000/svg",
|
|
qe = "http://www.w3.org/1999/xhtml";
|
|
let Xe = qe,
|
|
Ke = !1,
|
|
Ve = null;
|
|
const $e = N({}, [Ye, je, qe], d);
|
|
let Ze;
|
|
const Je = ["application/xhtml+xml", "text/html"],
|
|
Qe = "text/html";
|
|
let et,
|
|
tt = null;
|
|
const nt = l.createElement("form"),
|
|
ot = function (e) {
|
|
return e instanceof RegExp || e instanceof Function;
|
|
},
|
|
rt = function (e) {
|
|
if (!tt || tt !== e) {
|
|
if (
|
|
((e && "object" == typeof e) || (e = {}),
|
|
(e = S(e)),
|
|
(Ze = Ze =
|
|
-1 === Je.indexOf(e.PARSER_MEDIA_TYPE)
|
|
? Qe
|
|
: e.PARSER_MEDIA_TYPE),
|
|
(et = "application/xhtml+xml" === Ze ? d : p),
|
|
(de = "ALLOWED_TAGS" in e ? N({}, e.ALLOWED_TAGS, et) : he),
|
|
(ge = "ALLOWED_ATTR" in e ? N({}, e.ALLOWED_ATTR, et) : Te),
|
|
(Ve =
|
|
"ALLOWED_NAMESPACES" in e ? N({}, e.ALLOWED_NAMESPACES, d) : $e),
|
|
(We =
|
|
"ADD_URI_SAFE_ATTR" in e
|
|
? N(S(Ge), e.ADD_URI_SAFE_ATTR, et)
|
|
: Ge),
|
|
(ze =
|
|
"ADD_DATA_URI_TAGS" in e
|
|
? N(S(Be), e.ADD_DATA_URI_TAGS, et)
|
|
: Be),
|
|
(Fe = "FORBID_CONTENTS" in e ? N({}, e.FORBID_CONTENTS, et) : He),
|
|
(Ee = "FORBID_TAGS" in e ? N({}, e.FORBID_TAGS, et) : {}),
|
|
(Ae = "FORBID_ATTR" in e ? N({}, e.FORBID_ATTR, et) : {}),
|
|
(Pe = "USE_PROFILES" in e && e.USE_PROFILES),
|
|
(_e = !1 !== e.ALLOW_ARIA_ATTR),
|
|
(be = !1 !== e.ALLOW_DATA_ATTR),
|
|
(Ne = e.ALLOW_UNKNOWN_PROTOCOLS || !1),
|
|
(Se = !1 !== e.ALLOW_SELF_CLOSE_IN_ATTR),
|
|
(Re = e.SAFE_FOR_TEMPLATES || !1),
|
|
(we = e.WHOLE_DOCUMENT || !1),
|
|
(ve = e.RETURN_DOM || !1),
|
|
(xe = e.RETURN_DOM_FRAGMENT || !1),
|
|
(Ce = e.RETURN_TRUSTED_TYPE || !1),
|
|
(Le = e.FORCE_BODY || !1),
|
|
(ke = !1 !== e.SANITIZE_DOM),
|
|
(Oe = e.SANITIZE_NAMED_PROPS || !1),
|
|
(Me = !1 !== e.KEEP_CONTENT),
|
|
(Ue = e.IN_PLACE || !1),
|
|
(pe = e.ALLOWED_URI_REGEXP || W),
|
|
(Xe = e.NAMESPACE || qe),
|
|
(ye = e.CUSTOM_ELEMENT_HANDLING || {}),
|
|
e.CUSTOM_ELEMENT_HANDLING &&
|
|
ot(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck) &&
|
|
(ye.tagNameCheck = e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),
|
|
e.CUSTOM_ELEMENT_HANDLING &&
|
|
ot(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) &&
|
|
(ye.attributeNameCheck =
|
|
e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),
|
|
e.CUSTOM_ELEMENT_HANDLING &&
|
|
"boolean" ==
|
|
typeof e.CUSTOM_ELEMENT_HANDLING
|
|
.allowCustomizedBuiltInElements &&
|
|
(ye.allowCustomizedBuiltInElements =
|
|
e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),
|
|
Re && (be = !1),
|
|
xe && (ve = !0),
|
|
Pe &&
|
|
((de = N({}, [...k])),
|
|
(ge = []),
|
|
!0 === Pe.html && (N(de, w), N(ge, O)),
|
|
!0 === Pe.svg && (N(de, D), N(ge, I), N(ge, U)),
|
|
!0 === Pe.svgFilters && (N(de, L), N(ge, I), N(ge, U)),
|
|
!0 === Pe.mathMl && (N(de, x), N(ge, M), N(ge, U))),
|
|
e.ADD_TAGS && (de === he && (de = S(de)), N(de, e.ADD_TAGS, et)),
|
|
e.ADD_ATTR && (ge === Te && (ge = S(ge)), N(ge, e.ADD_ATTR, et)),
|
|
e.ADD_URI_SAFE_ATTR && N(We, e.ADD_URI_SAFE_ATTR, et),
|
|
e.FORBID_CONTENTS &&
|
|
(Fe === He && (Fe = S(Fe)), N(Fe, e.FORBID_CONTENTS, et)),
|
|
Me && (de["#text"] = !0),
|
|
we && N(de, ["html", "head", "body"]),
|
|
de.table && (N(de, ["tbody"]), delete Ee.tbody),
|
|
e.TRUSTED_TYPES_POLICY)
|
|
) {
|
|
if ("function" != typeof e.TRUSTED_TYPES_POLICY.createHTML)
|
|
throw A(
|
|
'TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.',
|
|
);
|
|
if ("function" != typeof e.TRUSTED_TYPES_POLICY.createScriptURL)
|
|
throw A(
|
|
'TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.',
|
|
);
|
|
(J = e.TRUSTED_TYPES_POLICY), (Q = J.createHTML(""));
|
|
} else
|
|
void 0 === J && (J = K(B, a)),
|
|
null !== J && "string" == typeof Q && (Q = J.createHTML(""));
|
|
i && i(e), (tt = e);
|
|
}
|
|
},
|
|
it = N({}, ["mi", "mo", "mn", "ms", "mtext"]),
|
|
at = N({}, ["foreignobject", "desc", "title", "annotation-xml"]),
|
|
lt = N({}, ["title", "style", "font", "a", "script"]),
|
|
ct = N({}, D);
|
|
N(ct, L), N(ct, v);
|
|
const st = N({}, x);
|
|
N(st, C);
|
|
const mt = function (e) {
|
|
let t = Z(e);
|
|
(t && t.tagName) || (t = { namespaceURI: Xe, tagName: "template" });
|
|
const n = p(e.tagName),
|
|
o = p(t.tagName);
|
|
return (
|
|
!!Ve[e.namespaceURI] &&
|
|
(e.namespaceURI === je
|
|
? t.namespaceURI === qe
|
|
? "svg" === n
|
|
: t.namespaceURI === Ye
|
|
? "svg" === n && ("annotation-xml" === o || it[o])
|
|
: Boolean(ct[n])
|
|
: e.namespaceURI === Ye
|
|
? t.namespaceURI === qe
|
|
? "math" === n
|
|
: t.namespaceURI === je
|
|
? "math" === n && at[o]
|
|
: Boolean(st[n])
|
|
: e.namespaceURI === qe
|
|
? !(t.namespaceURI === je && !at[o]) &&
|
|
!(t.namespaceURI === Ye && !it[o]) &&
|
|
!st[n] &&
|
|
(lt[n] || !ct[n])
|
|
: !("application/xhtml+xml" !== Ze || !Ve[e.namespaceURI]))
|
|
);
|
|
},
|
|
ut = function (e) {
|
|
f(o.removed, { element: e });
|
|
try {
|
|
e.parentNode.removeChild(e);
|
|
} catch (t) {
|
|
e.remove();
|
|
}
|
|
},
|
|
ft = function (e, t) {
|
|
try {
|
|
f(o.removed, { attribute: t.getAttributeNode(e), from: t });
|
|
} catch (e) {
|
|
f(o.removed, { attribute: null, from: t });
|
|
}
|
|
if ((t.removeAttribute(e), "is" === e && !ge[e]))
|
|
if (ve || xe)
|
|
try {
|
|
ut(t);
|
|
} catch (e) {}
|
|
else
|
|
try {
|
|
t.setAttribute(e, "");
|
|
} catch (e) {}
|
|
},
|
|
pt = function (e) {
|
|
let t, n;
|
|
if (Le) e = "<remove></remove>" + e;
|
|
else {
|
|
const t = h(e, /^[\r\n\t ]+/);
|
|
n = t && t[0];
|
|
}
|
|
"application/xhtml+xml" === Ze &&
|
|
Xe === qe &&
|
|
(e =
|
|
'<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' +
|
|
e +
|
|
"</body></html>");
|
|
const o = J ? J.createHTML(e) : e;
|
|
if (Xe === qe)
|
|
try {
|
|
t = new z().parseFromString(o, Ze);
|
|
} catch (e) {}
|
|
if (!t || !t.documentElement) {
|
|
t = ee.createDocument(Xe, "template", null);
|
|
try {
|
|
t.documentElement.innerHTML = Ke ? Q : o;
|
|
} catch (e) {}
|
|
}
|
|
const r = t.body || t.documentElement;
|
|
return (
|
|
e &&
|
|
n &&
|
|
r.insertBefore(l.createTextNode(n), r.childNodes[0] || null),
|
|
Xe === qe
|
|
? oe.call(t, we ? "html" : "body")[0]
|
|
: we
|
|
? t.documentElement
|
|
: r
|
|
);
|
|
},
|
|
dt = function (e) {
|
|
return te.call(
|
|
e.ownerDocument || e,
|
|
e,
|
|
P.SHOW_ELEMENT | P.SHOW_COMMENT | P.SHOW_TEXT,
|
|
null,
|
|
!1,
|
|
);
|
|
},
|
|
ht = function (e) {
|
|
return (
|
|
e instanceof H &&
|
|
("string" != typeof e.nodeName ||
|
|
"string" != typeof e.textContent ||
|
|
"function" != typeof e.removeChild ||
|
|
!(e.attributes instanceof F) ||
|
|
"function" != typeof e.removeAttribute ||
|
|
"function" != typeof e.setAttribute ||
|
|
"string" != typeof e.namespaceURI ||
|
|
"function" != typeof e.insertBefore ||
|
|
"function" != typeof e.hasChildNodes)
|
|
);
|
|
},
|
|
gt = function (e) {
|
|
return "object" == typeof _
|
|
? e instanceof _
|
|
: e &&
|
|
"object" == typeof e &&
|
|
"number" == typeof e.nodeType &&
|
|
"string" == typeof e.nodeName;
|
|
},
|
|
Tt = function (e, t, n) {
|
|
ie[e] &&
|
|
m(ie[e], (e) => {
|
|
e.call(o, t, n, tt);
|
|
});
|
|
},
|
|
yt = function (e) {
|
|
let t;
|
|
if ((Tt("beforeSanitizeElements", e, null), ht(e))) return ut(e), !0;
|
|
const n = et(e.nodeName);
|
|
if (
|
|
(Tt("uponSanitizeElement", e, { tagName: n, allowedTags: de }),
|
|
e.hasChildNodes() &&
|
|
!gt(e.firstElementChild) &&
|
|
(!gt(e.content) || !gt(e.content.firstElementChild)) &&
|
|
E(/<[/\w]/g, e.innerHTML) &&
|
|
E(/<[/\w]/g, e.textContent))
|
|
)
|
|
return ut(e), !0;
|
|
if (!de[n] || Ee[n]) {
|
|
if (!Ee[n] && At(n)) {
|
|
if (ye.tagNameCheck instanceof RegExp && E(ye.tagNameCheck, n))
|
|
return !1;
|
|
if (ye.tagNameCheck instanceof Function && ye.tagNameCheck(n))
|
|
return !1;
|
|
}
|
|
if (Me && !Fe[n]) {
|
|
const t = Z(e) || e.parentNode,
|
|
n = $(e) || e.childNodes;
|
|
if (n && t) {
|
|
for (let o = n.length - 1; o >= 0; --o)
|
|
t.insertBefore(Y(n[o], !0), V(e));
|
|
}
|
|
}
|
|
return ut(e), !0;
|
|
}
|
|
return e instanceof b && !mt(e)
|
|
? (ut(e), !0)
|
|
: ("noscript" !== n && "noembed" !== n) ||
|
|
!E(/<\/no(script|embed)/i, e.innerHTML)
|
|
? (Re &&
|
|
3 === e.nodeType &&
|
|
((t = e.textContent),
|
|
(t = g(t, ae, " ")),
|
|
(t = g(t, le, " ")),
|
|
(t = g(t, ce, " ")),
|
|
e.textContent !== t &&
|
|
(f(o.removed, { element: e.cloneNode() }),
|
|
(e.textContent = t))),
|
|
Tt("afterSanitizeElements", e, null),
|
|
!1)
|
|
: (ut(e), !0);
|
|
},
|
|
Et = function (e, t, n) {
|
|
if (ke && ("id" === t || "name" === t) && (n in l || n in nt))
|
|
return !1;
|
|
if (be && !Ae[t] && E(se, t));
|
|
else if (_e && E(me, t));
|
|
else if (!ge[t] || Ae[t]) {
|
|
if (
|
|
!(
|
|
(At(e) &&
|
|
((ye.tagNameCheck instanceof RegExp && E(ye.tagNameCheck, e)) ||
|
|
(ye.tagNameCheck instanceof Function &&
|
|
ye.tagNameCheck(e))) &&
|
|
((ye.attributeNameCheck instanceof RegExp &&
|
|
E(ye.attributeNameCheck, t)) ||
|
|
(ye.attributeNameCheck instanceof Function &&
|
|
ye.attributeNameCheck(t)))) ||
|
|
("is" === t &&
|
|
ye.allowCustomizedBuiltInElements &&
|
|
((ye.tagNameCheck instanceof RegExp && E(ye.tagNameCheck, n)) ||
|
|
(ye.tagNameCheck instanceof Function && ye.tagNameCheck(n))))
|
|
)
|
|
)
|
|
return !1;
|
|
} else if (We[t]);
|
|
else if (E(pe, g(n, fe, "")));
|
|
else if (
|
|
("src" !== t && "xlink:href" !== t && "href" !== t) ||
|
|
"script" === e ||
|
|
0 !== T(n, "data:") ||
|
|
!ze[e]
|
|
) {
|
|
if (Ne && !E(ue, g(n, fe, "")));
|
|
else if (n) return !1;
|
|
} else;
|
|
return !0;
|
|
},
|
|
At = function (e) {
|
|
return e.indexOf("-") > 0;
|
|
},
|
|
_t = function (e) {
|
|
let t, n, r, i;
|
|
Tt("beforeSanitizeAttributes", e, null);
|
|
const { attributes: a } = e;
|
|
if (!a) return;
|
|
const l = {
|
|
attrName: "",
|
|
attrValue: "",
|
|
keepAttr: !0,
|
|
allowedAttributes: ge,
|
|
};
|
|
for (i = a.length; i--; ) {
|
|
t = a[i];
|
|
const { name: c, namespaceURI: s } = t;
|
|
if (
|
|
((n = "value" === c ? t.value : y(t.value)),
|
|
(r = et(c)),
|
|
(l.attrName = r),
|
|
(l.attrValue = n),
|
|
(l.keepAttr = !0),
|
|
(l.forceKeepAttr = void 0),
|
|
Tt("uponSanitizeAttribute", e, l),
|
|
(n = l.attrValue),
|
|
l.forceKeepAttr)
|
|
)
|
|
continue;
|
|
if ((ft(c, e), !l.keepAttr)) continue;
|
|
if (!Se && E(/\/>/i, n)) {
|
|
ft(c, e);
|
|
continue;
|
|
}
|
|
Re && ((n = g(n, ae, " ")), (n = g(n, le, " ")), (n = g(n, ce, " ")));
|
|
const m = et(e.nodeName);
|
|
if (Et(m, r, n)) {
|
|
if (
|
|
(!Oe || ("id" !== r && "name" !== r) || (ft(c, e), (n = Ie + n)),
|
|
J &&
|
|
"object" == typeof B &&
|
|
"function" == typeof B.getAttributeType)
|
|
)
|
|
if (s);
|
|
else
|
|
switch (B.getAttributeType(m, r)) {
|
|
case "TrustedHTML":
|
|
n = J.createHTML(n);
|
|
break;
|
|
case "TrustedScriptURL":
|
|
n = J.createScriptURL(n);
|
|
}
|
|
try {
|
|
s ? e.setAttributeNS(s, c, n) : e.setAttribute(c, n),
|
|
u(o.removed);
|
|
} catch (e) {}
|
|
}
|
|
}
|
|
Tt("afterSanitizeAttributes", e, null);
|
|
},
|
|
bt = function e(t) {
|
|
let n;
|
|
const o = dt(t);
|
|
for (Tt("beforeSanitizeShadowDOM", t, null); (n = o.nextNode()); )
|
|
Tt("uponSanitizeShadowNode", n, null),
|
|
yt(n) || (n.content instanceof c && e(n.content), _t(n));
|
|
Tt("afterSanitizeShadowDOM", t, null);
|
|
};
|
|
return (
|
|
(o.sanitize = function (e) {
|
|
let t,
|
|
n,
|
|
i,
|
|
a,
|
|
l =
|
|
arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
|
|
if (
|
|
((Ke = !e), Ke && (e = "\x3c!--\x3e"), "string" != typeof e && !gt(e))
|
|
) {
|
|
if ("function" != typeof e.toString)
|
|
throw A("toString is not a function");
|
|
if ("string" != typeof (e = e.toString()))
|
|
throw A("dirty is not a string, aborting");
|
|
}
|
|
if (!o.isSupported) return e;
|
|
if (
|
|
(De || rt(l), (o.removed = []), "string" == typeof e && (Ue = !1), Ue)
|
|
) {
|
|
if (e.nodeName) {
|
|
const t = et(e.nodeName);
|
|
if (!de[t] || Ee[t])
|
|
throw A(
|
|
"root node is forbidden and cannot be sanitized in-place",
|
|
);
|
|
}
|
|
} else if (e instanceof _)
|
|
(t = pt("\x3c!----\x3e")),
|
|
(n = t.ownerDocument.importNode(e, !0)),
|
|
(1 === n.nodeType && "BODY" === n.nodeName) || "HTML" === n.nodeName
|
|
? (t = n)
|
|
: t.appendChild(n);
|
|
else {
|
|
if (!ve && !Re && !we && -1 === e.indexOf("<"))
|
|
return J && Ce ? J.createHTML(e) : e;
|
|
if (((t = pt(e)), !t)) return ve ? null : Ce ? Q : "";
|
|
}
|
|
t && Le && ut(t.firstChild);
|
|
const s = dt(Ue ? e : t);
|
|
for (; (i = s.nextNode()); )
|
|
yt(i) || (i.content instanceof c && bt(i.content), _t(i));
|
|
if (Ue) return e;
|
|
if (ve) {
|
|
if (xe)
|
|
for (a = ne.call(t.ownerDocument); t.firstChild; )
|
|
a.appendChild(t.firstChild);
|
|
else a = t;
|
|
return (
|
|
(ge.shadowroot || ge.shadowrootmod) && (a = re.call(r, a, !0)), a
|
|
);
|
|
}
|
|
let m = we ? t.outerHTML : t.innerHTML;
|
|
return (
|
|
we &&
|
|
de["!doctype"] &&
|
|
t.ownerDocument &&
|
|
t.ownerDocument.doctype &&
|
|
t.ownerDocument.doctype.name &&
|
|
E(j, t.ownerDocument.doctype.name) &&
|
|
(m = "<!DOCTYPE " + t.ownerDocument.doctype.name + ">\n" + m),
|
|
Re && ((m = g(m, ae, " ")), (m = g(m, le, " ")), (m = g(m, ce, " "))),
|
|
J && Ce ? J.createHTML(m) : m
|
|
);
|
|
}),
|
|
(o.setConfig = function (e) {
|
|
rt(e), (De = !0);
|
|
}),
|
|
(o.clearConfig = function () {
|
|
(tt = null), (De = !1);
|
|
}),
|
|
(o.isValidAttribute = function (e, t, n) {
|
|
tt || rt({});
|
|
const o = et(e),
|
|
r = et(t);
|
|
return Et(o, r, n);
|
|
}),
|
|
(o.addHook = function (e, t) {
|
|
"function" == typeof t && ((ie[e] = ie[e] || []), f(ie[e], t));
|
|
}),
|
|
(o.removeHook = function (e) {
|
|
if (ie[e]) return u(ie[e]);
|
|
}),
|
|
(o.removeHooks = function (e) {
|
|
ie[e] && (ie[e] = []);
|
|
}),
|
|
(o.removeAllHooks = function () {
|
|
ie = {};
|
|
}),
|
|
o
|
|
);
|
|
})();
|
|
return V;
|
|
});
|
|
//# sourceMappingURL=purify.min.js.map
|