@eclass/ui-kit 1.64.4 → 1.64.5

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.
@@ -3827,96 +3827,143 @@ function CourseList({
3827
3827
  });
3828
3828
  }
3829
3829
  CourseList.displayName = "CourseList";
3830
- /*! @license DOMPurify 3.3.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.3.1/LICENSE */
3831
- const {
3832
- entries,
3833
- setPrototypeOf,
3834
- isFrozen,
3835
- getPrototypeOf,
3836
- getOwnPropertyDescriptor
3837
- } = Object;
3838
- let {
3839
- freeze,
3840
- seal,
3841
- create
3842
- } = Object;
3843
- let {
3844
- apply,
3845
- construct
3846
- } = typeof Reflect !== "undefined" && Reflect;
3847
- if (!freeze) {
3830
+ /*! @license DOMPurify 3.4.17 | (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.17/LICENSE */
3831
+ function _arrayLikeToArray(r, a2) {
3832
+ (null == a2 || a2 > r.length) && (a2 = r.length);
3833
+ for (var e2 = 0, n2 = Array(a2); e2 < a2; e2++)
3834
+ n2[e2] = r[e2];
3835
+ return n2;
3836
+ }
3837
+ function _arrayWithHoles(r) {
3838
+ if (Array.isArray(r))
3839
+ return r;
3840
+ }
3841
+ function _iterableToArrayLimit(r, l2) {
3842
+ var t2 = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
3843
+ if (null != t2) {
3844
+ var e2, n2, i2, u2, a2 = [], f2 = true, o2 = false;
3845
+ try {
3846
+ if (i2 = (t2 = t2.call(r)).next, 0 === l2) {
3847
+ if (Object(t2) !== t2)
3848
+ return;
3849
+ f2 = false;
3850
+ } else
3851
+ for (; !(f2 = (e2 = i2.call(t2)).done) && (a2.push(e2.value), a2.length !== l2); f2 = true)
3852
+ ;
3853
+ } catch (r2) {
3854
+ o2 = true, n2 = r2;
3855
+ } finally {
3856
+ try {
3857
+ if (!f2 && null != t2.return && (u2 = t2.return(), Object(u2) !== u2))
3858
+ return;
3859
+ } finally {
3860
+ if (o2)
3861
+ throw n2;
3862
+ }
3863
+ }
3864
+ return a2;
3865
+ }
3866
+ }
3867
+ function _nonIterableRest() {
3868
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3869
+ }
3870
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3871
+ function _slicedToArray(r, e2) {
3872
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e2) || _unsupportedIterableToArray(r, e2) || _nonIterableRest();
3873
+ }
3874
+ function _unsupportedIterableToArray(r, a2) {
3875
+ if (r) {
3876
+ if ("string" == typeof r)
3877
+ return _arrayLikeToArray(r, a2);
3878
+ var t2 = {}.toString.call(r).slice(8, -1);
3879
+ return "Object" === t2 && r.constructor && (t2 = r.constructor.name), "Map" === t2 || "Set" === t2 ? Array.from(r) : "Arguments" === t2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t2) ? _arrayLikeToArray(r, a2) : void 0;
3880
+ }
3881
+ }
3882
+ const entries = Object.entries;
3883
+ const setPrototypeOf = Object.setPrototypeOf;
3884
+ const isFrozen = Object.isFrozen;
3885
+ const getPrototypeOf = Object.getPrototypeOf;
3886
+ const getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
3887
+ let freeze = Object.freeze;
3888
+ let seal = Object.seal;
3889
+ let create = Object.create;
3890
+ let _ref = typeof Reflect !== "undefined" && Reflect;
3891
+ let apply = _ref.apply;
3892
+ let construct = _ref.construct;
3893
+ if (!freeze)
3848
3894
  freeze = function freeze2(x) {
3849
3895
  return x;
3850
3896
  };
3851
- }
3852
- if (!seal) {
3897
+ if (!seal)
3853
3898
  seal = function seal2(x) {
3854
3899
  return x;
3855
3900
  };
3856
- }
3857
- if (!apply) {
3901
+ if (!apply)
3858
3902
  apply = function apply2(func, thisArg) {
3859
- for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
3903
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++)
3860
3904
  args[_key - 2] = arguments[_key];
3861
- }
3862
3905
  return func.apply(thisArg, args);
3863
3906
  };
3864
- }
3865
- if (!construct) {
3907
+ if (!construct)
3866
3908
  construct = function construct2(Func) {
3867
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
3909
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++)
3868
3910
  args[_key2 - 1] = arguments[_key2];
3869
- }
3870
3911
  return new Func(...args);
3871
3912
  };
3872
- }
3873
3913
  const arrayForEach = unapply(Array.prototype.forEach);
3874
3914
  const arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
3875
3915
  const arrayPop = unapply(Array.prototype.pop);
3876
3916
  const arrayPush = unapply(Array.prototype.push);
3917
+ const arraySlice = unapply(Array.prototype.slice);
3877
3918
  const arraySplice = unapply(Array.prototype.splice);
3919
+ const arrayIsArray = Array.isArray;
3920
+ const setCreate = unconstruct(Set);
3921
+ const setAdd = unapply(Set.prototype.add);
3922
+ const setHas = unapply(Set.prototype.has);
3878
3923
  const stringToLowerCase = unapply(String.prototype.toLowerCase);
3879
3924
  const stringToString = unapply(String.prototype.toString);
3880
3925
  const stringMatch = unapply(String.prototype.match);
3881
3926
  const stringReplace = unapply(String.prototype.replace);
3882
3927
  const stringIndexOf = unapply(String.prototype.indexOf);
3883
3928
  const stringTrim = unapply(String.prototype.trim);
3929
+ const numberToString = unapply(Number.prototype.toString);
3930
+ const booleanToString = unapply(Boolean.prototype.toString);
3931
+ const bigintToString = typeof BigInt === "undefined" ? null : unapply(BigInt.prototype.toString);
3932
+ const symbolToString = typeof Symbol === "undefined" ? null : unapply(Symbol.prototype.toString);
3884
3933
  const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
3934
+ const objectToString = unapply(Object.prototype.toString);
3885
3935
  const regExpTest = unapply(RegExp.prototype.test);
3886
3936
  const typeErrorCreate = unconstruct(TypeError);
3887
3937
  function unapply(func) {
3888
3938
  return function(thisArg) {
3889
- if (thisArg instanceof RegExp) {
3939
+ if (thisArg instanceof RegExp)
3890
3940
  thisArg.lastIndex = 0;
3891
- }
3892
- for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
3941
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++)
3893
3942
  args[_key3 - 1] = arguments[_key3];
3894
- }
3895
3943
  return apply(func, thisArg, args);
3896
3944
  };
3897
3945
  }
3898
3946
  function unconstruct(Func) {
3899
3947
  return function() {
3900
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
3948
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++)
3901
3949
  args[_key4] = arguments[_key4];
3902
- }
3903
3950
  return construct(Func, args);
3904
3951
  };
3905
3952
  }
