@artooi/ag-ui-web-component 0.41.2 → 0.41.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1998,12 +1998,12 @@ function seriesColor(index) {
1998
1998
  }
1999
1999
  function geometryFor(width) {
2000
2000
  const w = Math.max(MIN_WIDTH, width);
2001
- const h = Math.min(MAX_HEIGHT, Math.max(MIN_HEIGHT, Math.round(w * HEIGHT_RATIO)));
2001
+ const h2 = Math.min(MAX_HEIGHT, Math.max(MIN_HEIGHT, Math.round(w * HEIGHT_RATIO)));
2002
2002
  return {
2003
2003
  width: w,
2004
- height: h,
2004
+ height: h2,
2005
2005
  plotW: w - PAD.left - PAD.right,
2006
- plotH: h - PAD.top - PAD.bottom
2006
+ plotH: h2 - PAD.top - PAD.bottom
2007
2007
  };
2008
2008
  }
2009
2009
  function el(name, attrs) {
@@ -4307,6 +4307,10 @@ var ConversationHistory = class {
4307
4307
  });
4308
4308
  this.#continuation = client;
4309
4309
  try {
4310
+ this.#host.announceTurn(content);
4311
+ if (this.#continuation !== client) {
4312
+ return;
4313
+ }
4310
4314
  await client.send(content);
4311
4315
  } finally {
4312
4316
  if (this.#continuation === client) {
@@ -5534,7 +5538,7 @@ var PanelPlacement = class {
5534
5538
  #probeAnchor(before, delta) {
5535
5539
  this.#applySize({ width: before.width + delta, height: before.height + delta });
5536
5540
  const after = this.#host.element.getBoundingClientRect();
5537
- const moved = (a, b2) => Math.abs(a - b2) >= 0.5;
5541
+ const moved = (a, b) => Math.abs(a - b) >= 0.5;
5538
5542
  return {
5539
5543
  x: moved(after.width, before.width) ? moved(after.left, before.left) ? "right" : "left" : null,
5540
5544
  y: moved(after.height, before.height) ? moved(after.top, before.top) ? "bottom" : "top" : null
@@ -10794,7 +10798,10 @@ var AnswerActions = class {
10794
10798
  }
10795
10799
  };
10796
10800
 
10797
- // node_modules/.pnpm/dompurify@3.4.15/node_modules/dompurify/dist/purify.es.mjs
10801
+ // node_modules/.pnpm/dompurify@3.4.16/node_modules/dompurify/dist/purify.es.mjs
10802
+ function _OverloadYield(e, d) {
10803
+ this.v = e, this.k = d;
10804
+ }
10798
10805
  function _arrayLikeToArray(r, a) {
10799
10806
  (null == a || a > r.length) && (a = r.length);
10800
10807
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
@@ -10803,18 +10810,20 @@ function _arrayLikeToArray(r, a) {
10803
10810
  function _arrayWithHoles(r) {
10804
10811
  if (Array.isArray(r)) return r;
10805
10812
  }
10806
- function _iterableToArrayLimit(r, l) {
10813
+ function _iterableToArrayLimit(r, l3) {
10807
10814
  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
10808
10815
  if (null != t) {
10809
- var e, n, i, u3, a = [], f2 = true, o = false;
10816
+ var e, n, i, u, a = [], f = true, o = false;
10810
10817
  try {
10811
- if (i = (t = t.call(r)).next, 0 === l) ;
10812
- else for (; !(f2 = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f2 = true) ;
10818
+ if (i = (t = t.call(r)).next, 0 === l3) {
10819
+ if (Object(t) !== t) return;
10820
+ f = false;
10821
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l3); f = true) ;
10813
10822
  } catch (r2) {
10814
10823
  o = true, n = r2;
10815
10824
  } finally {
10816
10825
  try {
10817
- if (!f2 && null != t.return && (u3 = t.return(), Object(u3) !== u3)) return;
10826
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
10818
10827
  } finally {
10819
10828
  if (o) throw n;
10820
10829
  }
@@ -10835,6 +10844,53 @@ function _unsupportedIterableToArray(r, a) {
10835
10844
  return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
10836
10845
  }
10837
10846
  }
10847
+ function AsyncGenerator(e) {
10848
+ var t, n;
10849
+ function resume(t2, n2) {
10850
+ try {
10851
+ var r = e[t2](n2), o = r.value, u = o instanceof _OverloadYield;
10852
+ Promise.resolve(u ? o.v : o).then(function(n3) {
10853
+ if (u) {
10854
+ var i = "return" === t2 && o.k ? t2 : "next";
10855
+ if (!o.k || n3.done) return resume(i, n3);
10856
+ n3 = e[i](n3).value;
10857
+ }
10858
+ settle(!!r.done, n3);
10859
+ }, function(e2) {
10860
+ resume("throw", e2);
10861
+ });
10862
+ } catch (e2) {
10863
+ settle(2, e2);
10864
+ }
10865
+ }
10866
+ function settle(e2, r) {
10867
+ 2 === e2 ? t.reject(r) : t.resolve({
10868
+ value: r,
10869
+ done: e2
10870
+ }), (t = t.next) ? resume(t.key, t.arg) : n = null;
10871
+ }
10872
+ this._invoke = function(e2, r) {
10873
+ return new Promise(function(o, u) {
10874
+ var i = {
10875
+ key: e2,
10876
+ arg: r,
10877
+ resolve: o,
10878
+ reject: u,
10879
+ next: null
10880
+ };
10881
+ n ? n = n.next = i : (t = n = i, resume(e2, r));
10882
+ });
10883
+ }, "function" != typeof e.return && (this.return = void 0);
10884
+ }
10885
+ AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function() {
10886
+ return this;
10887
+ }, AsyncGenerator.prototype.next = function(e) {
10888
+ return this._invoke("next", e);
10889
+ }, AsyncGenerator.prototype.throw = function(e) {
10890
+ return this._invoke("throw", e);
10891
+ }, AsyncGenerator.prototype.return = function(e) {
10892
+ return this._invoke("return", e);
10893
+ };
10838
10894
  var entries = Object.entries;
10839
10895
  var setPrototypeOf = Object.setPrototypeOf;
10840
10896
  var isFrozen = Object.isFrozen;
@@ -10846,36 +10902,26 @@ var create = Object.create;
10846
10902
  var _ref = typeof Reflect !== "undefined" && Reflect;
10847
10903
  var apply = _ref.apply;
10848
10904
  var construct = _ref.construct;
10849
- if (!freeze) {
10850
- freeze = function freeze2(x2) {
10851
- return x2;
10852
- };
10853
- }
10854
- if (!seal) {
10855
- seal = function seal2(x2) {
10856
- return x2;
10857
- };
10858
- }
10859
- if (!apply) {
10860
- apply = function apply2(func, thisArg) {
10861
- for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
10862
- args[_key - 2] = arguments[_key];
10863
- }
10864
- return func.apply(thisArg, args);
10865
- };
10866
- }
10867
- if (!construct) {
10868
- construct = function construct2(Func) {
10869
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
10870
- args[_key2 - 1] = arguments[_key2];
10871
- }
10872
- return new Func(...args);
10873
- };
10874
- }
10905
+ if (!freeze) freeze = function freeze2(x2) {
10906
+ return x2;
10907
+ };
10908
+ if (!seal) seal = function seal2(x2) {
10909
+ return x2;
10910
+ };
10911
+ if (!apply) apply = function apply2(func, thisArg) {
10912
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];
10913
+ return func.apply(thisArg, args);
10914
+ };
10915
+ if (!construct) construct = function construct2(Func) {
10916
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];
10917
+ return new Func(...args);
10918
+ };
10875
10919
  var arrayForEach = unapply(Array.prototype.forEach);
10920
+ Array.prototype.indexOf;
10876
10921
  var arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
10877
10922
  var arrayPop = unapply(Array.prototype.pop);
10878
10923
  var arrayPush = unapply(Array.prototype.push);
10924
+ Array.prototype.slice;
10879
10925
  var arraySplice = unapply(Array.prototype.splice);
10880
10926
  var arrayIsArray = Array.isArray;
10881
10927
  var stringToLowerCase = unapply(String.prototype.toLowerCase);
@@ -10894,40 +10940,28 @@ var regExpTest = unapply(RegExp.prototype.test);
10894
10940
  var typeErrorCreate = unconstruct(TypeError);
10895
10941
  function unapply(func) {
10896
10942
  return function(thisArg) {
10897
- if (thisArg instanceof RegExp) {
10898
- thisArg.lastIndex = 0;
10899
- }
10900
- for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
10901
- args[_key3 - 1] = arguments[_key3];
10902
- }
10943
+ if (thisArg instanceof RegExp) thisArg.lastIndex = 0;
10944
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];
10903
10945
  return apply(func, thisArg, args);
10904
10946
  };
10905
10947
  }
10906
10948
  function unconstruct(Func) {
10907
10949
  return function() {
10908
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
10909
- args[_key4] = arguments[_key4];
10910
- }
10950
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];
10911
10951
  return construct(Func, args);
10912
10952
  };
10913
10953
  }
10914
10954
  function addToSet(set, array) {
10915
10955
  let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;
10916
- if (setPrototypeOf) {
10917
- setPrototypeOf(set, null);
10918
- }
10919
- if (!arrayIsArray(array)) {
10920
- return set;
10921
- }
10922
- let l = array.length;
10923
- while (l--) {
10924
- let element = array[l];
10956
+ if (setPrototypeOf) setPrototypeOf(set, null);
10957
+ if (!arrayIsArray(array)) return set;
10958
+ let l3 = array.length;
10959
+ while (l3--) {
10960
+ let element = array[l3];
10925
10961
  if (typeof element === "string") {
10926
10962
  const lcElement = transformCaseFunc(element);
10927
10963
  if (lcElement !== element) {
10928
- if (!isFrozen(array)) {
10929
- array[l] = lcElement;
10930
- }
10964
+ if (!isFrozen(array)) array[l3] = lcElement;
10931
10965
  element = lcElement;
10932
10966
  }
10933
10967
  }
@@ -10936,12 +10970,7 @@ function addToSet(set, array) {
10936
10970
  return set;
10937
10971
  }
10938
10972
  function cleanArray(array) {
10939
- for (let index = 0; index < array.length; index++) {
10940
- const isPropertyExist = objectHasOwnProperty(array, index);
10941
- if (!isPropertyExist) {
10942
- array[index] = null;
10943
- }
10944
- }
10973
+ for (let index = 0; index < array.length; index++) if (!objectHasOwnProperty(array, index)) array[index] = null;
10945
10974
  return array;
10946
10975
  }
10947
10976
  function clone(object) {
@@ -10950,44 +10979,31 @@ function clone(object) {
10950
10979
  var _ref3 = _slicedToArray(_ref2, 2);
10951
10980
  const property = _ref3[0];
10952
10981
  const value = _ref3[1];
10953
- const isPropertyExist = objectHasOwnProperty(object, property);
10954
- if (isPropertyExist) {
10955
- if (arrayIsArray(value)) {
10956
- newObject[property] = cleanArray(value);
10957
- } else if (value && typeof value === "object" && value.constructor === Object) {
10958
- newObject[property] = clone(value);
10959
- } else {
10960
- newObject[property] = value;
10961
- }
10982
+ if (objectHasOwnProperty(object, property)) {
10983
+ if (arrayIsArray(value)) newObject[property] = cleanArray(value);
10984
+ else if (value && typeof value === "object" && value.constructor === Object) newObject[property] = clone(value);
10985
+ else newObject[property] = value;
10962
10986
  }
10963
10987
  }
10964
10988
  return newObject;
10965
10989
  }
10966
10990
  function stringifyValue(value) {
10967
10991
  switch (typeof value) {
10968
- case "string": {
10992
+ case "string":
10969
10993
  return value;
10970
- }
10971
- case "number": {
10994
+ case "number":
10972
10995
  return numberToString(value);
10973
- }
10974
- case "boolean": {
10996
+ case "boolean":
10975
10997
  return booleanToString(value);
10976
- }
10977
- case "bigint": {
10998
+ case "bigint":
10978
10999
  return bigintToString ? bigintToString(value) : "0";
10979
- }
10980
- case "symbol": {
11000
+ case "symbol":
10981
11001
  return symbolToString ? symbolToString(value) : "Symbol()";
10982
- }
10983
- case "undefined": {
11002
+ case "undefined":
10984
11003
  return objectToString(value);
10985
- }
10986
11004
  case "function":
10987
11005
  case "object": {
10988
- if (value === null) {
10989
- return objectToString(value);
10990
- }
11006
+ if (value === null) return objectToString(value);
10991
11007
  const valueAsRecord = value;
10992
11008
  const valueToString = lookupGetter(valueAsRecord, "toString");
10993
11009
  if (typeof valueToString === "function") {
@@ -10996,21 +11012,16 @@ function stringifyValue(value) {
10996
11012
  }
10997
11013
  return objectToString(value);
10998
11014
  }
10999
- default: {
11015
+ default:
11000
11016
  return objectToString(value);
11001
- }
11002
11017
  }
11003
11018
  }
11004
11019
  function lookupGetter(object, prop) {
11005
11020
  while (object !== null) {
11006
11021
  const desc = getOwnPropertyDescriptor(object, prop);
11007
11022
  if (desc) {
11008
- if (desc.get) {
11009
- return unapply(desc.get);
11010
- }
11011
- if (typeof desc.value === "function") {
11012
- return unapply(desc.value);
11013
- }
11023
+ if (desc.get) return unapply(desc.get);
11024
+ if (typeof desc.value === "function") return unapply(desc.value);
11014
11025
  }
11015
11026
  object = getPrototypeOf(object);
11016
11027
  }
@@ -11027,31 +11038,662 @@ function isRegex(value) {
11027
11038
  return false;
11028
11039
  }
11029
11040
  }
11030
- var html$1 = freeze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "search", "section", "select", "shadow", "slot", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]);
11031
- var svg$1 = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "enterkeyhint", "exportparts", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "inputmode", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "part", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
11032
- var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]);
11033
- var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]);
11034
- var mathMl$1 = freeze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover", "mprescripts"]);
11035
- var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
11041
+ var html$1 = freeze([
11042
+ "a",
11043
+ "abbr",
11044
+ "acronym",
11045
+ "address",
11046
+ "area",
11047
+ "article",
11048
+ "aside",
11049
+ "audio",
11050
+ "b",
11051
+ "bdi",
11052
+ "bdo",
11053
+ "big",
11054
+ "blink",
11055
+ "blockquote",
11056
+ "body",
11057
+ "br",
11058
+ "button",
11059
+ "canvas",
11060
+ "caption",
11061
+ "center",
11062
+ "cite",
11063
+ "code",
11064
+ "col",
11065
+ "colgroup",
11066
+ "content",
11067
+ "data",
11068
+ "datalist",
11069
+ "dd",
11070
+ "decorator",
11071
+ "del",
11072
+ "details",
11073
+ "dfn",
11074
+ "dialog",
11075
+ "dir",
11076
+ "div",
11077
+ "dl",
11078
+ "dt",
11079
+ "element",
11080
+ "em",
11081
+ "fieldset",
11082
+ "figcaption",
11083
+ "figure",
11084
+ "font",
11085
+ "footer",
11086
+ "form",
11087
+ "h1",
11088
+ "h2",
11089
+ "h3",
11090
+ "h4",
11091
+ "h5",
11092
+ "h6",
11093
+ "head",
11094
+ "header",
11095
+ "hgroup",
11096
+ "hr",
11097
+ "html",
11098
+ "i",
11099
+ "img",
11100
+ "input",
11101
+ "ins",
11102
+ "kbd",
11103
+ "label",
11104
+ "legend",
11105
+ "li",
11106
+ "main",
11107
+ "map",
11108
+ "mark",
11109
+ "marquee",
11110
+ "menu",
11111
+ "menuitem",
11112
+ "meter",
11113
+ "nav",
11114
+ "nobr",
11115
+ "ol",
11116
+ "optgroup",
11117
+ "option",
11118
+ "output",
11119
+ "p",
11120
+ "picture",
11121
+ "pre",
11122
+ "progress",
11123
+ "q",
11124
+ "rp",
11125
+ "rt",
11126
+ "ruby",
11127
+ "s",
11128
+ "samp",
11129
+ "search",
11130
+ "section",
11131
+ "select",
11132
+ "shadow",
11133
+ "slot",
11134
+ "small",
11135
+ "source",
11136
+ "spacer",
11137
+ "span",
11138
+ "strike",
11139
+ "strong",
11140
+ "style",
11141
+ "sub",
11142
+ "summary",
11143
+ "sup",
11144
+ "table",
11145
+ "tbody",
11146
+ "td",
11147
+ "template",
11148
+ "textarea",
11149
+ "tfoot",
11150
+ "th",
11151
+ "thead",
11152
+ "time",
11153
+ "tr",
11154
+ "track",
11155
+ "tt",
11156
+ "u",
11157
+ "ul",
11158
+ "var",
11159
+ "video",
11160
+ "wbr"
11161
+ ]);
11162
+ var svg$1 = freeze([
11163
+ "svg",
11164
+ "a",
11165
+ "altglyph",
11166
+ "altglyphdef",
11167
+ "altglyphitem",
11168
+ "animatecolor",
11169
+ "animatemotion",
11170
+ "animatetransform",
11171
+ "circle",
11172
+ "clippath",
11173
+ "defs",
11174
+ "desc",
11175
+ "ellipse",
11176
+ "enterkeyhint",
11177
+ "exportparts",
11178
+ "filter",
11179
+ "font",
11180
+ "g",
11181
+ "glyph",
11182
+ "glyphref",
11183
+ "hkern",
11184
+ "image",
11185
+ "inputmode",
11186
+ "line",
11187
+ "lineargradient",
11188
+ "marker",
11189
+ "mask",
11190
+ "metadata",
11191
+ "mpath",
11192
+ "part",
11193
+ "path",
11194
+ "pattern",
11195
+ "polygon",
11196
+ "polyline",
11197
+ "radialgradient",
11198
+ "rect",
11199
+ "stop",
11200
+ "style",
11201
+ "switch",
11202
+ "symbol",
11203
+ "text",
11204
+ "textpath",
11205
+ "title",
11206
+ "tref",
11207
+ "tspan",
11208
+ "view",
11209
+ "vkern"
11210
+ ]);
11211
+ var svgFilters = freeze([
11212
+ "feBlend",
11213
+ "feColorMatrix",
11214
+ "feComponentTransfer",
11215
+ "feComposite",
11216
+ "feConvolveMatrix",
11217
+ "feDiffuseLighting",
11218
+ "feDisplacementMap",
11219
+ "feDistantLight",
11220
+ "feDropShadow",
11221
+ "feFlood",
11222
+ "feFuncA",
11223
+ "feFuncB",
11224
+ "feFuncG",
11225
+ "feFuncR",
11226
+ "feGaussianBlur",
11227
+ "feImage",
11228
+ "feMerge",
11229
+ "feMergeNode",
11230
+ "feMorphology",
11231
+ "feOffset",
11232
+ "fePointLight",
11233
+ "feSpecularLighting",
11234
+ "feSpotLight",
11235
+ "feTile",
11236
+ "feTurbulence"
11237
+ ]);
11238
+ var svgDisallowed = freeze([
11239
+ "animate",
11240
+ "color-profile",
11241
+ "cursor",
11242
+ "discard",
11243
+ "font-face",
11244
+ "font-face-format",
11245
+ "font-face-name",
11246
+ "font-face-src",
11247
+ "font-face-uri",
11248
+ "foreignobject",
11249
+ "hatch",
11250
+ "hatchpath",
11251
+ "mesh",
11252
+ "meshgradient",
11253
+ "meshpatch",
11254
+ "meshrow",
11255
+ "missing-glyph",
11256
+ "script",
11257
+ "set",
11258
+ "solidcolor",
11259
+ "unknown",
11260
+ "use"
11261
+ ]);
11262
+ var mathMl$1 = freeze([
11263
+ "math",
11264
+ "menclose",
11265
+ "merror",
11266
+ "mfenced",
11267
+ "mfrac",
11268
+ "mglyph",
11269
+ "mi",
11270
+ "mlabeledtr",
11271
+ "mmultiscripts",
11272
+ "mn",
11273
+ "mo",
11274
+ "mover",
11275
+ "mpadded",
11276
+ "mphantom",
11277
+ "mroot",
11278
+ "mrow",
11279
+ "ms",
11280
+ "mspace",
11281
+ "msqrt",
11282
+ "mstyle",
11283
+ "msub",
11284
+ "msup",
11285
+ "msubsup",
11286
+ "mtable",
11287
+ "mtd",
11288
+ "mtext",
11289
+ "mtr",
11290
+ "munder",
11291
+ "munderover",
11292
+ "mprescripts"
11293
+ ]);
11294
+ var mathMlDisallowed = freeze([
11295
+ "maction",
11296
+ "maligngroup",
11297
+ "malignmark",
11298
+ "mlongdiv",
11299
+ "mscarries",
11300
+ "mscarry",
11301
+ "msgroup",
11302
+ "mstack",
11303
+ "msline",
11304
+ "msrow",
11305
+ "semantics",
11306
+ "annotation",
11307
+ "annotation-xml",
11308
+ "mprescripts",
11309
+ "none"
11310
+ ]);
11036
11311
  var text3 = freeze(["#text"]);
