@alan-ai/alan-sdk-web 1.8.120 → 1.8.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/alan_lib.js +1367 -101
- package/dist/alan_lib.min.js +4 -1
- package/package.json +1 -1
package/dist/alan_lib.js
CHANGED
|
@@ -25853,6 +25853,1092 @@
|
|
|
25853
25853
|
}
|
|
25854
25854
|
});
|
|
25855
25855
|
|
|
25856
|
+
// node_modules/dompurify/dist/purify.cjs.js
|
|
25857
|
+
var require_purify_cjs = __commonJS({
|
|
25858
|
+
"node_modules/dompurify/dist/purify.cjs.js"(exports, module) {
|
|
25859
|
+
"use strict";
|
|
25860
|
+
var {
|
|
25861
|
+
entries,
|
|
25862
|
+
setPrototypeOf,
|
|
25863
|
+
isFrozen,
|
|
25864
|
+
getPrototypeOf,
|
|
25865
|
+
getOwnPropertyDescriptor
|
|
25866
|
+
} = Object;
|
|
25867
|
+
var {
|
|
25868
|
+
freeze,
|
|
25869
|
+
seal,
|
|
25870
|
+
create
|
|
25871
|
+
} = Object;
|
|
25872
|
+
var {
|
|
25873
|
+
apply,
|
|
25874
|
+
construct
|
|
25875
|
+
} = typeof Reflect !== "undefined" && Reflect;
|
|
25876
|
+
if (!freeze) {
|
|
25877
|
+
freeze = function freeze2(x) {
|
|
25878
|
+
return x;
|
|
25879
|
+
};
|
|
25880
|
+
}
|
|
25881
|
+
if (!seal) {
|
|
25882
|
+
seal = function seal2(x) {
|
|
25883
|
+
return x;
|
|
25884
|
+
};
|
|
25885
|
+
}
|
|
25886
|
+
if (!apply) {
|
|
25887
|
+
apply = function apply2(func, thisArg) {
|
|
25888
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
25889
|
+
args[_key - 2] = arguments[_key];
|
|
25890
|
+
}
|
|
25891
|
+
return func.apply(thisArg, args);
|
|
25892
|
+
};
|
|
25893
|
+
}
|
|
25894
|
+
if (!construct) {
|
|
25895
|
+
construct = function construct2(Func) {
|
|
25896
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
25897
|
+
args[_key2 - 1] = arguments[_key2];
|
|
25898
|
+
}
|
|
25899
|
+
return new Func(...args);
|
|
25900
|
+
};
|
|
25901
|
+
}
|
|
25902
|
+
var arrayForEach = unapply(Array.prototype.forEach);
|
|
25903
|
+
var arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
|
|
25904
|
+
var arrayPop = unapply(Array.prototype.pop);
|
|
25905
|
+
var arrayPush = unapply(Array.prototype.push);
|
|
25906
|
+
var arraySplice = unapply(Array.prototype.splice);
|
|
25907
|
+
var arrayIsArray = Array.isArray;
|
|
25908
|
+
var stringToLowerCase = unapply(String.prototype.toLowerCase);
|
|
25909
|
+
var stringToString = unapply(String.prototype.toString);
|
|
25910
|
+
var stringMatch = unapply(String.prototype.match);
|
|
25911
|
+
var stringReplace = unapply(String.prototype.replace);
|
|
25912
|
+
var stringIndexOf = unapply(String.prototype.indexOf);
|
|
25913
|
+
var stringTrim = unapply(String.prototype.trim);
|
|
25914
|
+
var numberToString = unapply(Number.prototype.toString);
|
|
25915
|
+
var booleanToString = unapply(Boolean.prototype.toString);
|
|
25916
|
+
var bigintToString = typeof BigInt === "undefined" ? null : unapply(BigInt.prototype.toString);
|
|
25917
|
+
var symbolToString = typeof Symbol === "undefined" ? null : unapply(Symbol.prototype.toString);
|
|
25918
|
+
var objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
|
|
25919
|
+
var objectToString = unapply(Object.prototype.toString);
|
|
25920
|
+
var regExpTest = unapply(RegExp.prototype.test);
|
|
25921
|
+
var typeErrorCreate = unconstruct(TypeError);
|
|
25922
|
+
function unapply(func) {
|
|
25923
|
+
return function(thisArg) {
|
|
25924
|
+
if (thisArg instanceof RegExp) {
|
|
25925
|
+
thisArg.lastIndex = 0;
|
|
25926
|
+
}
|
|
25927
|
+
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
25928
|
+
args[_key3 - 1] = arguments[_key3];
|
|
25929
|
+
}
|
|
25930
|
+
return apply(func, thisArg, args);
|
|
25931
|
+
};
|
|
25932
|
+
}
|
|
25933
|
+
function unconstruct(Func) {
|
|
25934
|
+
return function() {
|
|
25935
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
25936
|
+
args[_key4] = arguments[_key4];
|
|
25937
|
+
}
|
|
25938
|
+
return construct(Func, args);
|
|
25939
|
+
};
|
|
25940
|
+
}
|
|
25941
|
+
function addToSet(set, array) {
|
|
25942
|
+
let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;
|
|
25943
|
+
if (setPrototypeOf) {
|
|
25944
|
+
setPrototypeOf(set, null);
|
|
25945
|
+
}
|
|
25946
|
+
if (!arrayIsArray(array)) {
|
|
25947
|
+
return set;
|
|
25948
|
+
}
|
|
25949
|
+
let l = array.length;
|
|
25950
|
+
while (l--) {
|
|
25951
|
+
let element = array[l];
|
|
25952
|
+
if (typeof element === "string") {
|
|
25953
|
+
const lcElement = transformCaseFunc(element);
|
|
25954
|
+
if (lcElement !== element) {
|
|
25955
|
+
if (!isFrozen(array)) {
|
|
25956
|
+
array[l] = lcElement;
|
|
25957
|
+
}
|
|
25958
|
+
element = lcElement;
|
|
25959
|
+
}
|
|
25960
|
+
}
|
|
25961
|
+
set[element] = true;
|
|
25962
|
+
}
|
|
25963
|
+
return set;
|
|
25964
|
+
}
|
|
25965
|
+
function cleanArray(array) {
|
|
25966
|
+
for (let index3 = 0; index3 < array.length; index3++) {
|
|
25967
|
+
const isPropertyExist = objectHasOwnProperty(array, index3);
|
|
25968
|
+
if (!isPropertyExist) {
|
|
25969
|
+
array[index3] = null;
|
|
25970
|
+
}
|
|
25971
|
+
}
|
|
25972
|
+
return array;
|
|
25973
|
+
}
|
|
25974
|
+
function clone3(object) {
|
|
25975
|
+
const newObject = create(null);
|
|
25976
|
+
for (const [property, value] of entries(object)) {
|
|
25977
|
+
const isPropertyExist = objectHasOwnProperty(object, property);
|
|
25978
|
+
if (isPropertyExist) {
|
|
25979
|
+
if (arrayIsArray(value)) {
|
|
25980
|
+
newObject[property] = cleanArray(value);
|
|
25981
|
+
} else if (value && typeof value === "object" && value.constructor === Object) {
|
|
25982
|
+
newObject[property] = clone3(value);
|
|
25983
|
+
} else {
|
|
25984
|
+
newObject[property] = value;
|
|
25985
|
+
}
|
|
25986
|
+
}
|
|
25987
|
+
}
|
|
25988
|
+
return newObject;
|
|
25989
|
+
}
|
|
25990
|
+
function stringifyValue(value) {
|
|
25991
|
+
switch (typeof value) {
|
|
25992
|
+
case "string": {
|
|
25993
|
+
return value;
|
|
25994
|
+
}
|
|
25995
|
+
case "number": {
|
|
25996
|
+
return numberToString(value);
|
|
25997
|
+
}
|
|
25998
|
+
case "boolean": {
|
|
25999
|
+
return booleanToString(value);
|
|
26000
|
+
}
|
|
26001
|
+
case "bigint": {
|
|
26002
|
+
return bigintToString ? bigintToString(value) : "0";
|
|
26003
|
+
}
|
|
26004
|
+
case "symbol": {
|
|
26005
|
+
return symbolToString ? symbolToString(value) : "Symbol()";
|
|
26006
|
+
}
|
|
26007
|
+
case "undefined": {
|
|
26008
|
+
return objectToString(value);
|
|
26009
|
+
}
|
|
26010
|
+
case "function":
|
|
26011
|
+
case "object": {
|
|
26012
|
+
if (value === null) {
|
|
26013
|
+
return objectToString(value);
|
|
26014
|
+
}
|
|
26015
|
+
const valueAsRecord = value;
|
|
26016
|
+
const valueToString = lookupGetter(valueAsRecord, "toString");
|
|
26017
|
+
if (typeof valueToString === "function") {
|
|
26018
|
+
const stringified = valueToString(valueAsRecord);
|
|
26019
|
+
return typeof stringified === "string" ? stringified : objectToString(stringified);
|
|
26020
|
+
}
|
|
26021
|
+
return objectToString(value);
|
|
26022
|
+
}
|
|
26023
|
+
default: {
|
|
26024
|
+
return objectToString(value);
|
|
26025
|
+
}
|
|
26026
|
+
}
|
|
26027
|
+
}
|
|
26028
|
+
function lookupGetter(object, prop3) {
|
|
26029
|
+
while (object !== null) {
|
|
26030
|
+
const desc = getOwnPropertyDescriptor(object, prop3);
|
|
26031
|
+
if (desc) {
|
|
26032
|
+
if (desc.get) {
|
|
26033
|
+
return unapply(desc.get);
|
|
26034
|
+
}
|
|
26035
|
+
if (typeof desc.value === "function") {
|
|
26036
|
+
return unapply(desc.value);
|
|
26037
|
+
}
|
|
26038
|
+
}
|
|
26039
|
+
object = getPrototypeOf(object);
|
|
26040
|
+
}
|
|
26041
|
+
function fallbackValue() {
|
|
26042
|
+
return null;
|
|
26043
|
+
}
|
|
26044
|
+
return fallbackValue;
|
|
26045
|
+
}
|
|
26046
|
+
function isRegex(value) {
|
|
26047
|
+
try {
|
|
26048
|
+
regExpTest(value, "");
|
|
26049
|
+
return true;
|
|
26050
|
+
} catch (_unused) {
|
|
26051
|
+
return false;
|
|
26052
|
+
}
|
|
26053
|
+
}
|
|
26054
|
+
var html$1 = freeze(["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", "search", "section", "select", "shadow", "slot", "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"]);
|
|
26055
|
+
var svg$1 = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "enterkeyhint", "exportparts", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "inputmode", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "part", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
|
|
26056
|
+
var svgFilters = freeze(["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"]);
|
|
26057
|
+
var svgDisallowed = freeze(["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"]);
|
|
26058
|
+
var mathMl$1 = freeze(["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"]);
|
|
26059
|
+
var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
|
|
26060
|
+
var text5 = freeze(["#text"]);
|
|
26061
|
+
var html5 = freeze(["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", "exportparts", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inert", "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", "part", "pattern", "placeholder", "playsinline", "popover", "popovertarget", "popovertargetaction", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "slot", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "wrap", "xmlns"]);
|
|
26062
|
+
var svg = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "amplitude", "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", "exponent", "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", "intercept", "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", "mask-type", "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", "slope", "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", "tablevalues", "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"]);
|
|
26063
|
+
var mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnalign", "columnlines", "columnspacing", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lquote", "lspace", "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"]);
|
|
26064
|
+
var xml3 = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
|
|
26065
|
+
var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm);
|
|
26066
|
+
var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
|
|
26067
|
+
var TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm);
|
|
26068
|
+
var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/);
|
|
26069
|
+
var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
|
|
26070
|
+
var IS_ALLOWED_URI = seal(
|
|
26071
|
+
/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
|
|
26072
|
+
// eslint-disable-line no-useless-escape
|
|
26073
|
+
);
|
|
26074
|
+
var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
|
|
26075
|
+
var ATTR_WHITESPACE = seal(
|
|
26076
|
+
/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
|
|
26077
|
+
// eslint-disable-line no-control-regex
|
|
26078
|
+
);
|
|
26079
|
+
var DOCTYPE_NAME = seal(/^html$/i);
|
|
26080
|
+
var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
|
|
26081
|
+
var EXPRESSIONS = /* @__PURE__ */ Object.freeze({
|
|
26082
|
+
__proto__: null,
|
|
26083
|
+
ARIA_ATTR,
|
|
26084
|
+
ATTR_WHITESPACE,
|
|
26085
|
+
CUSTOM_ELEMENT,
|
|
26086
|
+
DATA_ATTR,
|
|
26087
|
+
DOCTYPE_NAME,
|
|
26088
|
+
ERB_EXPR,
|
|
26089
|
+
IS_ALLOWED_URI,
|
|
26090
|
+
IS_SCRIPT_OR_DATA,
|
|
26091
|
+
MUSTACHE_EXPR,
|
|
26092
|
+
TMPLIT_EXPR
|
|
26093
|
+
});
|
|
26094
|
+
var NODE_TYPE = {
|
|
26095
|
+
element: 1,
|
|
26096
|
+
text: 3,
|
|
26097
|
+
// Deprecated
|
|
26098
|
+
progressingInstruction: 7,
|
|
26099
|
+
comment: 8,
|
|
26100
|
+
document: 9
|
|
26101
|
+
};
|
|
26102
|
+
var getGlobal = function getGlobal2() {
|
|
26103
|
+
return typeof window === "undefined" ? null : window;
|
|
26104
|
+
};
|
|
26105
|
+
var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, purifyHostElement) {
|
|
26106
|
+
if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") {
|
|
26107
|
+
return null;
|
|
26108
|
+
}
|
|
26109
|
+
let suffix = null;
|
|
26110
|
+
const ATTR_NAME = "data-tt-policy-suffix";
|
|
26111
|
+
if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
|
|
26112
|
+
suffix = purifyHostElement.getAttribute(ATTR_NAME);
|
|
26113
|
+
}
|
|
26114
|
+
const policyName = "dompurify" + (suffix ? "#" + suffix : "");
|
|
26115
|
+
try {
|
|
26116
|
+
return trustedTypes.createPolicy(policyName, {
|
|
26117
|
+
createHTML(html6) {
|
|
26118
|
+
return html6;
|
|
26119
|
+
},
|
|
26120
|
+
createScriptURL(scriptUrl) {
|
|
26121
|
+
return scriptUrl;
|
|
26122
|
+
}
|
|
26123
|
+
});
|
|
26124
|
+
} catch (_) {
|
|
26125
|
+
console.warn("TrustedTypes policy " + policyName + " could not be created.");
|
|
26126
|
+
return null;
|
|
26127
|
+
}
|
|
26128
|
+
};
|
|
26129
|
+
var _createHooksMap = function _createHooksMap2() {
|
|
26130
|
+
return {
|
|
26131
|
+
afterSanitizeAttributes: [],
|
|
26132
|
+
afterSanitizeElements: [],
|
|
26133
|
+
afterSanitizeShadowDOM: [],
|
|
26134
|
+
beforeSanitizeAttributes: [],
|
|
26135
|
+
beforeSanitizeElements: [],
|
|
26136
|
+
beforeSanitizeShadowDOM: [],
|
|
26137
|
+
uponSanitizeAttribute: [],
|
|
26138
|
+
uponSanitizeElement: [],
|
|
26139
|
+
uponSanitizeShadowNode: []
|
|
26140
|
+
};
|
|
26141
|
+
};
|
|
26142
|
+
function createDOMPurify() {
|
|
26143
|
+
let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
|
|
26144
|
+
const DOMPurify2 = (root3) => createDOMPurify(root3);
|
|
26145
|
+
DOMPurify2.version = "3.4.1";
|
|
26146
|
+
DOMPurify2.removed = [];
|
|
26147
|
+
if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
|
|
26148
|
+
DOMPurify2.isSupported = false;
|
|
26149
|
+
return DOMPurify2;
|
|
26150
|
+
}
|
|
26151
|
+
let {
|
|
26152
|
+
document: document2
|
|
26153
|
+
} = window2;
|
|
26154
|
+
const originalDocument = document2;
|
|
26155
|
+
const currentScript = originalDocument.currentScript;
|
|
26156
|
+
const {
|
|
26157
|
+
DocumentFragment,
|
|
26158
|
+
HTMLTemplateElement,
|
|
26159
|
+
Node: Node5,
|
|
26160
|
+
Element: Element2,
|
|
26161
|
+
NodeFilter,
|
|
26162
|
+
NamedNodeMap = window2.NamedNodeMap || window2.MozNamedAttrMap,
|
|
26163
|
+
HTMLFormElement,
|
|
26164
|
+
DOMParser: DOMParser2,
|
|
26165
|
+
trustedTypes
|
|
26166
|
+
} = window2;
|
|
26167
|
+
const ElementPrototype = Element2.prototype;
|
|
26168
|
+
const cloneNode2 = lookupGetter(ElementPrototype, "cloneNode");
|
|
26169
|
+
const remove3 = lookupGetter(ElementPrototype, "remove");
|
|
26170
|
+
const getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
|
|
26171
|
+
const getChildNodes = lookupGetter(ElementPrototype, "childNodes");
|
|
26172
|
+
const getParentNode = lookupGetter(ElementPrototype, "parentNode");
|
|
26173
|
+
if (typeof HTMLTemplateElement === "function") {
|
|
26174
|
+
const template = document2.createElement("template");
|
|
26175
|
+
if (template.content && template.content.ownerDocument) {
|
|
26176
|
+
document2 = template.content.ownerDocument;
|
|
26177
|
+
}
|
|
26178
|
+
}
|
|
26179
|
+
let trustedTypesPolicy;
|
|
26180
|
+
let emptyHTML = "";
|
|
26181
|
+
const {
|
|
26182
|
+
implementation,
|
|
26183
|
+
createNodeIterator,
|
|
26184
|
+
createDocumentFragment,
|
|
26185
|
+
getElementsByTagName: getElementsByTagName2
|
|
26186
|
+
} = document2;
|
|
26187
|
+
const {
|
|
26188
|
+
importNode
|
|
26189
|
+
} = originalDocument;
|
|
26190
|
+
let hooks = _createHooksMap();
|
|
26191
|
+
DOMPurify2.isSupported = typeof entries === "function" && typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0;
|
|
26192
|
+
const {
|
|
26193
|
+
MUSTACHE_EXPR: MUSTACHE_EXPR2,
|
|
26194
|
+
ERB_EXPR: ERB_EXPR2,
|
|
26195
|
+
TMPLIT_EXPR: TMPLIT_EXPR2,
|
|
26196
|
+
DATA_ATTR: DATA_ATTR2,
|
|
26197
|
+
ARIA_ATTR: ARIA_ATTR2,
|
|
26198
|
+
IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA2,
|
|
26199
|
+
ATTR_WHITESPACE: ATTR_WHITESPACE2,
|
|
26200
|
+
CUSTOM_ELEMENT: CUSTOM_ELEMENT2
|
|
26201
|
+
} = EXPRESSIONS;
|
|
26202
|
+
let {
|
|
26203
|
+
IS_ALLOWED_URI: IS_ALLOWED_URI$1
|
|
26204
|
+
} = EXPRESSIONS;
|
|
26205
|
+
let ALLOWED_TAGS = null;
|
|
26206
|
+
const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text5]);
|
|
26207
|
+
let ALLOWED_ATTR = null;
|
|
26208
|
+
const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html5, ...svg, ...mathMl, ...xml3]);
|
|
26209
|
+
let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
|
|
26210
|
+
tagNameCheck: {
|
|
26211
|
+
writable: true,
|
|
26212
|
+
configurable: false,
|
|
26213
|
+
enumerable: true,
|
|
26214
|
+
value: null
|
|
26215
|
+
},
|
|
26216
|
+
attributeNameCheck: {
|
|
26217
|
+
writable: true,
|
|
26218
|
+
configurable: false,
|
|
26219
|
+
enumerable: true,
|
|
26220
|
+
value: null
|
|
26221
|
+
},
|
|
26222
|
+
allowCustomizedBuiltInElements: {
|
|
26223
|
+
writable: true,
|
|
26224
|
+
configurable: false,
|
|
26225
|
+
enumerable: true,
|
|
26226
|
+
value: false
|
|
26227
|
+
}
|
|
26228
|
+
}));
|
|
26229
|
+
let FORBID_TAGS = null;
|
|
26230
|
+
let FORBID_ATTR = null;
|
|
26231
|
+
const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {
|
|
26232
|
+
tagCheck: {
|
|
26233
|
+
writable: true,
|
|
26234
|
+
configurable: false,
|
|
26235
|
+
enumerable: true,
|
|
26236
|
+
value: null
|
|
26237
|
+
},
|
|
26238
|
+
attributeCheck: {
|
|
26239
|
+
writable: true,
|
|
26240
|
+
configurable: false,
|
|
26241
|
+
enumerable: true,
|
|
26242
|
+
value: null
|
|
26243
|
+
}
|
|
26244
|
+
}));
|
|
26245
|
+
let ALLOW_ARIA_ATTR = true;
|
|
26246
|
+
let ALLOW_DATA_ATTR = true;
|
|
26247
|
+
let ALLOW_UNKNOWN_PROTOCOLS = false;
|
|
26248
|
+
let ALLOW_SELF_CLOSE_IN_ATTR = true;
|
|
26249
|
+
let SAFE_FOR_TEMPLATES = false;
|
|
26250
|
+
let SAFE_FOR_XML = true;
|
|
26251
|
+
let WHOLE_DOCUMENT = false;
|
|
26252
|
+
let SET_CONFIG = false;
|
|
26253
|
+
let FORCE_BODY = false;
|
|
26254
|
+
let RETURN_DOM = false;
|
|
26255
|
+
let RETURN_DOM_FRAGMENT = false;
|
|
26256
|
+
let RETURN_TRUSTED_TYPE = false;
|
|
26257
|
+
let SANITIZE_DOM = true;
|
|
26258
|
+
let SANITIZE_NAMED_PROPS = false;
|
|
26259
|
+
const SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
|
|
26260
|
+
let KEEP_CONTENT = true;
|
|
26261
|
+
let IN_PLACE = false;
|
|
26262
|
+
let USE_PROFILES = {};
|
|
26263
|
+
let FORBID_CONTENTS = null;
|
|
26264
|
+
const DEFAULT_FORBID_CONTENTS = addToSet({}, ["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"]);
|
|
26265
|
+
let DATA_URI_TAGS = null;
|
|
26266
|
+
const DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
|
|
26267
|
+
let URI_SAFE_ATTRIBUTES = null;
|
|
26268
|
+
const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
|
|
26269
|
+
const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
|
|
26270
|
+
const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
|
|
26271
|
+
const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
|
|
26272
|
+
let NAMESPACE = HTML_NAMESPACE;
|
|
26273
|
+
let IS_EMPTY_INPUT = false;
|
|
26274
|
+
let ALLOWED_NAMESPACES = null;
|
|
26275
|
+
const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
|
|
26276
|
+
let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
|
|
26277
|
+
let HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]);
|
|
26278
|
+
const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]);
|
|
26279
|
+
let PARSER_MEDIA_TYPE = null;
|
|
26280
|
+
const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
|
|
26281
|
+
const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
|
|
26282
|
+
let transformCaseFunc = null;
|
|
26283
|
+
let CONFIG = null;
|
|
26284
|
+
const formElement = document2.createElement("form");
|
|
26285
|
+
const isRegexOrFunction = function isRegexOrFunction2(testValue) {
|
|
26286
|
+
return testValue instanceof RegExp || testValue instanceof Function;
|
|
26287
|
+
};
|
|
26288
|
+
const _parseConfig = function _parseConfig2() {
|
|
26289
|
+
let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
26290
|
+
if (CONFIG && CONFIG === cfg) {
|
|
26291
|
+
return;
|
|
26292
|
+
}
|
|
26293
|
+
if (!cfg || typeof cfg !== "object") {
|
|
26294
|
+
cfg = {};
|
|
26295
|
+
}
|
|
26296
|
+
cfg = clone3(cfg);
|
|
26297
|
+
PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
|
|
26298
|
+
SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
|
|
26299
|
+
transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
|
|
26300
|
+
ALLOWED_TAGS = objectHasOwnProperty(cfg, "ALLOWED_TAGS") && arrayIsArray(cfg.ALLOWED_TAGS) ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
|
|
26301
|
+
ALLOWED_ATTR = objectHasOwnProperty(cfg, "ALLOWED_ATTR") && arrayIsArray(cfg.ALLOWED_ATTR) ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
|
|
26302
|
+
ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, "ALLOWED_NAMESPACES") && arrayIsArray(cfg.ALLOWED_NAMESPACES) ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
|
|
26303
|
+
URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") && arrayIsArray(cfg.ADD_URI_SAFE_ATTR) ? addToSet(clone3(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
|
|
26304
|
+
DATA_URI_TAGS = objectHasOwnProperty(cfg, "ADD_DATA_URI_TAGS") && arrayIsArray(cfg.ADD_DATA_URI_TAGS) ? addToSet(clone3(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
|
|
26305
|
+
FORBID_CONTENTS = objectHasOwnProperty(cfg, "FORBID_CONTENTS") && arrayIsArray(cfg.FORBID_CONTENTS) ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
|
|
26306
|
+
FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") && arrayIsArray(cfg.FORBID_TAGS) ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone3({});
|
|
26307
|
+
FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") && arrayIsArray(cfg.FORBID_ATTR) ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone3({});
|
|
26308
|
+
USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === "object" ? clone3(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;
|
|
26309
|
+
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
|
|
26310
|
+
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
|
|
26311
|
+
ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
|
|
26312
|
+
ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;
|
|
26313
|
+
SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
|
|
26314
|
+
SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;
|
|
26315
|
+
WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
|
|
26316
|
+
RETURN_DOM = cfg.RETURN_DOM || false;
|
|
26317
|
+
RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
|
|
26318
|
+
RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
|
|
26319
|
+
FORCE_BODY = cfg.FORCE_BODY || false;
|
|
26320
|
+
SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
|
|
26321
|
+
SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;
|
|
26322
|
+
KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
|
|
26323
|
+
IN_PLACE = cfg.IN_PLACE || false;
|
|
26324
|
+
IS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI;
|
|
26325
|
+
NAMESPACE = typeof cfg.NAMESPACE === "string" ? cfg.NAMESPACE : HTML_NAMESPACE;
|
|
26326
|
+
MATHML_TEXT_INTEGRATION_POINTS = objectHasOwnProperty(cfg, "MATHML_TEXT_INTEGRATION_POINTS") && cfg.MATHML_TEXT_INTEGRATION_POINTS && typeof cfg.MATHML_TEXT_INTEGRATION_POINTS === "object" ? clone3(cfg.MATHML_TEXT_INTEGRATION_POINTS) : addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
|
|
26327
|
+
HTML_INTEGRATION_POINTS = objectHasOwnProperty(cfg, "HTML_INTEGRATION_POINTS") && cfg.HTML_INTEGRATION_POINTS && typeof cfg.HTML_INTEGRATION_POINTS === "object" ? clone3(cfg.HTML_INTEGRATION_POINTS) : addToSet({}, ["annotation-xml"]);
|
|
26328
|
+
const customElementHandling = objectHasOwnProperty(cfg, "CUSTOM_ELEMENT_HANDLING") && cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING === "object" ? clone3(cfg.CUSTOM_ELEMENT_HANDLING) : create(null);
|
|
26329
|
+
CUSTOM_ELEMENT_HANDLING = create(null);
|
|
26330
|
+
if (objectHasOwnProperty(customElementHandling, "tagNameCheck") && isRegexOrFunction(customElementHandling.tagNameCheck)) {
|
|
26331
|
+
CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;
|
|
26332
|
+
}
|
|
26333
|
+
if (objectHasOwnProperty(customElementHandling, "attributeNameCheck") && isRegexOrFunction(customElementHandling.attributeNameCheck)) {
|
|
26334
|
+
CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;
|
|
26335
|
+
}
|
|
26336
|
+
if (objectHasOwnProperty(customElementHandling, "allowCustomizedBuiltInElements") && typeof customElementHandling.allowCustomizedBuiltInElements === "boolean") {
|
|
26337
|
+
CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;
|
|
26338
|
+
}
|
|
26339
|
+
if (SAFE_FOR_TEMPLATES) {
|
|
26340
|
+
ALLOW_DATA_ATTR = false;
|
|
26341
|
+
}
|
|
26342
|
+
if (RETURN_DOM_FRAGMENT) {
|
|
26343
|
+
RETURN_DOM = true;
|
|
26344
|
+
}
|
|
26345
|
+
if (USE_PROFILES) {
|
|
26346
|
+
ALLOWED_TAGS = addToSet({}, text5);
|
|
26347
|
+
ALLOWED_ATTR = create(null);
|
|
26348
|
+
if (USE_PROFILES.html === true) {
|
|
26349
|
+
addToSet(ALLOWED_TAGS, html$1);
|
|
26350
|
+
addToSet(ALLOWED_ATTR, html5);
|
|
26351
|
+
}
|
|
26352
|
+
if (USE_PROFILES.svg === true) {
|
|
26353
|
+
addToSet(ALLOWED_TAGS, svg$1);
|
|
26354
|
+
addToSet(ALLOWED_ATTR, svg);
|
|
26355
|
+
addToSet(ALLOWED_ATTR, xml3);
|
|
26356
|
+
}
|
|
26357
|
+
if (USE_PROFILES.svgFilters === true) {
|
|
26358
|
+
addToSet(ALLOWED_TAGS, svgFilters);
|
|
26359
|
+
addToSet(ALLOWED_ATTR, svg);
|
|
26360
|
+
addToSet(ALLOWED_ATTR, xml3);
|
|
26361
|
+
}
|
|
26362
|
+
if (USE_PROFILES.mathMl === true) {
|
|
26363
|
+
addToSet(ALLOWED_TAGS, mathMl$1);
|
|
26364
|
+
addToSet(ALLOWED_ATTR, mathMl);
|
|
26365
|
+
addToSet(ALLOWED_ATTR, xml3);
|
|
26366
|
+
}
|
|
26367
|
+
}
|
|
26368
|
+
EXTRA_ELEMENT_HANDLING.tagCheck = null;
|
|
26369
|
+
EXTRA_ELEMENT_HANDLING.attributeCheck = null;
|
|
26370
|
+
if (objectHasOwnProperty(cfg, "ADD_TAGS")) {
|
|
26371
|
+
if (typeof cfg.ADD_TAGS === "function") {
|
|
26372
|
+
EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
|
|
26373
|
+
} else if (arrayIsArray(cfg.ADD_TAGS)) {
|
|
26374
|
+
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
|
|
26375
|
+
ALLOWED_TAGS = clone3(ALLOWED_TAGS);
|
|
26376
|
+
}
|
|
26377
|
+
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
|
|
26378
|
+
}
|
|
26379
|
+
}
|
|
26380
|
+
if (objectHasOwnProperty(cfg, "ADD_ATTR")) {
|
|
26381
|
+
if (typeof cfg.ADD_ATTR === "function") {
|
|
26382
|
+
EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
|
|
26383
|
+
} else if (arrayIsArray(cfg.ADD_ATTR)) {
|
|
26384
|
+
if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
|
|
26385
|
+
ALLOWED_ATTR = clone3(ALLOWED_ATTR);
|
|
26386
|
+
}
|
|
26387
|
+
addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
|
|
26388
|
+
}
|
|
26389
|
+
}
|
|
26390
|
+
if (objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") && arrayIsArray(cfg.ADD_URI_SAFE_ATTR)) {
|
|
26391
|
+
addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
|
|
26392
|
+
}
|
|
26393
|
+
if (objectHasOwnProperty(cfg, "FORBID_CONTENTS") && arrayIsArray(cfg.FORBID_CONTENTS)) {
|
|
26394
|
+
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
|
|
26395
|
+
FORBID_CONTENTS = clone3(FORBID_CONTENTS);
|
|
26396
|
+
}
|
|
26397
|
+
addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
|
|
26398
|
+
}
|
|
26399
|
+
if (objectHasOwnProperty(cfg, "ADD_FORBID_CONTENTS") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {
|
|
26400
|
+
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
|
|
26401
|
+
FORBID_CONTENTS = clone3(FORBID_CONTENTS);
|
|
26402
|
+
}
|
|
26403
|
+
addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
|
|
26404
|
+
}
|
|
26405
|
+
if (KEEP_CONTENT) {
|
|
26406
|
+
ALLOWED_TAGS["#text"] = true;
|
|
26407
|
+
}
|
|
26408
|
+
if (WHOLE_DOCUMENT) {
|
|
26409
|
+
addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
|
|
26410
|
+
}
|
|
26411
|
+
if (ALLOWED_TAGS.table) {
|
|
26412
|
+
addToSet(ALLOWED_TAGS, ["tbody"]);
|
|
26413
|
+
delete FORBID_TAGS.tbody;
|
|
26414
|
+
}
|
|
26415
|
+
if (cfg.TRUSTED_TYPES_POLICY) {
|
|
26416
|
+
if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") {
|
|
26417
|
+
throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
|
|
26418
|
+
}
|
|
26419
|
+
if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") {
|
|
26420
|
+
throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
|
|
26421
|
+
}
|
|
26422
|
+
trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
|
|
26423
|
+
emptyHTML = trustedTypesPolicy.createHTML("");
|
|
26424
|
+
} else {
|
|
26425
|
+
if (trustedTypesPolicy === void 0) {
|
|
26426
|
+
trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
|
|
26427
|
+
}
|
|
26428
|
+
if (trustedTypesPolicy !== null && typeof emptyHTML === "string") {
|
|
26429
|
+
emptyHTML = trustedTypesPolicy.createHTML("");
|
|
26430
|
+
}
|
|
26431
|
+
}
|
|
26432
|
+
if (freeze) {
|
|
26433
|
+
freeze(cfg);
|
|
26434
|
+
}
|
|
26435
|
+
CONFIG = cfg;
|
|
26436
|
+
};
|
|
26437
|
+
const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
|
|
26438
|
+
const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
|
|
26439
|
+
const _checkValidNamespace = function _checkValidNamespace2(element) {
|
|
26440
|
+
let parent3 = getParentNode(element);
|
|
26441
|
+
if (!parent3 || !parent3.tagName) {
|
|
26442
|
+
parent3 = {
|
|
26443
|
+
namespaceURI: NAMESPACE,
|
|
26444
|
+
tagName: "template"
|
|
26445
|
+
};
|
|
26446
|
+
}
|
|
26447
|
+
const tagName = stringToLowerCase(element.tagName);
|
|
26448
|
+
const parentTagName = stringToLowerCase(parent3.tagName);
|
|
26449
|
+
if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
|
|
26450
|
+
return false;
|
|
26451
|
+
}
|
|
26452
|
+
if (element.namespaceURI === SVG_NAMESPACE) {
|
|
26453
|
+
if (parent3.namespaceURI === HTML_NAMESPACE) {
|
|
26454
|
+
return tagName === "svg";
|
|
26455
|
+
}
|
|
26456
|
+
if (parent3.namespaceURI === MATHML_NAMESPACE) {
|
|
26457
|
+
return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
|
|
26458
|
+
}
|
|
26459
|
+
return Boolean(ALL_SVG_TAGS[tagName]);
|
|
26460
|
+
}
|
|
26461
|
+
if (element.namespaceURI === MATHML_NAMESPACE) {
|
|
26462
|
+
if (parent3.namespaceURI === HTML_NAMESPACE) {
|
|
26463
|
+
return tagName === "math";
|
|
26464
|
+
}
|
|
26465
|
+
if (parent3.namespaceURI === SVG_NAMESPACE) {
|
|
26466
|
+
return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
|
|
26467
|
+
}
|
|
26468
|
+
return Boolean(ALL_MATHML_TAGS[tagName]);
|
|
26469
|
+
}
|
|
26470
|
+
if (element.namespaceURI === HTML_NAMESPACE) {
|
|
26471
|
+
if (parent3.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
|
|
26472
|
+
return false;
|
|
26473
|
+
}
|
|
26474
|
+
if (parent3.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
|
|
26475
|
+
return false;
|
|
26476
|
+
}
|
|
26477
|
+
return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
|
|
26478
|
+
}
|
|
26479
|
+
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
|
|
26480
|
+
return true;
|
|
26481
|
+
}
|
|
26482
|
+
return false;
|
|
26483
|
+
};
|
|
26484
|
+
const _forceRemove = function _forceRemove2(node) {
|
|
26485
|
+
arrayPush(DOMPurify2.removed, {
|
|
26486
|
+
element: node
|
|
26487
|
+
});
|
|
26488
|
+
try {
|
|
26489
|
+
getParentNode(node).removeChild(node);
|
|
26490
|
+
} catch (_) {
|
|
26491
|
+
remove3(node);
|
|
26492
|
+
}
|
|
26493
|
+
};
|
|
26494
|
+
const _removeAttribute = function _removeAttribute2(name, element) {
|
|
26495
|
+
try {
|
|
26496
|
+
arrayPush(DOMPurify2.removed, {
|
|
26497
|
+
attribute: element.getAttributeNode(name),
|
|
26498
|
+
from: element
|
|
26499
|
+
});
|
|
26500
|
+
} catch (_) {
|
|
26501
|
+
arrayPush(DOMPurify2.removed, {
|
|
26502
|
+
attribute: null,
|
|
26503
|
+
from: element
|
|
26504
|
+
});
|
|
26505
|
+
}
|
|
26506
|
+
element.removeAttribute(name);
|
|
26507
|
+
if (name === "is") {
|
|
26508
|
+
if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
|
|
26509
|
+
try {
|
|
26510
|
+
_forceRemove(element);
|
|
26511
|
+
} catch (_) {
|
|
26512
|
+
}
|
|
26513
|
+
} else {
|
|
26514
|
+
try {
|
|
26515
|
+
element.setAttribute(name, "");
|
|
26516
|
+
} catch (_) {
|
|
26517
|
+
}
|
|
26518
|
+
}
|
|
26519
|
+
}
|
|
26520
|
+
};
|
|
26521
|
+
const _initDocument = function _initDocument2(dirty) {
|
|
26522
|
+
let doc2 = null;
|
|
26523
|
+
let leadingWhitespace = null;
|
|
26524
|
+
if (FORCE_BODY) {
|
|
26525
|
+
dirty = "<remove></remove>" + dirty;
|
|
26526
|
+
} else {
|
|
26527
|
+
const matches = stringMatch(dirty, /^[\r\n\t ]+/);
|
|
26528
|
+
leadingWhitespace = matches && matches[0];
|
|
26529
|
+
}
|
|
26530
|
+
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) {
|
|
26531
|
+
dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
|
|
26532
|
+
}
|
|
26533
|
+
const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
|
|
26534
|
+
if (NAMESPACE === HTML_NAMESPACE) {
|
|
26535
|
+
try {
|
|
26536
|
+
doc2 = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
|
|
26537
|
+
} catch (_) {
|
|
26538
|
+
}
|
|
26539
|
+
}
|
|
26540
|
+
if (!doc2 || !doc2.documentElement) {
|
|
26541
|
+
doc2 = implementation.createDocument(NAMESPACE, "template", null);
|
|
26542
|
+
try {
|
|
26543
|
+
doc2.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
|
|
26544
|
+
} catch (_) {
|
|
26545
|
+
}
|
|
26546
|
+
}
|
|
26547
|
+
const body = doc2.body || doc2.documentElement;
|
|
26548
|
+
if (dirty && leadingWhitespace) {
|
|
26549
|
+
body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
|
|
26550
|
+
}
|
|
26551
|
+
if (NAMESPACE === HTML_NAMESPACE) {
|
|
26552
|
+
return getElementsByTagName2.call(doc2, WHOLE_DOCUMENT ? "html" : "body")[0];
|
|
26553
|
+
}
|
|
26554
|
+
return WHOLE_DOCUMENT ? doc2.documentElement : body;
|
|
26555
|
+
};
|
|
26556
|
+
const _createNodeIterator = function _createNodeIterator2(root3) {
|
|
26557
|
+
return createNodeIterator.call(
|
|
26558
|
+
root3.ownerDocument || root3,
|
|
26559
|
+
root3,
|
|
26560
|
+
// eslint-disable-next-line no-bitwise
|
|
26561
|
+
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION,
|
|
26562
|
+
null
|
|
26563
|
+
);
|
|
26564
|
+
};
|
|
26565
|
+
const _isClobbered = function _isClobbered2(element) {
|
|
26566
|
+
return element instanceof HTMLFormElement && (typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function");
|
|
26567
|
+
};
|
|
26568
|
+
const _isNode = function _isNode2(value) {
|
|
26569
|
+
return typeof Node5 === "function" && value instanceof Node5;
|
|
26570
|
+
};
|
|
26571
|
+
function _executeHooks(hooks2, currentNode, data4) {
|
|
26572
|
+
arrayForEach(hooks2, (hook) => {
|
|
26573
|
+
hook.call(DOMPurify2, currentNode, data4, CONFIG);
|
|
26574
|
+
});
|
|
26575
|
+
}
|
|
26576
|
+
const _sanitizeElements = function _sanitizeElements2(currentNode) {
|
|
26577
|
+
let content = null;
|
|
26578
|
+
_executeHooks(hooks.beforeSanitizeElements, currentNode, null);
|
|
26579
|
+
if (_isClobbered(currentNode)) {
|
|
26580
|
+
_forceRemove(currentNode);
|
|
26581
|
+
return true;
|
|
26582
|
+
}
|
|
26583
|
+
const tagName = transformCaseFunc(currentNode.nodeName);
|
|
26584
|
+
_executeHooks(hooks.uponSanitizeElement, currentNode, {
|
|
26585
|
+
tagName,
|
|
26586
|
+
allowedTags: ALLOWED_TAGS
|
|
26587
|
+
});
|
|
26588
|
+
if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
|
|
26589
|
+
_forceRemove(currentNode);
|
|
26590
|
+
return true;
|
|
26591
|
+
}
|
|
26592
|
+
if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && tagName === "style" && _isNode(currentNode.firstElementChild)) {
|
|
26593
|
+
_forceRemove(currentNode);
|
|
26594
|
+
return true;
|
|
26595
|
+
}
|
|
26596
|
+
if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
|
|
26597
|
+
_forceRemove(currentNode);
|
|
26598
|
+
return true;
|
|
26599
|
+
}
|
|
26600
|
+
if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
|
|
26601
|
+
_forceRemove(currentNode);
|
|
26602
|
+
return true;
|
|
26603
|
+
}
|
|
26604
|
+
if (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {
|
|
26605
|
+
if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
|
|
26606
|
+
if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
|
|
26607
|
+
return false;
|
|
26608
|
+
}
|
|
26609
|
+
if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
|
|
26610
|
+
return false;
|
|
26611
|
+
}
|
|
26612
|
+
}
|
|
26613
|
+
if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
|
|
26614
|
+
const parentNode = getParentNode(currentNode) || currentNode.parentNode;
|
|
26615
|
+
const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
|
|
26616
|
+
if (childNodes && parentNode) {
|
|
26617
|
+
const childCount = childNodes.length;
|
|
26618
|
+
for (let i = childCount - 1; i >= 0; --i) {
|
|
26619
|
+
const childClone = cloneNode2(childNodes[i], true);
|
|
26620
|
+
parentNode.insertBefore(childClone, getNextSibling(currentNode));
|
|
26621
|
+
}
|
|
26622
|
+
}
|
|
26623
|
+
}
|
|
26624
|
+
_forceRemove(currentNode);
|
|
26625
|
+
return true;
|
|
26626
|
+
}
|
|
26627
|
+
if (currentNode instanceof Element2 && !_checkValidNamespace(currentNode)) {
|
|
26628
|
+
_forceRemove(currentNode);
|
|
26629
|
+
return true;
|
|
26630
|
+
}
|
|
26631
|
+
if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
|
|
26632
|
+
_forceRemove(currentNode);
|
|
26633
|
+
return true;
|
|
26634
|
+
}
|
|
26635
|
+
if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
|
|
26636
|
+
content = currentNode.textContent;
|
|
26637
|
+
arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
|
|
26638
|
+
content = stringReplace(content, expr, " ");
|
|
26639
|
+
});
|
|
26640
|
+
if (currentNode.textContent !== content) {
|
|
26641
|
+
arrayPush(DOMPurify2.removed, {
|
|
26642
|
+
element: currentNode.cloneNode()
|
|
26643
|
+
});
|
|
26644
|
+
currentNode.textContent = content;
|
|
26645
|
+
}
|
|
26646
|
+
}
|
|
26647
|
+
_executeHooks(hooks.afterSanitizeElements, currentNode, null);
|
|
26648
|
+
return false;
|
|
26649
|
+
};
|
|
26650
|
+
const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
|
|
26651
|
+
if (FORBID_ATTR[lcName]) {
|
|
26652
|
+
return false;
|
|
26653
|
+
}
|
|
26654
|
+
if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
|
|
26655
|
+
return false;
|
|
26656
|
+
}
|
|
26657
|
+
if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR2, lcName)) ;
|
|
26658
|
+
else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR2, lcName)) ;
|
|
26659
|
+
else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ;
|
|
26660
|
+
else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
|
|
26661
|
+
if (
|
|
26662
|
+
// First condition does a very basic check if a) it's basically a valid custom element tagname AND
|
|
26663
|
+
// b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
|
|
26664
|
+
// and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
|
|
26665
|
+
_isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) || // Alternative, second condition checks if it's an `is`-attribute, AND
|
|
26666
|
+
// the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
|
|
26667
|
+
lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))
|
|
26668
|
+
) ;
|
|
26669
|
+
else {
|
|
26670
|
+
return false;
|
|
26671
|
+
}
|
|
26672
|
+
} else if (URI_SAFE_ATTRIBUTES[lcName]) ;
|
|
26673
|
+
else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE2, ""))) ;
|
|
26674
|
+
else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) ;
|
|
26675
|
+
else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA2, stringReplace(value, ATTR_WHITESPACE2, ""))) ;
|
|
26676
|
+
else if (value) {
|
|
26677
|
+
return false;
|
|
26678
|
+
} else ;
|
|
26679
|
+
return true;
|
|
26680
|
+
};
|
|
26681
|
+
const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, ["annotation-xml", "color-profile", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "missing-glyph"]);
|
|
26682
|
+
const _isBasicCustomElement = function _isBasicCustomElement2(tagName) {
|
|
26683
|
+
return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT2, tagName);
|
|
26684
|
+
};
|
|
26685
|
+
const _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
|
|
26686
|
+
_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
|
|
26687
|
+
const {
|
|
26688
|
+
attributes: attributes2
|
|
26689
|
+
} = currentNode;
|
|
26690
|
+
if (!attributes2 || _isClobbered(currentNode)) {
|
|
26691
|
+
return;
|
|
26692
|
+
}
|
|
26693
|
+
const hookEvent = {
|
|
26694
|
+
attrName: "",
|
|
26695
|
+
attrValue: "",
|
|
26696
|
+
keepAttr: true,
|
|
26697
|
+
allowedAttributes: ALLOWED_ATTR,
|
|
26698
|
+
forceKeepAttr: void 0
|
|
26699
|
+
};
|
|
26700
|
+
let l = attributes2.length;
|
|
26701
|
+
while (l--) {
|
|
26702
|
+
const attr3 = attributes2[l];
|
|
26703
|
+
const {
|
|
26704
|
+
name,
|
|
26705
|
+
namespaceURI,
|
|
26706
|
+
value: attrValue
|
|
26707
|
+
} = attr3;
|
|
26708
|
+
const lcName = transformCaseFunc(name);
|
|
26709
|
+
const initValue = attrValue;
|
|
26710
|
+
let value = name === "value" ? initValue : stringTrim(initValue);
|
|
26711
|
+
hookEvent.attrName = lcName;
|
|
26712
|
+
hookEvent.attrValue = value;
|
|
26713
|
+
hookEvent.keepAttr = true;
|
|
26714
|
+
hookEvent.forceKeepAttr = void 0;
|
|
26715
|
+
_executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
|
|
26716
|
+
value = hookEvent.attrValue;
|
|
26717
|
+
if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name") && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {
|
|
26718
|
+
_removeAttribute(name, currentNode);
|
|
26719
|
+
value = SANITIZE_NAMED_PROPS_PREFIX + value;
|
|
26720
|
+
}
|
|
26721
|
+
if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
|
|
26722
|
+
_removeAttribute(name, currentNode);
|
|
26723
|
+
continue;
|
|
26724
|
+
}
|
|
26725
|
+
if (lcName === "attributename" && stringMatch(value, "href")) {
|
|
26726
|
+
_removeAttribute(name, currentNode);
|
|
26727
|
+
continue;
|
|
26728
|
+
}
|
|
26729
|
+
if (hookEvent.forceKeepAttr) {
|
|
26730
|
+
continue;
|
|
26731
|
+
}
|
|
26732
|
+
if (!hookEvent.keepAttr) {
|
|
26733
|
+
_removeAttribute(name, currentNode);
|
|
26734
|
+
continue;
|
|
26735
|
+
}
|
|
26736
|
+
if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
|
|
26737
|
+
_removeAttribute(name, currentNode);
|
|
26738
|
+
continue;
|
|
26739
|
+
}
|
|
26740
|
+
if (SAFE_FOR_TEMPLATES) {
|
|
26741
|
+
arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
|
|
26742
|
+
value = stringReplace(value, expr, " ");
|
|
26743
|
+
});
|
|
26744
|
+
}
|
|
26745
|
+
const lcTag = transformCaseFunc(currentNode.nodeName);
|
|
26746
|
+
if (!_isValidAttribute(lcTag, lcName, value)) {
|
|
26747
|
+
_removeAttribute(name, currentNode);
|
|
26748
|
+
continue;
|
|
26749
|
+
}
|
|
26750
|
+
if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") {
|
|
26751
|
+
if (namespaceURI) ;
|
|
26752
|
+
else {
|
|
26753
|
+
switch (trustedTypes.getAttributeType(lcTag, lcName)) {
|
|
26754
|
+
case "TrustedHTML": {
|
|
26755
|
+
value = trustedTypesPolicy.createHTML(value);
|
|
26756
|
+
break;
|
|
26757
|
+
}
|
|
26758
|
+
case "TrustedScriptURL": {
|
|
26759
|
+
value = trustedTypesPolicy.createScriptURL(value);
|
|
26760
|
+
break;
|
|
26761
|
+
}
|
|
26762
|
+
}
|
|
26763
|
+
}
|
|
26764
|
+
}
|
|
26765
|
+
if (value !== initValue) {
|
|
26766
|
+
try {
|
|
26767
|
+
if (namespaceURI) {
|
|
26768
|
+
currentNode.setAttributeNS(namespaceURI, name, value);
|
|
26769
|
+
} else {
|
|
26770
|
+
currentNode.setAttribute(name, value);
|
|
26771
|
+
}
|
|
26772
|
+
if (_isClobbered(currentNode)) {
|
|
26773
|
+
_forceRemove(currentNode);
|
|
26774
|
+
} else {
|
|
26775
|
+
arrayPop(DOMPurify2.removed);
|
|
26776
|
+
}
|
|
26777
|
+
} catch (_) {
|
|
26778
|
+
_removeAttribute(name, currentNode);
|
|
26779
|
+
}
|
|
26780
|
+
}
|
|
26781
|
+
}
|
|
26782
|
+
_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
|
|
26783
|
+
};
|
|
26784
|
+
const _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {
|
|
26785
|
+
let shadowNode = null;
|
|
26786
|
+
const shadowIterator = _createNodeIterator(fragment);
|
|
26787
|
+
_executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
|
|
26788
|
+
while (shadowNode = shadowIterator.nextNode()) {
|
|
26789
|
+
_executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
|
|
26790
|
+
_sanitizeElements(shadowNode);
|
|
26791
|
+
_sanitizeAttributes(shadowNode);
|
|
26792
|
+
if (shadowNode.content instanceof DocumentFragment) {
|
|
26793
|
+
_sanitizeShadowDOM2(shadowNode.content);
|
|
26794
|
+
}
|
|
26795
|
+
}
|
|
26796
|
+
_executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
|
|
26797
|
+
};
|
|
26798
|
+
DOMPurify2.sanitize = function(dirty) {
|
|
26799
|
+
let cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
26800
|
+
let body = null;
|
|
26801
|
+
let importedNode = null;
|
|
26802
|
+
let currentNode = null;
|
|
26803
|
+
let returnNode = null;
|
|
26804
|
+
IS_EMPTY_INPUT = !dirty;
|
|
26805
|
+
if (IS_EMPTY_INPUT) {
|
|
26806
|
+
dirty = "<!-->";
|
|
26807
|
+
}
|
|
26808
|
+
if (typeof dirty !== "string" && !_isNode(dirty)) {
|
|
26809
|
+
dirty = stringifyValue(dirty);
|
|
26810
|
+
if (typeof dirty !== "string") {
|
|
26811
|
+
throw typeErrorCreate("dirty is not a string, aborting");
|
|
26812
|
+
}
|
|
26813
|
+
}
|
|
26814
|
+
if (!DOMPurify2.isSupported) {
|
|
26815
|
+
return dirty;
|
|
26816
|
+
}
|
|
26817
|
+
if (!SET_CONFIG) {
|
|
26818
|
+
_parseConfig(cfg);
|
|
26819
|
+
}
|
|
26820
|
+
DOMPurify2.removed = [];
|
|
26821
|
+
if (typeof dirty === "string") {
|
|
26822
|
+
IN_PLACE = false;
|
|
26823
|
+
}
|
|
26824
|
+
if (IN_PLACE) {
|
|
26825
|
+
const nn = dirty.nodeName;
|
|
26826
|
+
if (typeof nn === "string") {
|
|
26827
|
+
const tagName = transformCaseFunc(nn);
|
|
26828
|
+
if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
|
|
26829
|
+
throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
|
|
26830
|
+
}
|
|
26831
|
+
}
|
|
26832
|
+
} else if (dirty instanceof Node5) {
|
|
26833
|
+
body = _initDocument("<!---->");
|
|
26834
|
+
importedNode = body.ownerDocument.importNode(dirty, true);
|
|
26835
|
+
if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") {
|
|
26836
|
+
body = importedNode;
|
|
26837
|
+
} else if (importedNode.nodeName === "HTML") {
|
|
26838
|
+
body = importedNode;
|
|
26839
|
+
} else {
|
|
26840
|
+
body.appendChild(importedNode);
|
|
26841
|
+
}
|
|
26842
|
+
} else {
|
|
26843
|
+
if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
|
|
26844
|
+
dirty.indexOf("<") === -1) {
|
|
26845
|
+
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
|
|
26846
|
+
}
|
|
26847
|
+
body = _initDocument(dirty);
|
|
26848
|
+
if (!body) {
|
|
26849
|
+
return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
|
|
26850
|
+
}
|
|
26851
|
+
}
|
|
26852
|
+
if (body && FORCE_BODY) {
|
|
26853
|
+
_forceRemove(body.firstChild);
|
|
26854
|
+
}
|
|
26855
|
+
const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
|
|
26856
|
+
while (currentNode = nodeIterator.nextNode()) {
|
|
26857
|
+
_sanitizeElements(currentNode);
|
|
26858
|
+
_sanitizeAttributes(currentNode);
|
|
26859
|
+
if (currentNode.content instanceof DocumentFragment) {
|
|
26860
|
+
_sanitizeShadowDOM2(currentNode.content);
|
|
26861
|
+
}
|
|
26862
|
+
}
|
|
26863
|
+
if (IN_PLACE) {
|
|
26864
|
+
return dirty;
|
|
26865
|
+
}
|
|
26866
|
+
if (RETURN_DOM) {
|
|
26867
|
+
if (SAFE_FOR_TEMPLATES) {
|
|
26868
|
+
body.normalize();
|
|
26869
|
+
let html6 = body.innerHTML;
|
|
26870
|
+
arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
|
|
26871
|
+
html6 = stringReplace(html6, expr, " ");
|
|
26872
|
+
});
|
|
26873
|
+
body.innerHTML = html6;
|
|
26874
|
+
}
|
|
26875
|
+
if (RETURN_DOM_FRAGMENT) {
|
|
26876
|
+
returnNode = createDocumentFragment.call(body.ownerDocument);
|
|
26877
|
+
while (body.firstChild) {
|
|
26878
|
+
returnNode.appendChild(body.firstChild);
|
|
26879
|
+
}
|
|
26880
|
+
} else {
|
|
26881
|
+
returnNode = body;
|
|
26882
|
+
}
|
|
26883
|
+
if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
|
|
26884
|
+
returnNode = importNode.call(originalDocument, returnNode, true);
|
|
26885
|
+
}
|
|
26886
|
+
return returnNode;
|
|
26887
|
+
}
|
|
26888
|
+
let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
|
|
26889
|
+
if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
|
|
26890
|
+
serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
|
|
26891
|
+
}
|
|
26892
|
+
if (SAFE_FOR_TEMPLATES) {
|
|
26893
|
+
arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
|
|
26894
|
+
serializedHTML = stringReplace(serializedHTML, expr, " ");
|
|
26895
|
+
});
|
|
26896
|
+
}
|
|
26897
|
+
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
|
|
26898
|
+
};
|
|
26899
|
+
DOMPurify2.setConfig = function() {
|
|
26900
|
+
let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
26901
|
+
_parseConfig(cfg);
|
|
26902
|
+
SET_CONFIG = true;
|
|
26903
|
+
};
|
|
26904
|
+
DOMPurify2.clearConfig = function() {
|
|
26905
|
+
CONFIG = null;
|
|
26906
|
+
SET_CONFIG = false;
|
|
26907
|
+
};
|
|
26908
|
+
DOMPurify2.isValidAttribute = function(tag, attr3, value) {
|
|
26909
|
+
if (!CONFIG) {
|
|
26910
|
+
_parseConfig({});
|
|
26911
|
+
}
|
|
26912
|
+
const lcTag = transformCaseFunc(tag);
|
|
26913
|
+
const lcName = transformCaseFunc(attr3);
|
|
26914
|
+
return _isValidAttribute(lcTag, lcName, value);
|
|
26915
|
+
};
|
|
26916
|
+
DOMPurify2.addHook = function(entryPoint, hookFunction) {
|
|
26917
|
+
if (typeof hookFunction !== "function") {
|
|
26918
|
+
return;
|
|
26919
|
+
}
|
|
26920
|
+
arrayPush(hooks[entryPoint], hookFunction);
|
|
26921
|
+
};
|
|
26922
|
+
DOMPurify2.removeHook = function(entryPoint, hookFunction) {
|
|
26923
|
+
if (hookFunction !== void 0) {
|
|
26924
|
+
const index3 = arrayLastIndexOf(hooks[entryPoint], hookFunction);
|
|
26925
|
+
return index3 === -1 ? void 0 : arraySplice(hooks[entryPoint], index3, 1)[0];
|
|
26926
|
+
}
|
|
26927
|
+
return arrayPop(hooks[entryPoint]);
|
|
26928
|
+
};
|
|
26929
|
+
DOMPurify2.removeHooks = function(entryPoint) {
|
|
26930
|
+
hooks[entryPoint] = [];
|
|
26931
|
+
};
|
|
26932
|
+
DOMPurify2.removeAllHooks = function() {
|
|
26933
|
+
hooks = _createHooksMap();
|
|
26934
|
+
};
|
|
26935
|
+
return DOMPurify2;
|
|
26936
|
+
}
|
|
26937
|
+
var purify = createDOMPurify();
|
|
26938
|
+
module.exports = purify;
|
|
26939
|
+
}
|
|
26940
|
+
});
|
|
26941
|
+
|
|
25856
26942
|
// node_modules/markdown-it-for-inline/dist/index.cjs.js
|
|
25857
26943
|
var require_index_cjs = __commonJS({
|
|
25858
26944
|
"node_modules/markdown-it-for-inline/dist/index.cjs.js"(exports, module) {
|
|
@@ -96393,6 +97479,18 @@
|
|
|
96393
97479
|
reqId: msg.reqId
|
|
96394
97480
|
};
|
|
96395
97481
|
}
|
|
97482
|
+
if (msg.type === "response" && isFinalMessage(msg)) {
|
|
97483
|
+
const lastRequestWithoutResIdIndex = (0, import_lodash.findLastIndex)(messages, (m) => m.type === "response" && m?.ctx?.resId === msg?.ctx?.resId);
|
|
97484
|
+
if (lastRequestWithoutResIdIndex > -1) {
|
|
97485
|
+
messages[lastRequestWithoutResIdIndex] = {
|
|
97486
|
+
...messages[lastRequestWithoutResIdIndex],
|
|
97487
|
+
ctx: {
|
|
97488
|
+
...messages[lastRequestWithoutResIdIndex].ctx,
|
|
97489
|
+
tsFinal: msg?.ctx?.tsFinal
|
|
97490
|
+
}
|
|
97491
|
+
};
|
|
97492
|
+
}
|
|
97493
|
+
}
|
|
96396
97494
|
if (isNew) {
|
|
96397
97495
|
messages.push({ ...msg });
|
|
96398
97496
|
return {
|
|
@@ -96526,7 +97624,6 @@
|
|
|
96526
97624
|
}
|
|
96527
97625
|
}
|
|
96528
97626
|
const rawHtml = bubbleToCopy.outerHTML;
|
|
96529
|
-
console.info("CSS for copy:", rawHtml);
|
|
96530
97627
|
let css3 = document.querySelector("style").innerHTML;
|
|
96531
97628
|
css3 += `
|
|
96532
97629
|
table {
|
|
@@ -97477,6 +98574,8 @@
|
|
|
97477
98574
|
const requestBubbleLabelEnabled = uiState7?.textChat?.options?.bubbles?.request?.label?.enabled === true;
|
|
97478
98575
|
const requestBubbleTimestampFontSize = getNumPropVal(textChatOptions?.bubbles?.request?.timestamp?.fontSize, 12);
|
|
97479
98576
|
const requestBubbleTimestampPaddingLeft = getNumPropVal(textChatOptions?.bubbles?.request?.timestamp?.padding?.left, 5);
|
|
98577
|
+
const requestBubbleTimestampColor = textChatOptions?.bubbles?.request?.timestamp?.color || `#999999`;
|
|
98578
|
+
const requestBubbleTimestampEnabled = uiState7?.textChat?.options?.bubbles?.request?.timestamp?.enabled === true;
|
|
97480
98579
|
const responseBubbleLabelTopPadding = getNumPropVal(textChatOptions?.bubbles?.response?.label?.padding?.top, 0);
|
|
97481
98580
|
const responseBubbleLabelRightPadding = getNumPropVal(textChatOptions?.bubbles?.response?.label?.padding?.right, 0);
|
|
97482
98581
|
const responseBubbleLabelBottomPadding = getNumPropVal(textChatOptions?.bubbles?.response?.label?.padding?.bottom, 4);
|
|
@@ -97486,6 +98585,8 @@
|
|
|
97486
98585
|
const responseBubbleLabelEnabled = uiState7?.textChat?.options?.bubbles?.response?.label?.enabled === true;
|
|
97487
98586
|
const responseBubbleTimestampFontSize = getNumPropVal(textChatOptions?.bubbles?.response?.timestamp?.fontSize, 12);
|
|
97488
98587
|
const responseBubbleTimestampPaddingLeft = getNumPropVal(textChatOptions?.bubbles?.response?.timestamp?.padding?.left, 5);
|
|
98588
|
+
const responseBubbleTimestampColor = textChatOptions?.bubbles?.response?.timestamp?.color || `#999999`;
|
|
98589
|
+
const responseBubbleTimestampEnabled = uiState7?.textChat?.options?.bubbles?.response?.timestamp?.enabled === true;
|
|
97489
98590
|
const btnAlignment = textChatOptions?.buttons?.alignment?.default || "right";
|
|
97490
98591
|
const btnAlignmentFullscreen = textChatOptions?.buttons?.alignment?.fullScreen || "right";
|
|
97491
98592
|
const textChatAppearAnimationMs = uiState7.textChat.defaults.appearAnimationMs;
|
|
@@ -98537,6 +99638,8 @@
|
|
|
98537
99638
|
keyFrames += getStyleSheetMarker() + `.alan-btn__chat-request-timestamp-text {
|
|
98538
99639
|
padding-left: ${requestBubbleTimestampPaddingLeft}px;
|
|
98539
99640
|
font-size: ${requestBubbleTimestampFontSize}px;
|
|
99641
|
+
color: ${requestBubbleTimestampColor};
|
|
99642
|
+
display: ${requestBubbleTimestampEnabled ? "block" : "none"};
|
|
98540
99643
|
}`;
|
|
98541
99644
|
keyFrames += getStyleSheetMarker() + `.alan-btn_text-chat-full-screen .alan-btn__chat-request-label {
|
|
98542
99645
|
text-align: left;
|
|
@@ -98620,6 +99723,8 @@
|
|
|
98620
99723
|
keyFrames += getStyleSheetMarker() + `.alan-btn__chat-response-timestamp-text {
|
|
98621
99724
|
padding-left: ${responseBubbleTimestampPaddingLeft}px;
|
|
98622
99725
|
font-size: ${responseBubbleTimestampFontSize}px;
|
|
99726
|
+
color: ${responseBubbleTimestampColor};
|
|
99727
|
+
display: ${responseBubbleTimestampEnabled ? "block" : "none"};
|
|
98623
99728
|
}`;
|
|
98624
99729
|
keyFrames += getStyleSheetMarker() + `.alan-btn_text-chat-full-screen .alan-btn__chat-response-label {
|
|
98625
99730
|
text-align: left;
|
|
@@ -99852,6 +100957,154 @@
|
|
|
99852
100957
|
"\\exp"
|
|
99853
100958
|
];
|
|
99854
100959
|
|
|
100960
|
+
// alan_btn/src/textChat/sanitization.ts
|
|
100961
|
+
var DOMPurify = require_purify_cjs();
|
|
100962
|
+
function sanitizeHtml(html5) {
|
|
100963
|
+
if (!html5) return "";
|
|
100964
|
+
return DOMPurify.sanitize(html5);
|
|
100965
|
+
}
|
|
100966
|
+
function encodeHtmlEntity(text5) {
|
|
100967
|
+
if (!text5) return "";
|
|
100968
|
+
const div = document.createElement("div");
|
|
100969
|
+
div.textContent = text5;
|
|
100970
|
+
return div.innerHTML;
|
|
100971
|
+
}
|
|
100972
|
+
function encodeHtmlAttribute(text5) {
|
|
100973
|
+
if (!text5) return "";
|
|
100974
|
+
return text5.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">");
|
|
100975
|
+
}
|
|
100976
|
+
function encodeUrl(url, allowDataUri = true) {
|
|
100977
|
+
if (!url) return "";
|
|
100978
|
+
const trimmed = url.trim().toLowerCase();
|
|
100979
|
+
if (trimmed.startsWith("http://") || trimmed.startsWith("https://") || trimmed.startsWith("mailto:") || trimmed.startsWith("tel:")) {
|
|
100980
|
+
return encodeURI(url);
|
|
100981
|
+
}
|
|
100982
|
+
if (allowDataUri && trimmed.startsWith("data:image/")) {
|
|
100983
|
+
return url;
|
|
100984
|
+
}
|
|
100985
|
+
if (trimmed.startsWith("/") || trimmed.startsWith("#") || trimmed.startsWith(".")) {
|
|
100986
|
+
return encodeURI(url);
|
|
100987
|
+
}
|
|
100988
|
+
return "";
|
|
100989
|
+
}
|
|
100990
|
+
var CHAT_ALLOWED_TAGS = [
|
|
100991
|
+
"iframe",
|
|
100992
|
+
"details",
|
|
100993
|
+
"summary",
|
|
100994
|
+
"img",
|
|
100995
|
+
"a",
|
|
100996
|
+
"table",
|
|
100997
|
+
"thead",
|
|
100998
|
+
"tbody",
|
|
100999
|
+
"tr",
|
|
101000
|
+
"th",
|
|
101001
|
+
"td",
|
|
101002
|
+
"caption",
|
|
101003
|
+
"colgroup",
|
|
101004
|
+
"col",
|
|
101005
|
+
"code",
|
|
101006
|
+
"pre",
|
|
101007
|
+
"blockquote",
|
|
101008
|
+
"p",
|
|
101009
|
+
"br",
|
|
101010
|
+
"hr",
|
|
101011
|
+
"ul",
|
|
101012
|
+
"ol",
|
|
101013
|
+
"li",
|
|
101014
|
+
"dl",
|
|
101015
|
+
"dt",
|
|
101016
|
+
"dd",
|
|
101017
|
+
"h1",
|
|
101018
|
+
"h2",
|
|
101019
|
+
"h3",
|
|
101020
|
+
"h4",
|
|
101021
|
+
"h5",
|
|
101022
|
+
"h6",
|
|
101023
|
+
"strong",
|
|
101024
|
+
"em",
|
|
101025
|
+
"b",
|
|
101026
|
+
"i",
|
|
101027
|
+
"u",
|
|
101028
|
+
"s",
|
|
101029
|
+
"del",
|
|
101030
|
+
"ins",
|
|
101031
|
+
"mark",
|
|
101032
|
+
"span",
|
|
101033
|
+
"div",
|
|
101034
|
+
"section",
|
|
101035
|
+
"article",
|
|
101036
|
+
"header",
|
|
101037
|
+
"footer",
|
|
101038
|
+
"sup",
|
|
101039
|
+
"sub",
|
|
101040
|
+
"small",
|
|
101041
|
+
"abbr",
|
|
101042
|
+
"cite",
|
|
101043
|
+
"q",
|
|
101044
|
+
"figure",
|
|
101045
|
+
"figcaption"
|
|
101046
|
+
];
|
|
101047
|
+
var CHAT_ALLOWED_ATTR = [
|
|
101048
|
+
"href",
|
|
101049
|
+
"src",
|
|
101050
|
+
"alt",
|
|
101051
|
+
"title",
|
|
101052
|
+
"class",
|
|
101053
|
+
"id",
|
|
101054
|
+
"target",
|
|
101055
|
+
"rel",
|
|
101056
|
+
"loading",
|
|
101057
|
+
"decoding",
|
|
101058
|
+
"width",
|
|
101059
|
+
"height",
|
|
101060
|
+
"frameborder",
|
|
101061
|
+
"scrolling",
|
|
101062
|
+
"allowfullscreen",
|
|
101063
|
+
"allow",
|
|
101064
|
+
"sandbox",
|
|
101065
|
+
"referrerpolicy",
|
|
101066
|
+
"open",
|
|
101067
|
+
"colspan",
|
|
101068
|
+
"rowspan",
|
|
101069
|
+
"scope",
|
|
101070
|
+
"headers",
|
|
101071
|
+
"data-*"
|
|
101072
|
+
];
|
|
101073
|
+
var _chatHooksRegistered = false;
|
|
101074
|
+
function registerChatHooks() {
|
|
101075
|
+
if (_chatHooksRegistered) return;
|
|
101076
|
+
_chatHooksRegistered = true;
|
|
101077
|
+
DOMPurify.addHook("afterSanitizeAttributes", (node) => {
|
|
101078
|
+
if (node.tagName === "IFRAME") {
|
|
101079
|
+
if (!node.hasAttribute("sandbox")) {
|
|
101080
|
+
node.setAttribute("sandbox", "allow-scripts allow-same-origin allow-popups allow-downloads");
|
|
101081
|
+
} else {
|
|
101082
|
+
const existing = node.getAttribute("sandbox") || "";
|
|
101083
|
+
if (!existing.includes("allow-downloads")) {
|
|
101084
|
+
node.setAttribute("sandbox", (existing.trim() + " allow-downloads").trim());
|
|
101085
|
+
}
|
|
101086
|
+
}
|
|
101087
|
+
node.setAttribute("referrerpolicy", "no-referrer");
|
|
101088
|
+
}
|
|
101089
|
+
if (node.tagName === "A") {
|
|
101090
|
+
node.setAttribute("rel", "noopener noreferrer");
|
|
101091
|
+
const href = node.getAttribute("href") || "";
|
|
101092
|
+
if (/^javascript:/i.test(href.trim())) {
|
|
101093
|
+
node.removeAttribute("href");
|
|
101094
|
+
}
|
|
101095
|
+
}
|
|
101096
|
+
});
|
|
101097
|
+
}
|
|
101098
|
+
function sanitizeMarkdownHtml(html5) {
|
|
101099
|
+
if (!html5) return "";
|
|
101100
|
+
registerChatHooks();
|
|
101101
|
+
const cleanedHtml = html5.replace(/<iframe([^>]*)>[\s\S]*?<\/iframe>/gi, "<iframe$1></iframe>");
|
|
101102
|
+
return DOMPurify.sanitize(cleanedHtml, {
|
|
101103
|
+
ADD_TAGS: CHAT_ALLOWED_TAGS,
|
|
101104
|
+
ADD_ATTR: CHAT_ALLOWED_ATTR
|
|
101105
|
+
});
|
|
101106
|
+
}
|
|
101107
|
+
|
|
99855
101108
|
// alan_btn/src/textChat/alanMarkdown.ts
|
|
99856
101109
|
var iterator = require_index_cjs();
|
|
99857
101110
|
var markdownItScrollTable = require_markdown_it_scrolltable();
|
|
@@ -99870,15 +101123,15 @@
|
|
|
99870
101123
|
"YES": '<span class="alan-special-markdown-tag-hl-green">YES</span></div>',
|
|
99871
101124
|
"NO": '<span class="alan-special-markdown-tag-hl-red">NO</span></div>'
|
|
99872
101125
|
};
|
|
99873
|
-
function alanMarkdown(str = "") {
|
|
101126
|
+
function alanMarkdown(str = "", options = { html: true, breaks: true }) {
|
|
99874
101127
|
const source = str || "";
|
|
99875
101128
|
const sanitizedInput = sanitizeCustomTags(source);
|
|
99876
|
-
var md = require_index_cjs5()(
|
|
101129
|
+
var md = require_index_cjs5()(options).use(require_index_cjs6()).use(markdownItScrollTable).use(iterator, "url_new_win", "link_open", function(tokens, idx) {
|
|
99877
101130
|
tokens[idx].attrSet("target", "_blank");
|
|
99878
101131
|
});
|
|
99879
101132
|
const rendered = md.render(sanitizedInput);
|
|
99880
101133
|
const upgraded = wrapPotentialMathDelimiters(rendered);
|
|
99881
|
-
return
|
|
101134
|
+
return sanitizeMarkdownHtml(upgraded);
|
|
99882
101135
|
}
|
|
99883
101136
|
function sanitizeCustomTags(str) {
|
|
99884
101137
|
let result = str;
|
|
@@ -99888,38 +101141,6 @@
|
|
|
99888
101141
|
}
|
|
99889
101142
|
return result;
|
|
99890
101143
|
}
|
|
99891
|
-
function sanitize(str) {
|
|
99892
|
-
let tag = "";
|
|
99893
|
-
let result = "";
|
|
99894
|
-
let i = 0;
|
|
99895
|
-
while (i < str.length) {
|
|
99896
|
-
if (str[i] === "<") {
|
|
99897
|
-
if (str.substring(i, i + 4) === "<") {
|
|
99898
|
-
result += str[i];
|
|
99899
|
-
i++;
|
|
99900
|
-
continue;
|
|
99901
|
-
}
|
|
99902
|
-
tag = "";
|
|
99903
|
-
while (i < str.length) {
|
|
99904
|
-
tag += str[i];
|
|
99905
|
-
i++;
|
|
99906
|
-
if (str[i - 1] === ">" || i >= str.length) {
|
|
99907
|
-
break;
|
|
99908
|
-
}
|
|
99909
|
-
if (str[i] === " ") {
|
|
99910
|
-
tag += str[i];
|
|
99911
|
-
i++;
|
|
99912
|
-
break;
|
|
99913
|
-
}
|
|
99914
|
-
}
|
|
99915
|
-
result += tag;
|
|
99916
|
-
} else {
|
|
99917
|
-
result += str[i];
|
|
99918
|
-
i++;
|
|
99919
|
-
}
|
|
99920
|
-
}
|
|
99921
|
-
return result;
|
|
99922
|
-
}
|
|
99923
101144
|
|
|
99924
101145
|
// alan_btn/src/textChat/helpers/getLinkIcon.ts
|
|
99925
101146
|
function getLinkIcon(link) {
|
|
@@ -99950,9 +101171,12 @@
|
|
|
99950
101171
|
for (let i = 0; i < links?.length; i++) {
|
|
99951
101172
|
const curLink = links[i];
|
|
99952
101173
|
const target = getLinkTarget(curLink);
|
|
99953
|
-
|
|
101174
|
+
const sanitizedHref = encodeUrl(curLink.href);
|
|
101175
|
+
const sanitizedTitle = encodeHtmlEntity(curLink.title || curLink.href);
|
|
101176
|
+
const rel = target === "_blank" ? ' rel="noopener noreferrer"' : "";
|
|
101177
|
+
linksHtml += `<a class="alan-btn__chat-response-link" href="${sanitizedHref}" target="${target}"${rel}>
|
|
99954
101178
|
<span class="alan-btn__chat-response-link-icon-wrapper">${getLinkIcon(curLink)}</span>
|
|
99955
|
-
<span class="alan-btn__chat-response-link-title">${
|
|
101179
|
+
<span class="alan-btn__chat-response-link-title">${sanitizedTitle}</span>
|
|
99956
101180
|
</a>`;
|
|
99957
101181
|
}
|
|
99958
101182
|
if (links?.length) {
|
|
@@ -100983,10 +102207,10 @@ code.hljs {
|
|
|
100983
102207
|
function renderButtons(buttons) {
|
|
100984
102208
|
return `<div class="alan-btn__chat-buttons">
|
|
100985
102209
|
${buttons?.map((button) => {
|
|
100986
|
-
const btnLabel = button.label || "";
|
|
102210
|
+
const btnLabel = encodeHtmlAttribute(button.label || "");
|
|
100987
102211
|
let resultBtn = `<div class="alan-chat__chat-btn" data-alan-button-label="${btnLabel}"`;
|
|
100988
102212
|
if (button.sendText) {
|
|
100989
|
-
resultBtn += ` data-alan-button-send-text="${button.sendText}" `;
|
|
102213
|
+
resultBtn += ` data-alan-button-send-text="${encodeHtmlAttribute(button.sendText)}" `;
|
|
100990
102214
|
}
|
|
100991
102215
|
if (button.callProjectApi?.method) {
|
|
100992
102216
|
resultBtn += ` data-alan-button-call-project-api="${button.callProjectApi?.method}" `;
|
|
@@ -100997,7 +102221,7 @@ code.hljs {
|
|
|
100997
102221
|
if (button.setVisualState) {
|
|
100998
102222
|
resultBtn += ` data-alan-button-set-visual-state="${encodeValueForHtmlAttr(button.setVisualState)}" `;
|
|
100999
102223
|
}
|
|
101000
|
-
resultBtn += ` >${button.html || button.label}</div>`;
|
|
102224
|
+
resultBtn += ` >${sanitizeHtml(button.html || button.label || "")}</div>`;
|
|
101001
102225
|
return resultBtn;
|
|
101002
102226
|
}).join("") || ""}</div>`;
|
|
101003
102227
|
}
|
|
@@ -101181,13 +102405,13 @@ code.hljs {
|
|
|
101181
102405
|
}, IFRAME_CONTENT_TIMEOUT_MS);
|
|
101182
102406
|
});
|
|
101183
102407
|
}
|
|
101184
|
-
function replaceIframesWithSrcDoc(page, iframeContents) {
|
|
102408
|
+
function replaceIframesWithSrcDoc(page, iframeContents, visibilityMap) {
|
|
101185
102409
|
const contentMap = new Map(iframeContents.map((item) => [item.id, item.html]));
|
|
101186
102410
|
const iframes = page.querySelectorAll("iframe.act-embed");
|
|
101187
102411
|
iframes.forEach((iframe) => {
|
|
101188
102412
|
const iframeId = iframe.id;
|
|
101189
102413
|
const html5 = contentMap.get(iframeId);
|
|
101190
|
-
if (html5) {
|
|
102414
|
+
if (html5 && visibilityMap.get(iframeId)) {
|
|
101191
102415
|
iframe.removeAttribute("src");
|
|
101192
102416
|
iframe.setAttribute("srcdoc", html5);
|
|
101193
102417
|
}
|
|
@@ -101197,16 +102421,24 @@ code.hljs {
|
|
|
101197
102421
|
const rect = element.getBoundingClientRect();
|
|
101198
102422
|
const viewportHeight = window.innerHeight || document.documentElement.clientHeight;
|
|
101199
102423
|
const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
|
|
101200
|
-
|
|
101201
|
-
|
|
101202
|
-
|
|
101203
|
-
|
|
101204
|
-
|
|
101205
|
-
|
|
101206
|
-
|
|
101207
|
-
|
|
102424
|
+
if (rect.bottom <= 0 || rect.top >= viewportHeight || rect.right <= 0 || rect.left >= viewportWidth) {
|
|
102425
|
+
return false;
|
|
102426
|
+
}
|
|
102427
|
+
let parent3 = element.parentElement;
|
|
102428
|
+
while (parent3) {
|
|
102429
|
+
const style = window.getComputedStyle(parent3);
|
|
102430
|
+
const overflow = style.overflow + style.overflowX + style.overflowY;
|
|
102431
|
+
if (/(auto|scroll|hidden)/.test(overflow)) {
|
|
102432
|
+
const parentRect = parent3.getBoundingClientRect();
|
|
102433
|
+
if (rect.bottom <= parentRect.top || rect.top >= parentRect.bottom || rect.right <= parentRect.left || rect.left >= parentRect.right) {
|
|
102434
|
+
return false;
|
|
102435
|
+
}
|
|
101208
102436
|
}
|
|
101209
|
-
|
|
102437
|
+
parent3 = parent3.parentElement;
|
|
102438
|
+
}
|
|
102439
|
+
return true;
|
|
102440
|
+
}
|
|
102441
|
+
function markIframeVisibility(page, visibilityMap) {
|
|
101210
102442
|
const pageIframes = page.querySelectorAll("iframe");
|
|
101211
102443
|
pageIframes.forEach((iframe) => {
|
|
101212
102444
|
const isVisible = visibilityMap.get(iframe.id) || false;
|
|
@@ -101299,10 +102531,17 @@ code.hljs {
|
|
|
101299
102531
|
}
|
|
101300
102532
|
const pageContent = page.outerHTML;
|
|
101301
102533
|
const iframeContents = await collectIframeContent();
|
|
102534
|
+
const liveIframes = Array.from(document.querySelectorAll("iframe"));
|
|
102535
|
+
const visibilityMap = /* @__PURE__ */ new Map();
|
|
102536
|
+
liveIframes.forEach((iframe) => {
|
|
102537
|
+
if (iframe.id) {
|
|
102538
|
+
visibilityMap.set(iframe.id, isElementVisibleInViewport(iframe));
|
|
102539
|
+
}
|
|
102540
|
+
});
|
|
101302
102541
|
if (iframeContents.length > 0) {
|
|
101303
|
-
replaceIframesWithSrcDoc(page, iframeContents);
|
|
102542
|
+
replaceIframesWithSrcDoc(page, iframeContents, visibilityMap);
|
|
101304
102543
|
}
|
|
101305
|
-
markIframeVisibility(page);
|
|
102544
|
+
markIframeVisibility(page, visibilityMap);
|
|
101306
102545
|
if (onSendCb) {
|
|
101307
102546
|
onSendCb();
|
|
101308
102547
|
}
|
|
@@ -108263,7 +109502,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
108263
109502
|
const frameSrc = iframe.getAttribute("src");
|
|
108264
109503
|
iframe.removeAttribute("src");
|
|
108265
109504
|
iframe.setAttribute("srcdoc", htmlContent2);
|
|
108266
|
-
iframe.setAttribute("sandbox", "allow-scripts allow-same-origin");
|
|
109505
|
+
iframe.setAttribute("sandbox", "allow-scripts allow-same-origin allow-popups allow-downloads");
|
|
108267
109506
|
if (!options?.isGraphInfoDisabled && (frameSrc.indexOf("alan.") > -1 || frameSrc.indexOf("alan-"))) {
|
|
108268
109507
|
const parent3 = iframe.parentNode;
|
|
108269
109508
|
let controlsDiv = document.createElement("div");
|
|
@@ -108271,7 +109510,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
108271
109510
|
let hiddenIframe = document.createElement("iframe");
|
|
108272
109511
|
hiddenIframe.srcdoc = `<!--${initHtmlContent}-->`;
|
|
108273
109512
|
hiddenIframe.setAttribute("style", "display: none;");
|
|
108274
|
-
hiddenIframe.setAttribute("sandbox", "");
|
|
109513
|
+
hiddenIframe.setAttribute("sandbox", "allow-scripts allow-same-origin allow-popups allow-downloads");
|
|
108275
109514
|
controlsDiv.appendChild(hiddenIframe);
|
|
108276
109515
|
const loadIframeLink = document.createElement("a");
|
|
108277
109516
|
loadIframeLink.classList.add("load-iframe-source");
|
|
@@ -108380,7 +109619,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
108380
109619
|
.replace(/'/g, "'");
|
|
108381
109620
|
}
|
|
108382
109621
|
|
|
108383
|
-
var logs = ${JSON.stringify(outputPhrases)};
|
|
109622
|
+
var logs = ${escapeJsonForScriptTag(JSON.stringify(outputPhrases))};
|
|
108384
109623
|
|
|
108385
109624
|
logs = logs.map(el => ({
|
|
108386
109625
|
...el,
|
|
@@ -108594,7 +109833,8 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
108594
109833
|
var codePart;
|
|
108595
109834
|
|
|
108596
109835
|
if (typeof detailsData.value === 'object' && detailsData.value !== null) {
|
|
108597
|
-
|
|
109836
|
+
// HTML-encode JSON output to prevent XSS when inserted via innerHTML
|
|
109837
|
+
codePart = escapeHtml(JSON.stringify(detailsData.value, null, 2));
|
|
108598
109838
|
} else {
|
|
108599
109839
|
if (detailsData.type === 'javascript') {
|
|
108600
109840
|
codePart = prepareJavascriptCode(detailsData.value);
|
|
@@ -108717,8 +109957,11 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
108717
109957
|
};
|
|
108718
109958
|
<\/script>
|
|
108719
109959
|
`;
|
|
108720
|
-
|
|
108721
|
-
|
|
109960
|
+
function escapeJsonForScriptTag(json) {
|
|
109961
|
+
return json.replace(/<\//g, "<\\/").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
109962
|
+
}
|
|
109963
|
+
const txtMessages = data4?.textChatMessages ? escapeJsonForScriptTag(JSON.stringify(data4?.textChatMessages, null, 2)) : '"no-provided"';
|
|
109964
|
+
const socketMessages = data4?.socketMessages ? escapeJsonForScriptTag(JSON.stringify(data4?.socketMessages, null, 2)) : '"no-provided"';
|
|
108722
109965
|
let inlinedLibraries = "";
|
|
108723
109966
|
try {
|
|
108724
109967
|
inlinedLibraries = getInlineLibrariesHtml();
|
|
@@ -108731,7 +109974,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
108731
109974
|
<html lang="en">
|
|
108732
109975
|
<head>
|
|
108733
109976
|
<meta charset="UTF-8">
|
|
108734
|
-
<title>${chatName} Chat History</title>
|
|
109977
|
+
<title>${encodeHtmlEntity(chatName)} Chat History</title>
|
|
108735
109978
|
${inlinedLibraries}
|
|
108736
109979
|
${headContent ? headContent : ""}
|
|
108737
109980
|
|
|
@@ -108947,7 +110190,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
108947
110190
|
</head>
|
|
108948
110191
|
<body class="alan-btn__history-body">
|
|
108949
110192
|
<script>
|
|
108950
|
-
var imgData = ${JSON.stringify(imgData)};
|
|
110193
|
+
var imgData = ${escapeJsonForScriptTag(JSON.stringify(imgData))};
|
|
108951
110194
|
|
|
108952
110195
|
document.addEventListener('click', (e) => {
|
|
108953
110196
|
const clickedEl = e.target;
|
|
@@ -109032,7 +110275,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
109032
110275
|
|
|
109033
110276
|
<div class="alan-history-content ${alanMainClass}">
|
|
109034
110277
|
<div class="alan-btn__history-chat-header">
|
|
109035
|
-
<h1>${chatName} Chat History</h1>
|
|
110278
|
+
<h1>${encodeHtmlEntity(chatName)} Chat History</h1>
|
|
109036
110279
|
</div>
|
|
109037
110280
|
<div class="alan-btn__history-chat alan-history-inner-content">
|
|
109038
110281
|
${chatConteiner.outerHTML}
|
|
@@ -109454,16 +110697,17 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
109454
110697
|
return `<div class="alan-btn__chat-suggestions">
|
|
109455
110698
|
${suggestions?.map((suggestion) => {
|
|
109456
110699
|
const { textToAsk, label } = getSuggestionMetadata(suggestion);
|
|
109457
|
-
|
|
110700
|
+
const sanitizedTextToAsk = encodeHtmlAttribute(textToAsk);
|
|
110701
|
+
return `<div class="alan-chat__suggestion" data-alan-button-send-text="${sanitizedTextToAsk}">${label}</div>`;
|
|
109458
110702
|
}).join("") || ""}</div>`;
|
|
109459
110703
|
}
|
|
109460
110704
|
function getSuggestionMetadata(suggestion) {
|
|
109461
110705
|
const { text: text5, markdown } = suggestion;
|
|
109462
110706
|
let label = "";
|
|
109463
110707
|
if (markdown) {
|
|
109464
|
-
label = alanMarkdown(markdown || "");
|
|
110708
|
+
label = sanitizeHtml(alanMarkdown(markdown || ""));
|
|
109465
110709
|
} else {
|
|
109466
|
-
label = text5 || "";
|
|
110710
|
+
label = encodeHtmlEntity(text5 || "");
|
|
109467
110711
|
}
|
|
109468
110712
|
const textToAsk = (text5 || label?.replace(/<\/?[^>]+(>|$)/g, "")).replace(/\n/g, " ").trim();
|
|
109469
110713
|
return {
|
|
@@ -109539,18 +110783,13 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
109539
110783
|
|
|
109540
110784
|
// alan_btn/src/textChat/helpers/getMessageTimestamp.ts
|
|
109541
110785
|
var dayjs = require_dayjs_min();
|
|
109542
|
-
function getTimestampFromReqId(reqId) {
|
|
109543
|
-
if (!reqId) return null;
|
|
109544
|
-
const ts = Number(reqId.split("/")[0]);
|
|
109545
|
-
return ts || null;
|
|
109546
|
-
}
|
|
109547
110786
|
var DEFAULT_FORMAT = {
|
|
109548
|
-
today: "[Today],
|
|
109549
|
-
yesterday: "[Yesterday],
|
|
109550
|
-
other: "MMM DD, YYYY,
|
|
110787
|
+
today: "[Today], h:mm:ss A",
|
|
110788
|
+
yesterday: "[Yesterday], h:mm:ss A",
|
|
110789
|
+
other: "MMM DD, YYYY, h:mm:ss A"
|
|
109551
110790
|
};
|
|
109552
110791
|
function getMessageTimestamp(msg, timestampFormat) {
|
|
109553
|
-
const tsMs =
|
|
110792
|
+
const tsMs = msg?.type === "request" ? msg?.tsInit : msg?.ctx?.tsResponseStart || msg?.ctx?.tsFinal;
|
|
109554
110793
|
if (!tsMs) return "";
|
|
109555
110794
|
const fmt = { ...DEFAULT_FORMAT, ...timestampFormat };
|
|
109556
110795
|
const msgDate = dayjs(tsMs);
|
|
@@ -109565,7 +110804,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
109565
110804
|
// alan_btn/alan_btn.ts
|
|
109566
110805
|
(function(ns) {
|
|
109567
110806
|
const uiState10 = getUIState();
|
|
109568
|
-
const version2 = "alan-version.1.8.
|
|
110807
|
+
const version2 = "alan-version.1.8.123".replace("alan-version.", "");
|
|
109569
110808
|
uiState10.lib.version = version2;
|
|
109570
110809
|
window.alanLib = { version: version2 };
|
|
109571
110810
|
if (window.alanBtn) {
|
|
@@ -109589,6 +110828,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
109589
110828
|
if (options?.mode === "docked-left" || options?.mode === "docked-right") {
|
|
109590
110829
|
uiState10.textChat.docked = true;
|
|
109591
110830
|
}
|
|
110831
|
+
uiState10.userInfo.userId = options?.authData?.userId || void 0;
|
|
109592
110832
|
}
|
|
109593
110833
|
var btnDisabled = true;
|
|
109594
110834
|
var btnIsReady = false;
|
|
@@ -111108,10 +112348,10 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
111108
112348
|
if (!popupOptions.html) {
|
|
111109
112349
|
if (message) {
|
|
111110
112350
|
popup.classList.add("alan-btn-lib__default-popup");
|
|
111111
|
-
popup.innerHTML = '<div class="alan-overlay-popup__body">' + message + "</div>";
|
|
112351
|
+
popup.innerHTML = '<div class="alan-overlay-popup__body">' + sanitizeHtml(message) + "</div>";
|
|
111112
112352
|
}
|
|
111113
112353
|
} else {
|
|
111114
|
-
popup.innerHTML = popupOptions.html;
|
|
112354
|
+
popup.innerHTML = sanitizeHtml(popupOptions.html);
|
|
111115
112355
|
}
|
|
111116
112356
|
var closeIconImg = document.createElement("div");
|
|
111117
112357
|
closeIconImg.id = "alan-overlay-ok-btn";
|
|
@@ -111208,7 +112448,7 @@ var hljs=function(){"use strict";function e(n){return n instanceof Map?n.clear=n
|
|
|
111208
112448
|
if (recognisedText.length > 200) {
|
|
111209
112449
|
recognisedText = recognisedText.substr(0, 200);
|
|
111210
112450
|
}
|
|
111211
|
-
recognisedTextContent.
|
|
112451
|
+
recognisedTextContent.textContent = recognisedText;
|
|
111212
112452
|
}
|
|
111213
112453
|
if (recognisedTextHolder.classList.contains("alan-btn-lib__absolute-positioned")) {
|
|
111214
112454
|
if (recognisedText.length < 33) {
|
|
@@ -111543,7 +112783,7 @@ ${curDialogId}`);
|
|
|
111543
112783
|
btn.style.zIndex = maxZIndex.toString();
|
|
111544
112784
|
overlay.style.zIndex = (maxZIndex - 3).toString();
|
|
111545
112785
|
alertPopup.style.zIndex = (maxZIndex - 2).toString();
|
|
111546
|
-
alertPopup.innerHTML = msg;
|
|
112786
|
+
alertPopup.innerHTML = sanitizeHtml(msg);
|
|
111547
112787
|
var closeIconImg = document.createElement("div");
|
|
111548
112788
|
closeIconImg.id = "alan-alert-popup-close-btn";
|
|
111549
112789
|
closeIconImg.classList.add("alan-alert-popup__close-btn");
|
|
@@ -112045,7 +113285,7 @@ ${curDialogId}`);
|
|
|
112045
113285
|
} else {
|
|
112046
113286
|
result = escapeHtml(msg.text);
|
|
112047
113287
|
}
|
|
112048
|
-
const wrapContentForRerender =
|
|
113288
|
+
const wrapContentForRerender = createWrapContentForRerender();
|
|
112049
113289
|
result = wrapContentForRerender(result).map((el) => {
|
|
112050
113290
|
return el.type === "text" ? `<span>${el.value}</span>` : el.value;
|
|
112051
113291
|
}).join("");
|
|
@@ -112157,10 +113397,8 @@ ${curDialogId}`);
|
|
|
112157
113397
|
const isResponse = msg.type === "response";
|
|
112158
113398
|
const requestLabel = uiState10?.textChat?.options?.bubbles?.request?.label?.text ?? "Me";
|
|
112159
113399
|
const responseLabel = uiState10?.textChat?.options?.bubbles?.response?.label?.text ?? "Alan";
|
|
112160
|
-
const
|
|
112161
|
-
const
|
|
112162
|
-
const requestTs = requestTsEnabled ? getMessageTimestamp(msg, options?.textChat?.timestampFormat) : "";
|
|
112163
|
-
const responseTs = responseTsEnabled ? getMessageTimestamp(msg, options?.textChat?.timestampFormat) : "";
|
|
113400
|
+
const requestTs = getMessageTimestamp(msg, options?.textChat?.timestampFormat);
|
|
113401
|
+
const responseTs = getMessageTimestamp(msg, options?.textChat?.timestampFormat);
|
|
112164
113402
|
const msgLabel = `<div class="alan-btn__chat-${msg.type}-label">
|
|
112165
113403
|
${isResponse ? `<span class="alan-btn__chat-${msg.type}-label-icon"></span>` : ""}
|
|
112166
113404
|
<span class="alan-btn__chat-${msg.type}-label-and-ts-holder">
|
|
@@ -112225,11 +113463,11 @@ ${curDialogId}`);
|
|
|
112225
113463
|
} else if (msg.type === "connection-separator") {
|
|
112226
113464
|
msgHtml = `<div class="alan-btn__chat-connection-separator"></div>`;
|
|
112227
113465
|
} else if (msg.type === "chat") {
|
|
112228
|
-
msgHtml = `<div class="alan-btn__chat-popup">${msg.html}</div>`;
|
|
113466
|
+
msgHtml = `<div class="alan-btn__chat-popup">${sanitizeHtml(msg.html)}</div>`;
|
|
112229
113467
|
} else {
|
|
112230
113468
|
if (msg.name === "text" || msg.name === "parsed" || msg.name === "recognized") {
|
|
112231
113469
|
if (msg.type === "request") {
|
|
112232
|
-
innerMsgPart = alanMarkdown(
|
|
113470
|
+
innerMsgPart = alanMarkdown(msg.text || "", { html: false, breaks: true });
|
|
112233
113471
|
} else {
|
|
112234
113472
|
if (withDetailedStatuses && msg?.queryProgress?.length > 0) {
|
|
112235
113473
|
innerMsgPart = `${getMsgLoaderStatuses(uiState10.textChat.options, msg, true, true)} ${buildMsgContent(msg)}`;
|
|
@@ -112308,10 +113546,10 @@ ${curDialogId}`);
|
|
|
112308
113546
|
highlightCode(document.getElementById("chatMessages"));
|
|
112309
113547
|
}
|
|
112310
113548
|
} else {
|
|
112311
|
-
const
|
|
112312
|
-
if (
|
|
113549
|
+
const msgEl2 = document.getElementById("msg-" + msgInd);
|
|
113550
|
+
if (msgEl2) {
|
|
112313
113551
|
if (replaceLoader) {
|
|
112314
|
-
const innerEl =
|
|
113552
|
+
const innerEl = msgEl2.querySelector(".alan-btn__chat-inner-msg");
|
|
112315
113553
|
if (innerEl) {
|
|
112316
113554
|
if (innerEl.classList.contains("alan-hidden-loader")) {
|
|
112317
113555
|
innerEl.classList.remove("alan-hidden-loader");
|
|
@@ -112330,9 +113568,9 @@ ${curDialogId}`);
|
|
|
112330
113568
|
}
|
|
112331
113569
|
innerEl.classList.remove("alan-incoming-msg");
|
|
112332
113570
|
innerEl.id = "";
|
|
112333
|
-
const
|
|
112334
|
-
if (
|
|
112335
|
-
|
|
113571
|
+
const bubbleHolder = innerEl.closest(".alan-btn__chat-bubble-holder");
|
|
113572
|
+
if (bubbleHolder) {
|
|
113573
|
+
bubbleHolder.insertAdjacentHTML("beforebegin", getMsgBubbleLabel(msg));
|
|
112336
113574
|
}
|
|
112337
113575
|
if (msg.type === "response" && msg.images?.length > 0) {
|
|
112338
113576
|
innerEl.classList.add("with-images");
|
|
@@ -112346,7 +113584,7 @@ ${curDialogId}`);
|
|
|
112346
113584
|
scrollTextChat(msgsScrollableContainer, "smooth");
|
|
112347
113585
|
}
|
|
112348
113586
|
} else if (updateExistingResponse && msg.type !== "chat") {
|
|
112349
|
-
let innerEl =
|
|
113587
|
+
let innerEl = msgEl2.querySelector(".alan-btn__chat-inner-msg");
|
|
112350
113588
|
if (innerEl) {
|
|
112351
113589
|
if (innerEl.classList.contains("alan-hidden-loader")) {
|
|
112352
113590
|
innerEl.classList.remove("alan-hidden-loader");
|
|
@@ -112362,6 +113600,13 @@ ${curDialogId}`);
|
|
|
112362
113600
|
if (updatedMsg.type !== "chat" && updatedMsg.images?.length > 0) {
|
|
112363
113601
|
innerEl.classList.add("with-images");
|
|
112364
113602
|
}
|
|
113603
|
+
const msgHolder2 = innerEl.closest(".alan-btn__chat-msg-holder");
|
|
113604
|
+
if (msgHolder2) {
|
|
113605
|
+
const labelHolderEl = msgHolder2.querySelector(".alan-btn__chat-response-label");
|
|
113606
|
+
if (labelHolderEl) {
|
|
113607
|
+
labelHolderEl.innerHTML = getMsgBubbleLabel(msg);
|
|
113608
|
+
}
|
|
113609
|
+
}
|
|
112365
113610
|
const loaderWrapper = innerEl.querySelector(".alan-btn__chat-incomming-msg-main-wrapper");
|
|
112366
113611
|
if (loaderWrapper) {
|
|
112367
113612
|
if (isFinalMessage(updatedMsg)) {
|
|
@@ -112409,16 +113654,16 @@ ${curDialogId}`);
|
|
|
112409
113654
|
}
|
|
112410
113655
|
} else {
|
|
112411
113656
|
if (msg.name === "loading" && msg.type === "response") {
|
|
112412
|
-
const loaderContentEl =
|
|
112413
|
-
const loaderStatusContentEl =
|
|
113657
|
+
const loaderContentEl = msgEl2.querySelector(".alan-btn__chat-incomming-msg-wrapper");
|
|
113658
|
+
const loaderStatusContentEl = msgEl2.querySelector(".alan-btn__chat-incomming-msg-loader-label");
|
|
112414
113659
|
if (!loaderContentEl) {
|
|
112415
|
-
|
|
113660
|
+
msgEl2.innerHTML = msgHtml;
|
|
112416
113661
|
}
|
|
112417
113662
|
if (!progressUpdateIntervalId && loaderStatusContentEl) {
|
|
112418
113663
|
progressUpdateIntervalId = updateMessageProgressStatus(msgInd, loaderStatusContentEl, withDetailedStatuses);
|
|
112419
113664
|
}
|
|
112420
113665
|
} else {
|
|
112421
|
-
|
|
113666
|
+
msgEl2.innerHTML = msgHtml;
|
|
112422
113667
|
}
|
|
112423
113668
|
setTimeout(() => {
|
|
112424
113669
|
scrollTextChat(msgsScrollableContainer);
|
|
@@ -112430,6 +113675,13 @@ ${curDialogId}`);
|
|
|
112430
113675
|
highlightCode(document.getElementById("chatMessages"));
|
|
112431
113676
|
}
|
|
112432
113677
|
}
|
|
113678
|
+
const msgEl = document.getElementById("msg-" + msgInd);
|
|
113679
|
+
if (msgEl) {
|
|
113680
|
+
const labelHolderEl = msgEl.querySelector(".alan-btn__chat-response-label");
|
|
113681
|
+
if (labelHolderEl) {
|
|
113682
|
+
labelHolderEl.innerHTML = getMsgBubbleLabel(msg);
|
|
113683
|
+
}
|
|
113684
|
+
}
|
|
112433
113685
|
saveMessageHistory();
|
|
112434
113686
|
if (uiState10.textChat.available && textChatIsHidden) {
|
|
112435
113687
|
showChatNotifications();
|
|
@@ -112550,6 +113802,7 @@ ${curDialogId}`);
|
|
|
112550
113802
|
uiState10.socketMessages = [];
|
|
112551
113803
|
manageSaveChatHistoryBtn();
|
|
112552
113804
|
connectToNewDialog();
|
|
113805
|
+
clearChatAutocomplete(true);
|
|
112553
113806
|
}
|
|
112554
113807
|
function connectToNewDialog() {
|
|
112555
113808
|
clearDialogId();
|
|
@@ -112642,11 +113895,16 @@ ${curDialogId}`);
|
|
|
112642
113895
|
}
|
|
112643
113896
|
async function _sendText(text5) {
|
|
112644
113897
|
manageAutocompeteInChat();
|
|
113898
|
+
var maxChars = uiState10.textChat.maxCharactersCount || 2e4;
|
|
113899
|
+
if (text5?.length > maxChars) {
|
|
113900
|
+
console.warn("Alan: message cannot be sent: maximum message limit exceeded.");
|
|
113901
|
+
return;
|
|
113902
|
+
}
|
|
112645
113903
|
if (!canMsgBeSent()) {
|
|
112646
113904
|
console.warn("Alan: message cannot be sent. Model is not ready or connection is not established.");
|
|
112647
113905
|
return;
|
|
112648
113906
|
}
|
|
112649
|
-
var msg = { text: text5, type: "request", name: "text" };
|
|
113907
|
+
var msg = { text: text5, type: "request", name: "text", tsInit: Date.now() };
|
|
112650
113908
|
sentMessageInd = null;
|
|
112651
113909
|
clearMessageProgressStatusInterval();
|
|
112652
113910
|
var res = await sendText(text5);
|
|
@@ -112693,7 +113951,12 @@ ${curDialogId}`);
|
|
|
112693
113951
|
var textareaHolderEl = document.getElementById("textarea-holder");
|
|
112694
113952
|
var text5 = textareaEl.value;
|
|
112695
113953
|
var maxChars = uiState10.textChat.maxCharactersCount || 2e4;
|
|
112696
|
-
if (lastSendMsgTs
|
|
113954
|
+
if (lastSendMsgTs) {
|
|
113955
|
+
console.warn("Alan: message cannot be sent: you are sending messages too fast. Please wait a moment before sending another message.");
|
|
113956
|
+
return;
|
|
113957
|
+
}
|
|
113958
|
+
if (text5?.length > maxChars) {
|
|
113959
|
+
console.warn("Alan: message cannot be sent: maximum message limit exceeded.");
|
|
112697
113960
|
return;
|
|
112698
113961
|
}
|
|
112699
113962
|
if (!canMsgBeSent()) {
|
|
@@ -112771,8 +114034,8 @@ ${curDialogId}`);
|
|
|
112771
114034
|
manageSendButtonAvailability();
|
|
112772
114035
|
}
|
|
112773
114036
|
function manageAutocompeteInChat() {
|
|
114037
|
+
clearChatAutocomplete(false);
|
|
112774
114038
|
if (!isModelReady) {
|
|
112775
|
-
clearChatAutocomplete(false);
|
|
112776
114039
|
return;
|
|
112777
114040
|
}
|
|
112778
114041
|
if (uiState10.textChat?.autocomplete?.enabled === true) {
|
|
@@ -114662,6 +115925,9 @@ juice/lib/utils.js:
|
|
|
114662
115925
|
* @param {String} selectorText from mensch
|
|
114663
115926
|
* @api public
|
|
114664
115927
|
*)
|
|
115928
|
+
|
|
115929
|
+
dompurify/dist/purify.cjs.js:
|
|
115930
|
+
(*! @license DOMPurify 3.4.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.1/LICENSE *)
|
|
114665
115931
|
*/
|
|
114666
115932
|
|
|
114667
115933
|
return alanBtn;
|