3906
3953
  function addToSet(set, array) {
3907
3954
  let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;
3908
- if (setPrototypeOf) {
3955
+ if (setPrototypeOf)
3909
3956
  setPrototypeOf(set, null);
3910
- }
3957
+ if (!arrayIsArray(array))
3958
+ return set;
3911
3959
  let l2 = array.length;
3912
3960
  while (l2--) {
3913
3961
  let element = array[l2];
3914
3962
  if (typeof element === "string") {
3915
3963
  const lcElement = transformCaseFunc(element);
3916
3964
  if (lcElement !== element) {
3917
- if (!isFrozen(array)) {
3965
+ if (!isFrozen(array))
3918
3966
  array[l2] = lcElement;
3919
- }
3920
3967
  element = lcElement;
3921
3968
  }
3922
3969
  }
@@ -3925,40 +3972,66 @@ function addToSet(set, array) {
3925
3972
  return set;
3926
3973
  }
3927
3974
  function cleanArray(array) {
3928
- for (let index2 = 0; index2 < array.length; index2++) {
3929
- const isPropertyExist = objectHasOwnProperty(array, index2);
3930
- if (!isPropertyExist) {
3975
+ for (let index2 = 0; index2 < array.length; index2++)
3976
+ if (!objectHasOwnProperty(array, index2))
3931
3977
  array[index2] = null;
3932
- }
3933
- }
3934
3978
  return array;
3935
3979
  }
3936
3980
  function clone(object) {
3937
3981
  const newObject = create(null);
3938
- for (const [property, value] of entries(object)) {
3939
- const isPropertyExist = objectHasOwnProperty(object, property);
3940
- if (isPropertyExist) {
3941
- if (Array.isArray(value)) {
3982
+ for (const _ref2 of entries(object)) {
3983
+ var _ref3 = _slicedToArray(_ref2, 2);
3984
+ const property = _ref3[0];
3985
+ const value = _ref3[1];
3986
+ if (objectHasOwnProperty(object, property)) {
3987
+ if (arrayIsArray(value))
3942
3988
  newObject[property] = cleanArray(value);
3943
- } else if (value && typeof value === "object" && value.constructor === Object) {
3989
+ else if (value && typeof value === "object" && value.constructor === Object)
3944
3990
  newObject[property] = clone(value);
3945
- } else {
3991
+ else
3946
3992
  newObject[property] = value;
3947
- }
3948
3993
  }
3949
3994
  }
3950
3995
  return newObject;
3951
3996
  }
3997
+ function stringifyValue(value) {
3998
+ switch (typeof value) {
3999
+ case "string":
4000
+ return value;
4001
+ case "number":
4002
+ return numberToString(value);
4003
+ case "boolean":
4004
+ return booleanToString(value);
4005
+ case "bigint":
4006
+ return bigintToString ? bigintToString(value) : "0";
4007
+ case "symbol":
4008
+ return symbolToString ? symbolToString(value) : "Symbol()";
4009
+ case "undefined":
4010
+ return objectToString(value);
4011
+ case "function":
4012
+ case "object": {
4013
+ if (value === null)
4014
+ return objectToString(value);
4015
+ const valueAsRecord = value;
4016
+ const valueToString = lookupGetter(valueAsRecord, "toString");
4017
+ if (typeof valueToString === "function") {
4018
+ const stringified = valueToString(valueAsRecord);
4019
+ return typeof stringified === "string" ? stringified : objectToString(stringified);
4020
+ }
4021
+ return objectToString(value);
4022
+ }
4023
+ default:
4024
+ return objectToString(value);
4025
+ }
4026
+ }
3952
4027
  function lookupGetter(object, prop) {
3953
4028
  while (object !== null) {
3954
4029
  const desc = getOwnPropertyDescriptor(object, prop);
3955
4030
  if (desc) {
3956
- if (desc.get) {
4031
+ if (desc.get)
3957
4032
  return unapply(desc.get);
3958
- }
3959
- if (typeof desc.value === "function") {
4033
+ if (typeof desc.value === "function")
3960
4034
  return unapply(desc.value);
3961
- }
3962
4035
  }
3963
4036
  object = getPrototypeOf(object);
3964
4037
  }
@@ -3967,44 +4040,685 @@ function lookupGetter(object, prop) {
3967
4040
  }
3968
4041
  return fallbackValue;
3969
4042
  }
3970
- const 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"]);
3971
- const 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"]);
3972
- const 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"]);
3973
- const 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"]);
3974
- const 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"]);
3975
- const mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
4043
+ function lookupAccessor(object, prop) {
4044
+ while (object !== null) {
4045
+ const desc = getOwnPropertyDescriptor(object, prop);
4046
+ if (desc)
4047
+ return desc.get ? unapply(desc.get) : null;
4048
+ object = getPrototypeOf(object);
4049
+ }
4050
+ return null;
4051
+ }
4052
+ function isRegex(value) {
4053
+ try {
4054
+ regExpTest(value, "");
4055
+ return true;
4056
+ } catch (_unused) {
4057
+ return false;
4058
+ }
4059
+ }
4060
+ const html$1 = freeze([
4061
+ "a",
4062
+ "abbr",
4063
+ "acronym",
4064
+ "address",
4065
+ "area",
4066
+ "article",
4067
+ "aside",
4068
+ "audio",
4069
+ "b",
4070
+ "bdi",
4071
+ "bdo",
4072
+ "big",
4073
+ "blink",
4074
+ "blockquote",
4075
+ "body",
4076
+ "br",
4077
+ "button",
4078
+ "canvas",
4079
+ "caption",
4080
+ "center",
4081
+ "cite",
4082
+ "code",
4083
+ "col",
4084
+ "colgroup",
4085
+ "content",
4086
+ "data",
4087
+ "datalist",
4088
+ "dd",
4089
+ "decorator",
4090
+ "del",
4091
+ "details",
4092
+ "dfn",
4093
+ "dialog",
4094
+ "dir",
4095
+ "div",
4096
+ "dl",
4097
+ "dt",
4098
+ "element",
4099
+ "em",
4100
+ "fieldset",
4101
+ "figcaption",
4102
+ "figure",
4103
+ "font",
4104
+ "footer",
4105
+ "form",
4106
+ "h1",
4107
+ "h2",
4108
+ "h3",
4109
+ "h4",
4110
+ "h5",
4111
+ "h6",
4112
+ "head",
4113
+ "header",
4114
+ "hgroup",
4115
+ "hr",
4116
+ "html",
4117
+ "i",
4118
+ "img",
4119
+ "input",
4120
+ "ins",
4121
+ "kbd",
4122
+ "label",
4123
+ "legend",
4124
+ "li",
4125
+ "main",
4126
+ "map",
4127
+ "mark",
4128
+ "marquee",
4129
+ "menu",
4130
+ "menuitem",
4131
+ "meter",
4132
+ "nav",
4133
+ "nobr",
4134
+ "ol",
4135
+ "optgroup",
4136
+ "option",
4137
+ "output",
4138
+ "p",
4139
+ "picture",
4140
+ "pre",
4141
+ "progress",
4142
+ "q",
4143
+ "rp",
4144
+ "rt",
4145
+ "ruby",
4146
+ "s",
4147
+ "samp",
4148
+ "search",
4149
+ "section",
4150
+ "select",
4151
+ "shadow",
4152
+ "slot",
4153
+ "small",
4154
+ "source",
4155
+ "spacer",
4156
+ "span",
4157
+ "strike",
4158
+ "strong",
4159
+ "style",
4160
+ "sub",
4161
+ "summary",
4162
+ "sup",
4163
+ "table",
4164
+ "tbody",
4165
+ "td",
4166
+ "template",
4167
+ "textarea",
4168
+ "tfoot",
4169
+ "th",
4170
+ "thead",
4171
+ "time",
4172
+ "tr",
4173
+ "track",
4174
+ "tt",
4175
+ "u",
4176
+ "ul",
4177
+ "var",
4178
+ "video",
4179
+ "wbr"
4180
+ ]);
4181
+ const svg$1 = freeze([
4182
+ "svg",
4183
+ "a",
4184
+ "altglyph",
4185
+ "altglyphdef",
4186
+ "altglyphitem",
4187
+ "animatecolor",
4188
+ "animatemotion",
4189
+ "animatetransform",
4190
+ "circle",
4191
+ "clippath",
4192
+ "defs",
4193
+ "desc",
4194
+ "ellipse",
4195
+ "enterkeyhint",
4196
+ "exportparts",
4197
+ "filter",
4198
+ "font",
4199
+ "g",
4200
+ "glyph",
4201
+ "glyphref",
4202
+ "hkern",
4203
+ "image",
4204
+ "inputmode",
4205
+ "line",
4206
+ "lineargradient",
4207
+ "marker",
4208
+ "mask",
4209
+ "metadata",
4210
+ "mpath",
4211
+ "part",
4212
+ "path",
4213
+ "pattern",
4214
+ "polygon",
4215
+ "polyline",
4216
+ "radialgradient",
4217
+ "rect",
4218
+ "stop",
4219
+ "style",
4220
+ "switch",
4221
+ "symbol",
4222
+ "text",
4223
+ "textpath",
4224
+ "title",
4225
+ "tref",
4226
+ "tspan",
4227
+ "view",
4228
+ "vkern"
4229
+ ]);
4230
+ const svgFilters = freeze([
4231
+ "feBlend",
4232
+ "feColorMatrix",
4233
+ "feComponentTransfer",
4234
+ "feComposite",
4235
+ "feConvolveMatrix",
4236
+ "feDiffuseLighting",
4237
+ "feDisplacementMap",
4238
+ "feDistantLight",
4239
+ "feDropShadow",
4240
+ "feFlood",
4241
+ "feFuncA",
4242
+ "feFuncB",
4243
+ "feFuncG",
4244
+ "feFuncR",
4245
+ "feGaussianBlur",
4246
+ "feImage",
4247
+ "feMerge",
4248
+ "feMergeNode",
4249
+ "feMorphology",
4250
+ "feOffset",
4251
+ "fePointLight",
4252
+ "feSpecularLighting",
4253
+ "feSpotLight",
4254
+ "feTile",
4255
+ "feTurbulence"
4256
+ ]);
4257
+ const svgDisallowed = freeze([
4258
+ "animate",
4259
+ "color-profile",
4260
+ "cursor",
4261
+ "discard",
4262
+ "font-face",
4263
+ "font-face-format",
4264
+ "font-face-name",
4265
+ "font-face-src",
4266
+ "font-face-uri",
4267
+ "foreignobject",
4268
+ "hatch",
4269
+ "hatchpath",
4270
+ "mesh",
4271
+ "meshgradient",
4272
+ "meshpatch",
4273
+ "meshrow",
4274
+ "missing-glyph",
4275
+ "script",
4276
+ "set",
4277
+ "solidcolor",
4278
+ "unknown",
4279
+ "use"
4280
+ ]);
4281
+ const mathMl$1 = freeze([
4282
+ "math",
4283
+ "menclose",
4284
+ "merror",
4285
+ "mfenced",
4286
+ "mfrac",
4287
+ "mglyph",
4288
+ "mi",
4289
+ "mlabeledtr",
4290
+ "mmultiscripts",
4291
+ "mn",
4292
+ "mo",
4293
+ "mover",
4294
+ "mpadded",
4295
+ "mphantom",
4296
+ "mroot",
4297
+ "mrow",
4298
+ "ms",
4299
+ "mspace",
4300
+ "msqrt",
4301
+ "mstyle",
4302
+ "msub",
4303
+ "msup",
4304
+ "msubsup",
4305
+ "mtable",
4306
+ "mtd",
4307
+ "mtext",
4308
+ "mtr",
4309
+ "munder",
4310
+ "munderover",
4311
+ "mprescripts"
4312
+ ]);
4313
+ const mathMlDisallowed = freeze([
4314
+ "maction",
4315
+ "maligngroup",
4316
+ "malignmark",
4317
+ "mlongdiv",
4318
+ "mscarries",
4319
+ "mscarry",
4320
+ "msgroup",
4321
+ "mstack",
4322
+ "msline",
4323
+ "msrow",
4324
+ "semantics",
4325
+ "annotation",
4326
+ "annotation-xml",
4327
+ "mprescripts",
4328
+ "none"
4329
+ ]);
3976
4330
  const text = freeze(["#text"]);
3977
- const html = 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", "slot"]);
3978
- const 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"]);
3979
- const mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
3980
- const xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
3981
- const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm);
3982
- const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
3983
- const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm);
4331
+ const html = freeze([
4332
+ "accept",
4333
+ "action",
4334
+ "align",
4335
+ "alt",
4336
+ "autocapitalize",
4337
+ "autocomplete",
4338
+ "autopictureinpicture",
4339
+ "autoplay",
4340
+ "background",
4341
+ "bgcolor",
4342
+ "border",
4343
+ "capture",
4344
+ "cellpadding",
4345
+ "cellspacing",
4346
+ "checked",
4347
+ "cite",
4348
+ "class",
4349
+ "clear",
4350
+ "color",
4351
+ "cols",
4352
+ "colspan",
4353
+ "command",
4354
+ "commandfor",
4355
+ "controls",
4356
+ "controlslist",
4357
+ "coords",
4358
+ "crossorigin",
4359
+ "datetime",
4360
+ "decoding",
4361
+ "default",
4362
+ "dir",
4363
+ "disabled",
4364
+ "disablepictureinpicture",
4365
+ "disableremoteplayback",
4366
+ "download",
4367
+ "draggable",
4368
+ "enctype",
4369
+ "enterkeyhint",
4370
+ "exportparts",
4371
+ "face",
4372
+ "for",
4373
+ "headers",
4374
+ "height",
4375
+ "hidden",
4376
+ "high",
4377
+ "href",
4378
+ "hreflang",
4379
+ "id",
4380
+ "inert",
4381
+ "inputmode",
4382
+ "integrity",
4383
+ "ismap",
4384
+ "kind",
4385
+ "label",
4386
+ "lang",
4387
+ "list",
4388
+ "loading",
4389
+ "loop",
4390
+ "low",
4391
+ "max",
4392
+ "maxlength",
4393
+ "media",
4394
+ "method",
4395
+ "min",
4396
+ "minlength",
4397
+ "multiple",
4398
+ "muted",
4399
+ "name",
4400
+ "nonce",
4401
+ "noshade",
4402
+ "novalidate",
4403
+ "nowrap",
4404
+ "open",
4405
+ "optimum",
4406
+ "part",
4407
+ "pattern",
4408
+ "placeholder",
4409
+ "playsinline",
4410
+ "popover",
4411
+ "popovertarget",
4412
+ "popovertargetaction",
4413
+ "poster",
4414
+ "preload",
4415
+ "pubdate",
4416
+ "radiogroup",
4417
+ "readonly",
4418
+ "rel",
4419
+ "required",
4420
+ "rev",
4421
+ "reversed",
4422
+ "role",
4423
+ "rows",
4424
+ "rowspan",
4425
+ "spellcheck",
4426
+ "scope",
4427
+ "selected",
4428
+ "shape",
4429
+ "size",
4430
+ "sizes",
4431
+ "slot",
4432
+ "span",
4433
+ "srclang",
4434
+ "start",
4435
+ "src",
4436
+ "srcset",
4437
+ "step",
4438
+ "style",
4439
+ "summary",
4440
+ "tabindex",
4441
+ "title",
4442
+ "translate",
4443
+ "type",
4444
+ "usemap",
4445
+ "valign",
4446
+ "value",
4447
+ "width",
4448
+ "wrap",
4449
+ "xmlns"
4450
+ ]);
4451
+ const svg = freeze([
4452
+ "accent-height",
4453
+ "accumulate",
4454
+ "additive",
4455
+ "alignment-baseline",
4456
+ "amplitude",
4457
+ "ascent",
4458
+ "attributename",
4459
+ "attributetype",
4460
+ "azimuth",
4461
+ "basefrequency",
4462
+ "baseline-shift",
4463
+ "begin",
4464
+ "bias",
4465
+ "by",
4466
+ "class",
4467
+ "clip",
4468
+ "clippathunits",
4469
+ "clip-path",
4470
+ "clip-rule",
4471
+ "color",
4472
+ "color-interpolation",
4473
+ "color-interpolation-filters",
4474
+ "color-profile",
4475
+ "color-rendering",
4476
+ "cx",
4477
+ "cy",
4478
+ "d",
4479
+ "dx",
4480
+ "dy",
4481
+ "diffuseconstant",
4482
+ "direction",
4483
+ "display",
4484
+ "divisor",
4485
+ "dominant-baseline",
4486
+ "dur",
4487
+ "edgemode",
4488
+ "elevation",
4489
+ "end",
4490
+ "exponent",
4491
+ "fill",
4492
+ "fill-opacity",
4493
+ "fill-rule",
4494
+ "filter",
4495
+ "filterunits",
4496
+ "flood-color",
4497
+ "flood-opacity",
4498
+ "font-family",
4499
+ "font-size",
4500
+ "font-size-adjust",
4501
+ "font-stretch",
4502
+ "font-style",
4503
+ "font-variant",
4504
+ "font-weight",
4505
+ "fx",
4506
+ "fy",
4507
+ "g1",
4508
+ "g2",
4509
+ "glyph-name",
4510
+ "glyphref",
4511
+ "gradientunits",
4512
+ "gradienttransform",
4513
+ "height",
4514
+ "href",
4515
+ "id",
4516
+ "image-rendering",
4517
+ "in",
4518
+ "in2",
4519
+ "intercept",
4520
+ "k",
4521
+ "k1",
4522
+ "k2",
4523
+ "k3",
4524
+ "k4",
4525
+ "kerning",
4526
+ "keypoints",
4527
+ "keysplines",
4528
+ "keytimes",
4529
+ "lang",
4530
+ "lengthadjust",
4531
+ "letter-spacing",
4532
+ "kernelmatrix",
4533
+ "kernelunitlength",
4534
+ "lighting-color",
4535
+ "local",
4536
+ "marker-end",
4537
+ "marker-mid",
4538
+ "marker-start",
4539
+ "markerheight",
4540
+ "markerunits",
4541
+ "markerwidth",
4542
+ "maskcontentunits",
4543
+ "maskunits",
4544
+ "max",
4545
+ "mask",
4546
+ "mask-type",
4547
+ "media",
4548
+ "method",
4549
+ "mode",
4550
+ "min",
4551
+ "name",
4552
+ "numoctaves",
4553
+ "offset",
4554
+ "operator",
4555
+ "opacity",
4556
+ "order",
4557
+ "orient",
4558
+ "orientation",
4559
+ "origin",
4560
+ "overflow",
4561
+ "paint-order",
4562
+ "path",
4563
+ "pathlength",
4564
+ "patterncontentunits",
4565
+ "patterntransform",
4566
+ "patternunits",
4567
+ "pointer-events",
4568
+ "points",
4569
+ "preservealpha",
4570
+ "preserveaspectratio",
4571
+ "primitiveunits",
4572
+ "r",
4573
+ "rx",
4574
+ "ry",
4575
+ "radius",
4576
+ "refx",
4577
+ "refy",
4578
+ "repeatcount",
4579
+ "repeatdur",
4580
+ "restart",
4581
+ "result",
4582
+ "rotate",
4583
+ "scale",
4584
+ "seed",
4585
+ "shape-rendering",
4586
+ "slope",
4587
+ "specularconstant",
4588
+ "specularexponent",
4589
+ "spreadmethod",
4590
+ "startoffset",
4591
+ "stddeviation",
4592
+ "stitchtiles",
4593
+ "stop-color",
4594
+ "stop-opacity",
4595
+ "stroke-dasharray",
4596
+ "stroke-dashoffset",
4597
+ "stroke-linecap",
4598
+ "stroke-linejoin",
4599
+ "stroke-miterlimit",
4600
+ "stroke-opacity",
4601
+ "stroke",
4602
+ "stroke-width",
4603
+ "style",
4604
+ "surfacescale",
4605
+ "systemlanguage",
4606
+ "tabindex",
4607
+ "tablevalues",
4608
+ "targetx",
4609
+ "targety",
4610
+ "transform",
4611
+ "transform-origin",
4612
+ "text-anchor",
4613
+ "text-decoration",
4614
+ "text-orientation",
4615
+ "text-rendering",
4616
+ "textlength",
4617
+ "type",
4618
+ "u1",
4619
+ "u2",
4620
+ "unicode",
4621
+ "values",
4622
+ "vector-effect",
4623
+ "viewbox",
4624
+ "visibility",
4625
+ "version",
4626
+ "vert-adv-y",
4627
+ "vert-origin-x",
4628
+ "vert-origin-y",
4629
+ "width",
4630
+ "word-spacing",
4631
+ "wrap",
4632
+ "writing-mode",
4633
+ "xchannelselector",
4634
+ "ychannelselector",
4635
+ "x",
4636
+ "x1",
4637
+ "x2",
4638
+ "xmlns",
4639
+ "y",
4640
+ "y1",
4641
+ "y2",
4642
+ "z",
4643
+ "zoomandpan"
4644
+ ]);
4645
+ const mathMl = freeze([
4646
+ "accent",
4647
+ "accentunder",
4648
+ "align",
4649
+ "bevelled",
4650
+ "close",
4651
+ "columnalign",
4652
+ "columnlines",
4653
+ "columnspacing",
4654
+ "columnspan",
4655
+ "denomalign",
4656
+ "depth",
4657
+ "dir",
4658
+ "display",
4659
+ "displaystyle",
4660
+ "encoding",
4661
+ "fence",
4662
+ "frame",
4663
+ "height",
4664
+ "href",
4665
+ "id",
4666
+ "largeop",
4667
+ "length",
4668
+ "linethickness",
4669
+ "lquote",
4670
+ "lspace",
4671
+ "mathbackground",
4672
+ "mathcolor",
4673
+ "mathsize",
4674
+ "mathvariant",
4675
+ "maxsize",
4676
+ "minsize",
4677
+ "movablelimits",
4678
+ "notation",
4679
+ "numalign",
4680
+ "open",
4681
+ "rowalign",
4682
+ "rowlines",
4683
+ "rowspacing",
4684
+ "rowspan",
4685
+ "rspace",
4686
+ "rquote",
4687
+ "scriptlevel",
4688
+ "scriptminsize",
4689
+ "scriptsizemultiplier",
4690
+ "selection",
4691
+ "separator",
4692
+ "separators",
4693
+ "stretchy",
4694
+ "subscriptshift",
4695
+ "supscriptshift",
4696
+ "symmetric",
4697
+ "voffset",
4698
+ "width",
4699
+ "xmlns"
4700
+ ]);
4701
+ const xml = freeze([
4702
+ "xlink:href",
4703
+ "xml:id",
4704
+ "xlink:title",
4705
+ "xml:space",
4706
+ "xmlns:xlink"
4707
+ ]);
4708
+ const MUSTACHE_EXPR = seal(/{{[\w\W]*|^[\w\W]*}}/g);
4709
+ const ERB_EXPR = seal(/<%[\w\W]*|^[\w\W]*%>/g);
4710
+ const TMPLIT_EXPR = seal(/\${[\w\W]*/g);
3984
4711
  const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/);
3985
4712
  const ARIA_ATTR = seal(/^aria-[\-\w]+$/);
3986
- const IS_ALLOWED_URI = seal(
3987
- /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
3988
- );
4713
+ const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i);
3989
4714
  const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
3990
- const ATTR_WHITESPACE = seal(
3991
- /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
3992
- );
4715
+ const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g);
3993
4716
  const DOCTYPE_NAME = seal(/^html$/i);
3994
4717
  const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
3995
- var EXPRESSIONS = /* @__PURE__ */ Object.freeze({
3996
- __proto__: null,
3997
- ARIA_ATTR,
3998
- ATTR_WHITESPACE,
3999
- CUSTOM_ELEMENT,
4000
- DATA_ATTR,
4001
- DOCTYPE_NAME,
4002
- ERB_EXPR,
4003
- IS_ALLOWED_URI,
4004
- IS_SCRIPT_OR_DATA,
4005
- MUSTACHE_EXPR,
4006
- TMPLIT_EXPR
4007
- });
4718
+ const ELEMENT_MARKUP_PROBE = seal(/<[/\w!]/g);
4719
+ const COMMENT_MARKUP_PROBE = seal(/<[/\w]/g);
4720
+ const FALLBACK_TAG_CLOSE = seal(/<\/no(script|embed|frames)/i);
4721
+ const SELF_CLOSING_TAG = seal(/\/>/i);
4008
4722
  const NODE_TYPE = {
4009
4723
  element: 1,
4010
4724
  attribute: 2,
@@ -4012,25 +4726,33 @@ const NODE_TYPE = {
4012
4726
  cdataSection: 4,
4013
4727
  entityReference: 5,
4014
4728
  entityNode: 6,
4015
- progressingInstruction: 7,
4729
+ processingInstruction: 7,
4016
4730
  comment: 8,
4017
4731
  document: 9,
4018
4732
  documentType: 10,
4019
4733
  documentFragment: 11,
4020
4734
  notation: 12
4021
4735
  };
4736
+ const LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, [
4737
+ "style",
4738
+ "script",
4739
+ "xmp",
4740
+ "iframe",
4741
+ "noembed",
4742
+ "noframes",
4743
+ "plaintext",
4744
+ "noscript"
4745
+ ]));
4022
4746
  const getGlobal = function getGlobal2() {
4023
4747
  return typeof window === "undefined" ? null : window;
4024
4748
  };