11037
- var html = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "command", "commandfor", "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"]);
11038
- var svg = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "amplitude", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dominant-baseline", "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", "pointer-events", "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-orientation", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "vector-effect", "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"]);
11039
- var mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnalign", "columnlines", "columnspacing", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lquote", "lspace", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
11040
- var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
11312
+ var html = freeze([
11313
+ "accept",
11314
+ "action",
11315
+ "align",
11316
+ "alt",
11317
+ "autocapitalize",
11318
+ "autocomplete",
11319
+ "autopictureinpicture",
11320
+ "autoplay",
11321
+ "background",
11322
+ "bgcolor",
11323
+ "border",
11324
+ "capture",
11325
+ "cellpadding",
11326
+ "cellspacing",
11327
+ "checked",
11328
+ "cite",
11329
+ "class",
11330
+ "clear",
11331
+ "color",
11332
+ "cols",
11333
+ "colspan",
11334
+ "command",
11335
+ "commandfor",
11336
+ "controls",
11337
+ "controlslist",
11338
+ "coords",
11339
+ "crossorigin",
11340
+ "datetime",
11341
+ "decoding",
11342
+ "default",
11343
+ "dir",
11344
+ "disabled",
11345
+ "disablepictureinpicture",
11346
+ "disableremoteplayback",
11347
+ "download",
11348
+ "draggable",
11349
+ "enctype",
11350
+ "enterkeyhint",
11351
+ "exportparts",
11352
+ "face",
11353
+ "for",
11354
+ "headers",
11355
+ "height",
11356
+ "hidden",
11357
+ "high",
11358
+ "href",
11359
+ "hreflang",
11360
+ "id",
11361
+ "inert",
11362
+ "inputmode",
11363
+ "integrity",
11364
+ "ismap",
11365
+ "kind",
11366
+ "label",
11367
+ "lang",
11368
+ "list",
11369
+ "loading",
11370
+ "loop",
11371
+ "low",
11372
+ "max",
11373
+ "maxlength",
11374
+ "media",
11375
+ "method",
11376
+ "min",
11377
+ "minlength",
11378
+ "multiple",
11379
+ "muted",
11380
+ "name",
11381
+ "nonce",
11382
+ "noshade",
11383
+ "novalidate",
11384
+ "nowrap",
11385
+ "open",
11386
+ "optimum",
11387
+ "part",
11388
+ "pattern",
11389
+ "placeholder",
11390
+ "playsinline",
11391
+ "popover",
11392
+ "popovertarget",
11393
+ "popovertargetaction",
11394
+ "poster",
11395
+ "preload",
11396
+ "pubdate",
11397
+ "radiogroup",
11398
+ "readonly",
11399
+ "rel",
11400
+ "required",
11401
+ "rev",
11402
+ "reversed",
11403
+ "role",
11404
+ "rows",
11405
+ "rowspan",
11406
+ "spellcheck",
11407
+ "scope",
11408
+ "selected",
11409
+ "shape",
11410
+ "size",
11411
+ "sizes",
11412
+ "slot",
11413
+ "span",
11414
+ "srclang",
11415
+ "start",
11416
+ "src",
11417
+ "srcset",
11418
+ "step",
11419
+ "style",
11420
+ "summary",
11421
+ "tabindex",
11422
+ "title",
11423
+ "translate",
11424
+ "type",
11425
+ "usemap",
11426
+ "valign",
11427
+ "value",
11428
+ "width",
11429
+ "wrap",
11430
+ "xmlns"
11431
+ ]);
11432
+ var svg = freeze([
11433
+ "accent-height",
11434
+ "accumulate",
11435
+ "additive",
11436
+ "alignment-baseline",
11437
+ "amplitude",
11438
+ "ascent",
11439
+ "attributename",
11440
+ "attributetype",
11441
+ "azimuth",
11442
+ "basefrequency",
11443
+ "baseline-shift",
11444
+ "begin",
11445
+ "bias",
11446
+ "by",
11447
+ "class",
11448
+ "clip",
11449
+ "clippathunits",
11450
+ "clip-path",
11451
+ "clip-rule",
11452
+ "color",
11453
+ "color-interpolation",
11454
+ "color-interpolation-filters",
11455
+ "color-profile",
11456
+ "color-rendering",
11457
+ "cx",
11458
+ "cy",
11459
+ "d",
11460
+ "dx",
11461
+ "dy",
11462
+ "diffuseconstant",
11463
+ "direction",
11464
+ "display",
11465
+ "divisor",
11466
+ "dominant-baseline",
11467
+ "dur",
11468
+ "edgemode",
11469
+ "elevation",
11470
+ "end",
11471
+ "exponent",
11472
+ "fill",
11473
+ "fill-opacity",
11474
+ "fill-rule",
11475
+ "filter",
11476
+ "filterunits",
11477
+ "flood-color",
11478
+ "flood-opacity",
11479
+ "font-family",
11480
+ "font-size",
11481
+ "font-size-adjust",
11482
+ "font-stretch",
11483
+ "font-style",
11484
+ "font-variant",
11485
+ "font-weight",
11486
+ "fx",
11487
+ "fy",
11488
+ "g1",
11489
+ "g2",
11490
+ "glyph-name",
11491
+ "glyphref",
11492
+ "gradientunits",
11493
+ "gradienttransform",
11494
+ "height",
11495
+ "href",
11496
+ "id",
11497
+ "image-rendering",
11498
+ "in",
11499
+ "in2",
11500
+ "intercept",
11501
+ "k",
11502
+ "k1",
11503
+ "k2",
11504
+ "k3",
11505
+ "k4",
11506
+ "kerning",
11507
+ "keypoints",
11508
+ "keysplines",
11509
+ "keytimes",
11510
+ "lang",
11511
+ "lengthadjust",
11512
+ "letter-spacing",
11513
+ "kernelmatrix",
11514
+ "kernelunitlength",
11515
+ "lighting-color",
11516
+ "local",
11517
+ "marker-end",
11518
+ "marker-mid",
11519
+ "marker-start",
11520
+ "markerheight",
11521
+ "markerunits",
11522
+ "markerwidth",
11523
+ "maskcontentunits",
11524
+ "maskunits",
11525
+ "max",
11526
+ "mask",
11527
+ "mask-type",
11528
+ "media",
11529
+ "method",
11530
+ "mode",
11531
+ "min",
11532
+ "name",
11533
+ "numoctaves",
11534
+ "offset",
11535
+ "operator",
11536
+ "opacity",
11537
+ "order",
11538
+ "orient",
11539
+ "orientation",
11540
+ "origin",
11541
+ "overflow",
11542
+ "paint-order",
11543
+ "path",
11544
+ "pathlength",
11545
+ "patterncontentunits",
11546
+ "patterntransform",
11547
+ "patternunits",
11548
+ "pointer-events",
11549
+ "points",
11550
+ "preservealpha",
11551
+ "preserveaspectratio",
11552
+ "primitiveunits",
11553
+ "r",
11554
+ "rx",
11555
+ "ry",
11556
+ "radius",
11557
+ "refx",
11558
+ "refy",
11559
+ "repeatcount",
11560
+ "repeatdur",
11561
+ "restart",
11562
+ "result",
11563
+ "rotate",
11564
+ "scale",
11565
+ "seed",
11566
+ "shape-rendering",
11567
+ "slope",
11568
+ "specularconstant",
11569
+ "specularexponent",
11570
+ "spreadmethod",
11571
+ "startoffset",
11572
+ "stddeviation",
11573
+ "stitchtiles",
11574
+ "stop-color",
11575
+ "stop-opacity",
11576
+ "stroke-dasharray",
11577
+ "stroke-dashoffset",
11578
+ "stroke-linecap",
11579
+ "stroke-linejoin",
11580
+ "stroke-miterlimit",
11581
+ "stroke-opacity",
11582
+ "stroke",
11583
+ "stroke-width",
11584
+ "style",
11585
+ "surfacescale",
11586
+ "systemlanguage",
11587
+ "tabindex",
11588
+ "tablevalues",
11589
+ "targetx",
11590
+ "targety",
11591
+ "transform",
11592
+ "transform-origin",
11593
+ "text-anchor",
11594
+ "text-decoration",
11595
+ "text-orientation",
11596
+ "text-rendering",
11597
+ "textlength",
11598
+ "type",
11599
+ "u1",
11600
+ "u2",
11601
+ "unicode",
11602
+ "values",
11603
+ "vector-effect",
11604
+ "viewbox",
11605
+ "visibility",
11606
+ "version",
11607
+ "vert-adv-y",
11608
+ "vert-origin-x",
11609
+ "vert-origin-y",
11610
+ "width",
11611
+ "word-spacing",
11612
+ "wrap",
11613
+ "writing-mode",
11614
+ "xchannelselector",
11615
+ "ychannelselector",
11616
+ "x",
11617
+ "x1",
11618
+ "x2",
11619
+ "xmlns",
11620
+ "y",
11621
+ "y1",
11622
+ "y2",
11623
+ "z",
11624
+ "zoomandpan"
11625
+ ]);
11626
+ var mathMl = freeze([
11627
+ "accent",
11628
+ "accentunder",
11629
+ "align",
11630
+ "bevelled",
11631
+ "close",
11632
+ "columnalign",
11633
+ "columnlines",
11634
+ "columnspacing",
11635
+ "columnspan",
11636
+ "denomalign",
11637
+ "depth",
11638
+ "dir",
11639
+ "display",
11640
+ "displaystyle",
11641
+ "encoding",
11642
+ "fence",
11643
+ "frame",
11644
+ "height",
11645
+ "href",
11646
+ "id",
11647
+ "largeop",
11648
+ "length",
11649
+ "linethickness",
11650
+ "lquote",
11651
+ "lspace",
11652
+ "mathbackground",
11653
+ "mathcolor",
11654
+ "mathsize",
11655
+ "mathvariant",
11656
+ "maxsize",
11657
+ "minsize",
11658
+ "movablelimits",
11659
+ "notation",
11660
+ "numalign",
11661
+ "open",
11662
+ "rowalign",
11663
+ "rowlines",
11664
+ "rowspacing",
11665
+ "rowspan",
11666
+ "rspace",
11667
+ "rquote",
11668
+ "scriptlevel",
11669
+ "scriptminsize",
11670
+ "scriptsizemultiplier",
11671
+ "selection",
11672
+ "separator",
11673
+ "separators",
11674
+ "stretchy",
11675
+ "subscriptshift",
11676
+ "supscriptshift",
11677
+ "symmetric",
11678
+ "voffset",
11679
+ "width",
11680
+ "xmlns"
11681
+ ]);
11682
+ var xml = freeze([
11683
+ "xlink:href",
11684
+ "xml:id",
11685
+ "xlink:title",
11686
+ "xml:space",
11687
+ "xmlns:xlink"
11688
+ ]);
11041
11689
  var MUSTACHE_EXPR = seal(/{{[\w\W]*|^[\w\W]*}}/g);
11042
11690
  var ERB_EXPR = seal(/<%[\w\W]*|^[\w\W]*%>/g);
11043
11691
  var TMPLIT_EXPR = seal(/\${[\w\W]*/g);
11044
11692
  var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/);
11045
11693
  var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
11046
- var IS_ALLOWED_URI = seal(
11047
- /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
11048
- // eslint-disable-line no-useless-escape
11049
- );
11694
+ var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i);
11050
11695
  var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
11051
- var ATTR_WHITESPACE = seal(
11052
- /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
11053
- // eslint-disable-line no-control-regex
11054
- );
11696
+ var ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g);
11055
11697
  var DOCTYPE_NAME = seal(/^html$/i);
11056
11698
  var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
11057
11699
  var ELEMENT_MARKUP_PROBE = seal(/<[/\w!]/g);
@@ -11064,18 +11706,24 @@ var NODE_TYPE = {
11064
11706
  text: 3,
11065
11707
  cdataSection: 4,
11066
11708
  entityReference: 5,
11067
- // Deprecated
11068
11709
  entityNode: 6,
11069
- // Deprecated
11070
11710
  processingInstruction: 7,
11071
11711
  comment: 8,
11072
11712
  document: 9,
11073
11713
  documentType: 10,
11074
11714
  documentFragment: 11,
11075
11715
  notation: 12
11076
- // Deprecated
11077
11716
  };
11078
- var LITERAL_TEXT_ELEMENT_NAMES = ["style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript"];
11717
+ var LITERAL_TEXT_ELEMENT_NAMES = [
11718
+ "style",
11719
+ "script",
11720
+ "xmp",
11721
+ "iframe",
11722
+ "noembed",
11723
+ "noframes",
11724
+ "plaintext",
11725
+ "noscript"
11726
+ ];
11079
11727
  var LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));
11080
11728
  var LITERAL_TEXT_CLOSE = (function() {
11081
11729
  const map = {};
@@ -11088,14 +11736,10 @@ var getGlobal = function getGlobal2() {
11088
11736
  return typeof window === "undefined" ? null : window;
11089
11737
  };
11090
11738
  var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, purifyHostElement) {
11091
- if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") {
11092
- return null;
11093
- }
11739
+ if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") return null;
11094
11740
  let suffix = null;
11095
11741
  const ATTR_NAME = "data-tt-policy-suffix";
11096
- if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
11097
- suffix = purifyHostElement.getAttribute(ATTR_NAME);
11098
- }
11742
+ if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) suffix = purifyHostElement.getAttribute(ATTR_NAME);
11099
11743
  const policyName = "dompurify" + (suffix ? "#" + suffix : "");
11100
11744
  try {
11101
11745
  return trustedTypes.createPolicy(policyName, {
@@ -11134,7 +11778,7 @@ var _resolveObjectOption = function _resolveObjectOption2(cfg, key, makeFallback
11134
11778
  function createDOMPurify() {
11135
11779
  let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
11136
11780
  const DOMPurify = (root) => createDOMPurify(root);
11137
- DOMPurify.version = "3.4.15";
11781
+ DOMPurify.version = "3.4.16";
11138
11782
  DOMPurify.removed = [];
11139
11783
  if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
11140
11784
  DOMPurify.isSupported = false;
@@ -11144,8 +11788,8 @@ function createDOMPurify() {
11144
11788
  const originalDocument = document2;
11145
11789
  const currentScript = originalDocument.currentScript;
11146
11790
  window2.DocumentFragment;
11147
- const HTMLTemplateElement = window2.HTMLTemplateElement, Node2 = window2.Node, Element2 = window2.Element, NodeFilter2 = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap;
11148
- _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap;
11791
+ const HTMLTemplateElement = window2.HTMLTemplateElement, Node2 = window2.Node, Element2 = window2.Element, NodeFilter2 = window2.NodeFilter;
11792
+ window2.NamedNodeMap === void 0 && (window2.NamedNodeMap || window2.MozNamedAttrMap);
11149
11793
  window2.HTMLFormElement;
11150
11794
  const DOMParser = window2.DOMParser, trustedTypes = window2.trustedTypes;
11151
11795
  const ElementPrototype = Element2.prototype;
@@ -11168,9 +11812,7 @@ function createDOMPurify() {
11168
11812
  };
11169
11813
  if (typeof HTMLTemplateElement === "function") {
11170
11814
  const template = document2.createElement("template");
11171
- if (template.content && template.content.ownerDocument) {
11172
- document2 = template.content.ownerDocument;
11173
- }
11815
+ if (template.content && template.content.ownerDocument) document2 = template.content.ownerDocument;
11174
11816
  }
11175
11817
  let trustedTypesPolicy;
11176
11818
  let emptyHTML = "";
@@ -11178,9 +11820,7 @@ function createDOMPurify() {
11178
11820
  let defaultTrustedTypesPolicyResolved = false;
11179
11821
  let IN_TRUSTED_TYPES_POLICY = 0;
11180
11822
  const _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy2() {
11181
- if (IN_TRUSTED_TYPES_POLICY > 0) {
11182
- 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.');
11183
- }
11823
+ if (IN_TRUSTED_TYPES_POLICY > 0) 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.');
11184
11824
  };
11185
11825
  const _createTrustedHTML = function _createTrustedHTML2(html2) {
11186
11826
  _assertNotInTrustedTypesPolicy();
@@ -11214,9 +11854,20 @@ function createDOMPurify() {
11214
11854
  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;
11215
11855
  let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
11216
11856
  let ALLOWED_TAGS2 = null;
11217
- const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text3]);
11857
+ const DEFAULT_ALLOWED_TAGS = addToSet({}, [
11858
+ ...html$1,
11859
+ ...svg$1,
11860
+ ...svgFilters,
11861
+ ...mathMl$1,
11862
+ ...text3
11863
+ ]);
11218
11864
  let ALLOWED_ATTR2 = null;
11219
- const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
11865
+ const DEFAULT_ALLOWED_ATTR = addToSet({}, [
11866
+ ...html,
11867
+ ...svg,
11868
+ ...mathMl,
11869
+ ...xml
11870
+ ]);
11220
11871
  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
11221
11872
  tagNameCheck: {
11222
11873
  writable: true,
@@ -11293,15 +11944,6 @@ function createDOMPurify() {
11293
11944
  "noscript",
11294
11945
  "plaintext",
11295
11946
  "script",
11296
- // <selectedcontent> mirrors the selected <option>'s subtree, cloned by
11297
- // the UA (customizable <select>) — including any on* handlers — and the
11298
- // engine re-mirrors synchronously whenever a removal changes which
11299
- // option/selectedcontent is current, even inside DOMPurify's inert
11300
- // DOMParser document. Hoisting its children on removal re-inserts a fresh
11301
- // mirror target ahead of the walk, which the engine refills, looping
11302
- // forever (DoS) and amplifying output. Dropping its content on removal
11303
- // (rather than hoisting) breaks that cascade; the content is a duplicate
11304
- // of the option, which is sanitized on its own. See campaign-3 F1/F6.
11305
11947
  "selectedcontent",
11306
11948
  "style",
11307
11949
  "svg",
@@ -11312,21 +11954,59 @@ function createDOMPurify() {
11312
11954
  "xmp"
11313
11955
  ]);
11314
11956
  let DATA_URI_TAGS = null;
11315
- const DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
11957
+ const DEFAULT_DATA_URI_TAGS = addToSet({}, [
11958
+ "audio",
11959
+ "video",
11960
+ "img",
11961
+ "source",
11962
+ "image",
11963
+ "track"
11964
+ ]);
11316
11965
  let URI_SAFE_ATTRIBUTES = null;
11317
- const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
11966
+ const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [
11967
+ "alt",
11968
+ "class",
11969
+ "for",
11970
+ "id",
11971
+ "label",
11972
+ "name",
11973
+ "pattern",
11974
+ "placeholder",
11975
+ "role",
11976
+ "summary",
11977
+ "title",
11978
+ "value",
11979
+ "style",
11980
+ "xmlns"
11981
+ ]);
11318
11982
  const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
11319
11983
  const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
11320
11984
  const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
11321
11985
  let NAMESPACE = HTML_NAMESPACE;
11322
11986
  let IS_EMPTY_INPUT = false;
11323
11987
  let ALLOWED_NAMESPACES = null;
11324
- const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
11325
- const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze(["mi", "mo", "mn", "ms", "mtext"]);
11988
+ const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [
11989
+ MATHML_NAMESPACE,
11990
+ SVG_NAMESPACE,
11991
+ HTML_NAMESPACE
11992
+ ], stringToString);
11993
+ const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([
11994
+ "mi",
11995
+ "mo",
11996
+ "mn",
11997
+ "ms",
11998
+ "mtext"
11999
+ ]);
11326
12000
  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);
11327
12001
  const DEFAULT_HTML_INTEGRATION_POINTS = freeze(["annotation-xml"]);
11328
12002
  let HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);
11329
- const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]);
12003
+ const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [
12004
+ "title",
12005
+ "style",
12006
+ "font",
12007
+ "a",
12008
+ "script"
12009
+ ]);
11330
12010
  let PARSER_MEDIA_TYPE = null;
11331
12011
  const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
11332
12012
  const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
@@ -11338,25 +12018,14 @@ function createDOMPurify() {
11338
12018
  };
11339
12019
  const _parseConfig = function _parseConfig2() {
11340
12020
  let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
11341
- if (CONFIG && CONFIG === cfg) {
11342
- return;
11343
- }
11344
- if (!cfg || typeof cfg !== "object") {
11345
- cfg = {};
11346
- }
12021
+ if (CONFIG && CONFIG === cfg) return;
12022
+ if (!cfg || typeof cfg !== "object") cfg = {};
11347
12023
  cfg = clone(cfg);
11348
- PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
11349
- SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
12024
+ PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
11350
12025
  transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
11351
- ALLOWED_TAGS2 = _resolveSetOption(cfg, "ALLOWED_TAGS", DEFAULT_ALLOWED_TAGS, {
11352
- transform: transformCaseFunc
11353
- });
11354
- ALLOWED_ATTR2 = _resolveSetOption(cfg, "ALLOWED_ATTR", DEFAULT_ALLOWED_ATTR, {
11355
- transform: transformCaseFunc
11356
- });
11357
- ALLOWED_NAMESPACES = _resolveSetOption(cfg, "ALLOWED_NAMESPACES", DEFAULT_ALLOWED_NAMESPACES, {
11358
- transform: stringToString
11359
- });
12026
+ ALLOWED_TAGS2 = _resolveSetOption(cfg, "ALLOWED_TAGS", DEFAULT_ALLOWED_TAGS, { transform: transformCaseFunc });
12027
+ ALLOWED_ATTR2 = _resolveSetOption(cfg, "ALLOWED_ATTR", DEFAULT_ALLOWED_ATTR, { transform: transformCaseFunc });
12028
+ ALLOWED_NAMESPACES = _resolveSetOption(cfg, "ALLOWED_NAMESPACES", DEFAULT_ALLOWED_NAMESPACES, { transform: stringToString });
11360
12029
  URI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, "ADD_URI_SAFE_ATTR", DEFAULT_URI_SAFE_ATTRIBUTES, {
11361
12030
  transform: transformCaseFunc,
11362
12031
  base: DEFAULT_URI_SAFE_ATTRIBUTES
@@ -11365,15 +12034,9 @@ function createDOMPurify() {
11365
12034
  transform: transformCaseFunc,
11366
12035
  base: DEFAULT_DATA_URI_TAGS
11367
12036
  });
11368
- FORBID_CONTENTS = _resolveSetOption(cfg, "FORBID_CONTENTS", DEFAULT_FORBID_CONTENTS, {
11369
- transform: transformCaseFunc
11370
- });
11371
- FORBID_TAGS = _resolveSetOption(cfg, "FORBID_TAGS", clone({}), {
11372
- transform: transformCaseFunc
11373
- });
11374
- FORBID_ATTR = _resolveSetOption(cfg, "FORBID_ATTR", clone({}), {
11375
- transform: transformCaseFunc
11376
- });
12037
+ FORBID_CONTENTS = _resolveSetOption(cfg, "FORBID_CONTENTS", DEFAULT_FORBID_CONTENTS, { transform: transformCaseFunc });
12038
+ FORBID_TAGS = _resolveSetOption(cfg, "FORBID_TAGS", clone({}), { transform: transformCaseFunc });
12039
+ FORBID_ATTR = _resolveSetOption(cfg, "FORBID_ATTR", clone({}), { transform: transformCaseFunc });
11377
12040
  USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === "object" ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;
11378
12041
  ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
11379
12042
  ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
@@ -11392,36 +12055,16 @@ function createDOMPurify() {
11392
12055
  IN_PLACE = cfg.IN_PLACE || false;
11393
12056
  IS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI;
11394
12057
  NAMESPACE = typeof cfg.NAMESPACE === "string" ? cfg.NAMESPACE : HTML_NAMESPACE;
11395
- MATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(
11396
- cfg,
11397
- "MATHML_TEXT_INTEGRATION_POINTS",
11398
- () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS)
11399
- // Default built-in map
11400
- );
11401
- HTML_INTEGRATION_POINTS = _resolveObjectOption(
11402
- cfg,
11403
- "HTML_INTEGRATION_POINTS",
11404
- () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS)
11405
- // Default built-in map
11406
- );
12058
+ MATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(cfg, "MATHML_TEXT_INTEGRATION_POINTS", () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS));
12059
+ HTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, "HTML_INTEGRATION_POINTS", () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS));
11407
12060
  const customElementHandling = _resolveObjectOption(cfg, "CUSTOM_ELEMENT_HANDLING", () => create(null));
11408
12061
  CUSTOM_ELEMENT_HANDLING = create(null);