4025
4749
  const _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, purifyHostElement) {
4026
- if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") {
4750
+ if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function")
4027
4751
  return null;
4028
- }
4029
4752
  let suffix = null;
4030
4753
  const ATTR_NAME = "data-tt-policy-suffix";
4031
- if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
4754
+ if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME))
4032
4755
  suffix = purifyHostElement.getAttribute(ATTR_NAME);
4033
- }
4034
4756
  const policyName = "dompurify" + (suffix ? "#" + suffix : "");
4035
4757
  try {
4036
4758
  return trustedTypes.createPolicy(policyName, {
@@ -4059,73 +4781,112 @@ const _createHooksMap = function _createHooksMap2() {
4059
4781
  uponSanitizeShadowNode: []
4060
4782
  };
4061
4783
  };
4784
+ const _resolveSetOption = function _resolveSetOption2(cfg, key, fallback, options) {
4785
+ return objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key]) ? addToSet(options.base ? clone(options.base) : {}, cfg[key], options.transform) : fallback;
4786
+ };
4787
+ const _resolveObjectOption = function _resolveObjectOption2(cfg, key, makeFallback) {
4788
+ const value = objectHasOwnProperty(cfg, key) ? cfg[key] : void 0;
4789
+ return value && typeof value === "object" ? clone(value) : makeFallback();
4790
+ };
4062
4791
  function createDOMPurify() {
4063
4792
  let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
4064
4793
  const DOMPurify = (root) => createDOMPurify(root);
4065
- DOMPurify.version = "3.3.1";
4794
+ DOMPurify.version = "3.4.17";
4066
4795
  DOMPurify.removed = [];
4067
4796
  if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
4068
4797
  DOMPurify.isSupported = false;
4069
4798
  return DOMPurify;
4070
4799
  }
4071
- let {
4072
- document: document2
4073
- } = window2;
4800
+ let document2 = window2.document;
4074
4801
  const originalDocument = document2;
4075
4802
  const currentScript = originalDocument.currentScript;
4076
- const {
4077
- DocumentFragment,
4078
- HTMLTemplateElement,
4079
- Node: Node2,
4080
- Element: Element2,
4081
- NodeFilter,
4082
- NamedNodeMap = window2.NamedNodeMap || window2.MozNamedAttrMap,
4083
- HTMLFormElement,
4084
- DOMParser: DOMParser2,
4085
- trustedTypes
4086
- } = window2;
4803
+ window2.DocumentFragment;
4804
+ const HTMLTemplateElement = window2.HTMLTemplateElement, Node2 = window2.Node, Element2 = window2.Element, NodeFilter = window2.NodeFilter;
4805
+ window2.NamedNodeMap === void 0 && (window2.NamedNodeMap || window2.MozNamedAttrMap);
4806
+ window2.HTMLFormElement;
4807
+ const DOMParser2 = window2.DOMParser, trustedTypes = window2.trustedTypes;
4087
4808
  const ElementPrototype = Element2.prototype;
4088
4809
  const cloneNode2 = lookupGetter(ElementPrototype, "cloneNode");
4089
4810
  const remove = lookupGetter(ElementPrototype, "remove");
4811
+ const removeAttributeNode = lookupGetter(ElementPrototype, "removeAttributeNode");
4090
4812
  const getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
4091
4813
  const getChildNodes = lookupGetter(ElementPrototype, "childNodes");
4092
4814
  const getParentNode = lookupGetter(ElementPrototype, "parentNode");
4815
+ const getShadowRoot = lookupGetter(ElementPrototype, "shadowRoot");
4816
+ const getAttributes = lookupGetter(ElementPrototype, "attributes");
4817
+ const getNodeType = Node2 && Node2.prototype ? lookupGetter(Node2.prototype, "nodeType") : null;
4818
+ const getNodeName = Node2 && Node2.prototype ? lookupGetter(Node2.prototype, "nodeName") : null;
4819
+ const getOwnerDocument = Node2 && Node2.prototype ? lookupGetter(Node2.prototype, "ownerDocument") : null;
4820
+ const _readNodeType = function _readNodeType2(node2) {
4821
+ return getNodeType ? getNodeType(node2) : node2.nodeType;
4822
+ };
4823
+ const _readNodeName = function _readNodeName2(node2) {
4824
+ return getNodeName ? getNodeName(node2) : node2.nodeName;
4825
+ };
4826
+ const getNamespaceURI = lookupAccessor(ElementPrototype, "namespaceURI");
4827
+ const _readNamespaceURI = function _readNamespaceURI2(element) {
4828
+ return getNamespaceURI ? getNamespaceURI(element) : element.namespaceURI;
4829
+ };
4093
4830
  if (typeof HTMLTemplateElement === "function") {
4094
4831
  const template2 = document2.createElement("template");
4095
- if (template2.content && template2.content.ownerDocument) {
4832
+ if (template2.content && template2.content.ownerDocument)
4096
4833
  document2 = template2.content.ownerDocument;
4097
- }
4098
4834
  }
4099
4835
  let trustedTypesPolicy;
4100
4836
  let emptyHTML = "";
4101
- const {
4102
- implementation,
4103
- createNodeIterator,
4104
- createDocumentFragment,
4105
- getElementsByTagName
4106
- } = document2;
4107
- const {
4108
- importNode
4109
- } = originalDocument;
4837
+ let defaultTrustedTypesPolicy;
4838
+ let defaultTrustedTypesPolicyResolved = false;
4839
+ let IN_TRUSTED_TYPES_POLICY = 0;
4840
+ const _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy2() {
4841
+ if (IN_TRUSTED_TYPES_POLICY > 0)
4842
+ throw typeErrorCreate('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.');
4843
+ };
4844
+ const _createTrustedHTML = function _createTrustedHTML2(html2) {
4845
+ _assertNotInTrustedTypesPolicy();
4846
+ IN_TRUSTED_TYPES_POLICY++;
4847
+ try {
4848
+ return trustedTypesPolicy.createHTML(html2);
4849
+ } finally {
4850
+ IN_TRUSTED_TYPES_POLICY--;
4851
+ }
4852
+ };
4853
+ const _createTrustedScriptURL = function _createTrustedScriptURL2(scriptUrl) {
4854
+ _assertNotInTrustedTypesPolicy();
4855
+ IN_TRUSTED_TYPES_POLICY++;
4856
+ try {
4857
+ return trustedTypesPolicy.createScriptURL(scriptUrl);
4858
+ } finally {
4859
+ IN_TRUSTED_TYPES_POLICY--;
4860
+ }
4861
+ };
4862
+ const _getDefaultTrustedTypesPolicy = function _getDefaultTrustedTypesPolicy2() {
4863
+ if (!defaultTrustedTypesPolicyResolved) {
4864
+ defaultTrustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
4865
+ defaultTrustedTypesPolicyResolved = true;
4866
+ }
4867
+ return defaultTrustedTypesPolicy;
4868
+ };
4869
+ const _document = document2, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;
4870
+ const importNode = originalDocument.importNode;
4110
4871
  let hooks = _createHooksMap();
4111
4872
  DOMPurify.isSupported = typeof entries === "function" && typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0;
4112
- const {
4113
- MUSTACHE_EXPR: MUSTACHE_EXPR2,
4114
- ERB_EXPR: ERB_EXPR2,
4115
- TMPLIT_EXPR: TMPLIT_EXPR2,
4116
- DATA_ATTR: DATA_ATTR2,
4117
- ARIA_ATTR: ARIA_ATTR2,
4118
- IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA2,
4119
- ATTR_WHITESPACE: ATTR_WHITESPACE2,
4120
- CUSTOM_ELEMENT: CUSTOM_ELEMENT2
4121
- } = EXPRESSIONS;
4122
- let {
4123
- IS_ALLOWED_URI: IS_ALLOWED_URI$1
4124
- } = EXPRESSIONS;
4873
+ const MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;
4874
+ let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
4125
4875
  let ALLOWED_TAGS = null;
4126
- const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
4876
+ const DEFAULT_ALLOWED_TAGS = addToSet({}, [
4877
+ ...html$1,
4878
+ ...svg$1,
4879
+ ...svgFilters,
4880
+ ...mathMl$1,
4881
+ ...text
4882
+ ]);
4127
4883
  let ALLOWED_ATTR = null;
4128
- const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
4884
+ const DEFAULT_ALLOWED_ATTR = addToSet({}, [
4885
+ ...html,
4886
+ ...svg,
4887
+ ...mathMl,
4888
+ ...xml
4889
+ ]);
4129
4890
  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
4130
4891
  tagNameCheck: {
4131
4892
  writable: true,
@@ -4170,6 +4931,8 @@ function createDOMPurify() {
4170
4931
  let SAFE_FOR_XML = true;
4171
4932
  let WHOLE_DOCUMENT = false;
4172
4933
  let SET_CONFIG = false;
4934
+ let SET_CONFIG_ALLOWED_TAGS = null;
4935
+ let SET_CONFIG_ALLOWED_ATTR = null;
4173
4936
  let FORCE_BODY = false;
4174
4937
  let RETURN_DOM = false;
4175
4938
  let RETURN_DOM_FRAGMENT = false;
@@ -4179,23 +4942,91 @@ function createDOMPurify() {
4179
4942
  const SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
4180
4943
  let KEEP_CONTENT = true;
4181
4944
  let IN_PLACE = false;
4945
+ let IN_PLACE_VISITED = null;
4182
4946
  let USE_PROFILES = {};
4183
4947
  let FORBID_CONTENTS = null;
4184
- 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"]);
4948
+ const DEFAULT_FORBID_CONTENTS = addToSet({}, [
4949
+ "annotation-xml",
4950
+ "audio",
4951
+ "colgroup",
4952
+ "desc",
4953
+ "foreignobject",
4954
+ "head",
4955
+ "iframe",
4956
+ "math",
4957
+ "mi",
4958
+ "mn",
4959
+ "mo",
4960
+ "ms",
4961
+ "mtext",
4962
+ "noembed",
4963
+ "noframes",
4964
+ "noscript",
4965
+ "plaintext",
4966
+ "script",
4967
+ "selectedcontent",
4968
+ "style",
4969
+ "svg",
4970
+ "template",
4971
+ "thead",
4972
+ "title",
4973
+ "video",
4974
+ "xmp"
4975
+ ]);
4185
4976
  let DATA_URI_TAGS = null;
4186
- const DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
4977
+ const DEFAULT_DATA_URI_TAGS = addToSet({}, [
4978
+ "audio",
4979
+ "video",
4980
+ "img",
4981
+ "source",
4982
+ "image",
4983
+ "track"
4984
+ ]);
4187
4985
  let URI_SAFE_ATTRIBUTES = null;
4188
- const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
4986
+ const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [
4987
+ "alt",
4988
+ "class",
4989
+ "for",
4990
+ "id",
4991
+ "label",
4992
+ "name",
4993
+ "pattern",
4994
+ "placeholder",
4995
+ "role",
4996
+ "summary",
4997
+ "title",
4998
+ "value",
4999
+ "style",
5000
+ "xmlns"
5001
+ ]);
4189
5002
  const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
4190
5003
  const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
4191
5004
  const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
4192
5005
  let NAMESPACE = HTML_NAMESPACE;
4193
5006
  let IS_EMPTY_INPUT = false;
4194
5007
  let ALLOWED_NAMESPACES = null;
4195
- const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
4196
- let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
4197
- let HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]);
4198
- const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]);
5008
+ const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [
5009
+ MATHML_NAMESPACE,
5010
+ SVG_NAMESPACE,
5011
+ HTML_NAMESPACE
5012
+ ], stringToString);
5013
+ const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([
5014
+ "mi",
5015
+ "mo",
5016
+ "mn",
5017
+ "ms",
5018
+ "mtext"
5019
+ ]);
5020
+ let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);
5021
+ const DEFAULT_HTML_INTEGRATION_POINTS = freeze(["annotation-xml"]);
5022
+ let HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);
5023
+ const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [
5024
+ "title",
5025
+ "style",
5026
+ "font",
5027
+ "a",
5028
+ "script"
5029
+ ]);
4199
5030
  let PARSER_MEDIA_TYPE = null;
4200
5031
  const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
4201
5032
  const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
@@ -4207,24 +5038,28 @@ function createDOMPurify() {
4207
5038
  };
4208
5039
  const _parseConfig = function _parseConfig2() {
4209
5040
  let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
4210
- if (CONFIG && CONFIG === cfg) {
5041
+ if (CONFIG && CONFIG === cfg)
4211
5042
  return;
4212
- }
4213
- if (!cfg || typeof cfg !== "object") {
5043
+ if (!cfg || typeof cfg !== "object")
4214
5044
  cfg = {};
4215
- }
4216
5045
  cfg = clone(cfg);
4217
5046
  PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
4218
5047
  transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
4219
- ALLOWED_TAGS = objectHasOwnProperty(cfg, "ALLOWED_TAGS") ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
4220
- ALLOWED_ATTR = objectHasOwnProperty(cfg, "ALLOWED_ATTR") ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
4221
- ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, "ALLOWED_NAMESPACES") ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
4222
- URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
4223
- DATA_URI_TAGS = objectHasOwnProperty(cfg, "ADD_DATA_URI_TAGS") ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
4224
- FORBID_CONTENTS = objectHasOwnProperty(cfg, "FORBID_CONTENTS") ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
4225
- FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
4226
- FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
4227
- USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES : false;
5048
+ ALLOWED_TAGS = _resolveSetOption(cfg, "ALLOWED_TAGS", DEFAULT_ALLOWED_TAGS, { transform: transformCaseFunc });
5049
+ ALLOWED_ATTR = _resolveSetOption(cfg, "ALLOWED_ATTR", DEFAULT_ALLOWED_ATTR, { transform: transformCaseFunc });
5050
+ ALLOWED_NAMESPACES = _resolveSetOption(cfg, "ALLOWED_NAMESPACES", DEFAULT_ALLOWED_NAMESPACES, { transform: stringToString });
5051
+ URI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, "ADD_URI_SAFE_ATTR", DEFAULT_URI_SAFE_ATTRIBUTES, {
5052
+ transform: transformCaseFunc,
5053
+ base: DEFAULT_URI_SAFE_ATTRIBUTES
5054
+ });
5055
+ DATA_URI_TAGS = _resolveSetOption(cfg, "ADD_DATA_URI_TAGS", DEFAULT_DATA_URI_TAGS, {
5056
+ transform: transformCaseFunc,
5057
+ base: DEFAULT_DATA_URI_TAGS
5058
+ });
5059
+ FORBID_CONTENTS = _resolveSetOption(cfg, "FORBID_CONTENTS", DEFAULT_FORBID_CONTENTS, { transform: transformCaseFunc });
5060
+ FORBID_TAGS = _resolveSetOption(cfg, "FORBID_TAGS", clone({}), { transform: transformCaseFunc });
5061
+ FORBID_ATTR = _resolveSetOption(cfg, "FORBID_ATTR", clone({}), { transform: transformCaseFunc });
5062
+ USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === "object" ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;
4228
5063
  ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
4229
5064
  ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
4230
5065
  ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
@@ -4240,29 +5075,26 @@ function createDOMPurify() {
4240
5075
  SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;
4241
5076
  KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
4242
5077
  IN_PLACE = cfg.IN_PLACE || false;
4243
- IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
4244
- NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
4245
- MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
4246
- HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
4247
- CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
4248
- if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
4249
- CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
4250
- }
4251
- if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
4252
- CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
4253
- }
4254
- if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") {
4255
- CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
4256
- }
4257
- if (SAFE_FOR_TEMPLATES) {
5078
+ IS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI;
5079
+ NAMESPACE = typeof cfg.NAMESPACE === "string" ? cfg.NAMESPACE : HTML_NAMESPACE;
5080
+ MATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(cfg, "MATHML_TEXT_INTEGRATION_POINTS", () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS));
5081
+ HTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, "HTML_INTEGRATION_POINTS", () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS));
5082
+ const customElementHandling = _resolveObjectOption(cfg, "CUSTOM_ELEMENT_HANDLING", () => create(null));
5083
+ CUSTOM_ELEMENT_HANDLING = create(null);
5084
+ if (objectHasOwnProperty(customElementHandling, "tagNameCheck") && isRegexOrFunction(customElementHandling.tagNameCheck))
5085
+ CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;
5086
+ if (objectHasOwnProperty(customElementHandling, "attributeNameCheck") && isRegexOrFunction(customElementHandling.attributeNameCheck))
5087
+ CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;
5088
+ if (objectHasOwnProperty(customElementHandling, "allowCustomizedBuiltInElements") && typeof customElementHandling.allowCustomizedBuiltInElements === "boolean")
5089
+ CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;
5090
+ seal(CUSTOM_ELEMENT_HANDLING);
5091
+ if (SAFE_FOR_TEMPLATES)
4258
5092
  ALLOW_DATA_ATTR = false;
4259
- }
4260
- if (RETURN_DOM_FRAGMENT) {
5093
+ if (RETURN_DOM_FRAGMENT)
4261
5094
  RETURN_DOM = true;
4262
- }
4263
5095
  if (USE_PROFILES) {
4264
5096
  ALLOWED_TAGS = addToSet({}, text);
4265
- ALLOWED_ATTR = [];
5097
+ ALLOWED_ATTR = create(null);
4266
5098
  if (USE_PROFILES.html === true) {
4267
5099
  addToSet(ALLOWED_TAGS, html$1);
4268
5100
  addToSet(ALLOWED_ATTR, html);
@@ -4283,176 +5115,360 @@ function createDOMPurify() {
4283
5115
  addToSet(ALLOWED_ATTR, xml);
4284
5116
  }
4285
5117
  }
4286
- if (cfg.ADD_TAGS) {
4287
- if (typeof cfg.ADD_TAGS === "function") {
5118
+ EXTRA_ELEMENT_HANDLING.tagCheck = null;
5119
+ EXTRA_ELEMENT_HANDLING.attributeCheck = null;
5120
+ if (objectHasOwnProperty(cfg, "ADD_TAGS")) {
5121
+ if (typeof cfg.ADD_TAGS === "function")
4288
5122
  EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
4289
- } else {
4290
- if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
5123
+ else if (arrayIsArray(cfg.ADD_TAGS)) {
5124
+ if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS)
4291
5125
  ALLOWED_TAGS = clone(ALLOWED_TAGS);
4292
- }
4293
5126
  addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
4294
5127
  }
4295
5128
  }
4296
- if (cfg.ADD_ATTR) {
4297
- if (typeof cfg.ADD_ATTR === "function") {
5129
+ if (objectHasOwnProperty(cfg, "ADD_ATTR")) {
5130
+ if (typeof cfg.ADD_ATTR === "function")
4298
5131
  EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
4299
- } else {
4300
- if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
5132
+ else if (arrayIsArray(cfg.ADD_ATTR)) {
5133
+ if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR)
4301
5134
  ALLOWED_ATTR = clone(ALLOWED_ATTR);
4302
- }
4303
5135
  addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
4304
5136
  }
4305
5137
  }
4306
- if (cfg.ADD_URI_SAFE_ATTR) {
4307
- addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
4308
- }
4309
- if (cfg.FORBID_CONTENTS) {
4310
- if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
4311
- FORBID_CONTENTS = clone(FORBID_CONTENTS);
4312
- }
4313
- addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
4314
- }
4315
- if (cfg.ADD_FORBID_CONTENTS) {
4316
- if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
5138
+ if (objectHasOwnProperty(cfg, "ADD_FORBID_CONTENTS") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {
5139
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS)
4317
5140
  FORBID_CONTENTS = clone(FORBID_CONTENTS);
4318
- }
4319
5141
  addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
4320
5142
  }
4321
- if (KEEP_CONTENT) {
5143
+ if (KEEP_CONTENT)
4322
5144
  ALLOWED_TAGS["#text"] = true;
4323
- }
4324
- if (WHOLE_DOCUMENT) {
4325
- addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
4326
- }
5145
+ if (WHOLE_DOCUMENT)
5146
+ addToSet(ALLOWED_TAGS, [
5147
+ "html",
5148
+ "head",
5149
+ "body"
5150
+ ]);
4327
5151
  if (ALLOWED_TAGS.table) {
4328
5152
  addToSet(ALLOWED_TAGS, ["tbody"]);
4329
5153
  delete FORBID_TAGS.tbody;
4330
5154
  }
4331
5155
  if (cfg.TRUSTED_TYPES_POLICY) {
4332
- if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") {
5156
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function")
4333
5157
  throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
4334
- }
4335
- if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") {
5158
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function")
4336
5159
  throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
4337
- }
5160
+ const previousTrustedTypesPolicy = trustedTypesPolicy;
4338
5161
  trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
4339
- emptyHTML = trustedTypesPolicy.createHTML("");
4340
- } else {
4341
- if (trustedTypesPolicy === void 0) {
4342
- trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
4343
- }
4344
- if (trustedTypesPolicy !== null && typeof emptyHTML === "string") {
4345
- emptyHTML = trustedTypesPolicy.createHTML("");
5162
+ try {
5163
+ emptyHTML = _createTrustedHTML("");
5164
+ } catch (error) {
5165
+ trustedTypesPolicy = previousTrustedTypesPolicy;
5166
+ throw error;
4346
5167
  }
5168
+ } else if (cfg.TRUSTED_TYPES_POLICY === null) {
5169
+ trustedTypesPolicy = void 0;
5170
+ emptyHTML = "";
5171
+ } else {
5172
+ if (trustedTypesPolicy === void 0)
5173
+ trustedTypesPolicy = _getDefaultTrustedTypesPolicy();
5174
+ if (trustedTypesPolicy && typeof emptyHTML === "string")
5175
+ emptyHTML = _createTrustedHTML("");
4347
5176
  }
4348
- if (freeze) {
5177
+ if (freeze)
4349
5178
  freeze(cfg);
4350
- }
4351
5179
  CONFIG = cfg;
4352
5180
  };
4353
- const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
5181
+ const ALL_SVG_TAGS = addToSet({}, [
5182
+ ...svg$1,
5183
+ ...svgFilters,
5184
+ ...svgDisallowed
5185
+ ]);
4354
5186
  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
5187
+ const _checkSvgNamespace = function _checkSvgNamespace2(tagName, parent, parentTagName) {
5188
+ if (parent.namespaceURI === HTML_NAMESPACE)
5189
+ return tagName === "svg";
5190
+ if (parent.namespaceURI === MATHML_NAMESPACE)
5191
+ return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
5192
+ return Boolean(ALL_SVG_TAGS[tagName]);
5193
+ };
5194
+ const _checkMathMlNamespace = function _checkMathMlNamespace2(tagName, parent, parentTagName) {
5195
+ if (parent.namespaceURI === HTML_NAMESPACE)
5196
+ return tagName === "math";
5197
+ if (parent.namespaceURI === SVG_NAMESPACE)
5198
+ return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
5199
+ return Boolean(ALL_MATHML_TAGS[tagName]);
5200
+ };
5201
+ const _checkHtmlNamespace = function _checkHtmlNamespace2(tagName, parent, parentTagName) {
5202
+ if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName])
5203
+ return false;
5204
+ if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName])
5205
+ return false;
5206
+ return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
5207
+ };
4355
5208
  const _checkValidNamespace = function _checkValidNamespace2(element) {
4356
- let parent = getParentNode(element);
4357
- if (!parent || !parent.tagName) {
4358
- parent = {
4359
- namespaceURI: NAMESPACE,
4360
- tagName: "template"
4361
- };
5209
+ const elementNamespace = _readNamespaceURI(element);
5210
+ const tagName = stringToLowerCase(_readNodeName(element));
5211
+ const parentNode = getParentNode(element);
5212
+ let parent;
5213
+ let parentTagName;
5214
+ if (parentNode && _readNodeType(parentNode) === NODE_TYPE.element) {
5215
+ parent = { namespaceURI: _readNamespaceURI(parentNode) };
5216
+ parentTagName = stringToLowerCase(_readNodeName(parentNode));
5217
+ } else {
5218
+ parent = { namespaceURI: NAMESPACE };
5219
+ parentTagName = "template";
4362
5220
  }
4363
- const tagName = stringToLowerCase(element.tagName);
4364
- const parentTagName = stringToLowerCase(parent.tagName);
4365
- if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
5221
+ if (!ALLOWED_NAMESPACES[elementNamespace])
4366
5222
  return false;
4367
- }
4368
- if (element.namespaceURI === SVG_NAMESPACE) {
4369
- if (parent.namespaceURI === HTML_NAMESPACE) {
4370
- return tagName === "svg";
4371
- }
4372
- if (parent.namespaceURI === MATHML_NAMESPACE) {
4373
- return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
4374
- }
4375
- return Boolean(ALL_SVG_TAGS[tagName]);
4376
- }
4377
- if (element.namespaceURI === MATHML_NAMESPACE) {
4378
- if (parent.namespaceURI === HTML_NAMESPACE) {
4379
- return tagName === "math";
4380
- }
4381
- if (parent.namespaceURI === SVG_NAMESPACE) {
4382
- return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
4383
- }
4384
- return Boolean(ALL_MATHML_TAGS[tagName]);
4385
- }
4386
- if (element.namespaceURI === HTML_NAMESPACE) {
4387
- if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
4388
- return false;
4389
- }
4390
- if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
4391
- return false;
4392
- }
4393
- return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
4394
- }
4395
- if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
5223
+ if (elementNamespace === SVG_NAMESPACE)
5224
+ return _checkSvgNamespace(tagName, parent, parentTagName);
5225
+ if (elementNamespace === MATHML_NAMESPACE)
5226
+ return _checkMathMlNamespace(tagName, parent, parentTagName);
5227
+ if (elementNamespace === HTML_NAMESPACE)
5228
+ return _checkHtmlNamespace(tagName, parent, parentTagName);
5229
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[elementNamespace])
4396
5230
  return true;
4397
- }
4398
5231
  return false;
4399
5232
  };
4400
5233
  const _forceRemove = function _forceRemove2(node2) {
4401
- arrayPush(DOMPurify.removed, {
4402
- element: node2
4403
- });
5234
+ arrayPush(DOMPurify.removed, { element: node2 });
4404
5235
  try {
4405
5236
  getParentNode(node2).removeChild(node2);
4406
5237
  } catch (_2) {
4407
5238
  remove(node2);
5239
+ if (!getParentNode(node2))
5240
+ throw typeErrorCreate("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place");
4408
5241
  }
4409
5242
  };