11409
- if (objectHasOwnProperty(customElementHandling, "tagNameCheck") && isRegexOrFunction(customElementHandling.tagNameCheck)) {
11410
- CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;
11411
- }
11412
- if (objectHasOwnProperty(customElementHandling, "attributeNameCheck") && isRegexOrFunction(customElementHandling.attributeNameCheck)) {
11413
- CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;
11414
- }
11415
- if (objectHasOwnProperty(customElementHandling, "allowCustomizedBuiltInElements") && typeof customElementHandling.allowCustomizedBuiltInElements === "boolean") {
11416
- CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;
11417
- }
12062
+ if (objectHasOwnProperty(customElementHandling, "tagNameCheck") && isRegexOrFunction(customElementHandling.tagNameCheck)) CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;
12063
+ if (objectHasOwnProperty(customElementHandling, "attributeNameCheck") && isRegexOrFunction(customElementHandling.attributeNameCheck)) CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;
12064
+ if (objectHasOwnProperty(customElementHandling, "allowCustomizedBuiltInElements") && typeof customElementHandling.allowCustomizedBuiltInElements === "boolean") CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;
11418
12065
  seal(CUSTOM_ELEMENT_HANDLING);
11419
- if (SAFE_FOR_TEMPLATES) {
11420
- ALLOW_DATA_ATTR = false;
11421
- }
11422
- if (RETURN_DOM_FRAGMENT) {
11423
- RETURN_DOM = true;
11424
- }
12066
+ if (SAFE_FOR_TEMPLATES) ALLOW_DATA_ATTR = false;
12067
+ if (RETURN_DOM_FRAGMENT) RETURN_DOM = true;
11425
12068
  if (USE_PROFILES) {
11426
12069
  ALLOWED_TAGS2 = addToSet({}, text3);
11427
12070
  ALLOWED_ATTR2 = create(null);
@@ -11448,48 +12091,36 @@ function createDOMPurify() {
11448
12091
  EXTRA_ELEMENT_HANDLING.tagCheck = null;
11449
12092
  EXTRA_ELEMENT_HANDLING.attributeCheck = null;
11450
12093
  if (objectHasOwnProperty(cfg, "ADD_TAGS")) {
11451
- if (typeof cfg.ADD_TAGS === "function") {
11452
- EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
11453
- } else if (arrayIsArray(cfg.ADD_TAGS)) {
11454
- if (ALLOWED_TAGS2 === DEFAULT_ALLOWED_TAGS) {
11455
- ALLOWED_TAGS2 = clone(ALLOWED_TAGS2);
11456
- }
12094
+ if (typeof cfg.ADD_TAGS === "function") EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
12095
+ else if (arrayIsArray(cfg.ADD_TAGS)) {
12096
+ if (ALLOWED_TAGS2 === DEFAULT_ALLOWED_TAGS) ALLOWED_TAGS2 = clone(ALLOWED_TAGS2);
11457
12097
  addToSet(ALLOWED_TAGS2, cfg.ADD_TAGS, transformCaseFunc);
11458
12098
  }
11459
12099
  }
11460
12100
  if (objectHasOwnProperty(cfg, "ADD_ATTR")) {
11461
- if (typeof cfg.ADD_ATTR === "function") {
11462
- EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
11463
- } else if (arrayIsArray(cfg.ADD_ATTR)) {
11464
- if (ALLOWED_ATTR2 === DEFAULT_ALLOWED_ATTR) {
11465
- ALLOWED_ATTR2 = clone(ALLOWED_ATTR2);
11466
- }
12101
+ if (typeof cfg.ADD_ATTR === "function") EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
12102
+ else if (arrayIsArray(cfg.ADD_ATTR)) {
12103
+ if (ALLOWED_ATTR2 === DEFAULT_ALLOWED_ATTR) ALLOWED_ATTR2 = clone(ALLOWED_ATTR2);
11467
12104
  addToSet(ALLOWED_ATTR2, cfg.ADD_ATTR, transformCaseFunc);
11468
12105
  }
11469
12106
  }
11470
12107
  if (objectHasOwnProperty(cfg, "ADD_FORBID_CONTENTS") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {
11471
- if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
11472
- FORBID_CONTENTS = clone(FORBID_CONTENTS);
11473
- }
12108
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS);
11474
12109
  addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
11475
12110
  }
11476
- if (KEEP_CONTENT) {
11477
- ALLOWED_TAGS2["#text"] = true;
11478
- }
11479
- if (WHOLE_DOCUMENT) {
11480
- addToSet(ALLOWED_TAGS2, ["html", "head", "body"]);
11481
- }
12111
+ if (KEEP_CONTENT) ALLOWED_TAGS2["#text"] = true;
12112
+ if (WHOLE_DOCUMENT) addToSet(ALLOWED_TAGS2, [
12113
+ "html",
12114
+ "head",
12115
+ "body"
12116
+ ]);
11482
12117
  if (ALLOWED_TAGS2.table) {
11483
12118
  addToSet(ALLOWED_TAGS2, ["tbody"]);
11484
12119
  delete FORBID_TAGS.tbody;
11485
12120
  }
11486
12121
  if (cfg.TRUSTED_TYPES_POLICY) {
11487
- if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") {
11488
- throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
11489
- }
11490
- if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") {
11491
- throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
11492
- }
12122
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
12123
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
11493
12124
  const previousTrustedTypesPolicy = trustedTypesPolicy;
11494
12125
  trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
11495
12126
  try {
@@ -11502,85 +12133,55 @@ function createDOMPurify() {
11502
12133
  trustedTypesPolicy = void 0;
11503
12134
  emptyHTML = "";
11504
12135
  } else {
11505
- if (trustedTypesPolicy === void 0) {
11506
- trustedTypesPolicy = _getDefaultTrustedTypesPolicy();
11507
- }
11508
- if (trustedTypesPolicy && typeof emptyHTML === "string") {
11509
- emptyHTML = _createTrustedHTML("");
11510
- }
11511
- }
11512
- if (freeze) {
11513
- freeze(cfg);
12136
+ if (trustedTypesPolicy === void 0) trustedTypesPolicy = _getDefaultTrustedTypesPolicy();
12137
+ if (trustedTypesPolicy && typeof emptyHTML === "string") emptyHTML = _createTrustedHTML("");
11514
12138
  }
12139
+ if (freeze) freeze(cfg);
11515
12140
  CONFIG = cfg;
11516
12141
  };
11517
- const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
12142
+ const ALL_SVG_TAGS = addToSet({}, [
12143
+ ...svg$1,
12144
+ ...svgFilters,
12145
+ ...svgDisallowed
12146
+ ]);
11518
12147
  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
11519
12148
  const _checkSvgNamespace = function _checkSvgNamespace2(tagName, parent, parentTagName) {
11520
- if (parent.namespaceURI === HTML_NAMESPACE) {
11521
- return tagName === "svg";
11522
- }
11523
- if (parent.namespaceURI === MATHML_NAMESPACE) {
11524
- return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
11525
- }
12149
+ if (parent.namespaceURI === HTML_NAMESPACE) return tagName === "svg";
12150
+ if (parent.namespaceURI === MATHML_NAMESPACE) return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
11526
12151
  return Boolean(ALL_SVG_TAGS[tagName]);
11527
12152
  };
11528
12153
  const _checkMathMlNamespace = function _checkMathMlNamespace2(tagName, parent, parentTagName) {
11529
- if (parent.namespaceURI === HTML_NAMESPACE) {
11530
- return tagName === "math";
11531
- }
11532
- if (parent.namespaceURI === SVG_NAMESPACE) {
11533
- return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
11534
- }
12154
+ if (parent.namespaceURI === HTML_NAMESPACE) return tagName === "math";
12155
+ if (parent.namespaceURI === SVG_NAMESPACE) return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
11535
12156
  return Boolean(ALL_MATHML_TAGS[tagName]);
11536
12157
  };
11537
12158
  const _checkHtmlNamespace = function _checkHtmlNamespace2(tagName, parent, parentTagName) {
11538
- if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
11539
- return false;
11540
- }
11541
- if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
11542
- return false;
11543
- }
12159
+ if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) return false;
12160
+ if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) return false;
11544
12161
  return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
11545
12162
  };
11546
12163
  const _checkValidNamespace = function _checkValidNamespace2(element) {
11547
12164
  let parent = getParentNode(element);
11548
- if (!parent || !parent.tagName) {
11549
- parent = {
11550
- namespaceURI: NAMESPACE,
11551
- tagName: "template"
11552
- };
11553
- }
12165
+ if (!parent || !parent.tagName) parent = {
12166
+ namespaceURI: NAMESPACE,
12167
+ tagName: "template"
12168
+ };
11554
12169
  const tagName = stringToLowerCase(element.tagName);
11555
12170
  const parentTagName = stringToLowerCase(parent.tagName);
11556
- if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
11557
- return false;
11558
- }
11559
- if (element.namespaceURI === SVG_NAMESPACE) {
11560
- return _checkSvgNamespace(tagName, parent, parentTagName);
11561
- }
11562
- if (element.namespaceURI === MATHML_NAMESPACE) {
11563
- return _checkMathMlNamespace(tagName, parent, parentTagName);
11564
- }
11565
- if (element.namespaceURI === HTML_NAMESPACE) {
11566
- return _checkHtmlNamespace(tagName, parent, parentTagName);
11567
- }
11568
- if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
11569
- return true;
11570
- }
12171
+ if (!ALLOWED_NAMESPACES[element.namespaceURI]) return false;
12172
+ if (element.namespaceURI === SVG_NAMESPACE) return _checkSvgNamespace(tagName, parent, parentTagName);
12173
+ if (element.namespaceURI === MATHML_NAMESPACE) return _checkMathMlNamespace(tagName, parent, parentTagName);
12174
+ if (element.namespaceURI === HTML_NAMESPACE) return _checkHtmlNamespace(tagName, parent, parentTagName);
12175
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) return true;
11571
12176
  return false;
11572
12177
  };
11573
12178
  const _forceRemove = function _forceRemove2(node) {
11574
- arrayPush(DOMPurify.removed, {
11575
- element: node
11576
- });
12179
+ arrayPush(DOMPurify.removed, { element: node });
11577
12180
  try {
11578
12181
  getParentNode(node).removeChild(node);
11579
12182
  } catch (_2) {
11580
12183
  remove(node);
11581
- if (!getParentNode(node)) {
11582
- throw typeErrorCreate("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place");
11583
- }
12184
+ if (!getParentNode(node)) throw typeErrorCreate("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place");
11584
12185
  }
11585
12186
  };
11586
12187
  const _stripAttributeNode = function _stripAttributeNode2(element, attribute, name) {
@@ -11609,34 +12210,25 @@ function createDOMPurify() {
11609
12210
  });
11610
12211
  }
11611
12212
  const attributes = getAttributes(root);
11612
- if (attributes) {
11613
- for (let i = attributes.length - 1; i >= 0; --i) {
11614
- const attribute = attributes[i];
11615
- const name = attribute && attribute.name;
11616
- if (typeof name === "string") {
11617
- _stripAttributeNode(root, attribute, name);
11618
- }
11619
- }
12213
+ if (attributes) for (let i = attributes.length - 1; i >= 0; --i) {
12214
+ const attribute = attributes[i];
12215
+ const name = attribute && attribute.name;
12216
+ if (typeof name === "string") _stripAttributeNode(root, attribute, name);
11620
12217
  }
11621
12218
  };
11622
12219
  const _removeAttribute = function _removeAttribute2(name, element, attr) {
11623
- if (!attr) {
11624
- try {
11625
- attr = element.getAttributeNode(name);
11626
- } catch (_2) {
11627
- attr = null;
11628
- }
12220
+ if (!attr) try {
12221
+ attr = element.getAttributeNode(name);
12222
+ } catch (_2) {
12223
+ attr = null;
11629
12224
  }
11630
12225
  arrayPush(DOMPurify.removed, {
11631
12226
  attribute: attr || null,
11632
12227
  from: element
11633
12228
  });
11634
12229
  try {
11635
- if (attr) {
11636
- removeAttributeNode(element, attr);
11637
- } else {
11638
- element.removeAttribute(name);
11639
- }
12230
+ if (attr) removeAttributeNode(element, attr);
12231
+ else element.removeAttribute(name);
11640
12232
  } catch (_2) {
11641
12233
  try {
11642
12234
  element.removeAttribute(name);
@@ -11644,30 +12236,23 @@ function createDOMPurify() {
11644
12236
  }
11645
12237
  }
11646
12238
  if (name === "is") {
11647
- if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
11648
- try {
11649
- _forceRemove(element);
11650
- } catch (_2) {
11651
- }
11652
- } else {
11653
- try {
11654
- element.setAttribute(name, "");
11655
- } catch (_2) {
11656
- }
12239
+ if (RETURN_DOM || RETURN_DOM_FRAGMENT) try {
12240
+ _forceRemove(element);
12241
+ } catch (_2) {
12242
+ }
12243
+ else try {
12244
+ element.setAttribute(name, "");
12245
+ } catch (_2) {
11657
12246
  }
11658
12247
  }
11659
12248
  };
11660
12249
  const _stripDisallowedAttributes = function _stripDisallowedAttributes2(element) {
11661
12250
  const attributes = getAttributes(element);
11662
- if (!attributes) {
11663
- return;
11664
- }
12251
+ if (!attributes) return;
11665
12252
  for (let i = attributes.length - 1; i >= 0; --i) {
11666
12253
  const attribute = attributes[i];
11667
12254
  const name = attribute && attribute.name;
11668
- if (typeof name !== "string" || ALLOWED_ATTR2[transformCaseFunc(name)]) {
11669
- continue;
11670
- }
12255
+ if (typeof name !== "string" || ALLOWED_ATTR2[transformCaseFunc(name)]) continue;
11671
12256
  _stripAttributeNode(element, attribute, name);
11672
12257
  }
11673
12258
  };
@@ -11675,31 +12260,18 @@ function createDOMPurify() {
11675
12260
  const stack = [root];
11676
12261
  while (stack.length > 0) {
11677
12262
  const node = stack.pop();
11678
- const nodeType = _readNodeType(node);
11679
- if (nodeType === NODE_TYPE.element) {
11680
- _stripDisallowedAttributes(node);
11681
- }
12263
+ if (_readNodeType(node) === NODE_TYPE.element) _stripDisallowedAttributes(node);
11682
12264
  const childNodes = getChildNodes(node);
11683
- if (childNodes) {
11684
- for (let i = childNodes.length - 1; i >= 0; --i) {
11685
- stack.push(childNodes[i]);
11686
- }
11687
- }
12265
+ if (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push(childNodes[i]);
11688
12266
  }
11689
12267
  };
11690
12268
  const _isPatchLinkageAttribute = function _isPatchLinkageAttribute2(lcName, lcTag) {
11691
- if (!SAFE_FOR_XML) {
11692
- return false;
11693
- }
11694
- if (lcName === "patchsrc") {
11695
- return true;
11696
- }
12269
+ if (!SAFE_FOR_XML) return false;
12270
+ if (lcName === "patchsrc") return true;
11697
12271
  return lcName === "for" && lcTag !== "label" && lcTag !== "output";
11698
12272
  };
11699
12273
  const _neutralizePatchLinkage = function _neutralizePatchLinkage2(root) {
11700
- if (!SAFE_FOR_XML) {
11701
- return;
11702
- }
12274
+ if (!SAFE_FOR_XML) return;
11703
12275
  const stack = [root];
11704
12276
  while (stack.length > 0) {
11705
12277
  const node = stack.pop();
@@ -11715,41 +12287,28 @@ function createDOMPurify() {
11715
12287
  const element = node;
11716
12288
  const lcTag = transformCaseFunc(_readNodeName(node));
11717
12289
  try {
11718
- if (element.hasAttribute && element.hasAttribute("patchsrc")) {
11719
- element.removeAttribute("patchsrc");
11720
- }
11721
- if (element.hasAttribute && element.hasAttribute("for") && _isPatchLinkageAttribute("for", lcTag)) {
11722
- element.removeAttribute("for");
11723
- }
12290
+ if (element.hasAttribute && element.hasAttribute("patchsrc")) element.removeAttribute("patchsrc");
12291
+ if (element.hasAttribute && element.hasAttribute("for") && _isPatchLinkageAttribute("for", lcTag)) element.removeAttribute("for");
11724
12292
  } catch (_2) {
11725
12293
  }
11726
12294
  }
11727
12295
  const childNodes = getChildNodes(node);
11728
- if (childNodes) {
11729
- for (let i = childNodes.length - 1; i >= 0; --i) {
11730
- stack.push(childNodes[i]);
11731
- }
11732
- }
12296
+ if (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push(childNodes[i]);
11733
12297
  }
11734
12298
  };
11735
12299
  const _initDocument = function _initDocument2(dirty) {
11736
12300
  let doc = null;
11737
12301
  let leadingWhitespace = null;
11738
- if (FORCE_BODY) {
11739
- dirty = "<remove></remove>" + dirty;
11740
- } else {
12302
+ if (FORCE_BODY) dirty = "<remove></remove>" + dirty;
12303
+ else {
11741
12304
  const matches = stringMatch(dirty, /^[\r\n\t ]+/);
11742
12305
  leadingWhitespace = matches && matches[0];
11743
12306
  }
11744
- if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) {
11745
- dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
11746
- }
12307
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
11747
12308
  const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;
11748
- if (NAMESPACE === HTML_NAMESPACE) {
11749
- try {
11750
- doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
11751
- } catch (_2) {
11752
- }
12309
+ if (NAMESPACE === HTML_NAMESPACE) try {
12310
+ doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
12311
+ } catch (_2) {
11753
12312
  }
11754
12313
  if (!doc || !doc.documentElement) {
11755
12314
  doc = implementation.createDocument(NAMESPACE, "template", null);
@@ -11759,23 +12318,13 @@ function createDOMPurify() {
11759
12318
  }
11760
12319
  }
11761
12320
  const body = doc.body || doc.documentElement;
11762
- if (dirty && leadingWhitespace) {
11763
- body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
11764
- }
11765
- if (NAMESPACE === HTML_NAMESPACE) {
11766
- return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
11767
- }
12321
+ if (dirty && leadingWhitespace) body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
12322
+ if (NAMESPACE === HTML_NAMESPACE) return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
11768
12323
  return WHOLE_DOCUMENT ? doc.documentElement : body;
11769
12324
  };
11770
12325
  const _createNodeIterator = function _createNodeIterator2(root) {
11771
12326
  const doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;
11772
- return createNodeIterator.call(
11773
- doc || root,
11774
- root,
11775
- // eslint-disable-next-line no-bitwise
11776
- NodeFilter2.SHOW_ELEMENT | NodeFilter2.SHOW_COMMENT | NodeFilter2.SHOW_TEXT | NodeFilter2.SHOW_PROCESSING_INSTRUCTION | NodeFilter2.SHOW_CDATA_SECTION,
11777
- null
11778
- );
12327
+ return createNodeIterator.call(doc || root, root, NodeFilter2.SHOW_ELEMENT | NodeFilter2.SHOW_COMMENT | NodeFilter2.SHOW_TEXT | NodeFilter2.SHOW_PROCESSING_INSTRUCTION | NodeFilter2.SHOW_CDATA_SECTION, null);
11779
12328
  };
11780
12329
  const _stripTemplateExpressions = function _stripTemplateExpressions2(value) {
11781
12330
  value = stringReplace(value, MUSTACHE_EXPR$1, " ");
@@ -11787,73 +12336,25 @@ function createDOMPurify() {
11787
12336
  var _node$querySelectorAl;
11788
12337
  node.normalize();
11789
12338
  const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;
11790
- const walker = createNodeIterator.call(
11791
- doc || node,
11792
- node,
11793
- // eslint-disable-next-line no-bitwise
11794
- NodeFilter2.SHOW_TEXT | NodeFilter2.SHOW_COMMENT | NodeFilter2.SHOW_CDATA_SECTION | NodeFilter2.SHOW_PROCESSING_INSTRUCTION,
11795
- null
11796
- );
12339
+ const walker = createNodeIterator.call(doc || node, node, NodeFilter2.SHOW_TEXT | NodeFilter2.SHOW_COMMENT | NodeFilter2.SHOW_CDATA_SECTION | NodeFilter2.SHOW_PROCESSING_INSTRUCTION, null);
11797
12340
  let currentNode = walker.nextNode();
11798
12341
  while (currentNode) {
11799
12342
  currentNode.data = _stripTemplateExpressions(currentNode.data);
11800
12343
  currentNode = walker.nextNode();
11801
12344
  }
11802
12345
  const templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === void 0 ? void 0 : _node$querySelectorAl.call(node, "template");
11803
- if (templates) {
11804
- arrayForEach(templates, (tmpl) => {
11805
- if (_isDocumentFragment(tmpl.content)) {
11806
- _scrubTemplateExpressions2(tmpl.content);
11807
- }
11808
- });
11809
- }
12346
+ if (templates) arrayForEach(templates, (tmpl) => {
12347
+ if (_isDocumentFragment(tmpl.content)) _scrubTemplateExpressions2(tmpl.content);
12348
+ });
11810
12349
  };
11811
12350
  const _isClobbered = function _isClobbered2(element) {
11812
12351
  const realTagName = getNodeName ? getNodeName(element) : null;
11813
- if (typeof realTagName !== "string") {
11814
- return false;
11815
- }
11816
- if (transformCaseFunc(realTagName) !== "form") {
11817
- return false;
11818
- }
11819
- return typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || // Realm-safe NamedNodeMap detection: equality against the cached
11820
- // prototype getter. Clobbered .attributes (e.g. <input name="attributes">)
11821
- // makes the direct read diverge from the cached read; a clean form
11822
- // (same-realm OR foreign-realm) has both reads pointing at the same
11823
- // canonical NamedNodeMap.
11824
- element.attributes !== getAttributes(element) || typeof element.removeAttribute !== "function" || // A form descendant named "removeAttributeNode" or "getAttributeNode"
11825
- // shadows these Attr-node methods via [LegacyOverrideBuiltIns].
11826
- // _removeAttribute() / _stripAttributeNode() reach for
11827
- // element.removeAttributeNode(attr) first; when it is shadowed the call
11828
- // throws and the name-based fallback element.removeAttribute(name)
11829
- // ASCII-lowercases its lookup key in an HTML document, silently missing
11830
- // a case-preserved event-handler attribute (e.g. an ONANIMATIONSTART
11831
- // that reached the sanitizer through an XML/XHTML parse). Flag the form
11832
- // so it is removed wholesale, exactly as for the other shadowed methods.
11833
- typeof element.removeAttributeNode !== "function" || typeof element.getAttributeNode !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function" || // NodeType clobbering probe. Cached Node.prototype.nodeType getter
11834
- // returns the integer 1 for any Element regardless of realm; direct
11835
- // read on a clobbered form (e.g. <input name="nodeType">) returns
11836
- // the named child element. Cheap addition — nodeType is read from
11837
- // an internal slot, no serialization cost — and removes a residual
11838
- // clobbering surface used by several mXSS / PI / comment branches
11839
- // in _sanitizeElements that compare currentNode.nodeType directly.
11840
- element.nodeType !== getNodeType(element) || // HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named
11841
- // "childNodes" shadows the prototype getter. Direct reads of
11842
- // form.childNodes from a clobbered form return the named child
11843
- // instead of the real NodeList, so any walk that reads it directly
11844
- // skips the form's real children. Compare the direct read to the
11845
- // cached Node.prototype getter — when the form's named-property
11846
- // getter intercepts the read, the two values differ and we flag
11847
- // the form. This catches every clobbering child type (input,
11848
- // select, etc.) regardless of whether the named child happens to
11849
- // carry a numeric .length, which a typeof-based probe would miss
11850
- // (e.g. HTMLSelectElement.length is a defined unsigned-long).
11851
- element.childNodes !== getChildNodes(element);
12352
+ if (typeof realTagName !== "string") return false;
12353
+ if (transformCaseFunc(realTagName) !== "form") return false;
12354
+ 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);
11852
12355
  };
11853
12356
  const _isDocumentFragment = function _isDocumentFragment2(value) {
11854
- if (!getNodeType || typeof value !== "object" || value === null) {
11855
- return false;
11856
- }
12357
+ if (!getNodeType || typeof value !== "object" || value === null) return false;
11857
12358
  try {
11858
12359
  return getNodeType(value) === NODE_TYPE.documentFragment;
11859
12360
  } catch (_2) {
@@ -11861,9 +12362,7 @@ function createDOMPurify() {
11861
12362
  }
11862
12363
  };
11863
12364
  const _isNode = function _isNode2(value) {
11864
- if (!getNodeType || typeof value !== "object" || value === null) {
11865
- return false;
11866
- }
12365
+ if (!getNodeType || typeof value !== "object" || value === null) return false;
11867
12366
  try {
11868
12367
  return typeof getNodeType(value) === "number";
11869
12368
  } catch (_2) {
@@ -11871,44 +12370,28 @@ function createDOMPurify() {
11871
12370
  }
11872
12371
  };
11873
12372
  function _executeHooks(hooks2, currentNode, data) {
11874
- if (hooks2.length === 0) {
11875
- return;
11876
- }
12373
+ if (hooks2.length === 0) return;
11877
12374
  arrayForEach(hooks2, (hook) => {
11878
12375
  hook.call(DOMPurify, currentNode, data, CONFIG);
11879
12376
  });
11880
12377
  }
11881
12378
  const _isUnsafeNode = function _isUnsafeNode2(currentNode, tagName) {
11882
- if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) {
11883
- return true;
11884
- }
11885
- if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && LITERAL_TEXT_ELEMENTS[tagName] && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === "string" && regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent))) {
11886
- return true;
11887
- }
11888
- if (currentNode.nodeType === NODE_TYPE.processingInstruction) {
11889
- return true;
11890
- }
11891
- if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) {
11892
- return true;
11893
- }
12379
+ if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) return true;
12380
+ if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && LITERAL_TEXT_ELEMENTS[tagName] && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === "string" && regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent))) return true;
12381
+ if (currentNode.nodeType === NODE_TYPE.processingInstruction) return true;
12382
+ if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) return true;
11894
12383
  return false;