4410
- const _removeAttribute = function _removeAttribute2(name, element) {
5243
+ const _stripAttributeNode = function _stripAttributeNode2(element, attribute, name) {
4411
5244
  try {
4412
- arrayPush(DOMPurify.removed, {
4413
- attribute: element.getAttributeNode(name),
4414
- from: element
4415
- });
5245
+ removeAttributeNode(element, attribute);
4416
5246
  } catch (_2) {
4417
- arrayPush(DOMPurify.removed, {
4418
- attribute: null,
4419
- from: element
5247
+ try {
5248
+ element.removeAttribute(name);
5249
+ } catch (_3) {
5250
+ }
5251
+ }
5252
+ };
5253
+ const _neutralizeRoot = function _neutralizeRoot2(root) {
5254
+ _neutralizeSubtree(root);
5255
+ const childNodes = getChildNodes(root);
5256
+ if (childNodes)
5257
+ arrayForEach(arraySlice(childNodes), (child) => {
5258
+ try {
5259
+ remove(child);
5260
+ } catch (_2) {
5261
+ }
4420
5262
  });
5263
+ const attributes = _readNodeType(root) === NODE_TYPE.element ? getAttributes(root) : null;
5264
+ if (attributes)
5265
+ for (let i2 = attributes.length - 1; i2 >= 0; --i2) {
5266
+ const attribute = attributes[i2];
5267
+ const name = attribute && attribute.name;
5268
+ if (typeof name === "string")
5269
+ _stripAttributeNode(root, attribute, name);
5270
+ }
5271
+ };
5272
+ const _removeAttribute = function _removeAttribute2(name, element, attr) {
5273
+ if (!attr)
5274
+ try {
5275
+ attr = element.getAttributeNode(name);
5276
+ } catch (_2) {
5277
+ attr = null;
5278
+ }
5279
+ arrayPush(DOMPurify.removed, {
5280
+ attribute: attr || null,
5281
+ from: element
5282
+ });
5283
+ try {
5284
+ if (attr)
5285
+ removeAttributeNode(element, attr);
5286
+ else
5287
+ element.removeAttribute(name);
5288
+ } catch (_2) {
5289
+ try {
5290
+ element.removeAttribute(name);
5291
+ } catch (_3) {
5292
+ }
4421
5293
  }
4422
- element.removeAttribute(name);
4423
5294
  if (name === "is") {
4424
- if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
5295
+ if (RETURN_DOM || RETURN_DOM_FRAGMENT)
4425
5296
  try {
4426
5297
  _forceRemove(element);
4427
5298
  } catch (_2) {
4428
5299
  }
4429
- } else {
5300
+ else
4430
5301
  try {
4431
5302
  element.setAttribute(name, "");
4432
5303
  } catch (_2) {
4433
5304
  }
5305
+ }
5306
+ };
5307
+ const _stripDisallowedAttributes = function _stripDisallowedAttributes2(element) {
5308
+ const attributes = getAttributes(element);
5309
+ if (!attributes)
5310
+ return;
5311
+ for (let i2 = attributes.length - 1; i2 >= 0; --i2) {
5312
+ const attribute = attributes[i2];
5313
+ const name = attribute && attribute.name;
5314
+ if (typeof name !== "string" || ALLOWED_ATTR[transformCaseFunc(name)])
5315
+ continue;
5316
+ _stripAttributeNode(element, attribute, name);
5317
+ }
5318
+ };
5319
+ const _walkTree = function _walkTree2(root, visit) {
5320
+ let intoShadow = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
5321
+ const stack = [root];
5322
+ while (stack.length > 0) {
5323
+ const node2 = stack.pop();
5324
+ if (visit(node2) === false)
5325
+ continue;
5326
+ if (intoShadow && _readNodeType(node2) === NODE_TYPE.element) {
5327
+ const shadowRoot = getShadowRoot(node2);
5328
+ if (_isDocumentFragment(shadowRoot))
5329
+ stack.push(shadowRoot);
4434
5330
  }
5331
+ const childNodes = getChildNodes(node2);
5332
+ if (childNodes)
5333
+ for (let i2 = childNodes.length - 1; i2 >= 0; --i2)
5334
+ stack.push(childNodes[i2]);
5335
+ }
5336
+ };
5337
+ const _neutralizeSubtree = function _neutralizeSubtree2(root) {
5338
+ _walkTree(root, (node2) => {
5339
+ if (_readNodeType(node2) === NODE_TYPE.element)
5340
+ _stripDisallowedAttributes(node2);
5341
+ });
5342
+ };
5343
+ const _collectLiveNodes = function _collectLiveNodes2(root) {
5344
+ const nodes = [];
5345
+ _walkTree(root, (node2) => {
5346
+ nodes.push(node2);
5347
+ }, true);
5348
+ return nodes;
5349
+ };
5350
+ const _neutralizeEscapedElements = function _neutralizeEscapedElements2(root, before) {
5351
+ const reachable = setCreate();
5352
+ arrayForEach(_collectLiveNodes(root), (node2) => {
5353
+ if (_readNodeType(node2) === NODE_TYPE.element)
5354
+ setAdd(reachable, node2);
5355
+ });
5356
+ arrayForEach(before, (node2) => {
5357
+ if (_readNodeType(node2) === NODE_TYPE.element && !setHas(reachable, node2))
5358
+ _stripDisallowedAttributes(node2);
5359
+ });
5360
+ };
5361
+ const _neutralizeDiscarded = function _neutralizeDiscarded2(root, before) {
5362
+ let rootRemoved = false;
5363
+ arrayForEach(DOMPurify.removed, (entry) => {
5364
+ if (entry.element) {
5365
+ rootRemoved = rootRemoved || entry.element === root;
5366
+ _neutralizeSubtree(entry.element);
5367
+ }
5368
+ });
5369
+ _neutralizeEscapedElements(root, before);
5370
+ return rootRemoved;
5371
+ };
5372
+ const MAX_UNVISITED_ROUNDS = 8;
5373
+ const _sanitizeUnvisitedNodes = function _sanitizeUnvisitedNodes2(root, before) {
5374
+ const visited = IN_PLACE_VISITED;
5375
+ let original = null;
5376
+ const getOriginal = () => {
5377
+ if (!original) {
5378
+ original = setCreate();
5379
+ arrayForEach(before, (beforeNode) => {
5380
+ setAdd(original, beforeNode);
5381
+ });
5382
+ }
5383
+ return original;
5384
+ };
5385
+ for (let round = 0; ; round++) {
5386
+ const live = _collectLiveNodes(root);
5387
+ const containers = [root];
5388
+ let pending = false;
5389
+ arrayForEach(live, (node2) => {
5390
+ if (_readNodeType(node2) === NODE_TYPE.documentFragment)
5391
+ arrayPush(containers, node2);
5392
+ else if (!pending && !setHas(visited, node2))
5393
+ pending = setHas(getOriginal(), node2);
5394
+ });
5395
+ if (!pending)
5396
+ return;
5397
+ if (round >= MAX_UNVISITED_ROUNDS)
5398
+ throw typeErrorCreate("the tree kept changing during in-place sanitization; refusing to return it");
5399
+ arrayForEach(containers, (container, index2) => {
5400
+ _sanitizeUnvisitedIn(container, index2 > 0, root, getOriginal());
5401
+ });
5402
+ }
5403
+ };
5404
+ const _sanitizeUnvisitedIn = function _sanitizeUnvisitedIn2(container, inShadow, root, original) {
5405
+ const iterator = _createNodeIterator(container);
5406
+ let node2;
5407
+ while (node2 = iterator.nextNode()) {
5408
+ if (!setHas(original, node2) || setHas(IN_PLACE_VISITED, node2))
5409
+ continue;
5410
+ if (inShadow)
5411
+ _executeHooks(hooks.uponSanitizeShadowNode, node2, null);
5412
+ _sanitizeElements(node2, root);
5413
+ _sanitizeAttributes(node2, root);
5414
+ if (_isDocumentFragment(node2.content))
5415
+ _sanitizeShadowDOM2(node2.content);
4435
5416
  }
4436
5417
  };
5418
+ const _markVisited = function _markVisited2(node2) {
5419
+ if (IN_PLACE_VISITED)
5420
+ setAdd(IN_PLACE_VISITED, node2);
5421
+ };
5422
+ const _isPatchLinkageAttribute = function _isPatchLinkageAttribute2(lcName, lcTag) {
5423
+ if (!SAFE_FOR_XML)
5424
+ return false;
5425
+ if (lcName === "patchsrc")
5426
+ return true;
5427
+ return lcName === "for" && lcTag !== "label" && lcTag !== "output";
5428
+ };
5429
+ const _neutralizePatchLinkage = function _neutralizePatchLinkage2(root) {
5430
+ if (!SAFE_FOR_XML)
5431
+ return;
5432
+ _walkTree(root, (node2) => {
5433
+ const nodeType = _readNodeType(node2);
5434
+ if (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node2.data)) {
5435
+ try {
5436
+ remove(node2);
5437
+ } catch (_2) {
5438
+ }
5439
+ return false;
5440
+ }
5441
+ if (nodeType === NODE_TYPE.element) {
5442
+ const element = node2;
5443
+ const lcTag = transformCaseFunc(_readNodeName(node2));
5444
+ try {
5445
+ if (element.hasAttribute && element.hasAttribute("patchsrc"))
5446
+ element.removeAttribute("patchsrc");
5447
+ if (element.hasAttribute && element.hasAttribute("for") && _isPatchLinkageAttribute("for", lcTag))
5448
+ element.removeAttribute("for");
5449
+ } catch (_2) {
5450
+ }
5451
+ }
5452
+ return true;
5453
+ });
5454
+ };
4437
5455
  const _initDocument = function _initDocument2(dirty) {
4438
5456
  let doc = null;
4439
5457
  let leadingWhitespace = null;
4440
- if (FORCE_BODY) {
5458
+ if (FORCE_BODY)
4441
5459
  dirty = "<remove></remove>" + dirty;
4442
- } else {
5460
+ else {
4443
5461
  const matches = stringMatch(dirty, /^[\r\n\t ]+/);
4444
5462
  leadingWhitespace = matches && matches[0];
4445
5463
  }
4446
- if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) {
5464
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE)
4447
5465
  dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
4448
- }
4449
- const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
4450
- if (NAMESPACE === HTML_NAMESPACE) {
5466
+ const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;
5467
+ if (NAMESPACE === HTML_NAMESPACE)
4451
5468
  try {
4452
5469
  doc = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
4453
5470
  } catch (_2) {
4454
5471
  }
4455
- }
4456
5472
  if (!doc || !doc.documentElement) {
4457
5473
  doc = implementation.createDocument(NAMESPACE, "template", null);
4458
5474
  try {
@@ -4461,145 +5477,249 @@ function createDOMPurify() {
4461
5477
  }
4462
5478
  }
4463
5479
  const body = doc.body || doc.documentElement;
4464
- if (dirty && leadingWhitespace) {
5480
+ if (dirty && leadingWhitespace)
4465
5481
  body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
4466
- }
4467
- if (NAMESPACE === HTML_NAMESPACE) {
5482
+ if (NAMESPACE === HTML_NAMESPACE)
4468
5483
  return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
4469
- }
4470
5484
  return WHOLE_DOCUMENT ? doc.documentElement : body;
4471
5485
  };
4472
5486
  const _createNodeIterator = function _createNodeIterator2(root) {
4473
- return createNodeIterator.call(
4474
- root.ownerDocument || root,
4475
- root,
4476
- NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION,
4477
- null
4478
- );
5487
+ const doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;
5488
+ return createNodeIterator.call(doc || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
5489
+ };
5490
+ const _stripTemplateExpressions = function _stripTemplateExpressions2(value) {
5491
+ value = stringReplace(value, MUSTACHE_EXPR$1, " ");
5492
+ value = stringReplace(value, ERB_EXPR$1, " ");
5493
+ value = stringReplace(value, TMPLIT_EXPR$1, " ");
5494
+ return value;
5495
+ };
5496
+ const _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node2) {
5497
+ var _node$querySelectorAl;
5498
+ _scrubOwnCharacterData(node2);
5499
+ const templates = (_node$querySelectorAl = node2.querySelectorAll) === null || _node$querySelectorAl === void 0 ? void 0 : _node$querySelectorAl.call(node2, "template");
5500
+ if (templates)
5501
+ arrayForEach(templates, (tmpl) => {
5502
+ if (_isDocumentFragment(tmpl.content))
5503
+ _scrubTemplateExpressions2(tmpl.content);
5504
+ });
5505
+ };
5506
+ const _scrubOwnCharacterData = function _scrubOwnCharacterData2(node2) {
5507
+ node2.normalize();
5508
+ const doc = getOwnerDocument ? getOwnerDocument(node2) : node2.ownerDocument;
5509
+ const walker = createNodeIterator.call(doc || node2, node2, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
5510
+ let currentNode = walker.nextNode();
5511
+ while (currentNode) {
5512
+ currentNode.data = _stripTemplateExpressions(currentNode.data);
5513
+ currentNode = walker.nextNode();
5514
+ }
4479
5515
  };
4480
5516
  const _isClobbered = function _isClobbered2(element) {
4481
- 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");
5517
+ const realTagName = getNodeName ? getNodeName(element) : null;
5518
+ if (typeof realTagName !== "string")
5519
+ return false;
5520
+ if (transformCaseFunc(realTagName) !== "form")
5521
+ return false;
5522
+ return typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || element.attributes !== getAttributes(element) || typeof element.removeAttribute !== "function" || typeof element.removeAttributeNode !== "function" || typeof element.getAttributeNode !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function" || element.nodeType !== getNodeType(element) || element.childNodes !== getChildNodes(element);
5523
+ };
5524
+ const _isDocumentFragment = function _isDocumentFragment2(value) {
5525
+ if (!getNodeType || typeof value !== "object" || value === null)
5526
+ return false;
5527
+ try {
5528
+ return getNodeType(value) === NODE_TYPE.documentFragment;
5529
+ } catch (_2) {
5530
+ return false;
5531
+ }
4482
5532
  };
4483
5533
  const _isNode = function _isNode2(value) {
4484
- return typeof Node2 === "function" && value instanceof Node2;
5534
+ if (!getNodeType || typeof value !== "object" || value === null)
5535
+ return false;
5536
+ try {
5537
+ return typeof getNodeType(value) === "number";
5538
+ } catch (_2) {
5539
+ return false;
5540
+ }
4485
5541
  };
4486
5542
  function _executeHooks(hooks2, currentNode, data) {
5543
+ if (hooks2.length === 0)
5544
+ return;
4487
5545
  arrayForEach(hooks2, (hook) => {
4488
5546
  hook.call(DOMPurify, currentNode, data, CONFIG);
4489
5547
  });
4490
5548
  }
4491
- const _sanitizeElements = function _sanitizeElements2(currentNode) {
4492
- let content = null;
5549
+ const _isUnsafeNode = function _isUnsafeNode2(currentNode, tagName) {
5550
+ if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML))
5551
+ return true;
5552
+ if (SAFE_FOR_XML && LITERAL_TEXT_ELEMENTS[tagName] && _readNodeType(currentNode) === NODE_TYPE.element && _readNamespaceURI(currentNode) === HTML_NAMESPACE && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === "string" && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent)))
5553
+ return true;
5554
+ if (currentNode.nodeType === NODE_TYPE.processingInstruction)
5555
+ return true;
5556
+ if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data))
5557
+ return true;
5558
+ return false;
5559
+ };
5560
+ const _matchesNameCheck = function _matchesNameCheck2(check, name) {
5561
+ if (check instanceof RegExp)
5562
+ return regExpTest(check, name);
5563
+ if (check instanceof Function) {
5564
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++)
5565
+ args[_key - 2] = arguments[_key];
5566
+ return Boolean(check(name, ...args));
5567
+ }
5568
+ return false;
5569
+ };
5570
+ const _sanitizeDisallowedNode = function _sanitizeDisallowedNode2(currentNode, tagName, root) {
5571
+ if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName))
5572
+ return false;
5573
+ if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && !FORBID_CONTENTS[stringToLowerCase(tagName)]) {
5574
+ const parentNode = getParentNode(currentNode);
5575
+ const childNodes = getChildNodes(currentNode);
5576
+ if (childNodes && parentNode) {
5577
+ const childCount = childNodes.length;
5578
+ for (let i2 = childCount - 1; i2 >= 0; --i2) {
5579
+ const hoisted = currentNode === root ? cloneNode2(childNodes[i2], true) : childNodes[i2];
5580
+ parentNode.insertBefore(hoisted, getNextSibling(currentNode));
5581
+ }
5582
+ }
5583
+ }
5584
+ _forceRemove(currentNode);
5585
+ return true;
5586
+ };
5587
+ const _forkSharedAllowlist = function _forkSharedAllowlist2(hookList, set, defaultSet, setConfigSet) {
5588
+ if (hookList.length === 0)
5589
+ return set;
5590
+ return set === defaultSet || set === setConfigSet ? clone(set) : set;
5591
+ };
5592
+ const _handleHookDetachedNode = function _handleHookDetachedNode2(currentNode, root) {
5593
+ if (currentNode === root || getParentNode(currentNode) !== null)
5594
+ return false;
5595
+ if (IN_PLACE)
5596
+ _neutralizeSubtree(currentNode);
5597
+ return true;
5598
+ };
5599
+ const _sanitizeElements = function _sanitizeElements2(currentNode, root) {
5600
+ _markVisited(currentNode);
4493
5601
  _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
5602
+ if (_handleHookDetachedNode(currentNode, root))
5603
+ return true;
4494
5604
  if (_isClobbered(currentNode)) {
4495
5605
  _forceRemove(currentNode);
4496
5606
  return true;
4497
5607
  }
4498
- const tagName = transformCaseFunc(currentNode.nodeName);
5608
+ const tagName = transformCaseFunc(_readNodeName(currentNode));
5609
+ ALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);
4499
5610
  _executeHooks(hooks.uponSanitizeElement, currentNode, {
4500
5611
  tagName,
4501
5612
  allowedTags: ALLOWED_TAGS
4502
5613
  });
4503
- if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
4504
- _forceRemove(currentNode);
5614
+ if (_handleHookDetachedNode(currentNode, root))
4505
5615
  return true;
4506
- }
4507
- if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
5616
+ if (_isUnsafeNode(currentNode, tagName)) {
4508
5617
  _forceRemove(currentNode);
4509
5618
  return true;
4510
5619
  }
4511
- if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
4512
- _forceRemove(currentNode);
4513
- return true;
4514
- }
4515
- if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {
4516
- if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
4517
- if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
4518
- return false;
4519
- }
4520
- if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
4521
- return false;
4522
- }
4523
- }
4524
- if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
4525
- const parentNode = getParentNode(currentNode) || currentNode.parentNode;
4526
- const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
4527
- if (childNodes && parentNode) {
4528
- const childCount = childNodes.length;
4529
- for (let i2 = childCount - 1; i2 >= 0; --i2) {
4530
- const childClone = cloneNode2(childNodes[i2], true);
4531
- childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
4532
- parentNode.insertBefore(childClone, getNextSibling(currentNode));
4533
- }
4534
- }
5620
+ if (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {
5621
+ const removed = _sanitizeDisallowedNode(currentNode, tagName, root);
5622
+ if (removed === false) {
5623
+ _executeHooks(hooks.afterSanitizeElements, currentNode, null);
5624
+ if (_handleHookDetachedNode(currentNode, root))
5625
+ return true;
4535
5626
  }
4536
- _forceRemove(currentNode);
4537
- return true;
5627
+ return removed;
4538
5628
  }
4539
- if (currentNode instanceof Element2 && !_checkValidNamespace(currentNode)) {
5629
+ if (_readNodeType(currentNode) === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {
4540
5630
  _forceRemove(currentNode);
4541
5631
  return true;
4542
5632
  }
4543
- if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
5633
+ if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(FALLBACK_TAG_CLOSE, currentNode.innerHTML)) {
4544
5634
  _forceRemove(currentNode);
4545
5635
  return true;
4546
5636
  }
4547
5637
  if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
4548
- content = currentNode.textContent;
4549
- arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
4550
- content = stringReplace(content, expr, " ");
4551
- });
5638
+ const content = _stripTemplateExpressions(currentNode.textContent);
4552
5639
  if (currentNode.textContent !== content) {
4553
- arrayPush(DOMPurify.removed, {
4554
- element: currentNode.cloneNode()
4555
- });
5640
+ arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });
4556
5641
  currentNode.textContent = content;