11895
12384
  };
11896
12385
  const _matchesNameCheck = function _matchesNameCheck2(check, name) {
11897
- if (check instanceof RegExp) {
11898
- return regExpTest(check, name);
11899
- }
12386
+ if (check instanceof RegExp) return regExpTest(check, name);
11900
12387
  if (check instanceof Function) {
11901
- for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
11902
- args[_key - 2] = arguments[_key];
11903
- }
12388
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];
11904
12389
  return Boolean(check(name, ...args));
11905
12390
  }
11906
12391
  return false;
11907
12392
  };
11908
12393
  const _sanitizeDisallowedNode = function _sanitizeDisallowedNode2(currentNode, tagName, root) {
11909
- if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
11910
- return false;
11911
- }
12394
+ if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;
11912
12395
  if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
11913
12396
  const parentNode = getParentNode(currentNode);
11914
12397
  const childNodes = getChildNodes(currentNode);
@@ -11924,25 +12407,17 @@ function createDOMPurify() {
11924
12407
  return true;
11925
12408
  };
11926
12409
  const _forkSharedAllowlist = function _forkSharedAllowlist2(hookList, set, defaultSet, setConfigSet) {
11927
- if (hookList.length === 0) {
11928
- return set;
11929
- }
12410
+ if (hookList.length === 0) return set;
11930
12411
  return set === defaultSet || set === setConfigSet ? clone(set) : set;
11931
12412
  };
11932
12413
  const _handleHookDetachedNode = function _handleHookDetachedNode2(currentNode, root) {
11933
- if (currentNode === root || getParentNode(currentNode) !== null) {
11934
- return false;
11935
- }
11936
- if (IN_PLACE) {
11937
- _neutralizeSubtree(currentNode);
11938
- }
12414
+ if (currentNode === root || getParentNode(currentNode) !== null) return false;
12415
+ if (IN_PLACE) _neutralizeSubtree(currentNode);
11939
12416
  return true;
11940
12417
  };
11941
12418
  const _sanitizeElements = function _sanitizeElements2(currentNode, root) {
11942
12419
  _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
11943
- if (_handleHookDetachedNode(currentNode, root)) {
11944
- return true;
11945
- }
12420
+ if (_handleHookDetachedNode(currentNode, root)) return true;
11946
12421
  if (_isClobbered(currentNode)) {
11947
12422
  _forceRemove(currentNode);
11948
12423
  return true;
@@ -11953,9 +12428,7 @@ function createDOMPurify() {
11953
12428
  tagName,
11954
12429
  allowedTags: ALLOWED_TAGS2
11955
12430
  });
11956
- if (_handleHookDetachedNode(currentNode, root)) {
11957
- return true;
11958
- }
12431
+ if (_handleHookDetachedNode(currentNode, root)) return true;
11959
12432
  if (_isUnsafeNode(currentNode, tagName)) {
11960
12433
  _forceRemove(currentNode);
11961
12434
  return true;
@@ -11964,11 +12437,11 @@ function createDOMPurify() {
11964
12437
  const removed = _sanitizeDisallowedNode(currentNode, tagName, root);
11965
12438
  if (removed === false) {
11966
12439
  _executeHooks(hooks.afterSanitizeElements, currentNode, null);
12440
+ if (_handleHookDetachedNode(currentNode, root)) return true;
11967
12441
  }
11968
12442
  return removed;
11969
12443
  }
11970
- const nt2 = _readNodeType(currentNode);
11971
- if (nt2 === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {
12444
+ if (_readNodeType(currentNode) === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {
11972
12445
  _forceRemove(currentNode);
11973
12446
  return true;
11974
12447
  }
@@ -11979,81 +12452,53 @@ function createDOMPurify() {
11979
12452
  if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
11980
12453
  const content = _stripTemplateExpressions(currentNode.textContent);
11981
12454
  if (currentNode.textContent !== content) {
11982
- arrayPush(DOMPurify.removed, {
11983
- element: currentNode.cloneNode()
11984
- });
12455
+ arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });
11985
12456
  currentNode.textContent = content;
11986
12457
  }
11987
12458
  }
11988
12459
  _executeHooks(hooks.afterSanitizeElements, currentNode, null);
11989
- return false;
12460
+ return _handleHookDetachedNode(currentNode, root);
11990
12461
  };
11991
12462
  const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
11992
- if (FORBID_ATTR[lcName]) {
11993
- return false;
11994
- }
11995
- if (_isPatchLinkageAttribute(lcName, lcTag)) {
11996
- return false;
11997
- }
11998
- if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
11999
- return false;
12000
- }
12463
+ if (FORBID_ATTR[lcName]) return false;
12464
+ if (_isPatchLinkageAttribute(lcName, lcTag)) return false;
12465
+ if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) return false;
12001
12466
  const nameIsPermitted = ALLOWED_ATTR2[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);
12002
- if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName)) {
12003
- return true;
12004
- }
12005
- if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) {
12006
- return true;
12007
- }
12008
- if (!nameIsPermitted) {
12009
- return (
12010
- // Condition a) covers a basically valid custom element tag name whose
12011
- // tag passes the configured tagNameCheck and whose attribute name
12012
- // passes the configured attributeNameCheck ...
12013
- _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) || // Condition b) covers an `is` attribute whose value passes the
12014
- // configured tagNameCheck while customized built-in elements are
12015
- // allowed.
12016
- lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)
12017
- );
12018
- }
12019
- if (URI_SAFE_ATTRIBUTES[lcName]) {
12020
- return true;
12021
- }
12022
- if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) {
12023
- return true;
12024
- }
12025
- if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) {
12026
- return true;
12027
- }
12028
- if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) {
12029
- return true;
12030
- }
12467
+ if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName)) return true;
12468
+ if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) return true;
12469
+ if (!nameIsPermitted) 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);
12470
+ if (URI_SAFE_ATTRIBUTES[lcName]) return true;
12471
+ if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) return true;
12472
+ if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) return true;
12473
+ if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) return true;
12031
12474
  return !value;
12032
12475
  };
12033
- const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, ["annotation-xml", "color-profile", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "missing-glyph"]);
12476
+ const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [
12477
+ "annotation-xml",
12478
+ "color-profile",
12479
+ "font-face",
12480
+ "font-face-format",
12481
+ "font-face-name",
12482
+ "font-face-src",
12483
+ "font-face-uri",
12484
+ "missing-glyph"
12485
+ ]);
12034
12486
  const _isBasicCustomElement = function _isBasicCustomElement2(tagName) {
12035
12487
  return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);
12036
12488
  };
12037
12489
  const _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute2(lcTag, lcName, namespaceURI, value) {
12038
- if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function" && !namespaceURI) {
12039
- switch (trustedTypes.getAttributeType(lcTag, lcName)) {
12040
- case "TrustedHTML": {
12041
- return _createTrustedHTML(value);
12042
- }
12043
- case "TrustedScriptURL": {
12044
- return _createTrustedScriptURL(value);
12045
- }
12046
- }
12490
+ if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function" && !namespaceURI) switch (trustedTypes.getAttributeType(lcTag, lcName)) {
12491
+ case "TrustedHTML":
12492
+ return _createTrustedHTML(value);
12493
+ case "TrustedScriptURL":
12494
+ return _createTrustedScriptURL(value);
12047
12495
  }
12048
12496
  return value;
12049
12497
  };