4557
5642
  }
4558
5643
  }
4559
5644
  _executeHooks(hooks.afterSanitizeElements, currentNode, null);
4560
- return false;
5645
+ return _handleHookDetachedNode(currentNode, root);
4561
5646
  };
4562
5647
  const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
4563
- if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
5648
+ if (FORBID_ATTR[lcName])
4564
5649
  return false;
4565
- }
4566
- if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR2, lcName))
4567
- ;
4568
- else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR2, lcName))
4569
- ;
4570
- else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag))
4571
- ;
4572
- else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
4573
- if (_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)) || 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)))
4574
- ;
4575
- else {
5650
+ if (_isPatchLinkageAttribute(lcName, lcTag))
5651
+ return false;
5652
+ if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement))
5653
+ return false;
5654
+ const nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);
5655
+ if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName))
5656
+ return true;
5657
+ if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName))
5658
+ return true;
5659
+ if (!nameIsPermitted)
5660
+ return _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) || lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value);
5661
+ if (URI_SAFE_ATTRIBUTES[lcName])
5662
+ return true;
5663
+ if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, "")))
5664
+ return true;
5665
+ if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag])
5666
+ return true;
5667
+ if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, "")))
5668
+ return true;
5669
+ return !value;
5670
+ };
5671
+ const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [
5672
+ "annotation-xml",
5673
+ "color-profile",
5674
+ "font-face",
5675
+ "font-face-format",
5676
+ "font-face-name",
5677
+ "font-face-src",
5678
+ "font-face-uri",
5679
+ "missing-glyph"
5680
+ ]);
5681
+ const _isBasicCustomElement = function _isBasicCustomElement2(tagName) {
5682
+ return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);
5683
+ };
5684
+ const _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute2(lcTag, lcName, namespaceURI, value) {
5685
+ if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function" && !namespaceURI)
5686
+ switch (trustedTypes.getAttributeType(lcTag, lcName)) {
5687
+ case "TrustedHTML":
5688
+ return _createTrustedHTML(value);
5689
+ case "TrustedScriptURL":
5690
+ return _createTrustedScriptURL(value);
5691
+ }
5692
+ return value;
5693
+ };
5694
+ const _setAttributeValue = function _setAttributeValue2(currentNode, name, namespaceURI, value) {
5695
+ try {
5696
+ if (namespaceURI)
5697
+ currentNode.setAttributeNS(namespaceURI, name, value);
5698
+ else
5699
+ currentNode.setAttribute(name, value);
5700
+ if (_isClobbered(currentNode)) {
5701
+ _forceRemove(currentNode);
4576
5702
  return false;
4577
5703
  }
4578
- } else if (URI_SAFE_ATTRIBUTES[lcName])
4579
- ;
4580
- else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE2, "")))
4581
- ;
4582
- else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag])
4583
- ;
4584
- else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA2, stringReplace(value, ATTR_WHITESPACE2, "")))
4585
- ;
4586
- else if (value) {
5704
+ return true;
5705
+ } catch (_2) {
5706
+ _removeAttribute(name, currentNode);
4587
5707
  return false;
4588
- } else
4589
- ;
4590
- return true;
5708
+ }
4591
5709
  };
4592
- const _isBasicCustomElement = function _isBasicCustomElement2(tagName) {
4593
- return tagName !== "annotation-xml" && stringMatch(tagName, CUSTOM_ELEMENT2);
5710
+ const _isUnsafeAttributeValue = function _isUnsafeAttributeValue2(name, value) {
5711
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value))
5712
+ return true;
5713
+ return stringToLowerCase(name) === "attributename" && stringMatch(value, "href") !== null;
4594
5714
  };
4595
- const _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
5715
+ const _sanitizeAttributes = function _sanitizeAttributes2(currentNode, root) {
4596
5716
  _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
4597
- const {
4598
- attributes
4599
- } = currentNode;
4600
- if (!attributes || _isClobbered(currentNode)) {
5717
+ if (_handleHookDetachedNode(currentNode, root))
4601
5718
  return;
4602
- }
5719
+ const attributes = currentNode.attributes;
5720
+ if (!attributes || _isClobbered(currentNode))
5721
+ return;
5722
+ ALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);
4603
5723
  const hookEvent = {
4604
5724
  attrName: "",
4605
5725
  attrValue: "",
@@ -4608,104 +5728,120 @@ function createDOMPurify() {
4608
5728
  forceKeepAttr: void 0
4609
5729
  };
4610
5730
  let l2 = attributes.length;
5731
+ const lcTag = transformCaseFunc(currentNode.nodeName);
4611
5732
  while (l2--) {
4612
5733
  const attr = attributes[l2];
4613
- const {
4614
- name,
4615
- namespaceURI,
4616
- value: attrValue
4617
- } = attr;
5734
+ const name = attr.name, namespaceURI = attr.namespaceURI, attrValue = attr.value;
4618
5735
  const lcName = transformCaseFunc(name);
4619
5736
  const initValue = attrValue;
4620
5737
  let value = name === "value" ? initValue : stringTrim(initValue);
5738
+ let recreatedNamedProp = false;
4621
5739
  hookEvent.attrName = lcName;
4622
5740
  hookEvent.attrValue = value;
4623
5741
  hookEvent.keepAttr = true;
4624
5742
  hookEvent.forceKeepAttr = void 0;
4625
5743
  _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
4626
5744
  value = hookEvent.attrValue;
4627
- if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) {
4628
- _removeAttribute(name, currentNode);
5745
+ if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name") && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {
5746
+ _removeAttribute(name, currentNode, attr);
4629
5747
  value = SANITIZE_NAMED_PROPS_PREFIX + value;
5748
+ recreatedNamedProp = true;
4630
5749
  }
4631
- if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) {
4632
- _removeAttribute(name, currentNode);
5750
+ if (_isUnsafeAttributeValue(name, value)) {
5751
+ _removeAttribute(name, currentNode, attr);
4633
5752
  continue;
4634
5753
  }
4635
- if (lcName === "attributename" && stringMatch(value, "href")) {
4636
- _removeAttribute(name, currentNode);
5754
+ if (hookEvent.forceKeepAttr)
4637
5755
  continue;
4638
- }
4639
- if (hookEvent.forceKeepAttr) {
4640
- continue;
4641
- }
4642
5756
  if (!hookEvent.keepAttr) {
4643
- _removeAttribute(name, currentNode);
5757
+ _removeAttribute(name, currentNode, attr);
4644
5758
  continue;
4645
5759
  }
4646
- if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
4647
- _removeAttribute(name, currentNode);
5760
+ if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)) {
5761
+ _removeAttribute(name, currentNode, attr);
4648
5762
  continue;
4649
5763
  }
4650
- if (SAFE_FOR_TEMPLATES) {
4651
- arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
4652
- value = stringReplace(value, expr, " ");
4653
- });
4654
- }
4655
- const lcTag = transformCaseFunc(currentNode.nodeName);
5764
+ if (SAFE_FOR_TEMPLATES)
5765
+ value = _stripTemplateExpressions(value);
4656
5766
  if (!_isValidAttribute(lcTag, lcName, value)) {
4657
- _removeAttribute(name, currentNode);
5767
+ _removeAttribute(name, currentNode, attr);
4658
5768
  continue;
4659
5769
  }
4660
- if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") {
4661
- if (namespaceURI)
4662
- ;
4663
- else {
4664
- switch (trustedTypes.getAttributeType(lcTag, lcName)) {
4665
- case "TrustedHTML": {
4666
- value = trustedTypesPolicy.createHTML(value);
4667
- break;
4668
- }
4669
- case "TrustedScriptURL": {
4670
- value = trustedTypesPolicy.createScriptURL(value);
4671
- break;
4672
- }
4673
- }
4674
- }
4675
- }
5770
+ value = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);
4676
5771
  if (value !== initValue) {
4677
- try {
4678
- if (namespaceURI) {
4679
- currentNode.setAttributeNS(namespaceURI, name, value);
4680
- } else {
4681
- currentNode.setAttribute(name, value);
4682
- }
4683
- if (_isClobbered(currentNode)) {
4684
- _forceRemove(currentNode);
4685
- } else {
4686
- arrayPop(DOMPurify.removed);
4687
- }
4688
- } catch (_2) {
4689
- _removeAttribute(name, currentNode);
4690
- }
5772
+ if (_setAttributeValue(currentNode, name, namespaceURI, value) && recreatedNamedProp)
5773
+ arrayPop(DOMPurify.removed);
4691
5774
  }
4692
5775
  }
4693
5776
  _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
5777
+ _handleHookDetachedNode(currentNode, root);
4694
5778
  };
4695
- const _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {
5779
+ const _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {
4696
5780
  let shadowNode = null;
4697
5781
  const shadowIterator = _createNodeIterator(fragment);
4698
5782
  _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
4699
5783
  while (shadowNode = shadowIterator.nextNode()) {
4700
5784
  _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
4701
- _sanitizeElements(shadowNode);
4702
- _sanitizeAttributes(shadowNode);
4703
- if (shadowNode.content instanceof DocumentFragment) {
5785
+ _sanitizeElements(shadowNode, fragment);
5786
+ _sanitizeAttributes(shadowNode, fragment);
5787
+ if (_isDocumentFragment(shadowNode.content))
4704
5788
  _sanitizeShadowDOM2(shadowNode.content);
5789
+ if (_readNodeType(shadowNode) === NODE_TYPE.element) {
5790
+ const innerSr = getShadowRoot(shadowNode);
5791
+ if (_isDocumentFragment(innerSr)) {
5792
+ _sanitizeAttachedShadowRoots(innerSr);
5793
+ _sanitizeShadowDOM2(innerSr);
5794
+ }
4705
5795
  }
4706
5796
  }
5797
+ if (SAFE_FOR_TEMPLATES)
5798
+ _scrubOwnCharacterData(fragment);
4707
5799
  _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
4708
5800
  };
5801
+ const _sanitizeAttachedShadowRoots = function _sanitizeAttachedShadowRoots2(root) {
5802
+ const stack = [{
5803
+ node: root,
5804
+ shadow: null
5805
+ }];
5806
+ while (stack.length > 0) {
5807
+ const item = stack.pop();
5808
+ if (item.shadow) {
5809
+ _sanitizeShadowDOM2(item.shadow);
5810
+ continue;
5811
+ }
5812
+ const node2 = item.node;
5813
+ const isElement = _readNodeType(node2) === NODE_TYPE.element;
5814
+ const childNodes = getChildNodes(node2);
5815
+ if (childNodes)
5816
+ for (let i2 = childNodes.length - 1; i2 >= 0; --i2)
5817
+ stack.push({
5818
+ node: childNodes[i2],
5819
+ shadow: null
5820
+ });
5821
+ if (isElement) {
5822
+ const rootName = getNodeName ? getNodeName(node2) : null;
5823
+ if (typeof rootName === "string" && transformCaseFunc(rootName) === "template") {
5824
+ const content = node2.content;
5825
+ if (_isDocumentFragment(content))
5826
+ stack.push({
5827
+ node: content,
5828
+ shadow: null
5829
+ });
5830
+ }
5831
+ }
5832
+ if (isElement) {
5833
+ const sr = getShadowRoot(node2);
5834
+ if (_isDocumentFragment(sr))
5835
+ stack.push({
5836
+ node: null,
5837
+ shadow: sr
5838
+ }, {
5839
+ node: sr,
5840
+ shadow: null
5841
+ });
5842
+ }
5843
+ }
5844
+ };
4709
5845
  DOMPurify.sanitize = function(dirty) {
4710
5846
  let cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
4711
5847
  let body = null;
@@ -4713,118 +5849,146 @@ function createDOMPurify() {
4713
5849
  let currentNode = null;
4714
5850
  let returnNode = null;
4715
5851
  IS_EMPTY_INPUT = !dirty;
4716
- if (IS_EMPTY_INPUT) {
5852
+ if (IS_EMPTY_INPUT)
4717
5853
  dirty = "<!-->";
4718
- }
4719
5854
  if (typeof dirty !== "string" && !_isNode(dirty)) {
4720
- if (typeof dirty.toString === "function") {
4721
- dirty = dirty.toString();
4722
- if (typeof dirty !== "string") {
4723
- throw typeErrorCreate("dirty is not a string, aborting");
4724
- }
4725
- } else {
4726
- throw typeErrorCreate("toString is not a function");
4727
- }
5855
+ dirty = stringifyValue(dirty);
5856
+ if (typeof dirty !== "string")
5857
+ throw typeErrorCreate("dirty is not a string, aborting");
4728
5858
  }
4729
- if (!DOMPurify.isSupported) {
5859
+ if (!DOMPurify.isSupported)
4730
5860
  return dirty;
4731
- }
4732
- if (!SET_CONFIG) {
5861
+ if (SET_CONFIG) {
5862
+ ALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;
5863
+ ALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;
5864
+ } else
4733
5865
  _parseConfig(cfg);
4734
- }
5866
+ if (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0)
5867
+ ALLOWED_TAGS = clone(ALLOWED_TAGS);
5868
+ if (hooks.uponSanitizeAttribute.length > 0)
5869
+ ALLOWED_ATTR = clone(ALLOWED_ATTR);
4735
5870
  DOMPurify.removed = [];
4736
- if (typeof dirty === "string") {
4737
- IN_PLACE = false;
4738
- }
4739
- if (IN_PLACE) {
4740
- if (dirty.nodeName) {
4741
- const tagName = transformCaseFunc(dirty.nodeName);
5871
+ const inPlace = IN_PLACE && typeof dirty !== "string" && _isNode(dirty);
5872
+ let inPlaceNodes = [];
5873
+ const outerVisited = IN_PLACE_VISITED;
5874
+ if (inPlace) {
5875
+ _neutralizePatchLinkage(dirty);
5876
+ const nn = _readNodeName(dirty);
5877
+ if (typeof nn === "string") {
5878
+ const tagName = transformCaseFunc(nn);
4742
5879
  if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
5880
+ _neutralizeRoot(dirty);
4743
5881
  throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
4744
5882
  }
4745
5883
  }
4746
- } else if (dirty instanceof Node2) {
5884
+ if (_isClobbered(dirty)) {
5885
+ _neutralizeRoot(dirty);
5886
+ throw typeErrorCreate("root node is clobbered and cannot be sanitized in-place");
5887
+ }
5888
+ inPlaceNodes = _collectLiveNodes(dirty);
5889
+ IN_PLACE_VISITED = setCreate();
5890
+ } else if (_isNode(dirty)) {
4747
5891
  body = _initDocument("<!---->");
4748
5892
  importedNode = body.ownerDocument.importNode(dirty, true);
4749
- if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") {
5893
+ if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY")
4750
5894
  body = importedNode;
4751
- } else if (importedNode.nodeName === "HTML") {
5895
+ else if (importedNode.nodeName === "HTML")
4752
5896
  body = importedNode;
4753
- } else {
5897
+ else
4754
5898
  body.appendChild(importedNode);
4755
- }
5899
+ _sanitizeAttachedShadowRoots(body);
4756
5900
  } else {
4757
- if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf("<") === -1) {
4758
- return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
4759
- }
5901
+ if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf("<") === -1)
5902
+ return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;
4760
5903
  body = _initDocument(dirty);
4761
- if (!body) {
5904
+ if (!body)
4762
5905
  return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
4763
- }
4764
5906
  }
4765
- if (body && FORCE_BODY) {
5907
+ if (body && FORCE_BODY)
4766
5908
  _forceRemove(body.firstChild);
4767
- }
4768
- const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
4769
- while (currentNode = nodeIterator.nextNode()) {
4770
- _sanitizeElements(currentNode);
4771
- _sanitizeAttributes(currentNode);
4772
- if (currentNode.content instanceof DocumentFragment) {
4773
- _sanitizeShadowDOM(currentNode.content);
5909
+ const walkRoot = inPlace ? dirty : body;
5910
+ try {
5911
+ if (inPlace)
5912
+ _sanitizeAttachedShadowRoots(dirty);
5913
+ const nodeIterator = _createNodeIterator(walkRoot);
5914
+ while (currentNode = nodeIterator.nextNode()) {
5915
+ _sanitizeElements(currentNode, walkRoot);
5916
+ _sanitizeAttributes(currentNode, walkRoot);
5917
+ if (_isDocumentFragment(currentNode.content))
5918
+ _sanitizeShadowDOM2(currentNode.content);
4774
5919
  }
4775
- }
4776
- if (IN_PLACE) {
5920
+ if (inPlace)
5921
+ _sanitizeUnvisitedNodes(dirty, inPlaceNodes);
5922
+ } catch (error) {
5923
+ if (inPlace) {
5924
+ _neutralizeRoot(dirty);
5925
+ _neutralizeDiscarded(dirty, inPlaceNodes);
5926
+ }
5927
+ throw error;
5928
+ } finally {
5929
+ IN_PLACE_VISITED = outerVisited;
5930
+ }
5931
+ if (inPlace) {
5932
+ if (_neutralizeDiscarded(dirty, inPlaceNodes))
5933
+ throw typeErrorCreate("a node selected for removal could not be safely returned; refusing to sanitize in place");
5934
+ if (SAFE_FOR_TEMPLATES)
5935
+ _scrubTemplateExpressions2(dirty);
4777
5936
  return dirty;
4778
5937
  }
4779
5938
  if (RETURN_DOM) {
5939
+ if (SAFE_FOR_TEMPLATES)
5940
+ _scrubTemplateExpressions2(body);
4780
5941
  if (RETURN_DOM_FRAGMENT) {
4781
5942
  returnNode = createDocumentFragment.call(body.ownerDocument);
4782
- while (body.firstChild) {
5943
+ while (body.firstChild)
4783
5944
  returnNode.appendChild(body.firstChild);
4784
- }
4785
- } else {
5945
+ } else
4786
5946
  returnNode = body;
4787
- }
4788
- if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
5947
+ if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode)
4789
5948
  returnNode = importNode.call(originalDocument, returnNode, true);
4790
- }
4791
5949
  return returnNode;
4792
5950
  }
4793
5951
  let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
4794
- if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
5952
+ if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name))
4795
5953
  serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