12050
12498
  const _setAttributeValue = function _setAttributeValue2(currentNode, name, namespaceURI, value) {
12051
12499
  try {
12052
- if (namespaceURI) {
12053
- currentNode.setAttributeNS(namespaceURI, name, value);
12054
- } else {
12055
- currentNode.setAttribute(name, value);
12056
- }
12500
+ if (namespaceURI) currentNode.setAttributeNS(namespaceURI, name, value);
12501
+ else currentNode.setAttribute(name, value);
12057
12502
  if (_isClobbered(currentNode)) {
12058
12503
  _forceRemove(currentNode);
12059
12504
  return false;
@@ -12064,12 +12509,11 @@ function createDOMPurify() {
12064
12509
  return false;
12065
12510
  }
12066
12511
  };
12067
- const _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
12512
+ const _sanitizeAttributes = function _sanitizeAttributes2(currentNode, root) {
12068
12513
  _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
12514
+ if (_handleHookDetachedNode(currentNode, root)) return;
12069
12515
  const attributes = currentNode.attributes;
12070
- if (!attributes || _isClobbered(currentNode)) {
12071
- return;
12072
- }
12516
+ if (!attributes || _isClobbered(currentNode)) return;
12073
12517
  ALLOWED_ATTR2 = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR2, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);
12074
12518
  const hookEvent = {
12075
12519
  attrName: "",
@@ -12078,10 +12522,10 @@ function createDOMPurify() {
12078
12522
  allowedAttributes: ALLOWED_ATTR2,
12079
12523
  forceKeepAttr: void 0
12080
12524
  };
12081
- let l = attributes.length;
12525
+ let l3 = attributes.length;
12082
12526
  const lcTag = transformCaseFunc(currentNode.nodeName);
12083
- while (l--) {
12084
- const attr = attributes[l];
12527
+ while (l3--) {
12528
+ const attr = attributes[l3];
12085
12529
  const name = attr.name, namespaceURI = attr.namespaceURI, attrValue = attr.value;
12086
12530
  const lcName = transformCaseFunc(name);
12087
12531
  const initValue = attrValue;
@@ -12106,9 +12550,7 @@ function createDOMPurify() {
12106
12550
  _removeAttribute(name, currentNode, attr);
12107
12551
  continue;
12108
12552
  }
12109
- if (hookEvent.forceKeepAttr) {
12110
- continue;
12111
- }
12553
+ if (hookEvent.forceKeepAttr) continue;
12112
12554
  if (!hookEvent.keepAttr) {
12113
12555
  _removeAttribute(name, currentNode, attr);
12114
12556
  continue;
@@ -12117,22 +12559,18 @@ function createDOMPurify() {
12117
12559
  _removeAttribute(name, currentNode, attr);
12118
12560
  continue;
12119
12561
  }
12120
- if (SAFE_FOR_TEMPLATES) {
12121
- value = _stripTemplateExpressions(value);
12122
- }
12562
+ if (SAFE_FOR_TEMPLATES) value = _stripTemplateExpressions(value);
12123
12563
  if (!_isValidAttribute(lcTag, lcName, value)) {
12124
12564
  _removeAttribute(name, currentNode, attr);
12125
12565
  continue;
12126
12566
  }
12127
12567
  value = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);
12128
12568
  if (value !== initValue) {
12129
- const cleanWrite = _setAttributeValue(currentNode, name, namespaceURI, value);
12130
- if (cleanWrite && recreatedNamedProp) {
12131
- arrayPop(DOMPurify.removed);
12132
- }
12569
+ if (_setAttributeValue(currentNode, name, namespaceURI, value) && recreatedNamedProp) arrayPop(DOMPurify.removed);
12133
12570
  }
12134
12571
  }
12135
12572
  _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
12573
+ _handleHookDetachedNode(currentNode, root);
12136
12574
  };
12137
12575
  const _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {
12138
12576
  let shadowNode = null;
@@ -12141,10 +12579,8 @@ function createDOMPurify() {
12141
12579
  while (shadowNode = shadowIterator.nextNode()) {
12142
12580
  _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
12143
12581
  _sanitizeElements(shadowNode, fragment);
12144
- _sanitizeAttributes(shadowNode);
12145
- if (_isDocumentFragment(shadowNode.content)) {
12146
- _sanitizeShadowDOM2(shadowNode.content);
12147
- }
12582
+ _sanitizeAttributes(shadowNode, fragment);
12583
+ if (_isDocumentFragment(shadowNode.content)) _sanitizeShadowDOM2(shadowNode.content);
12148
12584
  if (_readNodeType(shadowNode) === NODE_TYPE.element) {
12149
12585
  const innerSr = getShadowRoot(shadowNode);
12150
12586
  if (_isDocumentFragment(innerSr)) {
@@ -12167,40 +12603,31 @@ function createDOMPurify() {
12167
12603
  continue;
12168
12604
  }
12169
12605
  const node = item.node;
12170
- const nodeType = _readNodeType(node);
12171
- const isElement = nodeType === NODE_TYPE.element;
12606
+ const isElement = _readNodeType(node) === NODE_TYPE.element;
12172
12607
  const childNodes = getChildNodes(node);
12173
- if (childNodes) {
12174
- for (let i = childNodes.length - 1; i >= 0; --i) {
12175
- stack.push({
12176
- node: childNodes[i],
12177
- shadow: null
12178
- });
12179
- }
12180
- }
12608
+ if (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push({
12609
+ node: childNodes[i],
12610
+ shadow: null
12611
+ });
12181
12612
  if (isElement) {
12182
12613
  const rootName = getNodeName ? getNodeName(node) : null;
12183
12614
  if (typeof rootName === "string" && transformCaseFunc(rootName) === "template") {
12184
12615
  const content = node.content;
12185
- if (_isDocumentFragment(content)) {
12186
- stack.push({
12187
- node: content,
12188
- shadow: null
12189
- });
12190
- }
12616
+ if (_isDocumentFragment(content)) stack.push({
12617
+ node: content,
12618
+ shadow: null
12619
+ });
12191
12620
  }
12192
12621
  }
12193
12622
  if (isElement) {
12194
12623
  const sr = getShadowRoot(node);
12195
- if (_isDocumentFragment(sr)) {
12196
- stack.push({
12197
- node: null,
12198
- shadow: sr
12199
- }, {
12200
- node: sr,
12201
- shadow: null
12202
- });
12203
- }
12624
+ if (_isDocumentFragment(sr)) stack.push({
12625
+ node: null,
12626
+ shadow: sr
12627
+ }, {
12628
+ node: sr,
12629
+ shadow: null
12630
+ });
12204
12631
  }
12205
12632
  }
12206
12633
  };
@@ -12211,30 +12638,18 @@ function createDOMPurify() {
12211
12638
  let currentNode = null;
12212
12639
  let returnNode = null;
12213
12640
  IS_EMPTY_INPUT = !dirty;
12214
- if (IS_EMPTY_INPUT) {
12215
- dirty = "<!-->";
12216
- }
12641
+ if (IS_EMPTY_INPUT) dirty = "<!-->";
12217
12642
  if (typeof dirty !== "string" && !_isNode(dirty)) {
12218
12643
  dirty = stringifyValue(dirty);
12219
- if (typeof dirty !== "string") {
12220
- throw typeErrorCreate("dirty is not a string, aborting");
12221
- }
12222
- }
12223
- if (!DOMPurify.isSupported) {
12224
- return dirty;
12644
+ if (typeof dirty !== "string") throw typeErrorCreate("dirty is not a string, aborting");
12225
12645
  }
12646
+ if (!DOMPurify.isSupported) return dirty;
12226
12647
  if (SET_CONFIG) {
12227
12648
  ALLOWED_TAGS2 = SET_CONFIG_ALLOWED_TAGS;
12228
12649
  ALLOWED_ATTR2 = SET_CONFIG_ALLOWED_ATTR;
12229
- } else {
12230
- _parseConfig(cfg);
12231
- }
12232
- if (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) {
12233
- ALLOWED_TAGS2 = clone(ALLOWED_TAGS2);
12234
- }
12235
- if (hooks.uponSanitizeAttribute.length > 0) {
12236
- ALLOWED_ATTR2 = clone(ALLOWED_ATTR2);
12237
- }
12650
+ } else _parseConfig(cfg);
12651
+ if (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) ALLOWED_TAGS2 = clone(ALLOWED_TAGS2);
12652
+ if (hooks.uponSanitizeAttribute.length > 0) ALLOWED_ATTR2 = clone(ALLOWED_ATTR2);
12238
12653
  DOMPurify.removed = [];
12239
12654
  const inPlace = IN_PLACE && typeof dirty !== "string" && _isNode(dirty);
12240
12655
  if (inPlace) {
@@ -12260,83 +12675,57 @@ function createDOMPurify() {
12260
12675
  } else if (_isNode(dirty)) {
12261
12676
  body = _initDocument("<!---->");
12262
12677
  importedNode = body.ownerDocument.importNode(dirty, true);
12263
- if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") {
12264
- body = importedNode;
12265
- } else if (importedNode.nodeName === "HTML") {
12266
- body = importedNode;
12267
- } else {
12268
- body.appendChild(importedNode);
12269
- }
12678
+ if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") body = importedNode;
12679
+ else if (importedNode.nodeName === "HTML") body = importedNode;
12680
+ else body.appendChild(importedNode);
12270
12681
  _sanitizeAttachedShadowRoots(body);
12271
12682
  } else {
12272
- if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
12273
- dirty.indexOf("<") === -1) {
12274
- return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;
12275
- }
12683
+ if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf("<") === -1) return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;
12276
12684
  body = _initDocument(dirty);
12277
- if (!body) {
12278
- return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
12279
- }
12280
- }
12281
- if (body && FORCE_BODY) {
12282
- _forceRemove(body.firstChild);
12685
+ if (!body) return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
12283
12686
  }
12687
+ if (body && FORCE_BODY) _forceRemove(body.firstChild);
12284
12688
  const walkRoot = inPlace ? dirty : body;
12285
12689
  try {
12286
12690
  const nodeIterator = _createNodeIterator(walkRoot);
12287
12691
  while (currentNode = nodeIterator.nextNode()) {
12288
12692
  _sanitizeElements(currentNode, walkRoot);
12289
- _sanitizeAttributes(currentNode);
12290
- if (_isDocumentFragment(currentNode.content)) {
12291
- _sanitizeShadowDOM2(currentNode.content);
12292
- }
12693
+ _sanitizeAttributes(currentNode, walkRoot);
12694
+ if (_isDocumentFragment(currentNode.content)) _sanitizeShadowDOM2(currentNode.content);
12293
12695
  }
12294
12696
  } catch (error) {
12295
12697
  if (inPlace) {
12296
12698
  _neutralizeRoot(dirty);
12297
12699
  arrayForEach(DOMPurify.removed, (entry) => {
12298
- if (entry.element) {
12299
- _neutralizeSubtree(entry.element);
12300
- }
12700
+ if (entry.element) _neutralizeSubtree(entry.element);
12301
12701
  });
12302
12702
  }
12303
12703
  throw error;
12304
12704
  }
12305
12705
  if (inPlace) {
12706
+ let rootWasRemoved = false;
12306
12707
  arrayForEach(DOMPurify.removed, (entry) => {
12307
12708
  if (entry.element) {
12709
+ if (entry.element === dirty) rootWasRemoved = true;
12308
12710
  _neutralizeSubtree(entry.element);
12309
12711
  }
12310
12712
  });
12311
- if (SAFE_FOR_TEMPLATES) {
12312
- _scrubTemplateExpressions2(dirty);
12313
- }
12713
+ if (rootWasRemoved) throw typeErrorCreate("a node selected for removal could not be safely returned; refusing to sanitize in place");
12714
+ if (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(dirty);
12314
12715
  return dirty;
12315
12716
  }
12316
12717
  if (RETURN_DOM) {
12317
- if (SAFE_FOR_TEMPLATES) {
12318
- _scrubTemplateExpressions2(body);
12319
- }
12718
+ if (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(body);
12320
12719
  if (RETURN_DOM_FRAGMENT) {
12321
12720
  returnNode = createDocumentFragment.call(body.ownerDocument);
12322
- while (body.firstChild) {
12323
- returnNode.appendChild(body.firstChild);
12324
- }
12325
- } else {
12326
- returnNode = body;
12327
- }
12328
- if (ALLOWED_ATTR2.shadowroot || ALLOWED_ATTR2.shadowrootmode) {
12329
- returnNode = importNode.call(originalDocument, returnNode, true);
12330
- }
12721
+ while (body.firstChild) returnNode.appendChild(body.firstChild);
12722
+ } else returnNode = body;
12723
+ if (ALLOWED_ATTR2.shadowroot || ALLOWED_ATTR2.shadowrootmode) returnNode = importNode.call(originalDocument, returnNode, true);
12331
12724
  return returnNode;
12332
12725
  }
12333
12726
  let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
12334
- if (WHOLE_DOCUMENT && ALLOWED_TAGS2["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
12335
- serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
12336
- }
12337
- if (SAFE_FOR_TEMPLATES) {
12338
- serializedHTML = _stripTemplateExpressions(serializedHTML);
12339
- }
12727
+ if (WHOLE_DOCUMENT && ALLOWED_TAGS2["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
12728
+ if (SAFE_FOR_TEMPLATES) serializedHTML = _stripTemplateExpressions(serializedHTML);
12340
12729
  return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;
12341
12730
  };
12342
12731
  DOMPurify.setConfig = function() {
@@ -12355,26 +12744,18 @@ function createDOMPurify() {
12355
12744
  emptyHTML = "";
12356
12745
  };
12357
12746
  DOMPurify.isValidAttribute = function(tag, attr, value) {
12358
- if (!CONFIG) {
12359
- _parseConfig({});
12360
- }
12747
+ if (!CONFIG) _parseConfig({});
12361
12748
  const lcTag = transformCaseFunc(tag);
12362
12749
  const lcName = transformCaseFunc(attr);
12363
12750
  return _isValidAttribute(lcTag, lcName, value);
12364
12751
  };
12365
12752
  DOMPurify.addHook = function(entryPoint, hookFunction) {
12366
- if (typeof hookFunction !== "function") {
12367
- return;
12368
- }
12369
- if (!objectHasOwnProperty(hooks, entryPoint)) {
12370
- return;
12371
- }
12753
+ if (typeof hookFunction !== "function") return;
12754
+ if (!objectHasOwnProperty(hooks, entryPoint)) return;
12372
12755
  arrayPush(hooks[entryPoint], hookFunction);
12373
12756
  };
12374
12757
  DOMPurify.removeHook = function(entryPoint, hookFunction) {
12375
- if (!objectHasOwnProperty(hooks, entryPoint)) {
12376
- return void 0;
12377
- }
12758
+ if (!objectHasOwnProperty(hooks, entryPoint)) return;
12378
12759
  if (hookFunction !== void 0) {
12379
12760
  const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);
12380
12761
  return index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0];
@@ -12382,9 +12763,7 @@ function createDOMPurify() {
12382
12763
  return arrayPop(hooks[entryPoint]);
12383
12764
  };
12384
12765
  DOMPurify.removeHooks = function(entryPoint) {
12385
- if (!objectHasOwnProperty(hooks, entryPoint)) {
12386
- return;
12387
- }
12766
+ if (!objectHasOwnProperty(hooks, entryPoint)) return;
12388
12767
  hooks[entryPoint] = [];
12389
12768
  };
12390
12769
  DOMPurify.removeAllHooks = function() {
@@ -12392,190 +12771,203 @@ function createDOMPurify() {
12392
12771
  };
12393
12772
  return DOMPurify;
12394
12773
  }
12395
- var purify = createDOMPurify();
12774
+ var purify_default = createDOMPurify();
12396
12775
 
12397
- // node_modules/.pnpm/marked@18.0.12/node_modules/marked/lib/marked.esm.js
12398
- function A() {
12776
+ // node_modules/.pnpm/marked@18.0.14/node_modules/marked/lib/marked.esm.js
12777
+ function I() {
12399
12778
  return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };
12400
12779
  }
12401
- var T = A();
12402
- function j(u3) {
12403
- T = u3;
12780
+ var y = I();
12781
+ function W(l3) {
12782
+ y = l3;
12404
12783
  }
12405
- var E = { exec: () => null };
12406
- function I(u3) {
12784
+ var A = { exec: () => null };
12785
+ function C(l3) {
12407
12786
  let e = [];
12408
12787
  return (t) => {
12409
12788
  let n = Math.max(0, Math.min(3, t - 1)), s = e[n];
12410
- return s || (s = u3(n), e[n] = s), s;
12789
+ return s || (s = l3(n), e[n] = s), s;
12411
12790
  };
12412
12791
  }
12413
- function k(u3, e = "") {
12414
- let t = typeof u3 == "string" ? u3 : u3.source, n = { replace: (s, r) => {
12792
+ function h(l3, e = "") {
12793
+ let t = typeof l3 == "string" ? l3 : l3.source, n = { replace: (s, r) => {
12415
12794
  let o = typeof r == "string" ? r : r.source;
12416
- return o = o.replace(m.caret, "$1"), t = t.replace(s, o), n;
12795
+ return o = o.replace(x.caret, "$1"), t = t.replace(s, o), n;
12417
12796
  }, getRegex: () => new RegExp(t, e) };
12418
12797
  return n;
12419
12798
  }
12420
- var Te = ((u3 = "") => {
12799
+ var _e = ((l3 = "") => {
12421
12800
  try {
12422
- return !!new RegExp("(?<=1)(?<!1)" + u3);
12801
+ return !!new RegExp("(?<=1)(?<!1)" + l3);
12423
12802
  } catch {
12424
12803
  return false;
12425
12804
  }
12426
12805
  })();
12427
- var m = { codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm, outputLinkReplace: /\\([\[\]])/g, indentCodeCompensation: /^(\s+)(?:```)/, beginningSpace: /^\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, endingSpaceTabChar: /[ \t]$/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\n/g, tabCharGlobal: /\t/g, multipleSpaceGlobal: /\s+/g, blankLine: /^[ \t]*$/, doubleBlankLine: /\n[ \t]*\n[ \t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] +\S/, listReplaceTask: /^\[[ xX]\] +/, listTaskCheckbox: /\[[ xX]\]/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: (u3) => new RegExp(`^( {0,3}${u3})((?:[ ][^\\n]*)?(?:\\n|$))`), nextBulletRegex: I((u3) => new RegExp(`^ {0,${u3}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)), hrRegex: I((u3) => new RegExp(`^ {0,${u3}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)), fencesBeginRegex: I((u3) => new RegExp(`^ {0,${u3}}(?:\`\`\`|~~~)`)), headingBeginRegex: I((u3) => new RegExp(`^ {0,${u3}}#`)), htmlBeginRegex: I((u3) => new RegExp(`^ {0,${u3}}<(?:[a-z].*>|!--)`, "i")), blockquoteBeginRegex: I((u3) => new RegExp(`^ {0,${u3}}>`)) };
12428
- var Oe = /^(?:[ \t]*(?:\n|$))+/;
12429
- var we = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/;
12430
- var ye = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
12431
- var q = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
12432
- var Pe = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/;
12433
- var U = / {0,3}(?:[*+-]|\d{1,9}[.)])/;
12434
- var oe = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/;
12435
- var ae = k(oe).replace(/bull/g, U).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
12436
- var Se = k(oe).replace(/bull/g, U).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
12437
- var K = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/;
12438
- var _e = /^[^\n]+/;
12439
- var W = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/;
12440
- var $e = k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", W).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
12441
- var Le = k(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g, U).getRegex();
12442
- var Q = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
12443
- var X = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
12444
- var ze = k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", X).replace("tag", Q).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
12445
- var le = (u3) => k(K).replace("hr", q).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", u3).replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", Q).getRegex();
12446
- var Ee = le(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/);
12447
- var Me = le(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/);
12448
- var Ae = k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", Me).getRegex();
12449
- var J = { blockquote: Ae, code: we, def: $e, fences: ye, heading: Pe, hr: q, html: ze, lheading: ae, list: Le, newline: Oe, paragraph: Ee, table: E, text: _e };
12450
- var se = k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", q).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", Q).getRegex();
12451
- var Ie = { ...J, lheading: Se, table: se, paragraph: k(K).replace("hr", q).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", se).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", Q).getRegex() };
12452
- var Ce = { ...J, html: k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", X).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: E, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: k(K).replace("hr", q).replace("heading", ` *#{1,6} *[^
12453
- ]`).replace("lheading", ae).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() };
12454
- var Be = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
12455
- var De = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
12456
- var ue = /^( {2,}|\\)\n(?!\s*$)/;
12457
- var qe = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/;
12458
- var _ = /[\p{P}\p{S}]/u;
12459
- var C = /[\s\p{P}\p{S}]/u;
12460
- var v = /[^\s\p{P}\p{S}]/u;
12461
- var ve = k(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, C).getRegex();
12462
- var He = /[\p{Pi}\p{Ps}"']/u;
12463
- var pe = /(?!~)[\p{P}\p{S}]/u;
12464
- var Ze = /(?!~)[\s\p{P}\p{S}]/u;
12465
- var Ge = /(?:[^\s\p{P}\p{S}]|~)/u;
12466
- var Qe = k(/link|precode-code|html/, "g").replace("link", /\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", Te ? "(?<!`)()" : "(^^|[^`])").replace("code", /(?<b>`+)[^`]+\k<b>(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex();
12467
- var ce = /^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/;
12468
- var Ne = k(ce, "u").replace(/punct/g, _).getRegex();
12469
- var je = k(ce, "u").replace(/punct/g, pe).getRegex();
12470
- var Fe = /^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/;
12471
- var Ue = k(Fe, "u").replace(/openQuote/g, He).replace(/punct/g, _).getRegex();
12472
- var he = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)";
12473
- var Ke = k(he, "gu").replace(/notPunctSpace/g, v).replace(/punctSpace/g, C).replace(/punct/g, _).getRegex();
12474
- var We = k(he, "gu").replace(/notPunctSpace/g, Ge).replace(/punctSpace/g, Ze).replace(/punct/g, pe).getRegex();
12475
- var Xe = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)";
12476
- var Je = k(Xe, "gu").replace(/notPunctSpace/g, v).replace(/punctSpace/g, C).replace(/punct/g, _).getRegex();
12477
- var Ve = k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, v).replace(/punctSpace/g, C).replace(/punct/g, _).getRegex();
12478
- var Ye = "^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)";
12479
- var et = k(Ye, "gu").replace(/notPunctSpace/g, v).replace(/punctSpace/g, C).replace(/punct/g, _).getRegex();
12480
- var tt = k(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, _).getRegex();
12481
- var nt = "^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)";
12482
- var rt = k(nt, "gu").replace(/notPunctSpace/g, v).replace(/punctSpace/g, C).replace(/punct/g, _).getRegex();
12483
- var st = k(/\\(punct)/, "gu").replace(/punct/g, _).getRegex();
12484
- var it = k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();
12485
- var ot = k(X).replace("(?:-->|$)", "-->").getRegex();
12486
- var at = k("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", ot).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex();
12487
- var lt = /\[(?:\\[\s\S]|[^\[\]\\])*\]/;
12488
- var G = k(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets", lt).getRegex();
12489
- var ut = k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label", G).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex();
12490
- var ke = k(/^!?\[(label)\]\[(ref)\]/).replace("label", G).replace("ref", W).getRegex();
12491
- var de = k(/^!?\[(ref)\](?:\[\])?/).replace("ref", W).getRegex();
12492
- var pt = k("reflink|nolink(?!\\()", "g").replace("reflink", ke).replace("nolink", de).getRegex();
12493
- var ie = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;
12494
- var V = { _backpedal: E, anyPunctuation: st, autolink: it, blockSkip: Qe, br: ue, code: De, del: E, delLDelim: E, delRDelim: E, emStrongLDelim: Ne, emStrongRDelimAst: Ke, emStrongRDelimUnd: Ve, escape: Be, link: ut, nolink: de, punctuation: ve, reflink: ke, reflinkSearch: pt, tag: at, text: qe, url: E };
12495
- var ct = { ...V, emStrongLDelim: Ue, emStrongRDelimAst: Je, emStrongRDelimUnd: et, link: k(/^!?\[(label)\]\((.*?)\)/).replace("label", G).getRegex(), reflink: k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", G).getRegex() };
12496
- var F = { ...V, emStrongRDelimAst: We, emStrongLDelim: je, delLDelim: tt, delRDelim: rt, url: k(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", ie).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: k(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol", ie).getRegex() };
12497
- var ht = { ...F, br: k(ue).replace("{2,}", "*").getRegex(), text: k(F.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() };
12498
- var H = { normal: J, gfm: Ie, pedantic: Ce };
12499
- var B = { normal: V, gfm: F, breaks: ht, pedantic: ct };
12500
- var kt = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
12501
- var ge = (u3) => kt[u3];
12502
- function R(u3, e) {
12806
+ var x = { codeRemoveIndent: /^(?: {0,3}\t| {1,4})/gm, outputLinkReplace: /\\([\[\]])/g, indentCodeCompensation: /^(\s+)(?:```)/, beginningSpace: /^\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, endingSpaceTabChar: /[ \t]$/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\n/g, tabCharGlobal: /\t/g, leadingSpaceTab: /^[ \t]+/, multipleSpaceGlobal: /\s+/g, blankLine: /^[ \t]*$/, doubleBlankLine: /\n[ \t]*\n[ \t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] +\S/, listReplaceTask: /^\[[ xX]\] +/, listTaskCheckbox: /\[[ xX]\]/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, numericCharacterReference: /&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: (l3) => new RegExp(`^( {0,3}${l3})((?:[ ][^\\n]*)?(?:\\n|$))`), nextBulletRegex: C((l3) => new RegExp(`^ {0,${l3}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)), hrRegex: C((l3) => new RegExp(`^ {0,${l3}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)), fencesBeginRegex: C((l3) => new RegExp(`^ {0,${l3}}(?:\`\`\`|~~~)`)), headingBeginRegex: C((l3) => new RegExp(`^ {0,${l3}}#`)), htmlBeginRegex: C((l3) => new RegExp(`^ {0,${l3}}(?:</?(?:${N})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`, "i")), blockquoteBeginRegex: C((l3) => new RegExp(`^ {0,${l3}}>`)) };
12807
+ var $e = /^(?:[ \t]*(?:\n|$))+/;
12808
+ var Le = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/;
12809
+ var ze = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
12810
+ var G = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
12811
+ var Ae = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/;
12812
+ var J = / {0,3}(?:[*+-]|\d{1,9}[.)])/;
12813
+ var ce = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/;
12814
+ var he = h(ce).replace(/bull/g, J).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/hr/g, / {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
12815
+ var Ee = h(ce).replace(/bull/g, J).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/hr/g, / {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
12816
+ var V = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/;
12817
+ var Me = /^[^\n]+/;
12818
+ var Y = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/;
12819
+ var Ie = h(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", Y).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
12820
+ var Ce = h(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g, J).getRegex();
12821
+ var N = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
12822
+ var ee = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
12823
+ var Be = h("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", ee).replace("tag", N).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
12824
+ var de = (l3) => h(V).replace("hr", G).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", l3).replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", N).getRegex();
12825
+ var De = de(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/);
12826
+ var qe = de(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/);
12827
+ var ve = h(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", qe).getRegex();
12828
+ var te = { blockquote: ve, code: Le, def: Ie, fences: ze, heading: Ae, hr: G, html: Be, lheading: he, list: Ce, newline: $e, paragraph: De, table: A, text: Me };
12829
+ var le = h("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", G).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", N).getRegex();
12830
+ var Ze = { ...te, lheading: Ee, table: le, paragraph: h(V).replace("hr", G).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", le).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", N).getRegex() };
12831
+ var He = { ...te, html: h(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", ee).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: A, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: h(V).replace("hr", G).replace("heading", ` *#{1,6} *[^
12832
+ ]`).replace("lheading", he).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() };
12833
+ var Ge = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
12834
+ var Ne = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
12835
+ var ke = /^( {2,}|\\)\n(?!\s*$)[ \t]*/;
12836
+ var Qe = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/;
12837
+ var $ = /[\p{P}\p{S}]/u;
12838
+ var B = /[\s\p{P}\p{S}]/u;
12839
+ var Q = /[^\s\p{P}\p{S}]/u;
12840
+ var je = h(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, B).getRegex();
12841
+ var Fe = /[\p{Pi}\p{Ps}"']/u;
12842
+ var ge = /(?!~)[\p{P}\p{S}]/u;
12843
+ var Ue = /(?!~)[\s\p{P}\p{S}]/u;
12844
+ var Ke = /(?:[^\s\p{P}\p{S}]|~)/u;
12845
+ var We = h(/link|precode-code|html/, "g").replace("link", /\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", _e ? "(?<!`)()" : "(^^|[^`])").replace("code", /(?<b>`+)[^`]+\k<b>(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex();
12846
+ var fe = /^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/;
12847
+ var Xe = h(fe, "u").replace(/punct/g, $).getRegex();
12848
+ var Je = h(fe, "u").replace(/punct/g, ge).getRegex();
12849
+ var Ve = /^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/;
12850
+ var Ye = h(Ve, "u").replace(/openQuote/g, Fe).replace(/punct/g, $).getRegex();
12851
+ var me = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)";
12852
+ var et = h(me, "gu").replace(/notPunctSpace/g, Q).replace(/punctSpace/g, B).replace(/punct/g, $).getRegex();
12853
+ var tt = h(me, "gu").replace(/notPunctSpace/g, Ke).replace(/punctSpace/g, Ue).replace(/punct/g, ge).getRegex();
12854
+ var nt = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)";
12855
+ var rt = h(nt, "gu").replace(/notPunctSpace/g, Q).replace(/punctSpace/g, B).replace(/punct/g, $).getRegex();
12856
+ var st = h("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, Q).replace(/punctSpace/g, B).replace(/punct/g, $).getRegex();
12857
+ var it = "^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)";
12858
+ var ot = h(it, "gu").replace(/notPunctSpace/g, Q).replace(/punctSpace/g, B).replace(/punct/g, $).getRegex();
12859
+ var at = h(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, $).getRegex();
12860
+ var lt = "^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)";
12861
+ var ut = h(lt, "gu").replace(/notPunctSpace/g, Q).replace(/punctSpace/g, B).replace(/punct/g, $).getRegex();
12862
+ var pt = h(/\\(punct)/, "gu").replace(/punct/g, $).getRegex();
12863
+ var ct = h(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();
12864
+ var ht = h(ee).replace("(?:-->|$)", "-->").getRegex();
12865
+ var dt = h("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", ht).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex();
12866
+ var xe = /\[(?:\\[\s\S]|[^\[\]\\])*\]/;
12867
+ var U = h(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets", xe).getRegex();
12868
+ var kt = h(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label", U).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex();
12869
+ var gt = h(/^!?\[(label)\]\[(ref)\]/).replace("label", U).replace("ref", Y).getRegex();
12870
+ var ft = h(/^!?\[(ref)\](?:\[\])?/).replace("ref", Y).getRegex();
12871
+ var ue = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/;
12872
+ var mt = h(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets", xe).getRegex();
12873
+ var xt = h("reflink|nolink(?!\\()", "g").replace("reflink", h(/^!?\[(label)\]\[(ref)\]/).replace("label", mt).replace("ref", ue).getRegex()).replace("nolink", h(/^!?\[(ref)\](?:\[\])?/).replace("ref", ue).getRegex()).getRegex();
12874
+ var pe = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;
12875
+ var bt = /[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/;
12876
+ var Rt = h(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g, bt).getRegex();
12877
+ var ne = { _backpedal: A, anyPunctuation: pt, autolink: ct, blockSkip: We, br: ke, code: Ne, del: A, delLDelim: A, delRDelim: A, emStrongLDelim: Xe, emStrongRDelimAst: et, emStrongRDelimUnd: st, escape: Ge, link: kt, nolink: ft, punctuation: je, reflink: gt, reflinkSearch: xt, tag: dt, text: Qe, url: A };
12878
+ var Tt = { ...ne, emStrongLDelim: Ye, emStrongRDelimAst: rt, emStrongRDelimUnd: ot, link: h(/^!?\[(label)\]\((.*?)\)/).replace("label", U).getRegex(), reflink: h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", U).getRegex() };
12879
+ var X = { ...ne, emStrongRDelimAst: tt, emStrongLDelim: Je, delLDelim: at, delRDelim: ut, url: h(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol", Rt).replace("protocol", pe).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: h(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol", pe).replace(/emailProtocol/g, /(?:mailto|xmpp):/).getRegex() };
12880
+ var Ot = { ...X, br: h(ke).replace("{2,}", "*").getRegex(), text: h(X.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() };
12881
+ var j = { normal: te, gfm: Ze, pedantic: He };
12882
+ var D = { normal: ne, gfm: X, breaks: Ot, pedantic: Tt };
12883
+ var wt = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
12884
+ var be = (l3) => wt[l3];
12885
+ function O(l3, e) {
12503
12886
  if (e) {
12504
- if (m.escapeTest.test(u3)) return u3.replace(m.escapeReplace, ge);
12505
- } else if (m.escapeTestNoEncode.test(u3)) return u3.replace(m.escapeReplaceNoEncode, ge);
12506
- return u3;
12887
+ if (x.escapeTest.test(l3)) return l3.replace(x.escapeReplace, be);
12888
+ } else if (x.escapeTestNoEncode.test(l3)) return l3.replace(x.escapeReplaceNoEncode, be);
12889
+ return l3;
12890
+ }
12891
+ function Re(l3) {
12892
+ return l3.replace(x.numericCharacterReference, (e, t, n) => {
12893
+ let s = t === void 0 ? Number.parseInt(n, 16) : Number.parseInt(t, 10);
12894
+ return s === 0 || s > 1114111 || s >= 55296 && s <= 57343 ? "\uFFFD" : String.fromCodePoint(s);
12895
+ });
12507
12896
  }
12508
- function Y(u3) {
12897
+ function re(l3) {
12509
12898
  try {
12510
- u3 = encodeURI(u3).replace(m.percentDecode, "%");
12899
+ l3 = encodeURI(l3).replace(x.percentDecode, "%");
12511
12900
  } catch {
12512
12901
  return null;
12513
12902
  }
12514
- return u3;
12903
+ return l3;
12515
12904
  }
12516
- function ee(u3, e) {
12517
- let t = u3.replace(m.findPipe, (r, o, i) => {
12518
- let l = false, a = o;
12519
- for (; --a >= 0 && i[a] === "\\"; ) l = !l;
12520
- return l ? "|" : " |";
12521
- }), n = t.split(m.splitPipe), s = 0;
12905
+ function se(l3, e) {
12906
+ let t = l3.replace(x.findPipe, (r, o, i) => {
12907
+ let u = false, a = o;
12908
+ for (; --a >= 0 && i[a] === "\\"; ) u = !u;
12909
+ return u ? "|" : " |";
12910
+ }), n = t.split(x.splitPipe), s = 0;
12522
12911
  if (n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), e) if (n.length > e) n.splice(e);
12523
12912
  else for (; n.length < e; ) n.push("");
12524
- for (; s < n.length; s++) n[s] = n[s].trim().replace(m.slashPipe, "|");
12913
+ for (; s < n.length; s++) n[s] = n[s].trim().replace(x.slashPipe, "|");
12525
12914
  return n;
12526
12915
  }
12527
- function $(u3, e, t) {
12528
- let n = u3.length;
12916
+ function L(l3, e, t) {
12917
+ let n = l3.length;
12529
12918
  if (n === 0) return "";
12530
12919
  let s = 0;
12531
12920
  for (; s < n; ) {
12532
- let r = u3.charAt(n - s - 1);
12921
+ let r = l3.charAt(n - s - 1);
12533
12922
  if (r === e && !t) s++;
12534
12923
  else if (r !== e && t) s++;
12535
12924
  else break;
12536
12925
  }
12537
- return u3.slice(0, n - s);
12926
+ return l3.slice(0, n - s);
12538
12927
  }
12539
- function te(u3) {
12540
- let e = u3.split(`
12928
+ function ie(l3) {
12929
+ let e = l3.split(`
12541
12930
  `), t = e.length - 1;
12542
- for (; t >= 0 && m.blankLine.test(e[t]); ) t--;
12543
- return e.length - t <= 2 ? u3 : e.slice(0, t + 1).join(`
12931
+ for (; t >= 0 && x.blankLine.test(e[t]); ) t--;
12932
+ return e.length - t <= 2 ? l3 : e.slice(0, t + 1).join(`
12544
12933
  `);
12545
12934
  }
12546
- function fe(u3, e) {
12547
- if (u3.indexOf(e[1]) === -1) return -1;
12935
+ function q(l3) {
12936
+ return l3.trim().toLowerCase().toUpperCase().toLowerCase();
12937
+ }
12938
+ function Te(l3, e) {
12939
+ if (l3.indexOf(e[1]) === -1) return -1;
12548
12940
  let t = 0;
12549
- for (let n = 0; n < u3.length; n++) if (u3[n] === "\\") n++;
12550
- else if (u3[n] === e[0]) t++;
12551
- else if (u3[n] === e[1] && (t--, t < 0)) return n;
12941
+ for (let n = 0; n < l3.length; n++) if (l3[n] === "\\") n++;
12942
+ else if (l3[n] === e[0]) t++;
12943
+ else if (l3[n] === e[1] && (t--, t < 0)) return n;
12552
12944
  return t > 0 ? -2 : -1;
12553
12945
  }
12554
- function me(u3, e = 0) {
12946
+ function oe(l3, e = 0) {
12555
12947
  let t = e, n = "";
12556
- for (let s of u3) if (s === " ") {
12948
+ for (let s of l3) if (s === " ") {
12557
12949
  let r = 4 - t % 4;
12558
12950
  n += " ".repeat(r), t += r;
12559
12951
  } else n += s, t++;
12560
12952
  return n;
12561
12953
  }
12562
- function xe(u3, e, t, n, s) {
12563
- let r = e.href, o = e.title || null, i = u3[1].replace(s.other.outputLinkReplace, "$1"), l = u3[0].charAt(0) === "!";
12954
+ function Oe(l3, e, t, n, s) {
12955
+ let r = e.href, o = e.title || null, i = l3[1].replace(s.other.outputLinkReplace, "$1"), u = l3[0].charAt(0) === "!";
12564
12956
  n.state.inLink = true;
12565
12957
  let a = n.state.linkEmitted, p = n.state.inRawBlock;
12566
12958
  n.state.linkEmitted = false;
12567
- let c = n.inlineTokens(i), h = n.state.linkEmitted;
12568
- if (n.state.linkEmitted = a, n.state.inLink = false, !l) {
12569
- if (h) {
12959
+ let c = n.inlineTokens(i), d = n.state.linkEmitted;
12960
+ if (n.state.linkEmitted = a, n.state.inLink = false, !u) {
12961
+ if (d) {
12570
12962
  n.state.inRawBlock = p;
12571
12963
  return;
12572
12964
  }
12573
12965
  n.state.linkEmitted = true;
12574
12966
  }
12575
- return { type: l ? "image" : "link", raw: t, href: r, title: o, text: i, tokens: c };
12967
+ return { type: u ? "image" : "link", raw: t, href: r, title: o, text: i, tokens: c };
12576
12968
  }
12577
- function dt(u3, e, t) {
12578
- let n = u3.match(t.other.indentCodeCompensation);
12969
+ function yt(l3, e, t) {
12970
+ let n = l3.match(t.other.indentCodeCompensation);
12579
12971
  if (n === null) return e;
12580
12972
  let s = n[1];
12581
12973
  return e.split(`
@@ -12587,12 +12979,35 @@ function dt(u3, e, t) {
12587
12979
  }).join(`
12588
12980
  `);
12589
12981
  }
12590
- var y = class {
12982
+ function we(l3, e, t, n) {
12983
+ if (!e.includes("<")) return false;
12984
+ for (let s = 0; s < e.length; s++) {
12985
+ if (e[s] === "\\") {
12986
+ s++;
12987
+ continue;
12988
+ }
12989
+ if (e[s] === "`") {
12990
+ let i = n.inline.code.exec(e.slice(s));
12991
+ if (i) {
12992
+ s += i[0].length - 1;
12993
+ continue;
12994
+ }
12995
+ }
12996
+ if (e[s] !== "<") continue;
12997
+ let r = l3.slice(t + s), o = n.inline.tag.exec(r) || n.inline.autolink.exec(r);
12998
+ if (o) {
12999
+ if (o[0].length > e.length - s) return true;
13000
+ s += o[0].length - 1;
13001
+ }
13002
+ }
13003
+ return false;
13004
+ }
13005
+ var P = class {
12591
13006
  options;
12592
13007
  rules;
12593
13008
  lexer;
12594
13009
  constructor(e) {
12595
- this.options = e || T;
13010
+ this.options = e || y;
12596
13011
  }
12597
13012
  space(e) {
12598
13013
  let t = this.rules.block.newline.exec(e);
@@ -12601,14 +13016,14 @@ var y = class {
12601
13016
  code(e) {
12602
13017
  let t = this.rules.block.code.exec(e);
12603
13018
  if (t) {
12604
- let n = this.options.pedantic ? t[0] : te(t[0]), s = n.replace(this.rules.other.codeRemoveIndent, "");
13019
+ let n = this.options.pedantic ? t[0] : ie(t[0]), s = n.replace(this.rules.other.codeRemoveIndent, "");
12605
13020
  return { type: "code", raw: n, codeBlockStyle: "indented", text: s };
12606
13021
  }
12607
13022
  }
12608
13023
  fences(e) {
12609
13024
  let t = this.rules.block.fences.exec(e);
12610
13025
  if (t) {
12611
- let n = t[0], s = dt(n, t[3] || "", this.rules);
13026
+ let n = t[0], s = yt(n, t[3] || "", this.rules);
12612
13027
  return { type: "code", raw: n, lang: t[2] ? t[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t[2], text: s };
12613
13028
  }
12614
13029
  }
@@ -12617,52 +13032,56 @@ var y = class {
12617
13032
  if (t) {
12618
13033
  let n = t[2].trim();
12619
13034
  if (this.rules.other.endingHash.test(n)) {
12620
- let s = $(n, "#");
13035
+ let s = L(n, "#");
12621
13036
  (this.options.pedantic || !s || this.rules.other.endingSpaceTabChar.test(s)) && (n = s.trim());
12622
13037
  }
12623
- return { type: "heading", raw: $(t[0], `
13038
+ return { type: "heading", raw: L(t[0], `
12624
13039
  `), depth: t[1].length, text: n, tokens: this.lexer.inline(n) };
12625
13040
  }
12626
13041
  }
12627
13042
  hr(e) {
12628
13043
  let t = this.rules.block.hr.exec(e);
12629
- if (t) return { type: "hr", raw: $(t[0], `
13044
+ if (t) return { type: "hr", raw: L(t[0], `
12630
13045
  `) };
12631
13046
  }
12632
13047
  blockquote(e) {
12633
13048
  let t = this.rules.block.blockquote.exec(e);
12634
13049
  if (t) {
12635
- let n = $(t[0], `
13050
+ let n = L(t[0], `
12636
13051
  `).split(`
12637
13052
  `), s = "", r = "", o = [];
12638
13053
  for (; n.length > 0; ) {
12639
- let i = false, l = [], a;
12640
- for (a = 0; a < n.length; a++) if (this.rules.other.blockquoteStart.test(n[a])) l.push(n[a]), i = true;
12641
- else if (!i) l.push(n[a]);
13054
+ let i = false, u = [], a;
13055
+ for (a = 0; a < n.length; a++) if (this.rules.other.blockquoteStart.test(n[a])) u.push(n[a]), i = true;
13056
+ else if (!i) u.push(n[a]);
12642
13057
  else break;
12643
13058
  n = n.slice(a);
12644
- let p = l.join(`
13059
+ let p = u.join(`
12645
13060
  `), c = p.replace(this.rules.other.blockquoteSetextReplace, `
12646
13061
  $1`).replace(this.rules.other.blockquoteSetextReplace2, "");
12647
13062
  s = s ? `${s}
12648
13063
  ${p}` : p, r = r ? `${r}
12649
13064
  ${c}` : c;
12650
- let h = this.lexer.state.top;
12651
- if (this.lexer.state.top = true, this.lexer.blockTokens(c, o, true), this.lexer.state.top = h, n.length === 0) break;
12652
- let d = o.at(-1);
12653
- if (d?.type === "code") break;
12654
- if (d?.type === "blockquote") {
12655
- let O = d, g = n.join(`
12656
- `), w = O.raw + `
12657
- ` + g.replace(this.rules.other.blockquoteSetextReplace2, ""), z = this.blockquote(w);
12658
- o[o.length - 1] = z, s = `${s}
12659
- ${g}`, r = r.substring(0, r.length - O.text.length) + z.text;
13065
+ let d = this.lexer.state.top;
13066
+ if (this.lexer.state.top = true, this.lexer.blockTokens(c, o, true), this.lexer.state.top = d, n.length === 0) break;
13067
+ let m = o.at(-1);
13068
+ if (m?.type === "code") break;
13069
+ if (m?.type === "blockquote") {
13070
+ let b = m, g = n.join(`
13071
+ `), w = b.raw + `
13072
+ ` + g.replace(this.rules.other.blockquoteSetextReplace2, ""), f = this.blockquote(w);
13073
+ o[o.length - 1] = f;
13074
+ let M = w.substring(f.raw.length).replace(/^\n/, ""), v = M ? M.split(`
13075
+ `).length : 0, Z = v ? n.slice(0, -v) : n;
13076
+ Z.length > 0 && (s = `${s}
13077
+ ${Z.join(`
13078
+ `)}`), r = r.substring(0, r.length - b.text.length) + f.text;
12660
13079
  break;
12661
- } else if (d?.type === "list") {
12662
- let O = d, g = O.raw + `
13080
+ } else if (m?.type === "list") {
13081
+ let b = m, g = b.raw + `
12663
13082
  ` + n.join(`
12664
13083
  `), w = this.list(g);
12665
- o[o.length - 1] = w, s = s.substring(0, s.length - d.raw.length) + w.raw, r = r.substring(0, r.length - O.raw.length) + w.raw, n = g.substring(o.at(-1).raw.length).split(`
13084
+ o[o.length - 1] = w, s = s.substring(0, s.length - m.raw.length) + w.raw, r = r.substring(0, r.length - b.raw.length) + w.raw, n = g.substring(o.at(-1).raw.length).split(`
12666
13085
  `);
12667
13086
  continue;
12668
13087
  }
@@ -12680,49 +13099,49 @@ ${g}`, r = r.substring(0, r.length - O.text.length) + z.text;
12680
13099
  let a = false, p = "", c = "";
12681
13100
  if (!(t = o.exec(e)) || this.rules.block.hr.test(e)) break;
12682
13101
  p = t[0], e = e.substring(p.length);
12683
- let h = me(t[2].split(`
12684
- `, 1)[0], t[1].length), d = e.split(`
12685
- `, 1)[0], O = !h.trim(), g = 0;
12686
- if (this.options.pedantic ? (g = 2, c = h.trimStart()) : O ? g = t[1].length + 1 : (g = h.search(this.rules.other.nonSpaceChar), g = g > 4 ? 1 : g, c = h.slice(g), g += t[1].length), O && this.rules.other.blankLine.test(d) && (p += d + `
12687
- `, e = e.substring(d.length + 1), a = true), !a) {
12688
- let w = this.rules.other.nextBulletRegex(g), z = this.rules.other.hrRegex(g), ne = this.rules.other.fencesBeginRegex(g), re = this.rules.other.headingBeginRegex(g), be = this.rules.other.htmlBeginRegex(g), Re = this.rules.other.blockquoteBeginRegex(g);
13102
+ let d = t[2].split(`
13103
+ `, 1)[0], m = t[1].length, b = this.options.pedantic ? oe(d, m) : d.replace(this.rules.other.leadingSpaceTab, (M) => oe(M, m)), g = e.split(`
13104
+ `, 1)[0], w = !b.trim(), f = 0;
13105
+ if (this.options.pedantic ? (f = 2, c = b.trimStart()) : w ? f = m + 1 : (f = b.search(this.rules.other.nonSpaceChar), f = f > 4 ? 1 : f, c = b.slice(f), f += m), w && this.rules.other.blankLine.test(g) && (p += g + `
13106
+ `, e = e.substring(g.length + 1), a = true), !a) {
13107
+ let M = this.rules.other.nextBulletRegex(f), v = this.rules.other.hrRegex(f), Z = this.rules.other.fencesBeginRegex(f), ae = this.rules.other.headingBeginRegex(f), ye = this.rules.other.htmlBeginRegex(f), Pe = this.rules.other.blockquoteBeginRegex(f);
12689
13108
  for (; e; ) {
12690
- let N = e.split(`
12691
- `, 1)[0], D;
12692
- if (d = N, this.options.pedantic ? (d = d.replace(this.rules.other.listReplaceNesting, " "), D = d) : D = d.replace(this.rules.other.tabCharGlobal, " "), ne.test(d) || re.test(d) || be.test(d) || Re.test(d) || w.test(d) || z.test(d)) break;
12693
- if (D.search(this.rules.other.nonSpaceChar) >= g || !d.trim()) c += `
12694
- ` + D.slice(g);
13109
+ let K = e.split(`
13110
+ `, 1)[0], H;
13111
+ if (g = K, this.options.pedantic ? (g = g.replace(this.rules.other.listReplaceNesting, " "), H = g) : H = g.replace(this.rules.other.leadingSpaceTab, (Se) => Se.replace(this.rules.other.tabCharGlobal, " ")), Z.test(g) || ae.test(g) || ye.test(g) || Pe.test(g) || M.test(g) || v.test(g)) break;
13112
+ if (H.search(this.rules.other.nonSpaceChar) >= f || !g.trim()) c += `
13113
+ ` + H.slice(f);
12695
13114
  else {
12696
- if (O || h.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || ne.test(h) || re.test(h) || z.test(h)) break;
13115
+ if (w || b.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || Z.test(b) || ae.test(b) || v.test(b)) break;
12697
13116
  c += `
12698
- ` + d;
13117
+ ` + g;
12699
13118
  }
12700
- O = !d.trim(), p += N + `
12701
- `, e = e.substring(N.length + 1), h = D.slice(g);
13119
+ w = !g.trim(), p += K + `
13120
+ `, e = e.substring(K.length + 1), b = H.slice(f);
12702
13121
  }
12703
13122
  }
12704
13123
  r.loose || (i ? r.loose = true : this.rules.other.doubleBlankLine.test(p) && (i = true)), r.items.push({ type: "list_item", raw: p, task: !!this.options.gfm && this.rules.other.listIsTask.test(c), loose: false, text: c, tokens: [] }), r.raw += p;
12705
13124
  }
12706
- let l = r.items.at(-1);
12707
- if (l) l.raw = l.raw.trimEnd(), l.text = l.text.trimEnd();
13125
+ let u = r.items.at(-1);
13126
+ if (u) u.raw = u.raw.trimEnd(), u.text = u.text.trimEnd();
12708
13127
  else return;
12709
13128
  r.raw = r.raw.trimEnd();
12710
13129
  for (let a of r.items) if (this.lexer.state.top = false, a.tokens = this.lexer.blockTokens(a.text, []), !r.loose) {
12711
- let p = a.tokens.filter((h) => h.type === "space"), c = p.length > 0 && p.some((h) => this.rules.other.anyLine.test(h.raw));
13130
+ let p = a.tokens.filter((d) => d.type === "space"), c = p.length > 0 && p.some((d) => this.rules.other.anyLine.test(d.raw));
12712
13131
  r.loose = c;
12713
13132
  }
12714
13133
  for (let a of r.items) {
12715
13134
  let p = a.tokens[0];
12716
13135
  if (a.task && (p?.type === "text" || p?.type === "paragraph")) {
12717
13136
  a.text = a.text.replace(this.rules.other.listReplaceTask, ""), p.raw = p.raw.replace(this.rules.other.listReplaceTask, ""), p.text = p.text.replace(this.rules.other.listReplaceTask, "");
12718
- for (let h = this.lexer.inlineQueue.length - 1; h >= 0; h--) if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)) {
12719
- this.lexer.inlineQueue[h].src = this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask, "");
13137
+ for (let d = this.lexer.inlineQueue.length - 1; d >= 0; d--) if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[d].src)) {
13138
+ this.lexer.inlineQueue[d].src = this.lexer.inlineQueue[d].src.replace(this.rules.other.listReplaceTask, "");
12720
13139
  break;
12721
13140
  }
12722
13141
  let c = this.rules.other.listTaskCheckbox.exec(a.raw);
12723
13142
  if (c) {
12724
- let h = { type: "checkbox", raw: c[0] + " ", checked: c[0] !== "[ ]" };
12725
- a.checked = h.checked, r.loose ? a.tokens[0] && ["paragraph", "text"].includes(a.tokens[0].type) && "tokens" in a.tokens[0] && a.tokens[0].tokens ? (a.tokens[0].raw = h.raw + a.tokens[0].raw, a.tokens[0].text = h.raw + a.tokens[0].text, a.tokens[0].tokens.unshift(h)) : a.tokens.unshift({ type: "paragraph", raw: h.raw, text: h.raw, tokens: [h] }) : a.tokens.unshift(h);
13143
+ let d = { type: "checkbox", raw: c[0] + " ", checked: c[0] !== "[ ]" };
13144
+ a.checked = d.checked, r.loose ? a.tokens[0] && ["paragraph", "text"].includes(a.tokens[0].type) && "tokens" in a.tokens[0] && a.tokens[0].tokens ? (a.tokens[0].raw = d.raw + a.tokens[0].raw, a.tokens[0].text = d.raw + a.tokens[0].text, a.tokens[0].tokens.unshift(d)) : a.tokens.unshift({ type: "paragraph", raw: d.raw, text: d.raw, tokens: [d] }) : a.tokens.unshift(d);
12726
13145
  }
12727
13146
  } else a.task && (a.task = false);
12728
13147
  }
@@ -12736,28 +13155,28 @@ ${g}`, r = r.substring(0, r.length - O.text.length) + z.text;
12736
13155
  html(e) {
12737
13156
  let t = this.rules.block.html.exec(e);
12738
13157
  if (t) {
12739
- let n = te(t[0]);
13158
+ let n = ie(t[0]);
12740
13159
  return { type: "html", block: true, raw: n, pre: t[1] === "pre" || t[1] === "script" || t[1] === "style", text: n };
12741
13160
  }
12742
13161
  }
12743
13162
  def(e) {
12744
13163
  let t = this.rules.block.def.exec(e);
12745
13164
  if (t) {
12746
- let n = t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, " "), s = t[2] ? t[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", r = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t[3];
12747
- return { type: "def", tag: n, raw: $(t[0], `
13165
+ let n = q(t[1]).replace(this.rules.other.multipleSpaceGlobal, " "), s = t[2] ? t[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", r = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t[3];
13166
+ return { type: "def", tag: n, raw: L(t[0], `
12748
13167
  `), href: s, title: r };
12749
13168
  }
12750
13169
  }
12751
13170
  table(e) {
12752
13171
  let t = this.rules.block.table.exec(e);
12753
13172
  if (!t || !this.rules.other.tableDelimiter.test(t[2])) return;
12754
- let n = ee(t[1]), s = t[2].replace(this.rules.other.tableAlignChars, "").split("|"), r = t[3]?.trim() ? t[3].replace(this.rules.other.tableRowBlankLine, "").split(`
12755
- `) : [], o = { type: "table", raw: $(t[0], `
13173
+ let n = se(t[1]), s = t[2].replace(this.rules.other.tableAlignChars, "").split("|"), r = t[3]?.trim() ? t[3].replace(this.rules.other.tableRowBlankLine, "").split(`
13174
+ `) : [], o = { type: "table", raw: L(t[0], `
12756
13175
  `), header: [], align: [], rows: [] };
12757
13176
  if (n.length === s.length) {
12758
13177
  for (let i of s) this.rules.other.tableAlignRight.test(i) ? o.align.push("right") : this.rules.other.tableAlignCenter.test(i) ? o.align.push("center") : this.rules.other.tableAlignLeft.test(i) ? o.align.push("left") : o.align.push(null);
12759
13178
  for (let i = 0; i < n.length; i++) o.header.push({ text: n[i], tokens: this.lexer.inline(n[i]), header: true, align: o.align[i] });
12760
- for (let i of r) o.rows.push(ee(i, o.header.length).map((l, a) => ({ text: l, tokens: this.lexer.inline(l), header: false, align: o.align[a] })));
13179
+ for (let i of r) o.rows.push(se(i, o.header.length).map((u, a) => ({ text: u, tokens: this.lexer.inline(u), header: false, align: o.align[a] })));
12761
13180
  return o;
12762
13181
  }
12763
13182
  }
@@ -12765,7 +13184,7 @@ ${g}`, r = r.substring(0, r.length - O.text.length) + z.text;
12765
13184
  let t = this.rules.block.lheading.exec(e);
12766
13185
  if (t) {
12767
13186
  let n = t[1].trim();
12768
- return { type: "heading", raw: $(t[0], `
13187
+ return { type: "heading", raw: L(t[0], `
12769
13188
  `), depth: t[2].charAt(0) === "=" ? 1 : 2, text: n, tokens: this.lexer.inline(n) };
12770
13189
  }
12771
13190
  }
@@ -12792,61 +13211,65 @@ ${g}`, r = r.substring(0, r.length - O.text.length) + z.text;
12792
13211
  link(e) {
12793
13212
  let t = this.rules.inline.link.exec(e);
12794
13213
  if (t) {
12795
- let n = t[2].trim();
12796
- if (!this.options.pedantic && this.rules.other.startAngleBracket.test(n)) {
12797
- if (!this.rules.other.endAngleBracket.test(n)) return;
12798
- let o = $(n.slice(0, -1), "\\");
12799
- if ((n.length - o.length) % 2 === 0) return;
13214
+ let n = t[0].charAt(0) === "!" ? 2 : 1;
13215
+ if (!this.options.pedantic && we(e, t[1], n, this.rules)) return;
13216
+ let s = t[2].trim();
13217
+ if (!this.options.pedantic && this.rules.other.startAngleBracket.test(s)) {
13218
+ if (!this.rules.other.endAngleBracket.test(s)) return;
13219
+ let i = L(s.slice(0, -1), "\\");
13220
+ if ((s.length - i.length) % 2 === 0) return;
12800
13221
  } else {
12801
- let o = fe(t[2], "()");
12802
- if (o === -2) return;
12803
- if (o > -1) {
12804
- let l = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length + o;
12805
- t[2] = t[2].substring(0, o), t[0] = t[0].substring(0, l).trim(), t[3] = "";
13222
+ let i = Te(t[2], "()");
13223
+ if (i === -2) return;
13224
+ if (i > -1) {
13225
+ let a = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length + i;
13226
+ t[2] = t[2].substring(0, i), t[0] = t[0].substring(0, a).trim(), t[3] = "";
12806
13227
  }
12807
13228
  }
12808
- let s = t[2], r = "";
13229
+ let r = t[2], o = "";
12809
13230
  if (this.options.pedantic) {
12810
- let o = this.rules.other.pedanticHrefTitle.exec(s);
12811
- o && (s = o[1], r = o[3]);
12812
- } else r = t[3] ? t[3].slice(1, -1) : "";
12813
- return s = s.trim(), this.rules.other.startAngleBracket.test(s) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(n) ? s = s.slice(1) : s = s.slice(1, -1)), xe(t, { href: s && s.replace(this.rules.inline.anyPunctuation, "$1"), title: r && r.replace(this.rules.inline.anyPunctuation, "$1") }, t[0], this.lexer, this.rules);
13231
+ let i = this.rules.other.pedanticHrefTitle.exec(r);
13232
+ i && (r = i[1], o = i[3]);
13233
+ } else o = t[3] ? t[3].slice(1, -1) : "";
13234
+ return r = r.trim(), this.rules.other.startAngleBracket.test(r) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(s) ? r = r.slice(1) : r = r.slice(1, -1)), Oe(t, { href: r && r.replace(this.rules.inline.anyPunctuation, "$1"), title: o && o.replace(this.rules.inline.anyPunctuation, "$1") }, t[0], this.lexer, this.rules);
12814
13235
  }
12815
13236
  }
12816
13237
  reflink(e, t) {
12817
13238
  let n;
12818
13239
  if ((n = this.rules.inline.reflink.exec(e)) || (n = this.rules.inline.nolink.exec(e))) {
12819
- let s = (n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, " "), r = t[s.toLowerCase()];
12820
- if (!r) {
12821
- let o = n[0].charAt(0);
12822
- return { type: "text", raw: o, text: o };
13240
+ let s = n[0].charAt(0) === "!" ? 2 : 1;
13241
+ if (!this.options.pedantic && we(e, n[1], s, this.rules)) return;
13242
+ let r = (n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, " "), o = t[q(r)];
13243
+ if (!o) {
13244
+ let i = n[0].charAt(0);
13245
+ return { type: "text", raw: i, text: i };
12823
13246
  }
12824
- return xe(n, r, n[0], this.lexer, this.rules);
13247
+ return Oe(n, o, n[0], this.lexer, this.rules);
12825
13248
  }
12826
13249
  }
12827
13250
  emStrong(e, t, n = "") {
12828
13251
  let s = this.rules.inline.emStrongLDelim.exec(e);
12829
13252
  if (!s || !s[1] && !s[2] && !s[3] && !s[4] || s[4] && n.match(this.rules.other.unicodeAlphaNumeric)) return;
12830
13253
  if (!(s[1] || s[3] || "") || !n || this.rules.inline.punctuation.exec(n)) {
12831
- let o = [...s[0]].length - 1, i, l, a = o, p = 0, c = s[0][0], h = n === c, d = c === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
12832
- for (d.lastIndex = 0, t = t.slice(-1 * e.length + o); (s = d.exec(t)) !== null; ) {
13254
+ let o = [...s[0]].length - 1, i, u, a = o, p = 0, c = s[0][0], d = n === c, m = c === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
13255
+ for (m.lastIndex = 0, t = t.slice(-1 * e.length + o); (s = m.exec(t)) !== null; ) {
12833
13256
  if (i = s[1] || s[2] || s[3] || s[4] || s[5] || s[6], !i) continue;
12834
- if (l = [...i].length, s[3] || s[4]) {
12835
- a += l;
13257
+ if (u = [...i].length, s[3] || s[4]) {
13258
+ a += u;
12836
13259
  continue;
12837
13260
  } else if (s[5] || s[6]) {
12838
- if (o % 3 && !((o + l) % 3)) {
12839
- p += l;
13261
+ if (o % 3 && !((o + u) % 3)) {
13262
+ p += u;
12840
13263
  continue;
12841
13264
  }
12842
- if (h) break;
13265
+ if (d) break;
12843
13266
  }
12844
- if (a -= l, a > 0) continue;
12845
- l = Math.min(l, l + a + p);
12846
- let O = [...s[0]][0].length, g = e.slice(0, o + s.index + O + l);
12847
- if (Math.min(o, l) % 2) {
12848
- let z = g.slice(1, -1);
12849
- return { type: "em", raw: g, text: z, tokens: this.lexer.inlineTokens(z) };
13267
+ if (a -= u, a > 0) continue;
13268
+ u = Math.min(u, u + a + p);
13269
+ let b = [...s[0]][0].length, g = e.slice(0, o + s.index + b + u);
13270
+ if (Math.min(o, u) % 2) {
13271
+ let f = g.slice(1, -1);
13272
+ return { type: "em", raw: g, text: f, tokens: this.lexer.inlineTokens(f) };
12850
13273
  }
12851
13274
  let w = g.slice(2, -2);
12852
13275
  return { type: "strong", raw: g, text: w, tokens: this.lexer.inlineTokens(w) };
@@ -12868,17 +13291,17 @@ ${g}`, r = r.substring(0, r.length - O.text.length) + z.text;
12868
13291
  let s = this.rules.inline.delLDelim.exec(e);
12869
13292
  if (!s) return;
12870
13293
  if (!(s[1] || "") || !n || this.rules.inline.punctuation.exec(n)) {
12871
- let o = [...s[0]].length - 1, i, l, a = o, p = this.rules.inline.delRDelim;
13294
+ let o = [...s[0]].length - 1, i, u, a = o, p = this.rules.inline.delRDelim;
12872
13295
  for (p.lastIndex = 0, t = t.slice(-1 * e.length + o); (s = p.exec(t)) !== null; ) {
12873
- if (i = s[1] || s[2] || s[3] || s[4] || s[5] || s[6], !i || (l = [...i].length, l !== o)) continue;
13296
+ if (i = s[1] || s[2] || s[3] || s[4] || s[5] || s[6], !i || (u = [...i].length, u !== o)) continue;
12874
13297
  if (s[3] || s[4]) {
12875
- a += l;
13298
+ a += u;
12876
13299
  continue;
12877
13300
  }
12878
- if (a -= l, a > 0) continue;
12879
- l = Math.min(l, l + a);
12880
- let c = [...s[0]][0].length, h = e.slice(0, o + s.index + c + l), d = h.slice(o, -o);
12881
- return { type: "del", raw: h, text: d, tokens: this.lexer.inlineTokens(d) };
13301
+ if (a -= u, a > 0) continue;
13302
+ u = Math.min(u, u + a);
13303
+ let c = [...s[0]][0].length, d = e.slice(0, o + s.index + c + u), m = d.slice(o, -o);
13304
+ return { type: "del", raw: d, text: m, tokens: this.lexer.inlineTokens(m) };
12882
13305
  }
12883
13306
  }
12884
13307
  }
@@ -12908,32 +13331,32 @@ ${g}`, r = r.substring(0, r.length - O.text.length) + z.text;
12908
13331
  let t = this.rules.inline.text.exec(e);
12909
13332
  if (t) {
12910
13333
  let n = this.lexer.state.inRawBlock;
12911
- return { type: "text", raw: t[0], text: t[0], escaped: n };
13334
+ return { type: "text", raw: t[0], text: n ? t[0] : Re(t[0]), escaped: n };
12912
13335
  }
12913
13336
  }
12914
13337
  };
12915
- var x = class u {
13338
+ var R = class l {
12916
13339
  tokens;
12917
13340
  options;
12918
13341
  state;
12919
13342
  inlineQueue;
12920
13343
  tokenizer;
12921
13344
  constructor(e) {
12922
- this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e || T, this.options.tokenizer = this.options.tokenizer || new y(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, linkEmitted: false, top: true };
12923
- let t = { other: m, block: H.normal, inline: B.normal };
12924
- this.options.pedantic ? (t.block = H.pedantic, t.inline = B.pedantic) : this.options.gfm && (t.block = H.gfm, this.options.breaks ? t.inline = B.breaks : t.inline = B.gfm), this.tokenizer.rules = t;
13345
+ this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e || y, this.options.tokenizer = this.options.tokenizer || new P(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, linkEmitted: false, top: true };
13346
+ let t = { other: x, block: j.normal, inline: D.normal };
13347
+ this.options.pedantic ? (t.block = j.pedantic, t.inline = D.pedantic) : this.options.gfm && (t.block = j.gfm, this.options.breaks ? t.inline = D.breaks : t.inline = D.gfm), this.tokenizer.rules = t;
12925
13348
  }
12926
13349
  static get rules() {
12927
- return { block: H, inline: B };
13350
+ return { block: j, inline: D };
12928
13351
  }
12929
13352
  static lex(e, t) {
12930
- return new u(t).lex(e);
13353
+ return new l(t).lex(e);
12931
13354
  }
12932
13355
  static lexInline(e, t) {
12933
- return new u(t).inlineTokens(e);
13356
+ return new l(t).inlineTokens(e);
12934
13357
  }
12935
13358
  lex(e) {
12936
- e = e.replace(m.carriageReturn, `
13359
+ e = e.replace(x.carriageReturn, `
12937
13360
  `), this.blockTokens(e, this.tokens);
12938
13361
  for (let t = 0; t < this.inlineQueue.length; t++) {
12939
13362
  let n = this.inlineQueue[t];
@@ -12942,7 +13365,7 @@ var x = class u {
12942
13365
  return this.inlineQueue = [], this.tokens;
12943
13366
  }
12944
13367
  blockTokens(e, t = [], n = false) {
12945
- this.tokenizer.lexer = this, this.options.pedantic && (e = e.replace(m.tabCharGlobal, " ").replace(m.spaceLine, ""));
13368
+ this.tokenizer.lexer = this, this.options.pedantic && (e = e.replace(x.tabCharGlobal, " ").replace(x.spaceLine, ""));
12946
13369
  let s = 1 / 0;
12947
13370
  for (; e; ) {
12948
13371
  if (e.length < s) s = e.length;
@@ -13011,9 +13434,9 @@ var x = class u {
13011
13434
  }
13012
13435
  let o = e;
13013
13436
  if (this.options.extensions?.startBlock) {
13014
- let i = 1 / 0, l = e.slice(1), a;
13437
+ let i = 1 / 0, u = e.slice(1), a;
13015
13438
  this.options.extensions.startBlock.forEach((p) => {
13016
- a = p.call({ lexer: this }, l), typeof a == "number" && a >= 0 && (i = Math.min(i, a));
13439
+ a = p.call({ lexer: this }, u), typeof a == "number" && a >= 0 && (i = Math.min(i, a));
13017
13440
  }), i < 1 / 0 && i >= 0 && (o = e.substring(0, i + 1));
13018
13441
  }
13019
13442
  if (this.state.top && (r = this.tokenizer.paragraph(o))) {
@@ -13049,7 +13472,7 @@ var x = class u {
13049
13472
  for (let n of e.matchAll(this.tokenizer.rules.inline.blockSkip)) if (t.test(n[0]) && e.charAt(n.index - 1) !== "!") return true;
13050
13473
  for (let n of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)) {
13051
13474
  let s = n[0], r = s.lastIndexOf("[");
13052
- if (!(s.charAt(0) === "!" || !Object.hasOwn(this.tokens.links, s.slice(r + 1, -1))) && !(r > 1 && this.linkInText(s.slice(1, r - 1)))) return true;
13475
+ if (!(s.charAt(0) === "!" || !Object.hasOwn(this.tokens.links, q(s.slice(r + 1, -1)))) && !(r > 1 && this.linkInText(s.slice(1, r - 1)))) return true;
13053
13476
  }
13054
13477
  return false;
13055
13478
  }
@@ -13057,18 +13480,18 @@ var x = class u {
13057
13480
  this.tokenizer.lexer = this;
13058
13481
  let n = e;
13059
13482
  if (this.tokens.links && e.includes("[")) {
13060
- let i = this.tokenizer.rules.inline.reflinkSearch, l = (a) => {
13483
+ let i = this.tokenizer.rules.inline.reflinkSearch, u = (a) => {
13061
13484
  let p = a.lastIndexOf("[");
13062
- if (!Object.hasOwn(this.tokens.links, a.slice(p + 1, -1))) return a;
13485
+ if (!Object.hasOwn(this.tokens.links, q(a.slice(p + 1, -1)))) return a;
13063
13486
  if (p > 1 && a.charAt(0) !== "!") {
13064
13487
  let c = a.slice(1, p - 1);
13065
- if (this.linkInText(c)) return "[" + c.replace(i, l) + "][" + "a".repeat(a.length - p - 2) + "]";
13488
+ if (this.linkInText(c)) return "[" + c.replace(i, u) + "][" + "a".repeat(a.length - p - 2) + "]";
13066
13489
  }
13067
13490
  return "[" + "a".repeat(a.length - 2) + "]";
13068
13491
  };
13069
- n = n.replace(i, l);
13492
+ n = n.replace(i, u);
13070
13493
  }
13071
- n = n.replace(this.tokenizer.rules.inline.anyPunctuation, (i) => "+".repeat(i.length)), n = n.replace(this.tokenizer.rules.inline.blockSkip, (i, l, a) => {
13494
+ n = n.replace(this.tokenizer.rules.inline.anyPunctuation, (i) => "+".repeat(i.length)), n = n.replace(this.tokenizer.rules.inline.blockSkip, (i, u, a) => {
13072
13495
  let p = a ? a.length : 0;
13073
13496
  return i.slice(0, p) + "[" + "a".repeat(i.length - p - 2) + "]";
13074
13497
  }), n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;
@@ -13124,14 +13547,14 @@ var x = class u {
13124
13547
  e = e.substring(i.raw.length), t.push(i);
13125
13548
  continue;
13126
13549
  }
13127
- let l = e;
13550
+ let u = e;
13128
13551
  if (this.options.extensions?.startInline) {
13129
13552
  let a = 1 / 0, p = e.slice(1), c;
13130
- this.options.extensions.startInline.forEach((h) => {
13131
- c = h.call({ lexer: this }, p), typeof c == "number" && c >= 0 && (a = Math.min(a, c));
13132
- }), a < 1 / 0 && a >= 0 && (l = e.substring(0, a + 1));
13553
+ this.options.extensions.startInline.forEach((d) => {
13554
+ c = d.call({ lexer: this }, p), typeof c == "number" && c >= 0 && (a = Math.min(a, c));
13555
+ }), a < 1 / 0 && a >= 0 && (u = e.substring(0, a + 1));
13133
13556
  }
13134
- if (i = this.tokenizer.inlineText(l)) {
13557
+ if (i = this.tokenizer.inlineText(u)) {
13135
13558
  e = e.substring(i.raw.length), i.raw.slice(-1) !== "_" && (r = i.raw.slice(-1)), s = true;
13136
13559
  let a = t.at(-1);
13137
13560
  a?.type === "text" ? (a.raw += i.raw, a.text += i.text) : t.push(i);
@@ -13150,20 +13573,20 @@ var x = class u {
13150
13573
  else throw new Error(t);
13151
13574
  }
13152
13575
  };
13153
- var P = class {
13576
+ var S = class {
13154
13577
  options;
13155
13578
  parser;
13156
13579
  constructor(e) {
13157
- this.options = e || T;
13580
+ this.options = e || y;
13158
13581
  }
13159
13582
  space(e) {
13160
13583
  return "";
13161
13584
  }
13162
13585
  code({ text: e, lang: t, escaped: n }) {
13163
- let s = (t || "").match(m.notSpaceStart)?.[0], r = e ? e.replace(m.endingNewline, "") + `
13586
+ let s = (t || "").match(x.notSpaceStart)?.[0], r = e ? e.replace(x.endingNewline, "") + `
13164
13587
  ` : "";
13165
- return s ? '<pre><code class="language-' + R(s) + '">' + (n ? r : R(r, true)) + `</code></pre>
13166
- ` : "<pre><code>" + (n ? r : R(r, true)) + `</code></pre>
13588
+ return s ? '<pre><code class="language-' + O(s) + '">' + (n ? r : O(r, true)) + `</code></pre>
13589
+ ` : "<pre><code>" + (n ? r : O(r, true)) + `</code></pre>
13167
13590
  `;
13168
13591
  }
13169
13592
  blockquote({ tokens: e }) {
@@ -13188,8 +13611,8 @@ ${this.parser.parse(e)}</blockquote>
13188
13611
  list(e) {
13189
13612
  let t = e.ordered, n = e.start, s = "";
13190
13613
  for (let i = 0; i < e.items.length; i++) {
13191
- let l = e.items[i];
13192
- s += this.listitem(l);
13614
+ let u = e.items[i];
13615
+ s += this.listitem(u);
13193
13616
  }
13194
13617
  let r = t ? "ol" : "ul", o = t && n !== 1 ? ' start="' + n + '"' : "";
13195
13618
  return "<" + r + o + `>
@@ -13241,7 +13664,7 @@ ${e}</tr>
13241
13664
  return `<em>${this.parser.parseInline(e)}</em>`;
13242
13665
  }
13243
13666
  codespan({ text: e }) {
13244
- return `<code>${R(e, true)}</code>`;
13667
+ return `<code>${O(e, true)}</code>`;
13245
13668
  }
13246
13669
  br(e) {
13247
13670
  return "<br>";
@@ -13250,25 +13673,25 @@ ${e}</tr>
13250
13673
  return `<del>${this.parser.parseInline(e)}</del>`;
13251
13674
  }
13252
13675
  link({ href: e, title: t, text: n, tokens: s, autolink: r }) {
13253
- let o = r ? R(n, true) : this.parser.parseInline(s), i = Y(e);
13676
+ let o = r ? O(n, true) : this.parser.parseInline(s), i = re(e);
13254
13677
  if (i === null) return o;
13255
- e = R(i, r);
13256
- let l = '<a href="' + e + '"';
13257
- return t && (l += ' title="' + R(t) + '"'), l += ">" + o + "</a>", l;
13678
+ e = O(i, r);
13679
+ let u = '<a href="' + e + '"';
13680
+ return t && (u += ' title="' + O(t) + '"'), u += ">" + o + "</a>", u;
13258
13681
  }
13259
13682
  image({ href: e, title: t, text: n, tokens: s }) {
13260
13683
  s && (n = this.parser.parseInline(s, this.parser.textRenderer));
13261
- let r = Y(e);
13262
- if (r === null) return R(n);
13684
+ let r = re(e);
13685
+ if (r === null) return O(n);
13263
13686
  e = r;
13264
- let o = `<img src="${R(e)}" alt="${R(n)}"`;
13265
- return t && (o += ` title="${R(t)}"`), o += ">", o;
13687
+ let o = `<img src="${O(e)}" alt="${O(n)}"`;
13688
+ return t && (o += ` title="${O(t)}"`), o += ">", o;
13266
13689
  }
13267
13690
  text(e) {
13268
- return "tokens" in e && e.tokens ? this.parser.parseInline(e.tokens) : "escaped" in e && e.escaped ? e.text : R(e.text);
13691
+ return "tokens" in e && e.tokens ? this.parser.parseInline(e.tokens) : "escaped" in e && e.escaped ? e.text : O(e.text);
13269
13692
  }
13270
13693
  };
13271
- var L = class {
13694
+ var z = class {
13272
13695
  strong({ text: e }) {
13273
13696
  return e;
13274
13697
  }
@@ -13300,18 +13723,18 @@ var L = class {
13300
13723
  return e;
13301
13724
  }
13302
13725
  };
13303
- var b = class u2 {
13726
+ var T = class l2 {
13304
13727
  options;
13305
13728
  renderer;
13306
13729
  textRenderer;
13307
13730
  constructor(e) {
13308
- this.options = e || T, this.options.renderer = this.options.renderer || new P(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new L();
13731
+ this.options = e || y, this.options.renderer = this.options.renderer || new S(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new z();
13309
13732
  }
13310
13733
  static parse(e, t) {
13311
- return new u2(t).parse(e);
13734
+ return new l2(t).parse(e);
13312
13735
  }
13313
13736
  static parseInline(e, t) {
13314
- return new u2(t).parseInline(e);
13737
+ return new l2(t).parseInline(e);
13315
13738
  }
13316
13739
  parse(e) {
13317
13740
  this.renderer.parser = this;
@@ -13452,11 +13875,11 @@ var b = class u2 {
13452
13875
  return n;
13453
13876
  }
13454
13877
  };
13455
- var S = class {
13878
+ var _ = class {
13456
13879
  options;
13457
13880
  block;
13458
13881
  constructor(e) {
13459
- this.options = e || T;
13882
+ this.options = e || y;
13460
13883
  }
13461
13884
  static passThroughHooks = /* @__PURE__ */ new Set(["preprocess", "postprocess", "processAllTokens", "emStrongMask"]);
13462
13885
  static passThroughHooksRespectAsync = /* @__PURE__ */ new Set(["preprocess", "postprocess", "processAllTokens"]);
@@ -13473,23 +13896,23 @@ var S = class {
13473
13896
  return e;
13474
13897
  }
13475
13898
  provideLexer(e = this.block) {
13476
- return e ? x.lex : x.lexInline;
13899
+ return e ? R.lex : R.lexInline;
13477
13900
  }
13478
13901
  provideParser(e = this.block) {
13479
- return e ? b.parse : b.parseInline;
13902
+ return e ? T.parse : T.parseInline;
13480
13903
  }
13481
13904
  };
13482
- var Z = class {
13483
- defaults = A();
13905
+ var F = class {
13906
+ defaults = I();
13484
13907
  options = this.setOptions;
13485
13908
  parse = this.parseMarkdown(true);
13486
13909
  parseInline = this.parseMarkdown(false);
13487
- Parser = b;
13488
- Renderer = P;
13489
- TextRenderer = L;
13490
- Lexer = x;
13491
- Tokenizer = y;
13492
- Hooks = S;
13910
+ Parser = T;
13911
+ Renderer = S;
13912
+ TextRenderer = z;
13913
+ Lexer = R;
13914
+ Tokenizer = P;
13915
+ Hooks = _;
13493
13916
  constructor(...e) {
13494
13917
  this.use(...e);
13495
13918
  }
@@ -13526,8 +13949,8 @@ var Z = class {
13526
13949
  if ("renderer" in r) {
13527
13950
  let o = t.renderers[r.name];
13528
13951
  o ? t.renderers[r.name] = function(...i) {
13529
- let l = r.renderer.apply(this, i);
13530
- return l === false && (l = o.apply(this, i)), l;
13952
+ let u = r.renderer.apply(this, i);
13953
+ return u === false && (u = o.apply(this, i)), u;
13531
13954
  } : t.renderers[r.name] = r.renderer;
13532
13955
  }
13533
13956
  if ("tokenizer" in r) {
@@ -13537,50 +13960,50 @@ var Z = class {
13537
13960
  }
13538
13961
  "childTokens" in r && r.childTokens && (t.childTokens[r.name] = r.childTokens);
13539
13962
  }), s.extensions = t), n.renderer) {
13540
- let r = this.defaults.renderer || new P(this.defaults);
13963
+ let r = this.defaults.renderer || new S(this.defaults);
13541
13964
  for (let o in n.renderer) {
13542
13965
  if (!(o in r)) throw new Error(`renderer '${o}' does not exist`);
13543
13966
  if (["options", "parser"].includes(o)) continue;
13544
- let i = o, l = n.renderer[i], a = r[i];
13967
+ let i = o, u = n.renderer[i], a = r[i];
13545
13968
  r[i] = (...p) => {
13546
- let c = l.apply(r, p);
13969
+ let c = u.apply(r, p);
13547
13970
  return c === false && (c = a.apply(r, p)), c || "";
13548
13971
  };
13549
13972
  }
13550
13973
  s.renderer = r;
13551
13974
  }
13552
13975
  if (n.tokenizer) {
13553
- let r = this.defaults.tokenizer || new y(this.defaults);
13976
+ let r = this.defaults.tokenizer || new P(this.defaults);
13554
13977
  for (let o in n.tokenizer) {
13555
13978
  if (!(o in r)) throw new Error(`tokenizer '${o}' does not exist`);
13556
13979
  if (["options", "rules", "lexer"].includes(o)) continue;
13557
- let i = o, l = n.tokenizer[i], a = r[i];
13980
+ let i = o, u = n.tokenizer[i], a = r[i];
13558
13981
  r[i] = (...p) => {
13559
- let c = l.apply(r, p);
13982
+ let c = u.apply(r, p);
13560
13983
  return c === false && (c = a.apply(r, p)), c;
13561
13984
  };
13562
13985
  }
13563
13986
  s.tokenizer = r;
13564
13987
  }
13565
13988
  if (n.hooks) {
13566
- let r = this.defaults.hooks || new S();
13989
+ let r = this.defaults.hooks || new _();
13567
13990
  for (let o in n.hooks) {
13568
13991
  if (!(o in r)) throw new Error(`hook '${o}' does not exist`);
13569
13992
  if (["options", "block"].includes(o)) continue;
13570
- let i = o, l = n.hooks[i], a = r[i];
13571
- S.passThroughHooks.has(o) ? r[i] = (p) => {
13572
- if (this.defaults.async && S.passThroughHooksRespectAsync.has(o)) return (async () => {
13573
- let h = await l.call(r, p);
13574
- return a.call(r, h);
13993
+ let i = o, u = n.hooks[i], a = r[i];
13994
+ _.passThroughHooks.has(o) ? r[i] = (p) => {
13995
+ if (this.defaults.async && _.passThroughHooksRespectAsync.has(o)) return (async () => {
13996
+ let d = await u.call(r, p);
13997
+ return a.call(r, d);
13575
13998
  })();
13576
- let c = l.call(r, p);
13999
+ let c = u.call(r, p);
13577
14000
  return a.call(r, c);
13578
14001
  } : r[i] = (...p) => {
13579
14002
  if (this.defaults.async) return (async () => {
13580
- let h = await l.apply(r, p);
13581
- return h === false && (h = await a.apply(r, p)), h;
14003
+ let d = await u.apply(r, p);
14004
+ return d === false && (d = await a.apply(r, p)), d;
13582
14005
  })();
13583
- let c = l.apply(r, p);
14006
+ let c = u.apply(r, p);
13584
14007
  return c === false && (c = a.apply(r, p)), c;
13585
14008
  };
13586
14009
  }
@@ -13589,8 +14012,8 @@ var Z = class {
13589
14012
  if (n.walkTokens) {
13590
14013
  let r = this.defaults.walkTokens, o = n.walkTokens;
13591
14014
  s.walkTokens = function(i) {
13592
- let l = [];
13593
- return l.push(o.call(this, i)), r && (l = l.concat(r.call(this, i))), l;
14015
+ let u = [];
14016
+ return u.push(o.call(this, i)), r && (u = u.concat(r.call(this, i))), u;
13594
14017
  };
13595
14018
  }
13596
14019
  this.defaults = { ...this.defaults, ...s };
@@ -13600,10 +14023,10 @@ var Z = class {
13600
14023
  return this.defaults = { ...this.defaults, ...e }, this;
13601
14024
  }
13602
14025
  lexer(e, t) {
13603
- return x.lex(e, t ?? this.defaults);
14026
+ return R.lex(e, t ?? this.defaults);
13604
14027
  }
13605
14028
  parser(e, t) {
13606
- return b.parse(e, t ?? this.defaults);
14029
+ return T.parse(e, t ?? this.defaults);
13607
14030
  }
13608
14031
  parseMarkdown(e) {
13609
14032
  return (n, s) => {
@@ -13612,19 +14035,19 @@ var Z = class {
13612
14035
  if (typeof n > "u" || n === null) return i(new Error("marked(): input parameter is undefined or null"));
13613
14036
  if (typeof n != "string") return i(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n) + ", string expected"));
13614
14037
  if (o.hooks && (o.hooks.options = o, o.hooks.block = e), o.async) return (async () => {
13615
- let l = o.hooks ? await o.hooks.preprocess(n) : n, p = await (o.hooks ? await o.hooks.provideLexer(e) : e ? x.lex : x.lexInline)(l, o), c = o.hooks ? await o.hooks.processAllTokens(p) : p;
14038
+ let u = o.hooks ? await o.hooks.preprocess(n) : n, p = await (o.hooks ? await o.hooks.provideLexer(e) : e ? R.lex : R.lexInline)(u, o), c = o.hooks ? await o.hooks.processAllTokens(p) : p;
13616
14039
  o.walkTokens && await Promise.all(this.walkTokens(c, o.walkTokens));
13617
- let d = await (o.hooks ? await o.hooks.provideParser(e) : e ? b.parse : b.parseInline)(c, o);
13618
- return o.hooks ? await o.hooks.postprocess(d) : d;
14040
+ let m = await (o.hooks ? await o.hooks.provideParser(e) : e ? T.parse : T.parseInline)(c, o);
14041
+ return o.hooks ? await o.hooks.postprocess(m) : m;
13619
14042
  })().catch(i);
13620
14043
  try {
13621
14044
  o.hooks && (n = o.hooks.preprocess(n));
13622
- let a = (o.hooks ? o.hooks.provideLexer(e) : e ? x.lex : x.lexInline)(n, o);
14045
+ let a = (o.hooks ? o.hooks.provideLexer(e) : e ? R.lex : R.lexInline)(n, o);
13623
14046
  o.hooks && (a = o.hooks.processAllTokens(a)), o.walkTokens && this.walkTokens(a, o.walkTokens);
13624
- let c = (o.hooks ? o.hooks.provideParser(e) : e ? b.parse : b.parseInline)(a, o);
14047
+ let c = (o.hooks ? o.hooks.provideParser(e) : e ? T.parse : T.parseInline)(a, o);
13625
14048
  return o.hooks && (c = o.hooks.postprocess(c)), c;
13626
- } catch (l) {
13627
- return i(l);
14049
+ } catch (u) {
14050
+ return i(u);
13628
14051
  }
13629
14052
  };
13630
14053
  }
@@ -13632,7 +14055,7 @@ var Z = class {
13632
14055
  return (n) => {
13633
14056
  if (n.message += `
13634
14057
  Please report this to https://github.com/markedjs/marked.`, e) {
13635
- let s = "<p>An error occurred:</p><pre>" + R(n.message + "", true) + "</pre>";
14058
+ let s = "<p>An error occurred:</p><pre>" + O(n.message + "", true) + "</pre>";
13636
14059
  return t ? Promise.resolve(s) : s;
13637
14060
  }
13638
14061
  if (t) return Promise.reject(n);
@@ -13640,41 +14063,41 @@ Please report this to https://github.com/markedjs/marked.`, e) {
13640
14063
  };
13641
14064
  }
13642
14065
  };
13643
- var M = new Z();
13644
- function f(u3, e) {
13645
- return M.parse(u3, e);
14066
+ var E = new F();
14067
+ function k(l3, e) {
14068
+ return E.parse(l3, e);
13646
14069
  }
13647
- f.options = f.setOptions = function(u3) {
13648
- return M.setOptions(u3), f.defaults = M.defaults, j(f.defaults), f;
14070
+ k.options = k.setOptions = function(l3) {
14071
+ return E.setOptions(l3), k.defaults = E.defaults, W(k.defaults), k;
13649
14072
  };
13650
- f.getDefaults = A;
13651
- f.defaults = T;
13652
- function gt(...u3) {
13653
- return M.use(...u3), f.defaults = M.defaults, j(f.defaults), f;
13654
- }
13655
- f.use = gt;
13656
- f.walkTokens = function(u3, e) {
13657
- return M.walkTokens(u3, e);
14073
+ k.getDefaults = I;
14074
+ k.defaults = y;
14075
+ function Pt(...l3) {
14076
+ return E.use(...l3), k.defaults = E.defaults, W(k.defaults), k;
14077
+ }
14078
+ k.use = Pt;
14079
+ k.walkTokens = function(l3, e) {
14080
+ return E.walkTokens(l3, e);
13658
14081
  };
13659
- f.parseInline = M.parseInline;
13660
- f.Parser = b;
13661
- f.parser = b.parse;
13662
- f.Renderer = P;
13663
- f.TextRenderer = L;
13664
- f.Lexer = x;
13665
- f.lexer = x.lex;
13666
- f.Tokenizer = y;
13667
- f.Hooks = S;
13668
- f.parse = f;
13669
- var rn = f.options;
13670
- var sn = f.setOptions;
13671
- var on = f.walkTokens;
13672
- var an = f.parseInline;
13673
- var un = b.parse;
13674
- var pn = x.lex;
14082
+ k.parseInline = E.parseInline;
14083
+ k.Parser = T;
14084
+ k.parser = T.parse;
14085
+ k.Renderer = S;
14086
+ k.TextRenderer = z;
14087
+ k.Lexer = R;
14088
+ k.lexer = R.lex;
14089
+ k.Tokenizer = P;
14090
+ k.Hooks = _;
14091
+ k.parse = k;
14092
+ var gn = k.options;
14093
+ var fn = k.setOptions;
14094
+ var mn = k.walkTokens;
14095
+ var xn = k.parseInline;
14096
+ var Rn = T.parse;
14097
+ var Tn = R.lex;
13675
14098
 
13676
14099
  // src/ui/transcript/render_markdown.ts
13677
- var parser = new Z({ gfm: true, breaks: true });
14100
+ var parser = new F({ gfm: true, breaks: true });
13678
14101
  var ALLOWED_TAGS = [
13679
14102
  "a",
13680
14103
  "p",
@@ -13743,7 +14166,7 @@ function harden(node) {
13743
14166
  var purifier = null;
13744
14167
  function sanitizer() {
13745
14168
  if (purifier === null) {
13746
- purifier = purify();
14169
+ purifier = purify_default();
13747
14170
  purifier.addHook("afterSanitizeAttributes", harden);
13748
14171
  }
13749
14172
  return purifier;
@@ -14918,13 +15341,13 @@ var AgUiClient = class {
14918
15341
  }
14919
15342
  }
14920
15343
  #buildSubscriber(pending, runState) {
14921
- const h = this.#handlers;
15344
+ const h2 = this.#handlers;
14922
15345
  const closed = this.#closedMessageIds;
14923
15346
  const cancelled = () => this.#cancelled;
14924
15347
  const pendingDeltas = /* @__PURE__ */ new Set();
14925
15348
  return {
14926
15349
  onRunInitialized() {
14927
- h.onRunStart();
15350
+ h2.onRunStart();
14928
15351
  },
14929
15352
  onTextMessageStartEvent({ event }) {
14930
15353
  if (closed.has(event.messageId)) {
@@ -14934,11 +15357,11 @@ var AgUiClient = class {
14934
15357
  }
14935
15358
  },
14936
15359
  onTextMessageContentEvent({ textMessageBuffer }) {
14937
- h.onTextDelta(textMessageBuffer);
15360
+ h2.onTextDelta(textMessageBuffer);
14938
15361
  },
14939
15362
  onTextMessageEndEvent({ event, textMessageBuffer }) {
14940
15363
  closed.add(event.messageId);
14941
- h.onTextEnd(textMessageBuffer);
15364
+ h2.onTextEnd(textMessageBuffer);
14942
15365
  },
14943
15366
  onToolCallEndEvent({ event, toolCallName, toolCallArgs }) {
14944
15367
  const call = {
@@ -14947,21 +15370,21 @@ var AgUiClient = class {
14947
15370
  args: toolCallArgs
14948
15371
  };
14949
15372
  pending.push(call);
14950
- h.onToolCall(call);
15373
+ h2.onToolCall(call);
14951
15374
  },
14952
15375
  onToolCallResultEvent({ event }) {
14953
15376
  const outcome = event.metadata?.["outcome"];
14954
- h.onToolResult(event.toolCallId, contentToText2(event.content), outcome);
15377
+ h2.onToolResult(event.toolCallId, contentToText2(event.content), outcome);
14955
15378
  },
14956
15379
  onActivitySnapshotEvent({ event, messages }) {
14957
15380
  const known = messages.some(
14958
15381
  (message) => message.id === event.messageId && message.role === "activity"
14959
15382
  );
14960
15383
  if (known) {
14961
- h.onActivityChanged(event.messageId, event.activityType, event.content);
15384
+ h2.onActivityChanged(event.messageId, event.activityType, event.content);
14962
15385
  return;
14963
15386
  }
14964
- h.onActivity(event.activityType, event.content, event.messageId);
15387
+ h2.onActivity(event.activityType, event.content, event.messageId);
14965
15388
  },
14966
15389
  // Deliberately does *not* read the message here. `@ag-ui/client`
14967
15390
  // dispatches this subscriber **before** applying the patch, so the
@@ -14976,7 +15399,7 @@ var AgUiClient = class {
14976
15399
  // first moment the result exists. Only the ids marked above are looked at,
14977
15400
  // so an ordinary text delta does not walk the transcript.
14978
15401
  onCustomEvent({ event }) {
14979
- h.onCustomEvent(event.name, event.value);
15402
+ h2.onCustomEvent(event.name, event.value);
14980
15403
  },
14981
15404
  // The delegation lifecycle. Forwarded rather than interpreted here, for
14982
15405
  // the reason every other subscriber in this block is thin: this file
@@ -14986,16 +15409,16 @@ var AgUiClient = class {
14986
15409
  // `parentToolCallId` is optional on the wire and normalised to `null` so
14987
15410
  // the handler has one absent-value to check rather than two.
14988
15411
  onSubagentStartedEvent({ event }) {
14989
- h.onSubAgentStarted(event.subagentRunId, event.name, event.parentToolCallId ?? null);
15412
+ h2.onSubAgentStarted(event.subagentRunId, event.name, event.parentToolCallId ?? null);
14990
15413
  },
14991
15414
  onSubagentFinishedEvent({ event }) {
14992
- h.onSubAgentFinished(event.subagentRunId);
15415
+ h2.onSubAgentFinished(event.subagentRunId);
14993
15416
  },
14994
15417
  onSubagentErrorEvent({ event }) {
14995
- h.onSubAgentError(event.subagentRunId, event.message);
15418
+ h2.onSubAgentError(event.subagentRunId, event.message);
14996
15419
  },
14997
15420
  onMessagesSnapshotEvent({ event }) {
14998
- h.onMessagesSnapshot(event.messages);
15421
+ h2.onMessagesSnapshot(event.messages);
14999
15422
  },
15000
15423
  onMessagesChanged({ messages }) {
15001
15424
  if (pendingDeltas.size === 0) {
@@ -15004,7 +15427,7 @@ var AgUiClient = class {
15004
15427
  for (const id of pendingDeltas) {
15005
15428
  const message = messages.find((entry) => entry.id === id);
15006
15429
  if (message !== void 0 && message.role === "activity") {
15007
- h.onActivityChanged(id, message.activityType, message.content);
15430
+ h2.onActivityChanged(id, message.activityType, message.content);
15008
15431
  }
15009
15432
  }
15010
15433
  pendingDeltas.clear();
@@ -15015,10 +15438,10 @@ var AgUiClient = class {
15015
15438
  // family emits THINKING_*: pydantic-ai has sent REASONING_* at every
15016
15439
  // protocol version django-ag-ui admits.
15017
15440
  onReasoningStartEvent() {
15018
- h.onReasoningStart();
15441
+ h2.onReasoningStart();
15019
15442
  },
15020
15443
  onReasoningMessageContentEvent({ reasoningMessageBuffer }) {
15021
- h.onReasoningDelta(reasoningMessageBuffer);
15444
+ h2.onReasoningDelta(reasoningMessageBuffer);
15022
15445
  },
15023
15446
  // The delta callback reports the buffer as it stood *before* the announced
15024
15447
  // delta was appended, so on its own it always trails the stream by one and
@@ -15028,10 +15451,10 @@ var AgUiClient = class {
15028
15451
  // REASONING_MESSAGE_END rather than REASONING_END, because only the former
15029
15452
  // carries a buffer.
15030
15453
  onReasoningMessageEndEvent({ reasoningMessageBuffer }) {
15031
- h.onReasoningDelta(reasoningMessageBuffer);
15454
+ h2.onReasoningDelta(reasoningMessageBuffer);
15032
15455
  },
15033
15456
  onReasoningEndEvent() {
15034
- h.onReasoningEnd();
15457
+ h2.onReasoningEnd();
15035
15458
  },
15036
15459
  onRunFinishedEvent(params) {
15037
15460
  runState.terminal = true;
@@ -15045,11 +15468,11 @@ var AgUiClient = class {
15045
15468
  if (cancelled()) {
15046
15469
  return;
15047
15470
  }
15048
- h.onError(event.message);
15471
+ h2.onError(event.message);
15049
15472
  },
15050
15473
  onRunFinalized() {
15051
15474
  runState.terminal = true;
15052
- h.onRunEnd();
15475
+ h2.onRunEnd();
15053
15476
  }
15054
15477
  };
15055
15478
  }
@@ -15193,7 +15616,7 @@ var SessionStorageStore = class _SessionStorageStore {
15193
15616
  }
15194
15617
  }
15195
15618
  listThreads() {
15196
- const metas = this.#readThreads().sort((a, b2) => b2.updatedAt - a.updatedAt).map(({ threadId, title, updatedAt, preview }) => ({ threadId, title, updatedAt, preview }));
15619
+ const metas = this.#readThreads().sort((a, b) => b.updatedAt - a.updatedAt).map(({ threadId, title, updatedAt, preview }) => ({ threadId, title, updatedAt, preview }));
15197
15620
  return Promise.resolve(metas);
15198
15621
  }
15199
15622
  setActiveThread(threadId) {
@@ -16643,6 +17066,9 @@ var AgUiChat = class extends HTMLElement {
16643
17066
  headersFor: (url) => this.#headersFor(url),
16644
17067
  requestCredentials: () => this.#requestCredentials(),
16645
17068
  appendMessage: (role, content) => this.appendMessage(role, content),
17069
+ // A continuation sends only what the composer holds. The tray is not
17070
+ // read, so nothing rides along to be drawn or announced.
17071
+ announceTurn: (content) => this.#announceTurn(content, []),
16646
17072
  autoGrow: () => autoGrow(this.#input),
16647
17073
  continuationEnded: () => this.#flushQueued(),
16648
17074
  client: () => this.#client,
@@ -17945,6 +18371,23 @@ var AgUiChat = class extends HTMLElement {
17945
18371
  if (this.#transcript.isEmpty()) {
17946
18372
  this.setAttribute("data-composer-settling", "");
17947
18373
  }
18374
+ this.#announceTurn(content, attachments);
18375
+ await this.#client_send(content, attachments);
18376
+ }
18377
+ /**
18378
+ * Put a turn the user sent on screen, and tell the host it was sent.
18379
+ *
18380
+ * The half of a send that does not depend on where it goes, so both senders
18381
+ * take it from here: {@link sendMessage}, and a checkpoint continuation, which
18382
+ * posts to the resume or fork endpoint on a client of its own. The
18383
+ * continuation used to call that client directly, so the turn went out and
18384
+ * its answer streamed in under no question -- while the save it made held the
18385
+ * turn, and a reload showed what the live transcript never had.
18386
+ *
18387
+ * Arming the composer's travel stays with {@link sendMessage}: continuing a
18388
+ * run is a change of context, and docks at once.
18389
+ */
18390
+ #announceTurn(content, attachments) {
17948
18391
  const bubble = this.appendMessage(MESSAGE_ROLE.USER, content);
17949
18392
  if (attachments.length > 0) {
17950
18393
  bubble.appendChild(renderAttachmentChips(attachments));
@@ -17956,7 +18399,6 @@ var AgUiChat = class extends HTMLElement {
17956
18399
  composed: true
17957
18400
  })
17958
18401
  );
17959
- await this.#client_send(content, attachments);
17960
18402
  }
17961
18403
  /**
17962
18404
  * Queue a file for upload into the attachment tray, exactly as the file
@@ -18221,7 +18663,7 @@ function setControlValue(el2, value) {
18221
18663
  }
18222
18664
 
18223
18665
  // src/version.ts
18224
- var VERSION = "0.41.2";
18666
+ var VERSION = "0.41.3";
18225
18667
  export {
18226
18668
  ATTACHMENT_EVENT,
18227
18669
  AgUiChat,
@@ -18319,6 +18761,7 @@ export {
18319
18761
  /*! Bundled license information:
18320
18762
 
18321
18763
  dompurify/dist/purify.es.mjs:
18322
- (*! @license DOMPurify 3.4.15 | (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.15/LICENSE *)
18764
+ (*! @license DOMPurify 3.4.16 | (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.16/LICENSE *)
18765
+ (*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE *)
18323
18766
  */
18324
18767
  //# sourceMappingURL=index.js.map