4796
- }
4797
- if (SAFE_FOR_TEMPLATES) {
4798
- arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
4799
- serializedHTML = stringReplace(serializedHTML, expr, " ");
4800
- });
4801
- }
4802
- return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
5954
+ if (SAFE_FOR_TEMPLATES)
5955
+ serializedHTML = _stripTemplateExpressions(serializedHTML);
5956
+ return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;
4803
5957
  };
4804
5958
  DOMPurify.setConfig = function() {
4805
5959
  let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
4806
5960
  _parseConfig(cfg);
4807
5961
  SET_CONFIG = true;
5962
+ SET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;
5963
+ SET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;
4808
5964
  };
4809
5965
  DOMPurify.clearConfig = function() {
4810
5966
  CONFIG = null;
4811
5967
  SET_CONFIG = false;
5968
+ SET_CONFIG_ALLOWED_TAGS = null;
5969
+ SET_CONFIG_ALLOWED_ATTR = null;
5970
+ trustedTypesPolicy = defaultTrustedTypesPolicy;
5971
+ emptyHTML = "";
4812
5972
  };
4813
5973
  DOMPurify.isValidAttribute = function(tag, attr, value) {
4814
- if (!CONFIG) {
5974
+ if (!CONFIG)
4815
5975
  _parseConfig({});
4816
- }
4817
5976
  const lcTag = transformCaseFunc(tag);
4818
5977
  const lcName = transformCaseFunc(attr);
5978
+ if (typeof value === "string" && (_isUnsafeAttributeValue(attr, value) || !ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)))
5979
+ return false;
4819
5980
  return _isValidAttribute(lcTag, lcName, value);
4820
5981
  };
4821
5982
  DOMPurify.addHook = function(entryPoint, hookFunction) {
4822
- if (typeof hookFunction !== "function") {
5983
+ if (typeof hookFunction !== "function")
5984
+ return;
5985
+ if (!objectHasOwnProperty(hooks, entryPoint))
4823
5986
  return;
4824
- }
4825
5987
  arrayPush(hooks[entryPoint], hookFunction);
4826
5988
  };
4827
5989
  DOMPurify.removeHook = function(entryPoint, hookFunction) {
5990
+ if (!objectHasOwnProperty(hooks, entryPoint))
5991
+ return;
4828
5992
  if (hookFunction !== void 0) {
4829
5993
  const index2 = arrayLastIndexOf(hooks[entryPoint], hookFunction);
4830
5994
  return index2 === -1 ? void 0 : arraySplice(hooks[entryPoint], index2, 1)[0];
@@ -4832,6 +5996,8 @@ function createDOMPurify() {
4832
5996
  return arrayPop(hooks[entryPoint]);
4833
5997
  };
4834
5998
  DOMPurify.removeHooks = function(entryPoint) {
5999
+ if (!objectHasOwnProperty(hooks, entryPoint))
6000
+ return;
4835
6001
  hooks[entryPoint] = [];
4836
6002
  };
4837
6003
  DOMPurify.removeAllHooks = function() {
@@ -4839,7 +6005,7 @@ function createDOMPurify() {
4839
6005
  };
4840
6006
  return DOMPurify;
4841
6007
  }
4842
- var purify = createDOMPurify();
6008
+ var purify_default = createDOMPurify();
4843
6009
  var lib$3 = {};
4844
6010
  var htmlToDom = {};
4845
6011
  var domparser$1 = {};
@@ -5448,11 +6614,12 @@ var constants = {};
5448
6614
  }, {});
5449
6615
  exports.CARRIAGE_RETURN = "\r";
5450
6616
  exports.CARRIAGE_RETURN_REGEX = new RegExp(exports.CARRIAGE_RETURN, "g");
5451
- exports.CARRIAGE_RETURN_PLACEHOLDER = "__HTML_DOM_PARSER_CARRIAGE_RETURN_PLACEHOLDER_".concat(Date.now(), "__");
6617
+ exports.CARRIAGE_RETURN_PLACEHOLDER = "__HTML_DOM_PARSER_CARRIAGE_RETURN_PLACEHOLDER_".concat(Date.now().toString(), "__");
5452
6618
  exports.CARRIAGE_RETURN_PLACEHOLDER_REGEX = new RegExp(exports.CARRIAGE_RETURN_PLACEHOLDER, "g");
5453
6619
  })(constants);
5454
6620
  Object.defineProperty(utilities$2, "__esModule", { value: true });
5455
6621
  utilities$2.formatAttributes = formatAttributes;
6622
+ utilities$2.hasOpenTag = hasOpenTag;
5456
6623
  utilities$2.escapeSpecialCharacters = escapeSpecialCharacters;
5457
6624
  utilities$2.revertEscapedCharacters = revertEscapedCharacters;
5458
6625
  utilities$2.formatDOM = formatDOM;
@@ -5479,6 +6646,15 @@ function formatTagName(tagName) {
5479
6646
  }
5480
6647
  return tagName;
5481
6648
  }
6649
+ function hasOpenTag(html2, tagName) {
6650
+ var openTag = "<" + tagName;
6651
+ var index2 = html2.toLowerCase().indexOf(openTag);
6652
+ if (index2 === -1) {
6653
+ return false;
6654
+ }
6655
+ var char = html2[index2 + openTag.length];
6656
+ return char === ">" || char === " " || char === " " || char === "\n" || char === "\r" || char === "/";
6657
+ }
5482
6658
  function escapeSpecialCharacters(html2) {
5483
6659
  return html2.replace(constants_1.CARRIAGE_RETURN_REGEX, constants_1.CARRIAGE_RETURN_PLACEHOLDER);
5484
6660
  }
@@ -5486,6 +6662,7 @@ function revertEscapedCharacters(text2) {
5486
6662
  return text2.replace(constants_1.CARRIAGE_RETURN_PLACEHOLDER_REGEX, constants_1.CARRIAGE_RETURN);
5487
6663
  }
5488
6664
  function formatDOM(nodes, parent, directive) {
6665
+ var _a, _b, _c, _d;
5489
6666
  if (parent === void 0) {
5490
6667
  parent = null;
5491
6668
  }
@@ -5506,15 +6683,15 @@ function formatDOM(nodes, parent, directive) {
5506
6683
  break;
5507
6684
  }
5508
6685
  case 3:
5509
- current = new domhandler_1.Text(revertEscapedCharacters(node2.nodeValue));
6686
+ current = new domhandler_1.Text(revertEscapedCharacters((_a = node2.nodeValue) !== null && _a !== void 0 ? _a : ""));
5510
6687
  break;
5511
6688
  case 8:
5512
- current = new domhandler_1.Comment(node2.nodeValue);
6689
+ current = new domhandler_1.Comment((_b = node2.nodeValue) !== null && _b !== void 0 ? _b : "");
5513
6690
  break;
5514
6691
  default:
5515
6692
  continue;
5516
6693
  }
5517
- var prev = domNodes[index2 - 1] || null;
6694
+ var prev = (_c = domNodes[index2 - 1]) !== null && _c !== void 0 ? _c : null;
5518
6695
  if (prev) {
5519
6696
  prev.next = current;
5520
6697
  }
@@ -5525,7 +6702,7 @@ function formatDOM(nodes, parent, directive) {
5525
6702
  }
5526
6703
  if (directive) {
5527
6704
  current = new domhandler_1.ProcessingInstruction(directive.substring(0, directive.indexOf(" ")).toLowerCase(), directive);
5528
- current.next = domNodes[0] || null;
6705
+ current.next = (_d = domNodes[0]) !== null && _d !== void 0 ? _d : null;
5529
6706
  current.parent = parent;
5530
6707
  domNodes.unshift(current);
5531
6708
  if (domNodes[1]) {
@@ -5541,8 +6718,6 @@ var HTML = "html";
5541
6718
  var HEAD = "head";
5542
6719
  var BODY = "body";
5543
6720
  var FIRST_TAG_REGEX = /<([a-zA-Z]+[0-9]?)/;
5544
- var HEAD_TAG_REGEX = /<head[^]*>/i;
5545
- var BODY_TAG_REGEX = /<body[^]*>/i;
5546
6721
  var parseFromDocument = function(html2, tagName) {
5547
6722
  throw new Error("This browser does not support `document.implementation.createHTMLDocument`");
5548
6723
  };
@@ -5583,29 +6758,32 @@ if (template && template.content) {
5583
6758
  return template.content.childNodes;
5584
6759
  };
5585
6760
  }
6761
+ var createNodeList = function() {
6762
+ return document.createDocumentFragment().childNodes;
6763
+ };
5586
6764
  function domparser(html2) {
5587
- var _a, _b;
6765
+ var _a, _b, _c, _d, _e, _f;
5588
6766
  html2 = (0, utilities_1$4.escapeSpecialCharacters)(html2);
5589
- var match = html2.match(FIRST_TAG_REGEX);
5590
- var firstTagName = match && match[1] ? match[1].toLowerCase() : "";
6767
+ var match = FIRST_TAG_REGEX.exec(html2);
6768
+ var firstTagName = (_a = match === null || match === void 0 ? void 0 : match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase();
5591
6769
  switch (firstTagName) {
5592
6770
  case HTML: {
5593
6771
  var doc = parseFromString(html2);
5594
- if (!HEAD_TAG_REGEX.test(html2)) {
6772
+ if (!(0, utilities_1$4.hasOpenTag)(html2, HEAD)) {
5595
6773
  var element = doc.querySelector(HEAD);
5596
- (_a = element === null || element === void 0 ? void 0 : element.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(element);
6774
+ (_b = element === null || element === void 0 ? void 0 : element.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(element);
5597
6775
  }
5598
- if (!BODY_TAG_REGEX.test(html2)) {
6776
+ if (!(0, utilities_1$4.hasOpenTag)(html2, BODY)) {
5599
6777
  var element = doc.querySelector(BODY);
5600
- (_b = element === null || element === void 0 ? void 0 : element.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(element);
6778
+ (_c = element === null || element === void 0 ? void 0 : element.parentNode) === null || _c === void 0 ? void 0 : _c.removeChild(element);
5601
6779
  }
5602
6780
  return doc.querySelectorAll(HTML);
5603
6781
  }
5604
6782
  case HEAD:
5605
6783
  case BODY: {
5606
6784
  var elements = parseFromDocument(html2).querySelectorAll(firstTagName);
5607
- if (BODY_TAG_REGEX.test(html2) && HEAD_TAG_REGEX.test(html2)) {
5608
- return elements[0].parentNode.childNodes;
6785
+ if ((0, utilities_1$4.hasOpenTag)(html2, BODY) && (0, utilities_1$4.hasOpenTag)(html2, HEAD)) {
6786
+ return (_e = (_d = elements[0].parentNode) === null || _d === void 0 ? void 0 : _d.childNodes) !== null && _e !== void 0 ? _e : createNodeList();
5609
6787
  }
5610
6788
  return elements;
5611
6789
  }
@@ -5614,7 +6792,7 @@ function domparser(html2) {
5614
6792
  return parseFromTemplate(html2);
5615
6793
  }
5616
6794
  var element = parseFromDocument(html2, BODY).querySelector(BODY);
5617
- return element.childNodes;
6795
+ return (_f = element === null || element === void 0 ? void 0 : element.childNodes) !== null && _f !== void 0 ? _f : createNodeList();
5618
6796
  }
5619
6797
  }
5620
6798
  }
@@ -5633,7 +6811,7 @@ function HTMLDOMParser(html2) {
5633
6811
  if (!html2) {
5634
6812
  return [];
5635
6813
  }
5636
- var match = html2.match(DIRECTIVE_REGEX);
6814
+ var match = DIRECTIVE_REGEX.exec(html2);
5637
6815
  var directive = match ? match[1] : void 0;
5638
6816
  return (0, utilities_1$3.formatDOM)((0, domparser_1.default)(html2), null, directive);
5639
6817
  }
@@ -6811,7 +7989,7 @@ function attributesToProps(attributes, nodeName) {
6811
7989
  propName = getPropName("default" + attributeNameLowerCased);
6812
7990
  }
6813
7991
  props[propName] = attributeValue;
6814
- switch (propertyInfo && propertyInfo.type) {
7992
+ switch (propertyInfo === null || propertyInfo === void 0 ? void 0 : propertyInfo.type) {
6815
7993
  case react_property_1.BOOLEAN:
6816
7994
  props[propName] = true;
6817
7995
  break;
@@ -6848,22 +8026,23 @@ var React = {
6848
8026
  isValidElement: react_1.isValidElement
6849
8027
  };
6850
8028
  function domToReact(nodes, options) {
8029
+ var _a, _b, _c, _d, _e;
6851
8030
  if (options === void 0) {
6852
8031
  options = {};
6853
8032
  }
6854
8033
  var reactElements = [];
6855
8034
  var hasReplace = typeof options.replace === "function";
6856
- var transform = options.transform || utilities_1.returnFirstArg;
6857
- var _a = options.library || React, cloneElement = _a.cloneElement, createElement = _a.createElement, isValidElement = _a.isValidElement;
8035
+ var transform = (_a = options.transform) !== null && _a !== void 0 ? _a : utilities_1.returnFirstArg;
8036
+ var _f = (_b = options.library) !== null && _b !== void 0 ? _b : React, cloneElement = _f.cloneElement, createElement = _f.createElement, isValidElement = _f.isValidElement;
6858
8037
  var nodesLength = nodes.length;
6859
8038
  for (var index2 = 0; index2 < nodesLength; index2++) {
6860
8039
  var node2 = nodes[index2];
6861
8040
  if (hasReplace) {
6862
- var replaceElement = options.replace(node2, index2);
8041
+ var replaceElement = (_c = options.replace) === null || _c === void 0 ? void 0 : _c.call(options, node2, index2);
6863
8042
  if (isValidElement(replaceElement)) {
6864
8043
  if (nodesLength > 1) {
6865
8044
  replaceElement = cloneElement(replaceElement, {
6866
- key: replaceElement.key || index2
8045
+ key: (_d = replaceElement.key) !== null && _d !== void 0 ? _d : index2
6867
8046
  });
6868
8047
  }
6869
8048
  reactElements.push(transform(replaceElement, node2, index2));
@@ -6902,7 +8081,7 @@ function domToReact(nodes, options) {
6902
8081
  case "tag":
6903
8082
  if (node2.name === "textarea" && node2.children[0]) {
6904
8083
  props.defaultValue = node2.children[0].data;
6905
- } else if (node2.children && node2.children.length) {
8084
+ } else if ((_e = node2.children) === null || _e === void 0 ? void 0 : _e.length) {
6906
8085
  children = domToReact(node2.children, options);
6907
8086
  }
6908
8087
  break;
@@ -6947,13 +8126,14 @@ function skipAttributesToProps(node2) {
6947
8126
  } });
6948
8127
  var domParserOptions = { lowerCaseAttributeNames: false };
6949
8128
  function HTMLReactParser2(html2, options) {
8129
+ var _a;
6950
8130
  if (typeof html2 !== "string") {
6951
8131
  throw new TypeError("First argument must be a string");
6952
8132
  }
6953
8133
  if (!html2) {
6954
8134
  return [];
6955
8135
  }
6956
- return (0, dom_to_react_1.default)((0, html_dom_parser_1.default)(html2, (options === null || options === void 0 ? void 0 : options.htmlparser2) || domParserOptions), options);
8136
+ return (0, dom_to_react_1.default)((0, html_dom_parser_1.default)(html2, (_a = options === null || options === void 0 ? void 0 : options.htmlparser2) !== null && _a !== void 0 ? _a : domParserOptions), options);
6957
8137
  }
6958
8138
  })(lib$3);
6959
8139
  var HTMLReactParser = /* @__PURE__ */ getDefaultExportFromCjs(lib$3);
@@ -7027,7 +8207,7 @@ function Alert({
7027
8207
  if (buttonText) {
7028
8208
  buttonType = buttonLink ? "link" : "normal";
7029
8209
  }
7030
- const content = typeof children === "string" ? ReactParser(purify.sanitize(children)) : children;
8210
+ const content = typeof children === "string" ? ReactParser(purify_default.sanitize(children)) : children;
7031
8211
  return /* @__PURE__ */ jsxs(Box, {
7032
8212
  className: isFlash ? "flashNotification" : "e_alert",
7033
8213
  alignItems: !isMobile ? "center" : "unset",
@@ -7113,23 +8293,29 @@ function Alert({
7113
8293
  })]
7114
8294
  });
7115
8295
  }
7116
- let e = { data: "" }, t = (t2) => "object" == typeof window ? ((t2 ? t2.querySelector("#_goober") : window._goober) || Object.assign((t2 || document.head).appendChild(document.createElement("style")), { innerHTML: " ", id: "_goober" })).firstChild : t2 || e, l = /(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g, a = /\/\*[^]*?\*\/| +/g, n$1 = /\n+/g, o = (e2, t2) => {
7117
- let r = "", l2 = "", a2 = "";
8296
+ let e = { data: "" }, t = (t2) => {
8297
+ if ("object" == typeof window) {
8298
+ let e2 = (t2 ? t2.querySelector("#_goober") : window._goober) || Object.assign(document.createElement("style"), { innerHTML: " ", id: "_goober" });
8299
+ return e2.nonce = window.__nonce__, e2.parentNode || (t2 || document.head).appendChild(e2), e2.firstChild;
8300
+ }
8301
+ return t2 || e;
8302
+ }, a = /(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g, l = /\/\*[^]*?\*\/| +/g, n$1 = /\n+/g, o = (e2, t2) => {
8303
+ let r = "", a2 = "", l2 = "";
7118
8304
  for (let n2 in e2) {
7119
8305
  let c2 = e2[n2];
7120
- "@" == n2[0] ? "i" == n2[1] ? r = n2 + " " + c2 + ";" : l2 += "f" == n2[1] ? o(c2, n2) : n2 + "{" + o(c2, "k" == n2[1] ? "" : t2) + "}" : "object" == typeof c2 ? l2 += o(c2, t2 ? t2.replace(/([^,])+/g, (e3) => n2.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g, (t3) => /&/.test(t3) ? t3.replace(/&/g, e3) : e3 ? e3 + " " + t3 : t3)) : n2) : null != c2 && (n2 = /^--/.test(n2) ? n2 : n2.replace(/[A-Z]/g, "-$&").toLowerCase(), a2 += o.p ? o.p(n2, c2) : n2 + ":" + c2 + ";");
8306
+ "@" == n2[0] ? "i" == n2[1] ? r = n2 + " " + c2 + ";" : a2 += "f" == n2[1] ? o(c2, n2) : n2 + "{" + o(c2, "k" == n2[1] ? "" : t2) + "}" : "object" == typeof c2 ? a2 += o(c2, t2 ? t2.replace(/([^,])+/g, (e3) => n2.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g, (t3) => /&/.test(t3) ? t3.replace(/&/g, e3) : e3 ? e3 + " " + t3 : t3)) : n2) : null != c2 && (n2 = "-" == n2[1] ? n2 : n2.replace(/[A-Z]/g, "-$&").toLowerCase(), l2 += o.p ? o.p(n2, c2) : n2 + ":" + c2 + ";");
7121
8307
  }
7122
- return r + (t2 && a2 ? t2 + "{" + a2 + "}" : a2) + l2;
7123
- }, c = {}, s = (e2) => {
8308
+ return r + (t2 && l2 ? t2 + "{" + l2 + "}" : l2) + a2;
8309
+ }, c = {}, i = (e2) => {
7124
8310
  if ("object" == typeof e2) {
7125
8311
  let t2 = "";
7126
8312
  for (let r in e2)
7127
- t2 += r + s(e2[r]);
8313
+ t2 += r + i(e2[r]);
7128
8314
  return t2;
7129
8315
  }
7130
8316
  return e2;
7131
- }, i = (e2, t2, r, i2, p2) => {
7132
- let u2 = s(e2), d2 = c[u2] || (c[u2] = ((e3) => {
8317
+ }, s = (e2, t2, r, s2, p2) => {
8318
+ let u2 = i(e2), d2 = c[u2] || (c[u2] = ((e3) => {
7133
8319
  let t3 = 0, r2 = 11;
7134
8320
  for (; t3 < e3.length; )
7135
8321
  r2 = 101 * r2 + e3.charCodeAt(t3++) >>> 0;
@@ -7138,45 +8324,45 @@ let e = { data: "" }, t = (t2) => "object" == typeof window ? ((t2 ? t2.querySel
7138
8324
  if (!c[d2]) {
7139
8325
  let t3 = u2 !== e2 ? e2 : ((e3) => {
7140
8326
  let t4, r2, o2 = [{}];
7141
- for (; t4 = l.exec(e3.replace(a, "")); )
8327
+ for (; t4 = a.exec(e3.replace(l, "")); )
7142
8328
  t4[4] ? o2.shift() : t4[3] ? (r2 = t4[3].replace(n$1, " ").trim(), o2.unshift(o2[0][r2] = o2[0][r2] || {})) : o2[0][t4[1]] = t4[2].replace(n$1, " ").trim();
7143
8329
  return o2[0];
7144
8330
  })(e2);
7145
8331
  c[d2] = o(p2 ? { ["@keyframes " + d2]: t3 } : t3, r ? "" : "." + d2);
7146
8332
  }
7147
- let f2 = r && c.g ? c.g : null;
7148
- return r && (c.g = c[d2]), ((e3, t3, r2, l2) => {
7149
- l2 ? t3.data = t3.data.replace(l2, e3) : -1 === t3.data.indexOf(e3) && (t3.data = r2 ? e3 + t3.data : t3.data + e3);
7150
- })(c[d2], t2, i2, f2), d2;
7151
- }, p = (e2, t2, r) => e2.reduce((e3, l2, a2) => {
7152
- let n2 = t2[a2];
8333
+ let f2 = r && c.g;
8334
+ return r && (c.g = c[d2]), ((e3, t3, r2, a2) => {
8335
+ a2 ? t3.data = t3.data.replace(a2, e3) : -1 === t3.data.indexOf(e3) && (t3.data = r2 ? e3 + t3.data : t3.data + e3);
8336
+ })(c[d2], t2, s2, f2), d2;
8337
+ }, p = (e2, t2, r) => e2.reduce((e3, a2, l2) => {
8338
+ let n2 = t2[l2];
7153
8339
  if (n2 && n2.call) {
7154
8340
  let e4 = n2(r), t3 = e4 && e4.props && e4.props.className || /^go/.test(e4) && e4;
7155
8341
  n2 = t3 ? "." + t3 : e4 && "object" == typeof e4 ? e4.props ? "" : o(e4, "") : false === e4 ? "" : e4;
7156
8342
  }
7157
- return e3 + l2 + (null == n2 ? "" : n2);
8343
+ return e3 + a2 + (null == n2 ? "" : n2);
7158
8344
  }, "");
7159
8345
  function u$1(e2) {
7160
- let r = this || {}, l2 = e2.call ? e2(r.p) : e2;
7161
- return i(l2.unshift ? l2.raw ? p(l2, [].slice.call(arguments, 1), r.p) : l2.reduce((e3, t2) => Object.assign(e3, t2 && t2.call ? t2(r.p) : t2), {}) : l2, t(r.target), r.g, r.o, r.k);
8346
+ let r = this || {}, a2 = e2.call ? e2(r.p) : e2;
8347
+ return s(a2.unshift ? a2.raw ? p(a2, [].slice.call(arguments, 1), r.p) : a2.reduce((e3, t2) => Object.assign(e3, t2 && t2.call ? t2(r.p) : t2), {}) : a2, t(r.target), r.g, r.o, r.k);
7162
8348
  }
7163
8349
  let d, f, g;
7164
8350
  u$1.bind({ g: 1 });
7165
8351
  let h$1 = u$1.bind({ k: 1 });
7166
- function m(e2, t2, r, l2) {
7167
- o.p = t2, d = e2, f = r, g = l2;
8352
+ function m(e2, t2, r, a2) {
8353
+ o.p = t2, d = e2, f = r, g = a2;
7168
8354
  }
7169
- function j(e2, t2) {
8355
+ function w$1(e2, t2) {
7170
8356
  let r = this || {};
7171
8357
  return function() {
7172
- let l2 = arguments;
7173
- function a2(n2, o2) {
7174
- let c2 = Object.assign({}, n2), s2 = c2.className || a2.className;
7175
- r.p = Object.assign({ theme: f && f() }, c2), r.o = / *go\d+/.test(s2), c2.className = u$1.apply(r, l2) + (s2 ? " " + s2 : ""), t2 && (c2.ref = o2);
7176
- let i2 = e2;
7177
- return e2[0] && (i2 = c2.as || e2, delete c2.as), g && i2[0] && g(c2), d(i2, c2);
7178
- }
7179
- return t2 ? t2(a2) : a2;
8358
+ let a2 = arguments;
8359
+ function l2(n2, o2) {
8360
+ let c2 = Object.assign({}, n2), i2 = c2.className || l2.className;
8361
+ r.p = Object.assign({ theme: f && f() }, c2), r.o = /go\d/.test(i2), c2.className = u$1.apply(r, a2) + (i2 ? " " + i2 : ""), t2 && (c2.ref = o2);
8362
+ let s2 = e2;
8363
+ return e2[0] && (s2 = c2.as || e2, delete c2.as), g && s2[0] && g(c2), d(s2, c2);
8364
+ }
8365
+ return t2 ? t2(l2) : l2;
7180
8366
  };
7181
8367
  }
7182
8368
  var W = (e2) => typeof e2 == "function", T = (e2, t2) => W(e2) ? e2(t2) : e2;
@@ -7315,7 +8501,7 @@ from {
7315
8501
  to {
7316
8502
  transform: scale(1) rotate(90deg);
7317
8503
  opacity: 1;
7318
- }`, _ = j("div")`
8504
+ }`, _ = w$1("div")`
7319
8505
  width: 20px;
7320
8506
  opacity: 0;
7321
8507
  height: 20px;
@@ -7356,7 +8542,7 @@ var ne = h$1`
7356
8542
  to {
7357
8543
  transform: rotate(360deg);
7358
8544
  }
7359
- `, V = j("div")`
8545
+ `, V = w$1("div")`
7360
8546
  width: 12px;
7361
8547
  height: 12px;
7362
8548
  box-sizing: border-box;
@@ -7388,7 +8574,7 @@ to {
7388
8574
  100% {
7389
8575
  opacity: 1;
7390
8576
  height: 10px;
7391
- }`, w = j("div")`
8577
+ }`, w = w$1("div")`
7392
8578
  width: 20px;
7393
8579
  opacity: 0;
7394
8580
  height: 20px;
@@ -7416,9 +8602,9 @@ to {
7416
8602
  width: 6px;
7417
8603
  }
7418
8604
  `;
7419
- var ue = j("div")`
8605
+ var ue = w$1("div")`
7420
8606
  position: absolute;
7421
- `, le = j("div")`
8607
+ `, le = w$1("div")`
7422
8608
  position: relative;
7423
8609
  display: flex;
7424
8610
  justify-content: center;
@@ -7433,7 +8619,7 @@ from {
7433
8619
  to {
7434
8620
  transform: scale(1);
7435
8621
  opacity: 1;
7436
- }`, fe = j("div")`
8622
+ }`, fe = w$1("div")`
7437
8623
  position: relative;
7438
8624
  transform: scale(0.6);
7439
8625
  opacity: 0.4;
@@ -7450,7 +8636,7 @@ var ye = (e2) => `
7450
8636
  `, ge = (e2) => `
7451
8637
  0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}
7452
8638
  100% {transform: translate3d(0,${e2 * -150}%,-1px) scale(.6); opacity:0;}
7453
- `, he = "0%{opacity:0;} 100%{opacity:1;}", xe = "0%{opacity:1;} 100%{opacity:0;}", be = j("div")`
8639
+ `, he = "0%{opacity:0;} 100%{opacity:1;}", xe = "0%{opacity:1;} 100%{opacity:0;}", be = w$1("div")`
7454
8640
  display: flex;
7455
8641
  align-items: center;
7456
8642
  background: #fff;
@@ -7462,7 +8648,7 @@ var ye = (e2) => `
7462
8648
  pointer-events: auto;
7463
8649
  padding: 8px 10px;
7464
8650
  border-radius: 8px;
7465
- `, Se = j("div")`
8651
+ `, Se = w$1("div")`
7466
8652
  display: flex;
7467
8653
  justify-content: center;
7468
8654
  margin: 4px 10px;
@@ -7965,7 +9151,7 @@ const Loading$1 = ({
7965
9151
  });
7966
9152
  };
7967
9153
  const sanitizeModalDescription = (description) => {
7968
- const sanitizedDescription = purify.sanitize(description, {
9154
+ const sanitizedDescription = purify_default.sanitize(description, {
7969
9155
  ADD_ATTR: ["target", "rel"]
7970
9156
  });
7971
9157
  const parsedDocument = new window.DOMParser().parseFromString(sanitizedDescription, "text/html");