plutonium 0.15.23 → 0.15.24

Sign up to get free protection for your applications and to get access to all the features.
@@ -46,17 +46,17 @@
46
46
  var now = function() {
47
47
  return root.Date.now();
48
48
  };
49
- function debounce4(func, wait, options) {
49
+ function debounce4(func, wait, options2) {
50
50
  var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
51
51
  if (typeof func != "function") {
52
52
  throw new TypeError(FUNC_ERROR_TEXT);
53
53
  }
54
54
  wait = toNumber(wait) || 0;
55
- if (isObject(options)) {
56
- leading = !!options.leading;
57
- maxing = "maxWait" in options;
58
- maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
59
- trailing = "trailing" in options ? !!options.trailing : trailing;
55
+ if (isObject(options2)) {
56
+ leading = !!options2.leading;
57
+ maxing = "maxWait" in options2;
58
+ maxWait = maxing ? nativeMax(toNumber(options2.maxWait) || 0, wait) : maxWait;
59
+ trailing = "trailing" in options2 ? !!options2.trailing : trailing;
60
60
  }
61
61
  function invokeFunc(time) {
62
62
  var args = lastArgs, thisArg = lastThis;
@@ -342,7 +342,7 @@
342
342
  }
343
343
  }
344
344
  function parseEventOptions(eventOptions) {
345
- return eventOptions.split(":").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, "")]: !/^!/.test(token) }), {});
345
+ return eventOptions.split(":").reduce((options2, token) => Object.assign(options2, { [token.replace(/^!/, "")]: !/^!/.test(token) }), {});
346
346
  }
347
347
  function stringifyEventTarget(eventTarget) {
348
348
  if (eventTarget == window) {
@@ -3078,15 +3078,15 @@
3078
3078
  var Accordion = (
3079
3079
  /** @class */
3080
3080
  function() {
3081
- function Accordion2(accordionEl, items, options, instanceOptions) {
3081
+ function Accordion2(accordionEl, items, options2, instanceOptions) {
3082
3082
  if (accordionEl === void 0) {
3083
3083
  accordionEl = null;
3084
3084
  }
3085
3085
  if (items === void 0) {
3086
3086
  items = [];
3087
3087
  }
3088
- if (options === void 0) {
3089
- options = Default;
3088
+ if (options2 === void 0) {
3089
+ options2 = Default;
3090
3090
  }
3091
3091
  if (instanceOptions === void 0) {
3092
3092
  instanceOptions = DefaultInstanceOptions;
@@ -3094,7 +3094,7 @@
3094
3094
  this._instanceId = instanceOptions.id ? instanceOptions.id : accordionEl.id;
3095
3095
  this._accordionEl = accordionEl;
3096
3096
  this._items = items;
3097
- this._options = __assign(__assign({}, Default), options);
3097
+ this._options = __assign(__assign({}, Default), options2);
3098
3098
  this._initialized = false;
3099
3099
  this.init();
3100
3100
  instances_default.addInstance("Accordion", this, this._instanceId, instanceOptions.override);
@@ -3257,15 +3257,15 @@
3257
3257
  var Collapse = (
3258
3258
  /** @class */
3259
3259
  function() {
3260
- function Collapse2(targetEl, triggerEl, options, instanceOptions) {
3260
+ function Collapse2(targetEl, triggerEl, options2, instanceOptions) {
3261
3261
  if (targetEl === void 0) {
3262
3262
  targetEl = null;
3263
3263
  }
3264
3264
  if (triggerEl === void 0) {
3265
3265
  triggerEl = null;
3266
3266
  }
3267
- if (options === void 0) {
3268
- options = Default2;
3267
+ if (options2 === void 0) {
3268
+ options2 = Default2;
3269
3269
  }
3270
3270
  if (instanceOptions === void 0) {
3271
3271
  instanceOptions = DefaultInstanceOptions2;
@@ -3273,7 +3273,7 @@
3273
3273
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetEl.id;
3274
3274
  this._targetEl = targetEl;
3275
3275
  this._triggerEl = triggerEl;
3276
- this._options = __assign2(__assign2({}, Default2), options);
3276
+ this._options = __assign2(__assign2({}, Default2), options2);
3277
3277
  this._visible = false;
3278
3278
  this._initialized = false;
3279
3279
  this.init();
@@ -3401,15 +3401,15 @@
3401
3401
  var Carousel = (
3402
3402
  /** @class */
3403
3403
  function() {
3404
- function Carousel2(carouselEl, items, options, instanceOptions) {
3404
+ function Carousel2(carouselEl, items, options2, instanceOptions) {
3405
3405
  if (carouselEl === void 0) {
3406
3406
  carouselEl = null;
3407
3407
  }
3408
3408
  if (items === void 0) {
3409
3409
  items = [];
3410
3410
  }
3411
- if (options === void 0) {
3412
- options = Default3;
3411
+ if (options2 === void 0) {
3412
+ options2 = Default3;
3413
3413
  }
3414
3414
  if (instanceOptions === void 0) {
3415
3415
  instanceOptions = DefaultInstanceOptions3;
@@ -3417,7 +3417,7 @@
3417
3417
  this._instanceId = instanceOptions.id ? instanceOptions.id : carouselEl.id;
3418
3418
  this._carouselEl = carouselEl;
3419
3419
  this._items = items;
3420
- this._options = __assign3(__assign3(__assign3({}, Default3), options), { indicators: __assign3(__assign3({}, Default3.indicators), options.indicators) });
3420
+ this._options = __assign3(__assign3(__assign3({}, Default3), options2), { indicators: __assign3(__assign3({}, Default3.indicators), options2.indicators) });
3421
3421
  this._activeItem = this.getItem(this._options.defaultPosition);
3422
3422
  this._indicators = this._options.indicators.items;
3423
3423
  this._intervalDuration = this._options.interval;
@@ -3638,15 +3638,15 @@
3638
3638
  var Dismiss = (
3639
3639
  /** @class */
3640
3640
  function() {
3641
- function Dismiss2(targetEl, triggerEl, options, instanceOptions) {
3641
+ function Dismiss2(targetEl, triggerEl, options2, instanceOptions) {
3642
3642
  if (targetEl === void 0) {
3643
3643
  targetEl = null;
3644
3644
  }
3645
3645
  if (triggerEl === void 0) {
3646
3646
  triggerEl = null;
3647
3647
  }
3648
- if (options === void 0) {
3649
- options = Default4;
3648
+ if (options2 === void 0) {
3649
+ options2 = Default4;
3650
3650
  }
3651
3651
  if (instanceOptions === void 0) {
3652
3652
  instanceOptions = DefaultInstanceOptions4;
@@ -3654,7 +3654,7 @@
3654
3654
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetEl.id;
3655
3655
  this._targetEl = targetEl;
3656
3656
  this._triggerEl = triggerEl;
3657
- this._options = __assign4(__assign4({}, Default4), options);
3657
+ this._options = __assign4(__assign4({}, Default4), options2);
3658
3658
  this._initialized = false;
3659
3659
  this.init();
3660
3660
  instances_default.addInstance("Dismiss", this, this._instanceId, instanceOptions.override);
@@ -4063,7 +4063,7 @@
4063
4063
  };
4064
4064
  function arrow(_ref) {
4065
4065
  var _state$modifiersData$;
4066
- var state = _ref.state, name = _ref.name, options = _ref.options;
4066
+ var state = _ref.state, name = _ref.name, options2 = _ref.options;
4067
4067
  var arrowElement = state.elements.arrow;
4068
4068
  var popperOffsets2 = state.modifiersData.popperOffsets;
4069
4069
  var basePlacement = getBasePlacement(state.placement);
@@ -4073,7 +4073,7 @@
4073
4073
  if (!arrowElement || !popperOffsets2) {
4074
4074
  return;
4075
4075
  }
4076
- var paddingObject = toPaddingObject(options.padding, state);
4076
+ var paddingObject = toPaddingObject(options2.padding, state);
4077
4077
  var arrowRect = getLayoutRect(arrowElement);
4078
4078
  var minProp = axis === "y" ? top : left;
4079
4079
  var maxProp = axis === "y" ? bottom : right;
@@ -4090,8 +4090,8 @@
4090
4090
  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
4091
4091
  }
4092
4092
  function effect2(_ref2) {
4093
- var state = _ref2.state, options = _ref2.options;
4094
- var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
4093
+ var state = _ref2.state, options2 = _ref2.options;
4094
+ var _options$element = options2.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
4095
4095
  if (arrowElement == null) {
4096
4096
  return;
4097
4097
  }
@@ -4204,8 +4204,8 @@
4204
4204
  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
4205
4205
  }
4206
4206
  function computeStyles(_ref5) {
4207
- var state = _ref5.state, options = _ref5.options;
4208
- var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
4207
+ var state = _ref5.state, options2 = _ref5.options;
4208
+ var _options$gpuAccelerat = options2.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options2.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options2.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
4209
4209
  var commonStyles = {
4210
4210
  placement: getBasePlacement(state.placement),
4211
4211
  variation: getVariation(state.placement),
@@ -4247,8 +4247,8 @@
4247
4247
  passive: true
4248
4248
  };
4249
4249
  function effect3(_ref) {
4250
- var state = _ref.state, instance = _ref.instance, options = _ref.options;
4251
- var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
4250
+ var state = _ref.state, instance = _ref.instance, options2 = _ref.options;
4251
+ var _options$scroll = options2.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options2.resize, resize = _options$resize === void 0 ? true : _options$resize;
4252
4252
  var window2 = getWindow(state.elements.popper);
4253
4253
  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
4254
4254
  if (scroll) {
@@ -4323,10 +4323,10 @@
4323
4323
  // node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
4324
4324
  function getViewportRect(element, strategy) {
4325
4325
  var win = getWindow(element);
4326
- var html = getDocumentElement(element);
4326
+ var html3 = getDocumentElement(element);
4327
4327
  var visualViewport = win.visualViewport;
4328
- var width = html.clientWidth;
4329
- var height = html.clientHeight;
4328
+ var width = html3.clientWidth;
4329
+ var height = html3.clientHeight;
4330
4330
  var x = 0;
4331
4331
  var y = 0;
4332
4332
  if (visualViewport) {
@@ -4349,15 +4349,15 @@
4349
4349
  // node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
4350
4350
  function getDocumentRect(element) {
4351
4351
  var _element$ownerDocumen;
4352
- var html = getDocumentElement(element);
4352
+ var html3 = getDocumentElement(element);
4353
4353
  var winScroll = getWindowScroll(element);
4354
4354
  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
4355
- var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
4356
- var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
4355
+ var width = max(html3.scrollWidth, html3.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
4356
+ var height = max(html3.scrollHeight, html3.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
4357
4357
  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
4358
4358
  var y = -winScroll.scrollTop;
4359
- if (getComputedStyle(body || html).direction === "rtl") {
4360
- x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
4359
+ if (getComputedStyle(body || html3).direction === "rtl") {
4360
+ x += max(html3.clientWidth, body ? body.clientWidth : 0) - width;
4361
4361
  }
4362
4362
  return {
4363
4363
  width,
@@ -4385,16 +4385,16 @@
4385
4385
  }
4386
4386
 
4387
4387
  // node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
4388
- function listScrollParents(element, list) {
4388
+ function listScrollParents(element, list2) {
4389
4389
  var _element$ownerDocumen;
4390
- if (list === void 0) {
4391
- list = [];
4390
+ if (list2 === void 0) {
4391
+ list2 = [];
4392
4392
  }
4393
4393
  var scrollParent = getScrollParent(element);
4394
4394
  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
4395
4395
  var win = getWindow(scrollParent);
4396
4396
  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
4397
- var updatedList = list.concat(target);
4397
+ var updatedList = list2.concat(target);
4398
4398
  return isBody ? updatedList : (
4399
4399
  // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
4400
4400
  updatedList.concat(listScrollParents(getParentNode(target)))
@@ -4513,11 +4513,11 @@
4513
4513
  }
4514
4514
 
4515
4515
  // node_modules/@popperjs/core/lib/utils/detectOverflow.js
4516
- function detectOverflow(state, options) {
4517
- if (options === void 0) {
4518
- options = {};
4516
+ function detectOverflow(state, options2) {
4517
+ if (options2 === void 0) {
4518
+ options2 = {};
4519
4519
  }
4520
- var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
4520
+ var _options = options2, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
4521
4521
  var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
4522
4522
  var altContext = elementContext === popper ? reference : popper;
4523
4523
  var popperRect = state.rects.popper;
@@ -4551,11 +4551,11 @@
4551
4551
  }
4552
4552
 
4553
4553
  // node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
4554
- function computeAutoPlacement(state, options) {
4555
- if (options === void 0) {
4556
- options = {};
4554
+ function computeAutoPlacement(state, options2) {
4555
+ if (options2 === void 0) {
4556
+ options2 = {};
4557
4557
  }
4558
- var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
4558
+ var _options = options2, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
4559
4559
  var variation = getVariation(placement);
4560
4560
  var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
4561
4561
  return getVariation(placement2) === variation;
@@ -4589,11 +4589,11 @@
4589
4589
  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
4590
4590
  }
4591
4591
  function flip(_ref) {
4592
- var state = _ref.state, options = _ref.options, name = _ref.name;
4592
+ var state = _ref.state, options2 = _ref.options, name = _ref.name;
4593
4593
  if (state.modifiersData[name]._skip) {
4594
4594
  return;
4595
4595
  }
4596
- var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
4596
+ var _options$mainAxis = options2.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options2.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options2.fallbackPlacements, padding = options2.padding, boundary = options2.boundary, rootBoundary = options2.rootBoundary, altBoundary = options2.altBoundary, _options$flipVariatio = options2.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options2.allowedAutoPlacements;
4597
4597
  var preferredPlacement = state.options.placement;
4598
4598
  var basePlacement = getBasePlacement(preferredPlacement);
4599
4599
  var isBasePlacement = basePlacement === preferredPlacement;
@@ -4758,8 +4758,8 @@
4758
4758
  };
4759
4759
  }
4760
4760
  function offset(_ref2) {
4761
- var state = _ref2.state, options = _ref2.options, name = _ref2.name;
4762
- var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
4761
+ var state = _ref2.state, options2 = _ref2.options, name = _ref2.name;
4762
+ var _options$offset = options2.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
4763
4763
  var data = placements.reduce(function(acc, placement) {
4764
4764
  acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
4765
4765
  return acc;
@@ -4804,8 +4804,8 @@
4804
4804
 
4805
4805
  // node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
4806
4806
  function preventOverflow(_ref) {
4807
- var state = _ref.state, options = _ref.options, name = _ref.name;
4808
- var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
4807
+ var state = _ref.state, options2 = _ref.options, name = _ref.name;
4808
+ var _options$mainAxis = options2.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options2.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options2.boundary, rootBoundary = options2.rootBoundary, altBoundary = options2.altBoundary, padding = options2.padding, _options$tether = options2.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options2.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
4809
4809
  var overflow = detectOverflow(state, {
4810
4810
  boundary,
4811
4811
  rootBoundary,
@@ -5043,9 +5043,9 @@
5043
5043
  generatorOptions = {};
5044
5044
  }
5045
5045
  var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions2 = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
5046
- return function createPopper2(reference2, popper2, options) {
5047
- if (options === void 0) {
5048
- options = defaultOptions2;
5046
+ return function createPopper2(reference2, popper2, options2) {
5047
+ if (options2 === void 0) {
5048
+ options2 = defaultOptions2;
5049
5049
  }
5050
5050
  var state = {
5051
5051
  placement: "bottom",
@@ -5063,10 +5063,10 @@
5063
5063
  var isDestroyed = false;
5064
5064
  var instance = {
5065
5065
  state,
5066
- setOptions: function setOptions(setOptionsAction) {
5067
- var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
5066
+ setOptions: function setOptions2(setOptionsAction) {
5067
+ var options3 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
5068
5068
  cleanupModifierEffects();
5069
- state.options = Object.assign({}, defaultOptions2, state.options, options2);
5069
+ state.options = Object.assign({}, defaultOptions2, state.options, options3);
5070
5070
  state.scrollParents = {
5071
5071
  reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
5072
5072
  popper: listScrollParents(popper2)
@@ -5133,20 +5133,20 @@
5133
5133
  if (!areValidElements(reference2, popper2)) {
5134
5134
  return instance;
5135
5135
  }
5136
- instance.setOptions(options).then(function(state2) {
5137
- if (!isDestroyed && options.onFirstUpdate) {
5138
- options.onFirstUpdate(state2);
5136
+ instance.setOptions(options2).then(function(state2) {
5137
+ if (!isDestroyed && options2.onFirstUpdate) {
5138
+ options2.onFirstUpdate(state2);
5139
5139
  }
5140
5140
  });
5141
5141
  function runModifierEffects() {
5142
5142
  state.orderedModifiers.forEach(function(_ref) {
5143
- var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect4 = _ref.effect;
5143
+ var name = _ref.name, _ref$options = _ref.options, options3 = _ref$options === void 0 ? {} : _ref$options, effect4 = _ref.effect;
5144
5144
  if (typeof effect4 === "function") {
5145
5145
  var cleanupFn = effect4({
5146
5146
  state,
5147
5147
  name,
5148
5148
  instance,
5149
- options: options2
5149
+ options: options3
5150
5150
  });
5151
5151
  var noopFn = function noopFn2() {
5152
5152
  };
@@ -5215,15 +5215,15 @@
5215
5215
  var Dropdown = (
5216
5216
  /** @class */
5217
5217
  function() {
5218
- function Dropdown2(targetElement, triggerElement, options, instanceOptions) {
5218
+ function Dropdown2(targetElement, triggerElement, options2, instanceOptions) {
5219
5219
  if (targetElement === void 0) {
5220
5220
  targetElement = null;
5221
5221
  }
5222
5222
  if (triggerElement === void 0) {
5223
5223
  triggerElement = null;
5224
5224
  }
5225
- if (options === void 0) {
5226
- options = Default5;
5225
+ if (options2 === void 0) {
5226
+ options2 = Default5;
5227
5227
  }
5228
5228
  if (instanceOptions === void 0) {
5229
5229
  instanceOptions = DefaultInstanceOptions5;
@@ -5231,7 +5231,7 @@
5231
5231
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetElement.id;
5232
5232
  this._targetEl = targetElement;
5233
5233
  this._triggerEl = triggerElement;
5234
- this._options = __assign5(__assign5({}, Default5), options);
5234
+ this._options = __assign5(__assign5({}, Default5), options2);
5235
5235
  this._popperInstance = null;
5236
5236
  this._visible = false;
5237
5237
  this._initialized = false;
@@ -5395,8 +5395,8 @@
5395
5395
  Dropdown2.prototype.show = function() {
5396
5396
  this._targetEl.classList.remove("hidden");
5397
5397
  this._targetEl.classList.add("block");
5398
- this._popperInstance.setOptions(function(options) {
5399
- return __assign5(__assign5({}, options), { modifiers: __spreadArray(__spreadArray([], options.modifiers, true), [
5398
+ this._popperInstance.setOptions(function(options2) {
5399
+ return __assign5(__assign5({}, options2), { modifiers: __spreadArray(__spreadArray([], options2.modifiers, true), [
5400
5400
  { name: "eventListeners", enabled: true }
5401
5401
  ], false) });
5402
5402
  });
@@ -5408,8 +5408,8 @@
5408
5408
  Dropdown2.prototype.hide = function() {
5409
5409
  this._targetEl.classList.remove("block");
5410
5410
  this._targetEl.classList.add("hidden");
5411
- this._popperInstance.setOptions(function(options) {
5412
- return __assign5(__assign5({}, options), { modifiers: __spreadArray(__spreadArray([], options.modifiers, true), [
5411
+ this._popperInstance.setOptions(function(options2) {
5412
+ return __assign5(__assign5({}, options2), { modifiers: __spreadArray(__spreadArray([], options2.modifiers, true), [
5413
5413
  { name: "eventListeners", enabled: false }
5414
5414
  ], false) });
5415
5415
  });
@@ -5491,12 +5491,12 @@
5491
5491
  var Modal = (
5492
5492
  /** @class */
5493
5493
  function() {
5494
- function Modal2(targetEl, options, instanceOptions) {
5494
+ function Modal2(targetEl, options2, instanceOptions) {
5495
5495
  if (targetEl === void 0) {
5496
5496
  targetEl = null;
5497
5497
  }
5498
- if (options === void 0) {
5499
- options = Default6;
5498
+ if (options2 === void 0) {
5499
+ options2 = Default6;
5500
5500
  }
5501
5501
  if (instanceOptions === void 0) {
5502
5502
  instanceOptions = DefaultInstanceOptions6;
@@ -5504,7 +5504,7 @@
5504
5504
  this._eventListenerInstances = [];
5505
5505
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetEl.id;
5506
5506
  this._targetEl = targetEl;
5507
- this._options = __assign6(__assign6({}, Default6), options);
5507
+ this._options = __assign6(__assign6({}, Default6), options2);
5508
5508
  this._isHidden = true;
5509
5509
  this._backdropEl = null;
5510
5510
  this._initialized = false;
@@ -5782,12 +5782,12 @@
5782
5782
  var Drawer = (
5783
5783
  /** @class */
5784
5784
  function() {
5785
- function Drawer2(targetEl, options, instanceOptions) {
5785
+ function Drawer2(targetEl, options2, instanceOptions) {
5786
5786
  if (targetEl === void 0) {
5787
5787
  targetEl = null;
5788
5788
  }
5789
- if (options === void 0) {
5790
- options = Default7;
5789
+ if (options2 === void 0) {
5790
+ options2 = Default7;
5791
5791
  }
5792
5792
  if (instanceOptions === void 0) {
5793
5793
  instanceOptions = DefaultInstanceOptions7;
@@ -5795,7 +5795,7 @@
5795
5795
  this._eventListenerInstances = [];
5796
5796
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetEl.id;
5797
5797
  this._targetEl = targetEl;
5798
- this._options = __assign7(__assign7({}, Default7), options);
5798
+ this._options = __assign7(__assign7({}, Default7), options2);
5799
5799
  this._visible = false;
5800
5800
  this._initialized = false;
5801
5801
  this.init();
@@ -6100,15 +6100,15 @@
6100
6100
  var Tabs = (
6101
6101
  /** @class */
6102
6102
  function() {
6103
- function Tabs2(tabsEl, items, options, instanceOptions) {
6103
+ function Tabs2(tabsEl, items, options2, instanceOptions) {
6104
6104
  if (tabsEl === void 0) {
6105
6105
  tabsEl = null;
6106
6106
  }
6107
6107
  if (items === void 0) {
6108
6108
  items = [];
6109
6109
  }
6110
- if (options === void 0) {
6111
- options = Default8;
6110
+ if (options2 === void 0) {
6111
+ options2 = Default8;
6112
6112
  }
6113
6113
  if (instanceOptions === void 0) {
6114
6114
  instanceOptions = DefaultInstanceOptions8;
@@ -6116,8 +6116,8 @@
6116
6116
  this._instanceId = instanceOptions.id ? instanceOptions.id : tabsEl.id;
6117
6117
  this._tabsEl = tabsEl;
6118
6118
  this._items = items;
6119
- this._activeTab = options ? this.getTab(options.defaultTabId) : null;
6120
- this._options = __assign8(__assign8({}, Default8), options);
6119
+ this._activeTab = options2 ? this.getTab(options2.defaultTabId) : null;
6120
+ this._options = __assign8(__assign8({}, Default8), options2);
6121
6121
  this._initialized = false;
6122
6122
  this.init();
6123
6123
  instances_default.addInstance("Tabs", this, this._tabsEl.id, true);
@@ -6265,15 +6265,15 @@
6265
6265
  var Tooltip = (
6266
6266
  /** @class */
6267
6267
  function() {
6268
- function Tooltip2(targetEl, triggerEl, options, instanceOptions) {
6268
+ function Tooltip2(targetEl, triggerEl, options2, instanceOptions) {
6269
6269
  if (targetEl === void 0) {
6270
6270
  targetEl = null;
6271
6271
  }
6272
6272
  if (triggerEl === void 0) {
6273
6273
  triggerEl = null;
6274
6274
  }
6275
- if (options === void 0) {
6276
- options = Default9;
6275
+ if (options2 === void 0) {
6276
+ options2 = Default9;
6277
6277
  }
6278
6278
  if (instanceOptions === void 0) {
6279
6279
  instanceOptions = DefaultInstanceOptions9;
@@ -6281,7 +6281,7 @@
6281
6281
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetEl.id;
6282
6282
  this._targetEl = targetEl;
6283
6283
  this._triggerEl = triggerEl;
6284
- this._options = __assign9(__assign9({}, Default9), options);
6284
+ this._options = __assign9(__assign9({}, Default9), options2);
6285
6285
  this._popperInstance = null;
6286
6286
  this._visible = false;
6287
6287
  this._initialized = false;
@@ -6414,8 +6414,8 @@
6414
6414
  Tooltip2.prototype.show = function() {
6415
6415
  this._targetEl.classList.remove("opacity-0", "invisible");
6416
6416
  this._targetEl.classList.add("opacity-100", "visible");
6417
- this._popperInstance.setOptions(function(options) {
6418
- return __assign9(__assign9({}, options), { modifiers: __spreadArray2(__spreadArray2([], options.modifiers, true), [
6417
+ this._popperInstance.setOptions(function(options2) {
6418
+ return __assign9(__assign9({}, options2), { modifiers: __spreadArray2(__spreadArray2([], options2.modifiers, true), [
6419
6419
  { name: "eventListeners", enabled: true }
6420
6420
  ], false) });
6421
6421
  });
@@ -6428,8 +6428,8 @@
6428
6428
  Tooltip2.prototype.hide = function() {
6429
6429
  this._targetEl.classList.remove("opacity-100", "visible");
6430
6430
  this._targetEl.classList.add("opacity-0", "invisible");
6431
- this._popperInstance.setOptions(function(options) {
6432
- return __assign9(__assign9({}, options), { modifiers: __spreadArray2(__spreadArray2([], options.modifiers, true), [
6431
+ this._popperInstance.setOptions(function(options2) {
6432
+ return __assign9(__assign9({}, options2), { modifiers: __spreadArray2(__spreadArray2([], options2.modifiers, true), [
6433
6433
  { name: "eventListeners", enabled: false }
6434
6434
  ], false) });
6435
6435
  });
@@ -6513,15 +6513,15 @@
6513
6513
  var Popover = (
6514
6514
  /** @class */
6515
6515
  function() {
6516
- function Popover2(targetEl, triggerEl, options, instanceOptions) {
6516
+ function Popover2(targetEl, triggerEl, options2, instanceOptions) {
6517
6517
  if (targetEl === void 0) {
6518
6518
  targetEl = null;
6519
6519
  }
6520
6520
  if (triggerEl === void 0) {
6521
6521
  triggerEl = null;
6522
6522
  }
6523
- if (options === void 0) {
6524
- options = Default10;
6523
+ if (options2 === void 0) {
6524
+ options2 = Default10;
6525
6525
  }
6526
6526
  if (instanceOptions === void 0) {
6527
6527
  instanceOptions = DefaultInstanceOptions10;
@@ -6529,7 +6529,7 @@
6529
6529
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetEl.id;
6530
6530
  this._targetEl = targetEl;
6531
6531
  this._triggerEl = triggerEl;
6532
- this._options = __assign10(__assign10({}, Default10), options);
6532
+ this._options = __assign10(__assign10({}, Default10), options2);
6533
6533
  this._popperInstance = null;
6534
6534
  this._visible = false;
6535
6535
  this._initialized = false;
@@ -6671,8 +6671,8 @@
6671
6671
  Popover2.prototype.show = function() {
6672
6672
  this._targetEl.classList.remove("opacity-0", "invisible");
6673
6673
  this._targetEl.classList.add("opacity-100", "visible");
6674
- this._popperInstance.setOptions(function(options) {
6675
- return __assign10(__assign10({}, options), { modifiers: __spreadArray3(__spreadArray3([], options.modifiers, true), [
6674
+ this._popperInstance.setOptions(function(options2) {
6675
+ return __assign10(__assign10({}, options2), { modifiers: __spreadArray3(__spreadArray3([], options2.modifiers, true), [
6676
6676
  { name: "eventListeners", enabled: true }
6677
6677
  ], false) });
6678
6678
  });
@@ -6685,8 +6685,8 @@
6685
6685
  Popover2.prototype.hide = function() {
6686
6686
  this._targetEl.classList.remove("opacity-100", "visible");
6687
6687
  this._targetEl.classList.add("opacity-0", "invisible");
6688
- this._popperInstance.setOptions(function(options) {
6689
- return __assign10(__assign10({}, options), { modifiers: __spreadArray3(__spreadArray3([], options.modifiers, true), [
6688
+ this._popperInstance.setOptions(function(options2) {
6689
+ return __assign10(__assign10({}, options2), { modifiers: __spreadArray3(__spreadArray3([], options2.modifiers, true), [
6690
6690
  { name: "eventListeners", enabled: false }
6691
6691
  ], false) });
6692
6692
  });
@@ -6759,7 +6759,7 @@
6759
6759
  var Dial = (
6760
6760
  /** @class */
6761
6761
  function() {
6762
- function Dial2(parentEl, triggerEl, targetEl, options, instanceOptions) {
6762
+ function Dial2(parentEl, triggerEl, targetEl, options2, instanceOptions) {
6763
6763
  if (parentEl === void 0) {
6764
6764
  parentEl = null;
6765
6765
  }
@@ -6769,8 +6769,8 @@
6769
6769
  if (targetEl === void 0) {
6770
6770
  targetEl = null;
6771
6771
  }
6772
- if (options === void 0) {
6773
- options = Default11;
6772
+ if (options2 === void 0) {
6773
+ options2 = Default11;
6774
6774
  }
6775
6775
  if (instanceOptions === void 0) {
6776
6776
  instanceOptions = DefaultInstanceOptions11;
@@ -6779,7 +6779,7 @@
6779
6779
  this._parentEl = parentEl;
6780
6780
  this._triggerEl = triggerEl;
6781
6781
  this._targetEl = targetEl;
6782
- this._options = __assign11(__assign11({}, Default11), options);
6782
+ this._options = __assign11(__assign11({}, Default11), options2);
6783
6783
  this._visible = false;
6784
6784
  this._initialized = false;
6785
6785
  this.init();
@@ -6945,7 +6945,7 @@
6945
6945
  var InputCounter = (
6946
6946
  /** @class */
6947
6947
  function() {
6948
- function InputCounter2(targetEl, incrementEl, decrementEl, options, instanceOptions) {
6948
+ function InputCounter2(targetEl, incrementEl, decrementEl, options2, instanceOptions) {
6949
6949
  if (targetEl === void 0) {
6950
6950
  targetEl = null;
6951
6951
  }
@@ -6955,8 +6955,8 @@
6955
6955
  if (decrementEl === void 0) {
6956
6956
  decrementEl = null;
6957
6957
  }
6958
- if (options === void 0) {
6959
- options = Default12;
6958
+ if (options2 === void 0) {
6959
+ options2 = Default12;
6960
6960
  }
6961
6961
  if (instanceOptions === void 0) {
6962
6962
  instanceOptions = DefaultInstanceOptions12;
@@ -6965,7 +6965,7 @@
6965
6965
  this._targetEl = targetEl;
6966
6966
  this._incrementEl = incrementEl;
6967
6967
  this._decrementEl = decrementEl;
6968
- this._options = __assign12(__assign12({}, Default12), options);
6968
+ this._options = __assign12(__assign12({}, Default12), options2);
6969
6969
  this._initialized = false;
6970
6970
  this.init();
6971
6971
  instances_default.addInstance("InputCounter", this, this._instanceId, instanceOptions.override);
@@ -7098,15 +7098,15 @@
7098
7098
  var CopyClipboard = (
7099
7099
  /** @class */
7100
7100
  function() {
7101
- function CopyClipboard2(triggerEl, targetEl, options, instanceOptions) {
7101
+ function CopyClipboard2(triggerEl, targetEl, options2, instanceOptions) {
7102
7102
  if (triggerEl === void 0) {
7103
7103
  triggerEl = null;
7104
7104
  }
7105
7105
  if (targetEl === void 0) {
7106
7106
  targetEl = null;
7107
7107
  }
7108
- if (options === void 0) {
7109
- options = Default13;
7108
+ if (options2 === void 0) {
7109
+ options2 = Default13;
7110
7110
  }
7111
7111
  if (instanceOptions === void 0) {
7112
7112
  instanceOptions = DefaultInstanceOptions13;
@@ -7114,7 +7114,7 @@
7114
7114
  this._instanceId = instanceOptions.id ? instanceOptions.id : targetEl.id;
7115
7115
  this._triggerEl = triggerEl;
7116
7116
  this._targetEl = targetEl;
7117
- this._options = __assign13(__assign13({}, Default13), options);
7117
+ this._options = __assign13(__assign13({}, Default13), options2);
7118
7118
  this._initialized = false;
7119
7119
  this.init();
7120
7120
  instances_default.addInstance("CopyClipboard", this, this._instanceId, instanceOptions.override);
@@ -7171,9 +7171,9 @@
7171
7171
  this._options.onCopy(this);
7172
7172
  return textToCopy;
7173
7173
  };
7174
- CopyClipboard2.prototype.decodeHTML = function(html) {
7174
+ CopyClipboard2.prototype.decodeHTML = function(html3) {
7175
7175
  var textarea = document.createElement("textarea");
7176
- textarea.innerHTML = html;
7176
+ textarea.innerHTML = html3;
7177
7177
  return textarea.textContent;
7178
7178
  };
7179
7179
  CopyClipboard2.prototype.updateOnCopyCallback = function(callback) {
@@ -7432,16 +7432,3266 @@
7432
7432
  }
7433
7433
  };
7434
7434
 
7435
+ // node_modules/dompurify/dist/purify.es.mjs
7436
+ var {
7437
+ entries,
7438
+ setPrototypeOf,
7439
+ isFrozen,
7440
+ getPrototypeOf,
7441
+ getOwnPropertyDescriptor
7442
+ } = Object;
7443
+ var {
7444
+ freeze,
7445
+ seal,
7446
+ create
7447
+ } = Object;
7448
+ var {
7449
+ apply,
7450
+ construct
7451
+ } = typeof Reflect !== "undefined" && Reflect;
7452
+ if (!freeze) {
7453
+ freeze = function freeze2(x) {
7454
+ return x;
7455
+ };
7456
+ }
7457
+ if (!seal) {
7458
+ seal = function seal2(x) {
7459
+ return x;
7460
+ };
7461
+ }
7462
+ if (!apply) {
7463
+ apply = function apply2(fun, thisValue, args) {
7464
+ return fun.apply(thisValue, args);
7465
+ };
7466
+ }
7467
+ if (!construct) {
7468
+ construct = function construct2(Func, args) {
7469
+ return new Func(...args);
7470
+ };
7471
+ }
7472
+ var arrayForEach = unapply(Array.prototype.forEach);
7473
+ var arrayPop = unapply(Array.prototype.pop);
7474
+ var arrayPush = unapply(Array.prototype.push);
7475
+ var stringToLowerCase = unapply(String.prototype.toLowerCase);
7476
+ var stringToString = unapply(String.prototype.toString);
7477
+ var stringMatch = unapply(String.prototype.match);
7478
+ var stringReplace = unapply(String.prototype.replace);
7479
+ var stringIndexOf = unapply(String.prototype.indexOf);
7480
+ var stringTrim = unapply(String.prototype.trim);
7481
+ var objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
7482
+ var regExpTest = unapply(RegExp.prototype.test);
7483
+ var typeErrorCreate = unconstruct(TypeError);
7484
+ function unapply(func) {
7485
+ return function(thisArg) {
7486
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
7487
+ args[_key - 1] = arguments[_key];
7488
+ }
7489
+ return apply(func, thisArg, args);
7490
+ };
7491
+ }
7492
+ function unconstruct(func) {
7493
+ return function() {
7494
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
7495
+ args[_key2] = arguments[_key2];
7496
+ }
7497
+ return construct(func, args);
7498
+ };
7499
+ }
7500
+ function addToSet(set, array) {
7501
+ let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;
7502
+ if (setPrototypeOf) {
7503
+ setPrototypeOf(set, null);
7504
+ }
7505
+ let l = array.length;
7506
+ while (l--) {
7507
+ let element = array[l];
7508
+ if (typeof element === "string") {
7509
+ const lcElement = transformCaseFunc(element);
7510
+ if (lcElement !== element) {
7511
+ if (!isFrozen(array)) {
7512
+ array[l] = lcElement;
7513
+ }
7514
+ element = lcElement;
7515
+ }
7516
+ }
7517
+ set[element] = true;
7518
+ }
7519
+ return set;
7520
+ }
7521
+ function cleanArray(array) {
7522
+ for (let index = 0; index < array.length; index++) {
7523
+ const isPropertyExist = objectHasOwnProperty(array, index);
7524
+ if (!isPropertyExist) {
7525
+ array[index] = null;
7526
+ }
7527
+ }
7528
+ return array;
7529
+ }
7530
+ function clone(object) {
7531
+ const newObject = create(null);
7532
+ for (const [property, value] of entries(object)) {
7533
+ const isPropertyExist = objectHasOwnProperty(object, property);
7534
+ if (isPropertyExist) {
7535
+ if (Array.isArray(value)) {
7536
+ newObject[property] = cleanArray(value);
7537
+ } else if (value && typeof value === "object" && value.constructor === Object) {
7538
+ newObject[property] = clone(value);
7539
+ } else {
7540
+ newObject[property] = value;
7541
+ }
7542
+ }
7543
+ }
7544
+ return newObject;
7545
+ }
7546
+ function lookupGetter(object, prop) {
7547
+ while (object !== null) {
7548
+ const desc = getOwnPropertyDescriptor(object, prop);
7549
+ if (desc) {
7550
+ if (desc.get) {
7551
+ return unapply(desc.get);
7552
+ }
7553
+ if (typeof desc.value === "function") {
7554
+ return unapply(desc.value);
7555
+ }
7556
+ }
7557
+ object = getPrototypeOf(object);
7558
+ }
7559
+ function fallbackValue() {
7560
+ return null;
7561
+ }
7562
+ return fallbackValue;
7563
+ }
7564
+ 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", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]);
7565
+ var svg$1 = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
7566
+ 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"]);
7567
+ 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"]);
7568
+ 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"]);
7569
+ var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
7570
+ var text = freeze(["#text"]);
7571
+ var html = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "popover", "popovertarget", "popovertargetaction", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "wrap", "xmlns", "slot"]);
7572
+ var svg = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "amplitude", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "exponent", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "intercept", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "slope", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "tablevalues", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]);
7573
+ var mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
7574
+ var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
7575
+ var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm);
7576
+ var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
7577
+ var TMPLIT_EXPR = seal(/\${[\w\W]*}/gm);
7578
+ var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/);
7579
+ var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
7580
+ var IS_ALLOWED_URI = seal(
7581
+ /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
7582
+ // eslint-disable-line no-useless-escape
7583
+ );
7584
+ var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
7585
+ var ATTR_WHITESPACE = seal(
7586
+ /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
7587
+ // eslint-disable-line no-control-regex
7588
+ );
7589
+ var DOCTYPE_NAME = seal(/^html$/i);
7590
+ var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
7591
+ var EXPRESSIONS = /* @__PURE__ */ Object.freeze({
7592
+ __proto__: null,
7593
+ ARIA_ATTR,
7594
+ ATTR_WHITESPACE,
7595
+ CUSTOM_ELEMENT,
7596
+ DATA_ATTR,
7597
+ DOCTYPE_NAME,
7598
+ ERB_EXPR,
7599
+ IS_ALLOWED_URI,
7600
+ IS_SCRIPT_OR_DATA,
7601
+ MUSTACHE_EXPR,
7602
+ TMPLIT_EXPR
7603
+ });
7604
+ var NODE_TYPE = {
7605
+ element: 1,
7606
+ attribute: 2,
7607
+ text: 3,
7608
+ cdataSection: 4,
7609
+ entityReference: 5,
7610
+ // Deprecated
7611
+ entityNode: 6,
7612
+ // Deprecated
7613
+ progressingInstruction: 7,
7614
+ comment: 8,
7615
+ document: 9,
7616
+ documentType: 10,
7617
+ documentFragment: 11,
7618
+ notation: 12
7619
+ // Deprecated
7620
+ };
7621
+ var getGlobal = function getGlobal2() {
7622
+ return typeof window === "undefined" ? null : window;
7623
+ };
7624
+ var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, purifyHostElement) {
7625
+ if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") {
7626
+ return null;
7627
+ }
7628
+ let suffix = null;
7629
+ const ATTR_NAME = "data-tt-policy-suffix";
7630
+ if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
7631
+ suffix = purifyHostElement.getAttribute(ATTR_NAME);
7632
+ }
7633
+ const policyName = "dompurify" + (suffix ? "#" + suffix : "");
7634
+ try {
7635
+ return trustedTypes.createPolicy(policyName, {
7636
+ createHTML(html3) {
7637
+ return html3;
7638
+ },
7639
+ createScriptURL(scriptUrl) {
7640
+ return scriptUrl;
7641
+ }
7642
+ });
7643
+ } catch (_) {
7644
+ console.warn("TrustedTypes policy " + policyName + " could not be created.");
7645
+ return null;
7646
+ }
7647
+ };
7648
+ var _createHooksMap = function _createHooksMap2() {
7649
+ return {
7650
+ afterSanitizeAttributes: [],
7651
+ afterSanitizeElements: [],
7652
+ afterSanitizeShadowDOM: [],
7653
+ beforeSanitizeAttributes: [],
7654
+ beforeSanitizeElements: [],
7655
+ beforeSanitizeShadowDOM: [],
7656
+ uponSanitizeAttribute: [],
7657
+ uponSanitizeElement: [],
7658
+ uponSanitizeShadowNode: []
7659
+ };
7660
+ };
7661
+ function createDOMPurify() {
7662
+ let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
7663
+ const DOMPurify = (root) => createDOMPurify(root);
7664
+ DOMPurify.version = "3.2.2";
7665
+ DOMPurify.removed = [];
7666
+ if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document) {
7667
+ DOMPurify.isSupported = false;
7668
+ return DOMPurify;
7669
+ }
7670
+ let {
7671
+ document: document2
7672
+ } = window2;
7673
+ const originalDocument = document2;
7674
+ const currentScript = originalDocument.currentScript;
7675
+ const {
7676
+ DocumentFragment,
7677
+ HTMLTemplateElement: HTMLTemplateElement2,
7678
+ Node: Node2,
7679
+ Element: Element2,
7680
+ NodeFilter,
7681
+ NamedNodeMap = window2.NamedNodeMap || window2.MozNamedAttrMap,
7682
+ HTMLFormElement: HTMLFormElement2,
7683
+ DOMParser: DOMParser2,
7684
+ trustedTypes
7685
+ } = window2;
7686
+ const ElementPrototype = Element2.prototype;
7687
+ const cloneNode = lookupGetter(ElementPrototype, "cloneNode");
7688
+ const remove = lookupGetter(ElementPrototype, "remove");
7689
+ const getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
7690
+ const getChildNodes = lookupGetter(ElementPrototype, "childNodes");
7691
+ const getParentNode2 = lookupGetter(ElementPrototype, "parentNode");
7692
+ if (typeof HTMLTemplateElement2 === "function") {
7693
+ const template = document2.createElement("template");
7694
+ if (template.content && template.content.ownerDocument) {
7695
+ document2 = template.content.ownerDocument;
7696
+ }
7697
+ }
7698
+ let trustedTypesPolicy;
7699
+ let emptyHTML = "";
7700
+ const {
7701
+ implementation,
7702
+ createNodeIterator,
7703
+ createDocumentFragment: createDocumentFragment2,
7704
+ getElementsByTagName
7705
+ } = document2;
7706
+ const {
7707
+ importNode
7708
+ } = originalDocument;
7709
+ let hooks = _createHooksMap();
7710
+ DOMPurify.isSupported = typeof entries === "function" && typeof getParentNode2 === "function" && implementation && implementation.createHTMLDocument !== void 0;
7711
+ const {
7712
+ MUSTACHE_EXPR: MUSTACHE_EXPR2,
7713
+ ERB_EXPR: ERB_EXPR2,
7714
+ TMPLIT_EXPR: TMPLIT_EXPR2,
7715
+ DATA_ATTR: DATA_ATTR2,
7716
+ ARIA_ATTR: ARIA_ATTR2,
7717
+ IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA2,
7718
+ ATTR_WHITESPACE: ATTR_WHITESPACE2,
7719
+ CUSTOM_ELEMENT: CUSTOM_ELEMENT2
7720
+ } = EXPRESSIONS;
7721
+ let {
7722
+ IS_ALLOWED_URI: IS_ALLOWED_URI$1
7723
+ } = EXPRESSIONS;
7724
+ let ALLOWED_TAGS = null;
7725
+ const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
7726
+ let ALLOWED_ATTR = null;
7727
+ const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
7728
+ let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
7729
+ tagNameCheck: {
7730
+ writable: true,
7731
+ configurable: false,
7732
+ enumerable: true,
7733
+ value: null
7734
+ },
7735
+ attributeNameCheck: {
7736
+ writable: true,
7737
+ configurable: false,
7738
+ enumerable: true,
7739
+ value: null
7740
+ },
7741
+ allowCustomizedBuiltInElements: {
7742
+ writable: true,
7743
+ configurable: false,
7744
+ enumerable: true,
7745
+ value: false
7746
+ }
7747
+ }));
7748
+ let FORBID_TAGS = null;
7749
+ let FORBID_ATTR = null;
7750
+ let ALLOW_ARIA_ATTR = true;
7751
+ let ALLOW_DATA_ATTR = true;
7752
+ let ALLOW_UNKNOWN_PROTOCOLS = false;
7753
+ let ALLOW_SELF_CLOSE_IN_ATTR = true;
7754
+ let SAFE_FOR_TEMPLATES = false;
7755
+ let SAFE_FOR_XML = true;
7756
+ let WHOLE_DOCUMENT = false;
7757
+ let SET_CONFIG = false;
7758
+ let FORCE_BODY = false;
7759
+ let RETURN_DOM = false;
7760
+ let RETURN_DOM_FRAGMENT = false;
7761
+ let RETURN_TRUSTED_TYPE = false;
7762
+ let SANITIZE_DOM = true;
7763
+ let SANITIZE_NAMED_PROPS = false;
7764
+ const SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
7765
+ let KEEP_CONTENT = true;
7766
+ let IN_PLACE = false;
7767
+ let USE_PROFILES = {};
7768
+ let FORBID_CONTENTS = null;
7769
+ const DEFAULT_FORBID_CONTENTS = addToSet({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]);
7770
+ let DATA_URI_TAGS = null;
7771
+ const DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
7772
+ let URI_SAFE_ATTRIBUTES = null;
7773
+ const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
7774
+ const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
7775
+ const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
7776
+ const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
7777
+ let NAMESPACE = HTML_NAMESPACE;
7778
+ let IS_EMPTY_INPUT = false;
7779
+ let ALLOWED_NAMESPACES = null;
7780
+ const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
7781
+ let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
7782
+ let HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]);
7783
+ const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]);
7784
+ let PARSER_MEDIA_TYPE = null;
7785
+ const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
7786
+ const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
7787
+ let transformCaseFunc = null;
7788
+ let CONFIG = null;
7789
+ const formElement = document2.createElement("form");
7790
+ const isRegexOrFunction = function isRegexOrFunction2(testValue) {
7791
+ return testValue instanceof RegExp || testValue instanceof Function;
7792
+ };
7793
+ const _parseConfig = function _parseConfig2() {
7794
+ let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
7795
+ if (CONFIG && CONFIG === cfg) {
7796
+ return;
7797
+ }
7798
+ if (!cfg || typeof cfg !== "object") {
7799
+ cfg = {};
7800
+ }
7801
+ cfg = clone(cfg);
7802
+ PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
7803
+ SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
7804
+ transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
7805
+ ALLOWED_TAGS = objectHasOwnProperty(cfg, "ALLOWED_TAGS") ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
7806
+ ALLOWED_ATTR = objectHasOwnProperty(cfg, "ALLOWED_ATTR") ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
7807
+ ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, "ALLOWED_NAMESPACES") ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
7808
+ URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
7809
+ DATA_URI_TAGS = objectHasOwnProperty(cfg, "ADD_DATA_URI_TAGS") ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
7810
+ FORBID_CONTENTS = objectHasOwnProperty(cfg, "FORBID_CONTENTS") ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
7811
+ FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};
7812
+ FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};
7813
+ USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES : false;
7814
+ ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
7815
+ ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
7816
+ ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
7817
+ ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;
7818
+ SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
7819
+ SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;
7820
+ WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
7821
+ RETURN_DOM = cfg.RETURN_DOM || false;
7822
+ RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
7823
+ RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
7824
+ FORCE_BODY = cfg.FORCE_BODY || false;
7825
+ SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
7826
+ SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;
7827
+ KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
7828
+ IN_PLACE = cfg.IN_PLACE || false;
7829
+ IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
7830
+ NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
7831
+ MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
7832
+ HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
7833
+ CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
7834
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
7835
+ CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
7836
+ }
7837
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
7838
+ CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
7839
+ }
7840
+ if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") {
7841
+ CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
7842
+ }
7843
+ if (SAFE_FOR_TEMPLATES) {
7844
+ ALLOW_DATA_ATTR = false;
7845
+ }
7846
+ if (RETURN_DOM_FRAGMENT) {
7847
+ RETURN_DOM = true;
7848
+ }
7849
+ if (USE_PROFILES) {
7850
+ ALLOWED_TAGS = addToSet({}, text);
7851
+ ALLOWED_ATTR = [];
7852
+ if (USE_PROFILES.html === true) {
7853
+ addToSet(ALLOWED_TAGS, html$1);
7854
+ addToSet(ALLOWED_ATTR, html);
7855
+ }
7856
+ if (USE_PROFILES.svg === true) {
7857
+ addToSet(ALLOWED_TAGS, svg$1);
7858
+ addToSet(ALLOWED_ATTR, svg);
7859
+ addToSet(ALLOWED_ATTR, xml);
7860
+ }
7861
+ if (USE_PROFILES.svgFilters === true) {
7862
+ addToSet(ALLOWED_TAGS, svgFilters);
7863
+ addToSet(ALLOWED_ATTR, svg);
7864
+ addToSet(ALLOWED_ATTR, xml);
7865
+ }
7866
+ if (USE_PROFILES.mathMl === true) {
7867
+ addToSet(ALLOWED_TAGS, mathMl$1);
7868
+ addToSet(ALLOWED_ATTR, mathMl);
7869
+ addToSet(ALLOWED_ATTR, xml);
7870
+ }
7871
+ }
7872
+ if (cfg.ADD_TAGS) {
7873
+ if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
7874
+ ALLOWED_TAGS = clone(ALLOWED_TAGS);
7875
+ }
7876
+ addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
7877
+ }
7878
+ if (cfg.ADD_ATTR) {
7879
+ if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
7880
+ ALLOWED_ATTR = clone(ALLOWED_ATTR);
7881
+ }
7882
+ addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
7883
+ }
7884
+ if (cfg.ADD_URI_SAFE_ATTR) {
7885
+ addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
7886
+ }
7887
+ if (cfg.FORBID_CONTENTS) {
7888
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
7889
+ FORBID_CONTENTS = clone(FORBID_CONTENTS);
7890
+ }
7891
+ addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
7892
+ }
7893
+ if (KEEP_CONTENT) {
7894
+ ALLOWED_TAGS["#text"] = true;
7895
+ }
7896
+ if (WHOLE_DOCUMENT) {
7897
+ addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
7898
+ }
7899
+ if (ALLOWED_TAGS.table) {
7900
+ addToSet(ALLOWED_TAGS, ["tbody"]);
7901
+ delete FORBID_TAGS.tbody;
7902
+ }
7903
+ if (cfg.TRUSTED_TYPES_POLICY) {
7904
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") {
7905
+ throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
7906
+ }
7907
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") {
7908
+ throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
7909
+ }
7910
+ trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
7911
+ emptyHTML = trustedTypesPolicy.createHTML("");
7912
+ } else {
7913
+ if (trustedTypesPolicy === void 0) {
7914
+ trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
7915
+ }
7916
+ if (trustedTypesPolicy !== null && typeof emptyHTML === "string") {
7917
+ emptyHTML = trustedTypesPolicy.createHTML("");
7918
+ }
7919
+ }
7920
+ if (freeze) {
7921
+ freeze(cfg);
7922
+ }
7923
+ CONFIG = cfg;
7924
+ };
7925
+ const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
7926
+ const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
7927
+ const _checkValidNamespace = function _checkValidNamespace2(element) {
7928
+ let parent = getParentNode2(element);
7929
+ if (!parent || !parent.tagName) {
7930
+ parent = {
7931
+ namespaceURI: NAMESPACE,
7932
+ tagName: "template"
7933
+ };
7934
+ }
7935
+ const tagName = stringToLowerCase(element.tagName);
7936
+ const parentTagName = stringToLowerCase(parent.tagName);
7937
+ if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
7938
+ return false;
7939
+ }
7940
+ if (element.namespaceURI === SVG_NAMESPACE) {
7941
+ if (parent.namespaceURI === HTML_NAMESPACE) {
7942
+ return tagName === "svg";
7943
+ }
7944
+ if (parent.namespaceURI === MATHML_NAMESPACE) {
7945
+ return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
7946
+ }
7947
+ return Boolean(ALL_SVG_TAGS[tagName]);
7948
+ }
7949
+ if (element.namespaceURI === MATHML_NAMESPACE) {
7950
+ if (parent.namespaceURI === HTML_NAMESPACE) {
7951
+ return tagName === "math";
7952
+ }
7953
+ if (parent.namespaceURI === SVG_NAMESPACE) {
7954
+ return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
7955
+ }
7956
+ return Boolean(ALL_MATHML_TAGS[tagName]);
7957
+ }
7958
+ if (element.namespaceURI === HTML_NAMESPACE) {
7959
+ if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
7960
+ return false;
7961
+ }
7962
+ if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
7963
+ return false;
7964
+ }
7965
+ return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
7966
+ }
7967
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
7968
+ return true;
7969
+ }
7970
+ return false;
7971
+ };
7972
+ const _forceRemove = function _forceRemove2(node) {
7973
+ arrayPush(DOMPurify.removed, {
7974
+ element: node
7975
+ });
7976
+ try {
7977
+ getParentNode2(node).removeChild(node);
7978
+ } catch (_) {
7979
+ remove(node);
7980
+ }
7981
+ };
7982
+ const _removeAttribute = function _removeAttribute2(name, element) {
7983
+ try {
7984
+ arrayPush(DOMPurify.removed, {
7985
+ attribute: element.getAttributeNode(name),
7986
+ from: element
7987
+ });
7988
+ } catch (_) {
7989
+ arrayPush(DOMPurify.removed, {
7990
+ attribute: null,
7991
+ from: element
7992
+ });
7993
+ }
7994
+ element.removeAttribute(name);
7995
+ if (name === "is") {
7996
+ if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
7997
+ try {
7998
+ _forceRemove(element);
7999
+ } catch (_) {
8000
+ }
8001
+ } else {
8002
+ try {
8003
+ element.setAttribute(name, "");
8004
+ } catch (_) {
8005
+ }
8006
+ }
8007
+ }
8008
+ };
8009
+ const _initDocument = function _initDocument2(dirty) {
8010
+ let doc = null;
8011
+ let leadingWhitespace = null;
8012
+ if (FORCE_BODY) {
8013
+ dirty = "<remove></remove>" + dirty;
8014
+ } else {
8015
+ const matches = stringMatch(dirty, /^[\r\n\t ]+/);
8016
+ leadingWhitespace = matches && matches[0];
8017
+ }
8018
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) {
8019
+ dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
8020
+ }
8021
+ const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
8022
+ if (NAMESPACE === HTML_NAMESPACE) {
8023
+ try {
8024
+ doc = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
8025
+ } catch (_) {
8026
+ }
8027
+ }
8028
+ if (!doc || !doc.documentElement) {
8029
+ doc = implementation.createDocument(NAMESPACE, "template", null);
8030
+ try {
8031
+ doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
8032
+ } catch (_) {
8033
+ }
8034
+ }
8035
+ const body = doc.body || doc.documentElement;
8036
+ if (dirty && leadingWhitespace) {
8037
+ body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
8038
+ }
8039
+ if (NAMESPACE === HTML_NAMESPACE) {
8040
+ return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
8041
+ }
8042
+ return WHOLE_DOCUMENT ? doc.documentElement : body;
8043
+ };
8044
+ const _createNodeIterator = function _createNodeIterator2(root) {
8045
+ return createNodeIterator.call(
8046
+ root.ownerDocument || root,
8047
+ root,
8048
+ // eslint-disable-next-line no-bitwise
8049
+ NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION,
8050
+ null
8051
+ );
8052
+ };
8053
+ const _isClobbered = function _isClobbered2(element) {
8054
+ return element instanceof HTMLFormElement2 && (typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function");
8055
+ };
8056
+ const _isNode = function _isNode2(value) {
8057
+ return typeof Node2 === "function" && value instanceof Node2;
8058
+ };
8059
+ function _executeHooks(hooks2, currentNode, data) {
8060
+ arrayForEach(hooks2, (hook) => {
8061
+ hook.call(DOMPurify, currentNode, data, CONFIG);
8062
+ });
8063
+ }
8064
+ const _sanitizeElements = function _sanitizeElements2(currentNode) {
8065
+ let content = null;
8066
+ _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
8067
+ if (_isClobbered(currentNode)) {
8068
+ _forceRemove(currentNode);
8069
+ return true;
8070
+ }
8071
+ const tagName = transformCaseFunc(currentNode.nodeName);
8072
+ _executeHooks(hooks.uponSanitizeElement, currentNode, {
8073
+ tagName,
8074
+ allowedTags: ALLOWED_TAGS
8075
+ });
8076
+ if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
8077
+ _forceRemove(currentNode);
8078
+ return true;
8079
+ }
8080
+ if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
8081
+ _forceRemove(currentNode);
8082
+ return true;
8083
+ }
8084
+ if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
8085
+ _forceRemove(currentNode);
8086
+ return true;
8087
+ }
8088
+ if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
8089
+ if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
8090
+ if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
8091
+ return false;
8092
+ }
8093
+ if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
8094
+ return false;
8095
+ }
8096
+ }
8097
+ if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
8098
+ const parentNode = getParentNode2(currentNode) || currentNode.parentNode;
8099
+ const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
8100
+ if (childNodes && parentNode) {
8101
+ const childCount = childNodes.length;
8102
+ for (let i = childCount - 1; i >= 0; --i) {
8103
+ const childClone = cloneNode(childNodes[i], true);
8104
+ childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
8105
+ parentNode.insertBefore(childClone, getNextSibling(currentNode));
8106
+ }
8107
+ }
8108
+ }
8109
+ _forceRemove(currentNode);
8110
+ return true;
8111
+ }
8112
+ if (currentNode instanceof Element2 && !_checkValidNamespace(currentNode)) {
8113
+ _forceRemove(currentNode);
8114
+ return true;
8115
+ }
8116
+ if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
8117
+ _forceRemove(currentNode);
8118
+ return true;
8119
+ }
8120
+ if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
8121
+ content = currentNode.textContent;
8122
+ arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
8123
+ content = stringReplace(content, expr, " ");
8124
+ });
8125
+ if (currentNode.textContent !== content) {
8126
+ arrayPush(DOMPurify.removed, {
8127
+ element: currentNode.cloneNode()
8128
+ });
8129
+ currentNode.textContent = content;
8130
+ }
8131
+ }
8132
+ _executeHooks(hooks.afterSanitizeElements, currentNode, null);
8133
+ return false;
8134
+ };
8135
+ const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
8136
+ if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
8137
+ return false;
8138
+ }
8139
+ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR2, lcName))
8140
+ ;
8141
+ else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR2, lcName))
8142
+ ;
8143
+ else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
8144
+ if (
8145
+ // First condition does a very basic check if a) it's basically a valid custom element tagname AND
8146
+ // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
8147
+ // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
8148
+ _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND
8149
+ // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
8150
+ lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))
8151
+ )
8152
+ ;
8153
+ else {
8154
+ return false;
8155
+ }
8156
+ } else if (URI_SAFE_ATTRIBUTES[lcName])
8157
+ ;
8158
+ else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE2, "")))
8159
+ ;
8160
+ else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag])
8161
+ ;
8162
+ else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA2, stringReplace(value, ATTR_WHITESPACE2, "")))
8163
+ ;
8164
+ else if (value) {
8165
+ return false;
8166
+ } else
8167
+ ;
8168
+ return true;
8169
+ };
8170
+ const _isBasicCustomElement = function _isBasicCustomElement2(tagName) {
8171
+ return tagName !== "annotation-xml" && stringMatch(tagName, CUSTOM_ELEMENT2);
8172
+ };
8173
+ const _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
8174
+ _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
8175
+ const {
8176
+ attributes
8177
+ } = currentNode;
8178
+ if (!attributes) {
8179
+ return;
8180
+ }
8181
+ const hookEvent = {
8182
+ attrName: "",
8183
+ attrValue: "",
8184
+ keepAttr: true,
8185
+ allowedAttributes: ALLOWED_ATTR,
8186
+ forceKeepAttr: void 0
8187
+ };
8188
+ let l = attributes.length;
8189
+ while (l--) {
8190
+ const attr = attributes[l];
8191
+ const {
8192
+ name,
8193
+ namespaceURI,
8194
+ value: attrValue
8195
+ } = attr;
8196
+ const lcName = transformCaseFunc(name);
8197
+ let value = name === "value" ? attrValue : stringTrim(attrValue);
8198
+ hookEvent.attrName = lcName;
8199
+ hookEvent.attrValue = value;
8200
+ hookEvent.keepAttr = true;
8201
+ hookEvent.forceKeepAttr = void 0;
8202
+ _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
8203
+ value = hookEvent.attrValue;
8204
+ if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) {
8205
+ _removeAttribute(name, currentNode);
8206
+ value = SANITIZE_NAMED_PROPS_PREFIX + value;
8207
+ }
8208
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
8209
+ _removeAttribute(name, currentNode);
8210
+ continue;
8211
+ }
8212
+ if (hookEvent.forceKeepAttr) {
8213
+ continue;
8214
+ }
8215
+ _removeAttribute(name, currentNode);
8216
+ if (!hookEvent.keepAttr) {
8217
+ continue;
8218
+ }
8219
+ if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
8220
+ _removeAttribute(name, currentNode);
8221
+ continue;
8222
+ }
8223
+ if (SAFE_FOR_TEMPLATES) {
8224
+ arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
8225
+ value = stringReplace(value, expr, " ");
8226
+ });
8227
+ }
8228
+ const lcTag = transformCaseFunc(currentNode.nodeName);
8229
+ if (!_isValidAttribute(lcTag, lcName, value)) {
8230
+ continue;
8231
+ }
8232
+ if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") {
8233
+ if (namespaceURI)
8234
+ ;
8235
+ else {
8236
+ switch (trustedTypes.getAttributeType(lcTag, lcName)) {
8237
+ case "TrustedHTML": {
8238
+ value = trustedTypesPolicy.createHTML(value);
8239
+ break;
8240
+ }
8241
+ case "TrustedScriptURL": {
8242
+ value = trustedTypesPolicy.createScriptURL(value);
8243
+ break;
8244
+ }
8245
+ }
8246
+ }
8247
+ }
8248
+ try {
8249
+ if (namespaceURI) {
8250
+ currentNode.setAttributeNS(namespaceURI, name, value);
8251
+ } else {
8252
+ currentNode.setAttribute(name, value);
8253
+ }
8254
+ if (_isClobbered(currentNode)) {
8255
+ _forceRemove(currentNode);
8256
+ } else {
8257
+ arrayPop(DOMPurify.removed);
8258
+ }
8259
+ } catch (_) {
8260
+ }
8261
+ }
8262
+ _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
8263
+ };
8264
+ const _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {
8265
+ let shadowNode = null;
8266
+ const shadowIterator = _createNodeIterator(fragment);
8267
+ _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
8268
+ while (shadowNode = shadowIterator.nextNode()) {
8269
+ _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
8270
+ if (_sanitizeElements(shadowNode)) {
8271
+ continue;
8272
+ }
8273
+ if (shadowNode.content instanceof DocumentFragment) {
8274
+ _sanitizeShadowDOM2(shadowNode.content);
8275
+ }
8276
+ _sanitizeAttributes(shadowNode);
8277
+ }
8278
+ _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
8279
+ };
8280
+ DOMPurify.sanitize = function(dirty) {
8281
+ let cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
8282
+ let body = null;
8283
+ let importedNode = null;
8284
+ let currentNode = null;
8285
+ let returnNode = null;
8286
+ IS_EMPTY_INPUT = !dirty;
8287
+ if (IS_EMPTY_INPUT) {
8288
+ dirty = "<!-->";
8289
+ }
8290
+ if (typeof dirty !== "string" && !_isNode(dirty)) {
8291
+ if (typeof dirty.toString === "function") {
8292
+ dirty = dirty.toString();
8293
+ if (typeof dirty !== "string") {
8294
+ throw typeErrorCreate("dirty is not a string, aborting");
8295
+ }
8296
+ } else {
8297
+ throw typeErrorCreate("toString is not a function");
8298
+ }
8299
+ }
8300
+ if (!DOMPurify.isSupported) {
8301
+ return dirty;
8302
+ }
8303
+ if (!SET_CONFIG) {
8304
+ _parseConfig(cfg);
8305
+ }
8306
+ DOMPurify.removed = [];
8307
+ if (typeof dirty === "string") {
8308
+ IN_PLACE = false;
8309
+ }
8310
+ if (IN_PLACE) {
8311
+ if (dirty.nodeName) {
8312
+ const tagName = transformCaseFunc(dirty.nodeName);
8313
+ if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
8314
+ throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
8315
+ }
8316
+ }
8317
+ } else if (dirty instanceof Node2) {
8318
+ body = _initDocument("<!---->");
8319
+ importedNode = body.ownerDocument.importNode(dirty, true);
8320
+ if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") {
8321
+ body = importedNode;
8322
+ } else if (importedNode.nodeName === "HTML") {
8323
+ body = importedNode;
8324
+ } else {
8325
+ body.appendChild(importedNode);
8326
+ }
8327
+ } else {
8328
+ if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
8329
+ dirty.indexOf("<") === -1) {
8330
+ return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
8331
+ }
8332
+ body = _initDocument(dirty);
8333
+ if (!body) {
8334
+ return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
8335
+ }
8336
+ }
8337
+ if (body && FORCE_BODY) {
8338
+ _forceRemove(body.firstChild);
8339
+ }
8340
+ const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
8341
+ while (currentNode = nodeIterator.nextNode()) {
8342
+ if (_sanitizeElements(currentNode)) {
8343
+ continue;
8344
+ }
8345
+ if (currentNode.content instanceof DocumentFragment) {
8346
+ _sanitizeShadowDOM(currentNode.content);
8347
+ }
8348
+ _sanitizeAttributes(currentNode);
8349
+ }
8350
+ if (IN_PLACE) {
8351
+ return dirty;
8352
+ }
8353
+ if (RETURN_DOM) {
8354
+ if (RETURN_DOM_FRAGMENT) {
8355
+ returnNode = createDocumentFragment2.call(body.ownerDocument);
8356
+ while (body.firstChild) {
8357
+ returnNode.appendChild(body.firstChild);
8358
+ }
8359
+ } else {
8360
+ returnNode = body;
8361
+ }
8362
+ if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
8363
+ returnNode = importNode.call(originalDocument, returnNode, true);
8364
+ }
8365
+ return returnNode;
8366
+ }
8367
+ let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
8368
+ if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
8369
+ serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
8370
+ }
8371
+ if (SAFE_FOR_TEMPLATES) {
8372
+ arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
8373
+ serializedHTML = stringReplace(serializedHTML, expr, " ");
8374
+ });
8375
+ }
8376
+ return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
8377
+ };
8378
+ DOMPurify.setConfig = function() {
8379
+ let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
8380
+ _parseConfig(cfg);
8381
+ SET_CONFIG = true;
8382
+ };
8383
+ DOMPurify.clearConfig = function() {
8384
+ CONFIG = null;
8385
+ SET_CONFIG = false;
8386
+ };
8387
+ DOMPurify.isValidAttribute = function(tag2, attr, value) {
8388
+ if (!CONFIG) {
8389
+ _parseConfig({});
8390
+ }
8391
+ const lcTag = transformCaseFunc(tag2);
8392
+ const lcName = transformCaseFunc(attr);
8393
+ return _isValidAttribute(lcTag, lcName, value);
8394
+ };
8395
+ DOMPurify.addHook = function(entryPoint, hookFunction) {
8396
+ if (typeof hookFunction !== "function") {
8397
+ return;
8398
+ }
8399
+ arrayPush(hooks[entryPoint], hookFunction);
8400
+ };
8401
+ DOMPurify.removeHook = function(entryPoint) {
8402
+ return arrayPop(hooks[entryPoint]);
8403
+ };
8404
+ DOMPurify.removeHooks = function(entryPoint) {
8405
+ hooks[entryPoint] = [];
8406
+ };
8407
+ DOMPurify.removeAllHooks = function() {
8408
+ hooks = _createHooksMap();
8409
+ };
8410
+ return DOMPurify;
8411
+ }
8412
+ var purify = createDOMPurify();
8413
+
8414
+ // node_modules/marked/lib/marked.esm.js
8415
+ function _getDefaults() {
8416
+ return {
8417
+ async: false,
8418
+ breaks: false,
8419
+ extensions: null,
8420
+ gfm: true,
8421
+ hooks: null,
8422
+ pedantic: false,
8423
+ renderer: null,
8424
+ silent: false,
8425
+ tokenizer: null,
8426
+ walkTokens: null
8427
+ };
8428
+ }
8429
+ var _defaults = _getDefaults();
8430
+ function changeDefaults(newDefaults) {
8431
+ _defaults = newDefaults;
8432
+ }
8433
+ var escapeTest = /[&<>"']/;
8434
+ var escapeReplace = new RegExp(escapeTest.source, "g");
8435
+ var escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/;
8436
+ var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, "g");
8437
+ var escapeReplacements = {
8438
+ "&": "&amp;",
8439
+ "<": "&lt;",
8440
+ ">": "&gt;",
8441
+ '"': "&quot;",
8442
+ "'": "&#39;"
8443
+ };
8444
+ var getEscapeReplacement = (ch) => escapeReplacements[ch];
8445
+ function escape$1(html3, encode) {
8446
+ if (encode) {
8447
+ if (escapeTest.test(html3)) {
8448
+ return html3.replace(escapeReplace, getEscapeReplacement);
8449
+ }
8450
+ } else {
8451
+ if (escapeTestNoEncode.test(html3)) {
8452
+ return html3.replace(escapeReplaceNoEncode, getEscapeReplacement);
8453
+ }
8454
+ }
8455
+ return html3;
8456
+ }
8457
+ var unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
8458
+ function unescape(html3) {
8459
+ return html3.replace(unescapeTest, (_, n) => {
8460
+ n = n.toLowerCase();
8461
+ if (n === "colon")
8462
+ return ":";
8463
+ if (n.charAt(0) === "#") {
8464
+ return n.charAt(1) === "x" ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));
8465
+ }
8466
+ return "";
8467
+ });
8468
+ }
8469
+ var caret = /(^|[^\[])\^/g;
8470
+ function edit(regex, opt) {
8471
+ let source = typeof regex === "string" ? regex : regex.source;
8472
+ opt = opt || "";
8473
+ const obj = {
8474
+ replace: (name, val) => {
8475
+ let valSource = typeof val === "string" ? val : val.source;
8476
+ valSource = valSource.replace(caret, "$1");
8477
+ source = source.replace(name, valSource);
8478
+ return obj;
8479
+ },
8480
+ getRegex: () => {
8481
+ return new RegExp(source, opt);
8482
+ }
8483
+ };
8484
+ return obj;
8485
+ }
8486
+ function cleanUrl(href) {
8487
+ try {
8488
+ href = encodeURI(href).replace(/%25/g, "%");
8489
+ } catch {
8490
+ return null;
8491
+ }
8492
+ return href;
8493
+ }
8494
+ var noopTest = { exec: () => null };
8495
+ function splitCells(tableRow, count) {
8496
+ const row = tableRow.replace(/\|/g, (match, offset2, str) => {
8497
+ let escaped = false;
8498
+ let curr = offset2;
8499
+ while (--curr >= 0 && str[curr] === "\\")
8500
+ escaped = !escaped;
8501
+ if (escaped) {
8502
+ return "|";
8503
+ } else {
8504
+ return " |";
8505
+ }
8506
+ }), cells = row.split(/ \|/);
8507
+ let i = 0;
8508
+ if (!cells[0].trim()) {
8509
+ cells.shift();
8510
+ }
8511
+ if (cells.length > 0 && !cells[cells.length - 1].trim()) {
8512
+ cells.pop();
8513
+ }
8514
+ if (count) {
8515
+ if (cells.length > count) {
8516
+ cells.splice(count);
8517
+ } else {
8518
+ while (cells.length < count)
8519
+ cells.push("");
8520
+ }
8521
+ }
8522
+ for (; i < cells.length; i++) {
8523
+ cells[i] = cells[i].trim().replace(/\\\|/g, "|");
8524
+ }
8525
+ return cells;
8526
+ }
8527
+ function rtrim(str, c, invert) {
8528
+ const l = str.length;
8529
+ if (l === 0) {
8530
+ return "";
8531
+ }
8532
+ let suffLen = 0;
8533
+ while (suffLen < l) {
8534
+ const currChar = str.charAt(l - suffLen - 1);
8535
+ if (currChar === c && !invert) {
8536
+ suffLen++;
8537
+ } else if (currChar !== c && invert) {
8538
+ suffLen++;
8539
+ } else {
8540
+ break;
8541
+ }
8542
+ }
8543
+ return str.slice(0, l - suffLen);
8544
+ }
8545
+ function findClosingBracket(str, b) {
8546
+ if (str.indexOf(b[1]) === -1) {
8547
+ return -1;
8548
+ }
8549
+ let level = 0;
8550
+ for (let i = 0; i < str.length; i++) {
8551
+ if (str[i] === "\\") {
8552
+ i++;
8553
+ } else if (str[i] === b[0]) {
8554
+ level++;
8555
+ } else if (str[i] === b[1]) {
8556
+ level--;
8557
+ if (level < 0) {
8558
+ return i;
8559
+ }
8560
+ }
8561
+ }
8562
+ return -1;
8563
+ }
8564
+ function outputLink(cap, link2, raw, lexer2) {
8565
+ const href = link2.href;
8566
+ const title = link2.title ? escape$1(link2.title) : null;
8567
+ const text2 = cap[1].replace(/\\([\[\]])/g, "$1");
8568
+ if (cap[0].charAt(0) !== "!") {
8569
+ lexer2.state.inLink = true;
8570
+ const token = {
8571
+ type: "link",
8572
+ raw,
8573
+ href,
8574
+ title,
8575
+ text: text2,
8576
+ tokens: lexer2.inlineTokens(text2)
8577
+ };
8578
+ lexer2.state.inLink = false;
8579
+ return token;
8580
+ }
8581
+ return {
8582
+ type: "image",
8583
+ raw,
8584
+ href,
8585
+ title,
8586
+ text: escape$1(text2)
8587
+ };
8588
+ }
8589
+ function indentCodeCompensation(raw, text2) {
8590
+ const matchIndentToCode = raw.match(/^(\s+)(?:```)/);
8591
+ if (matchIndentToCode === null) {
8592
+ return text2;
8593
+ }
8594
+ const indentToCode = matchIndentToCode[1];
8595
+ return text2.split("\n").map((node) => {
8596
+ const matchIndentInNode = node.match(/^\s+/);
8597
+ if (matchIndentInNode === null) {
8598
+ return node;
8599
+ }
8600
+ const [indentInNode] = matchIndentInNode;
8601
+ if (indentInNode.length >= indentToCode.length) {
8602
+ return node.slice(indentToCode.length);
8603
+ }
8604
+ return node;
8605
+ }).join("\n");
8606
+ }
8607
+ var _Tokenizer = class {
8608
+ options;
8609
+ rules;
8610
+ // set by the lexer
8611
+ lexer;
8612
+ // set by the lexer
8613
+ constructor(options2) {
8614
+ this.options = options2 || _defaults;
8615
+ }
8616
+ space(src) {
8617
+ const cap = this.rules.block.newline.exec(src);
8618
+ if (cap && cap[0].length > 0) {
8619
+ return {
8620
+ type: "space",
8621
+ raw: cap[0]
8622
+ };
8623
+ }
8624
+ }
8625
+ code(src) {
8626
+ const cap = this.rules.block.code.exec(src);
8627
+ if (cap) {
8628
+ const text2 = cap[0].replace(/^ {1,4}/gm, "");
8629
+ return {
8630
+ type: "code",
8631
+ raw: cap[0],
8632
+ codeBlockStyle: "indented",
8633
+ text: !this.options.pedantic ? rtrim(text2, "\n") : text2
8634
+ };
8635
+ }
8636
+ }
8637
+ fences(src) {
8638
+ const cap = this.rules.block.fences.exec(src);
8639
+ if (cap) {
8640
+ const raw = cap[0];
8641
+ const text2 = indentCodeCompensation(raw, cap[3] || "");
8642
+ return {
8643
+ type: "code",
8644
+ raw,
8645
+ lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : cap[2],
8646
+ text: text2
8647
+ };
8648
+ }
8649
+ }
8650
+ heading(src) {
8651
+ const cap = this.rules.block.heading.exec(src);
8652
+ if (cap) {
8653
+ let text2 = cap[2].trim();
8654
+ if (/#$/.test(text2)) {
8655
+ const trimmed = rtrim(text2, "#");
8656
+ if (this.options.pedantic) {
8657
+ text2 = trimmed.trim();
8658
+ } else if (!trimmed || / $/.test(trimmed)) {
8659
+ text2 = trimmed.trim();
8660
+ }
8661
+ }
8662
+ return {
8663
+ type: "heading",
8664
+ raw: cap[0],
8665
+ depth: cap[1].length,
8666
+ text: text2,
8667
+ tokens: this.lexer.inline(text2)
8668
+ };
8669
+ }
8670
+ }
8671
+ hr(src) {
8672
+ const cap = this.rules.block.hr.exec(src);
8673
+ if (cap) {
8674
+ return {
8675
+ type: "hr",
8676
+ raw: rtrim(cap[0], "\n")
8677
+ };
8678
+ }
8679
+ }
8680
+ blockquote(src) {
8681
+ const cap = this.rules.block.blockquote.exec(src);
8682
+ if (cap) {
8683
+ let lines = rtrim(cap[0], "\n").split("\n");
8684
+ let raw = "";
8685
+ let text2 = "";
8686
+ const tokens = [];
8687
+ while (lines.length > 0) {
8688
+ let inBlockquote = false;
8689
+ const currentLines = [];
8690
+ let i;
8691
+ for (i = 0; i < lines.length; i++) {
8692
+ if (/^ {0,3}>/.test(lines[i])) {
8693
+ currentLines.push(lines[i]);
8694
+ inBlockquote = true;
8695
+ } else if (!inBlockquote) {
8696
+ currentLines.push(lines[i]);
8697
+ } else {
8698
+ break;
8699
+ }
8700
+ }
8701
+ lines = lines.slice(i);
8702
+ const currentRaw = currentLines.join("\n");
8703
+ const currentText = currentRaw.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, "\n $1").replace(/^ {0,3}>[ \t]?/gm, "");
8704
+ raw = raw ? `${raw}
8705
+ ${currentRaw}` : currentRaw;
8706
+ text2 = text2 ? `${text2}
8707
+ ${currentText}` : currentText;
8708
+ const top2 = this.lexer.state.top;
8709
+ this.lexer.state.top = true;
8710
+ this.lexer.blockTokens(currentText, tokens, true);
8711
+ this.lexer.state.top = top2;
8712
+ if (lines.length === 0) {
8713
+ break;
8714
+ }
8715
+ const lastToken = tokens[tokens.length - 1];
8716
+ if (lastToken?.type === "code") {
8717
+ break;
8718
+ } else if (lastToken?.type === "blockquote") {
8719
+ const oldToken = lastToken;
8720
+ const newText = oldToken.raw + "\n" + lines.join("\n");
8721
+ const newToken = this.blockquote(newText);
8722
+ tokens[tokens.length - 1] = newToken;
8723
+ raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;
8724
+ text2 = text2.substring(0, text2.length - oldToken.text.length) + newToken.text;
8725
+ break;
8726
+ } else if (lastToken?.type === "list") {
8727
+ const oldToken = lastToken;
8728
+ const newText = oldToken.raw + "\n" + lines.join("\n");
8729
+ const newToken = this.list(newText);
8730
+ tokens[tokens.length - 1] = newToken;
8731
+ raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;
8732
+ text2 = text2.substring(0, text2.length - oldToken.raw.length) + newToken.raw;
8733
+ lines = newText.substring(tokens[tokens.length - 1].raw.length).split("\n");
8734
+ continue;
8735
+ }
8736
+ }
8737
+ return {
8738
+ type: "blockquote",
8739
+ raw,
8740
+ tokens,
8741
+ text: text2
8742
+ };
8743
+ }
8744
+ }
8745
+ list(src) {
8746
+ let cap = this.rules.block.list.exec(src);
8747
+ if (cap) {
8748
+ let bull = cap[1].trim();
8749
+ const isordered = bull.length > 1;
8750
+ const list2 = {
8751
+ type: "list",
8752
+ raw: "",
8753
+ ordered: isordered,
8754
+ start: isordered ? +bull.slice(0, -1) : "",
8755
+ loose: false,
8756
+ items: []
8757
+ };
8758
+ bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
8759
+ if (this.options.pedantic) {
8760
+ bull = isordered ? bull : "[*+-]";
8761
+ }
8762
+ const itemRegex = new RegExp(`^( {0,3}${bull})((?:[ ][^\\n]*)?(?:\\n|$))`);
8763
+ let endsWithBlankLine = false;
8764
+ while (src) {
8765
+ let endEarly = false;
8766
+ let raw = "";
8767
+ let itemContents = "";
8768
+ if (!(cap = itemRegex.exec(src))) {
8769
+ break;
8770
+ }
8771
+ if (this.rules.block.hr.test(src)) {
8772
+ break;
8773
+ }
8774
+ raw = cap[0];
8775
+ src = src.substring(raw.length);
8776
+ let line = cap[2].split("\n", 1)[0].replace(/^\t+/, (t) => " ".repeat(3 * t.length));
8777
+ let nextLine = src.split("\n", 1)[0];
8778
+ let blankLine = !line.trim();
8779
+ let indent = 0;
8780
+ if (this.options.pedantic) {
8781
+ indent = 2;
8782
+ itemContents = line.trimStart();
8783
+ } else if (blankLine) {
8784
+ indent = cap[1].length + 1;
8785
+ } else {
8786
+ indent = cap[2].search(/[^ ]/);
8787
+ indent = indent > 4 ? 1 : indent;
8788
+ itemContents = line.slice(indent);
8789
+ indent += cap[1].length;
8790
+ }
8791
+ if (blankLine && /^ *$/.test(nextLine)) {
8792
+ raw += nextLine + "\n";
8793
+ src = src.substring(nextLine.length + 1);
8794
+ endEarly = true;
8795
+ }
8796
+ if (!endEarly) {
8797
+ const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`);
8798
+ const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`);
8799
+ const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`);
8800
+ const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);
8801
+ while (src) {
8802
+ const rawLine = src.split("\n", 1)[0];
8803
+ nextLine = rawLine;
8804
+ if (this.options.pedantic) {
8805
+ nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, " ");
8806
+ }
8807
+ if (fencesBeginRegex.test(nextLine)) {
8808
+ break;
8809
+ }
8810
+ if (headingBeginRegex.test(nextLine)) {
8811
+ break;
8812
+ }
8813
+ if (nextBulletRegex.test(nextLine)) {
8814
+ break;
8815
+ }
8816
+ if (hrRegex.test(src)) {
8817
+ break;
8818
+ }
8819
+ if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {
8820
+ itemContents += "\n" + nextLine.slice(indent);
8821
+ } else {
8822
+ if (blankLine) {
8823
+ break;
8824
+ }
8825
+ if (line.search(/[^ ]/) >= 4) {
8826
+ break;
8827
+ }
8828
+ if (fencesBeginRegex.test(line)) {
8829
+ break;
8830
+ }
8831
+ if (headingBeginRegex.test(line)) {
8832
+ break;
8833
+ }
8834
+ if (hrRegex.test(line)) {
8835
+ break;
8836
+ }
8837
+ itemContents += "\n" + nextLine;
8838
+ }
8839
+ if (!blankLine && !nextLine.trim()) {
8840
+ blankLine = true;
8841
+ }
8842
+ raw += rawLine + "\n";
8843
+ src = src.substring(rawLine.length + 1);
8844
+ line = nextLine.slice(indent);
8845
+ }
8846
+ }
8847
+ if (!list2.loose) {
8848
+ if (endsWithBlankLine) {
8849
+ list2.loose = true;
8850
+ } else if (/\n *\n *$/.test(raw)) {
8851
+ endsWithBlankLine = true;
8852
+ }
8853
+ }
8854
+ let istask = null;
8855
+ let ischecked;
8856
+ if (this.options.gfm) {
8857
+ istask = /^\[[ xX]\] /.exec(itemContents);
8858
+ if (istask) {
8859
+ ischecked = istask[0] !== "[ ] ";
8860
+ itemContents = itemContents.replace(/^\[[ xX]\] +/, "");
8861
+ }
8862
+ }
8863
+ list2.items.push({
8864
+ type: "list_item",
8865
+ raw,
8866
+ task: !!istask,
8867
+ checked: ischecked,
8868
+ loose: false,
8869
+ text: itemContents,
8870
+ tokens: []
8871
+ });
8872
+ list2.raw += raw;
8873
+ }
8874
+ list2.items[list2.items.length - 1].raw = list2.items[list2.items.length - 1].raw.trimEnd();
8875
+ list2.items[list2.items.length - 1].text = list2.items[list2.items.length - 1].text.trimEnd();
8876
+ list2.raw = list2.raw.trimEnd();
8877
+ for (let i = 0; i < list2.items.length; i++) {
8878
+ this.lexer.state.top = false;
8879
+ list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []);
8880
+ if (!list2.loose) {
8881
+ const spacers = list2.items[i].tokens.filter((t) => t.type === "space");
8882
+ const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => /\n.*\n/.test(t.raw));
8883
+ list2.loose = hasMultipleLineBreaks;
8884
+ }
8885
+ }
8886
+ if (list2.loose) {
8887
+ for (let i = 0; i < list2.items.length; i++) {
8888
+ list2.items[i].loose = true;
8889
+ }
8890
+ }
8891
+ return list2;
8892
+ }
8893
+ }
8894
+ html(src) {
8895
+ const cap = this.rules.block.html.exec(src);
8896
+ if (cap) {
8897
+ const token = {
8898
+ type: "html",
8899
+ block: true,
8900
+ raw: cap[0],
8901
+ pre: cap[1] === "pre" || cap[1] === "script" || cap[1] === "style",
8902
+ text: cap[0]
8903
+ };
8904
+ return token;
8905
+ }
8906
+ }
8907
+ def(src) {
8908
+ const cap = this.rules.block.def.exec(src);
8909
+ if (cap) {
8910
+ const tag2 = cap[1].toLowerCase().replace(/\s+/g, " ");
8911
+ const href = cap[2] ? cap[2].replace(/^<(.*)>$/, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "";
8912
+ const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : cap[3];
8913
+ return {
8914
+ type: "def",
8915
+ tag: tag2,
8916
+ raw: cap[0],
8917
+ href,
8918
+ title
8919
+ };
8920
+ }
8921
+ }
8922
+ table(src) {
8923
+ const cap = this.rules.block.table.exec(src);
8924
+ if (!cap) {
8925
+ return;
8926
+ }
8927
+ if (!/[:|]/.test(cap[2])) {
8928
+ return;
8929
+ }
8930
+ const headers = splitCells(cap[1]);
8931
+ const aligns = cap[2].replace(/^\||\| *$/g, "").split("|");
8932
+ const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, "").split("\n") : [];
8933
+ const item = {
8934
+ type: "table",
8935
+ raw: cap[0],
8936
+ header: [],
8937
+ align: [],
8938
+ rows: []
8939
+ };
8940
+ if (headers.length !== aligns.length) {
8941
+ return;
8942
+ }
8943
+ for (const align of aligns) {
8944
+ if (/^ *-+: *$/.test(align)) {
8945
+ item.align.push("right");
8946
+ } else if (/^ *:-+: *$/.test(align)) {
8947
+ item.align.push("center");
8948
+ } else if (/^ *:-+ *$/.test(align)) {
8949
+ item.align.push("left");
8950
+ } else {
8951
+ item.align.push(null);
8952
+ }
8953
+ }
8954
+ for (let i = 0; i < headers.length; i++) {
8955
+ item.header.push({
8956
+ text: headers[i],
8957
+ tokens: this.lexer.inline(headers[i]),
8958
+ header: true,
8959
+ align: item.align[i]
8960
+ });
8961
+ }
8962
+ for (const row of rows) {
8963
+ item.rows.push(splitCells(row, item.header.length).map((cell, i) => {
8964
+ return {
8965
+ text: cell,
8966
+ tokens: this.lexer.inline(cell),
8967
+ header: false,
8968
+ align: item.align[i]
8969
+ };
8970
+ }));
8971
+ }
8972
+ return item;
8973
+ }
8974
+ lheading(src) {
8975
+ const cap = this.rules.block.lheading.exec(src);
8976
+ if (cap) {
8977
+ return {
8978
+ type: "heading",
8979
+ raw: cap[0],
8980
+ depth: cap[2].charAt(0) === "=" ? 1 : 2,
8981
+ text: cap[1],
8982
+ tokens: this.lexer.inline(cap[1])
8983
+ };
8984
+ }
8985
+ }
8986
+ paragraph(src) {
8987
+ const cap = this.rules.block.paragraph.exec(src);
8988
+ if (cap) {
8989
+ const text2 = cap[1].charAt(cap[1].length - 1) === "\n" ? cap[1].slice(0, -1) : cap[1];
8990
+ return {
8991
+ type: "paragraph",
8992
+ raw: cap[0],
8993
+ text: text2,
8994
+ tokens: this.lexer.inline(text2)
8995
+ };
8996
+ }
8997
+ }
8998
+ text(src) {
8999
+ const cap = this.rules.block.text.exec(src);
9000
+ if (cap) {
9001
+ return {
9002
+ type: "text",
9003
+ raw: cap[0],
9004
+ text: cap[0],
9005
+ tokens: this.lexer.inline(cap[0])
9006
+ };
9007
+ }
9008
+ }
9009
+ escape(src) {
9010
+ const cap = this.rules.inline.escape.exec(src);
9011
+ if (cap) {
9012
+ return {
9013
+ type: "escape",
9014
+ raw: cap[0],
9015
+ text: escape$1(cap[1])
9016
+ };
9017
+ }
9018
+ }
9019
+ tag(src) {
9020
+ const cap = this.rules.inline.tag.exec(src);
9021
+ if (cap) {
9022
+ if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {
9023
+ this.lexer.state.inLink = true;
9024
+ } else if (this.lexer.state.inLink && /^<\/a>/i.test(cap[0])) {
9025
+ this.lexer.state.inLink = false;
9026
+ }
9027
+ if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
9028
+ this.lexer.state.inRawBlock = true;
9029
+ } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
9030
+ this.lexer.state.inRawBlock = false;
9031
+ }
9032
+ return {
9033
+ type: "html",
9034
+ raw: cap[0],
9035
+ inLink: this.lexer.state.inLink,
9036
+ inRawBlock: this.lexer.state.inRawBlock,
9037
+ block: false,
9038
+ text: cap[0]
9039
+ };
9040
+ }
9041
+ }
9042
+ link(src) {
9043
+ const cap = this.rules.inline.link.exec(src);
9044
+ if (cap) {
9045
+ const trimmedUrl = cap[2].trim();
9046
+ if (!this.options.pedantic && /^</.test(trimmedUrl)) {
9047
+ if (!/>$/.test(trimmedUrl)) {
9048
+ return;
9049
+ }
9050
+ const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), "\\");
9051
+ if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
9052
+ return;
9053
+ }
9054
+ } else {
9055
+ const lastParenIndex = findClosingBracket(cap[2], "()");
9056
+ if (lastParenIndex > -1) {
9057
+ const start3 = cap[0].indexOf("!") === 0 ? 5 : 4;
9058
+ const linkLen = start3 + cap[1].length + lastParenIndex;
9059
+ cap[2] = cap[2].substring(0, lastParenIndex);
9060
+ cap[0] = cap[0].substring(0, linkLen).trim();
9061
+ cap[3] = "";
9062
+ }
9063
+ }
9064
+ let href = cap[2];
9065
+ let title = "";
9066
+ if (this.options.pedantic) {
9067
+ const link2 = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
9068
+ if (link2) {
9069
+ href = link2[1];
9070
+ title = link2[3];
9071
+ }
9072
+ } else {
9073
+ title = cap[3] ? cap[3].slice(1, -1) : "";
9074
+ }
9075
+ href = href.trim();
9076
+ if (/^</.test(href)) {
9077
+ if (this.options.pedantic && !/>$/.test(trimmedUrl)) {
9078
+ href = href.slice(1);
9079
+ } else {
9080
+ href = href.slice(1, -1);
9081
+ }
9082
+ }
9083
+ return outputLink(cap, {
9084
+ href: href ? href.replace(this.rules.inline.anyPunctuation, "$1") : href,
9085
+ title: title ? title.replace(this.rules.inline.anyPunctuation, "$1") : title
9086
+ }, cap[0], this.lexer);
9087
+ }
9088
+ }
9089
+ reflink(src, links) {
9090
+ let cap;
9091
+ if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
9092
+ const linkString = (cap[2] || cap[1]).replace(/\s+/g, " ");
9093
+ const link2 = links[linkString.toLowerCase()];
9094
+ if (!link2) {
9095
+ const text2 = cap[0].charAt(0);
9096
+ return {
9097
+ type: "text",
9098
+ raw: text2,
9099
+ text: text2
9100
+ };
9101
+ }
9102
+ return outputLink(cap, link2, cap[0], this.lexer);
9103
+ }
9104
+ }
9105
+ emStrong(src, maskedSrc, prevChar = "") {
9106
+ let match = this.rules.inline.emStrongLDelim.exec(src);
9107
+ if (!match)
9108
+ return;
9109
+ if (match[3] && prevChar.match(/[\p{L}\p{N}]/u))
9110
+ return;
9111
+ const nextChar = match[1] || match[2] || "";
9112
+ if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {
9113
+ const lLength = [...match[0]].length - 1;
9114
+ let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;
9115
+ const endReg = match[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
9116
+ endReg.lastIndex = 0;
9117
+ maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
9118
+ while ((match = endReg.exec(maskedSrc)) != null) {
9119
+ rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
9120
+ if (!rDelim)
9121
+ continue;
9122
+ rLength = [...rDelim].length;
9123
+ if (match[3] || match[4]) {
9124
+ delimTotal += rLength;
9125
+ continue;
9126
+ } else if (match[5] || match[6]) {
9127
+ if (lLength % 3 && !((lLength + rLength) % 3)) {
9128
+ midDelimTotal += rLength;
9129
+ continue;
9130
+ }
9131
+ }
9132
+ delimTotal -= rLength;
9133
+ if (delimTotal > 0)
9134
+ continue;
9135
+ rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
9136
+ const lastCharLength = [...match[0]][0].length;
9137
+ const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);
9138
+ if (Math.min(lLength, rLength) % 2) {
9139
+ const text3 = raw.slice(1, -1);
9140
+ return {
9141
+ type: "em",
9142
+ raw,
9143
+ text: text3,
9144
+ tokens: this.lexer.inlineTokens(text3)
9145
+ };
9146
+ }
9147
+ const text2 = raw.slice(2, -2);
9148
+ return {
9149
+ type: "strong",
9150
+ raw,
9151
+ text: text2,
9152
+ tokens: this.lexer.inlineTokens(text2)
9153
+ };
9154
+ }
9155
+ }
9156
+ }
9157
+ codespan(src) {
9158
+ const cap = this.rules.inline.code.exec(src);
9159
+ if (cap) {
9160
+ let text2 = cap[2].replace(/\n/g, " ");
9161
+ const hasNonSpaceChars = /[^ ]/.test(text2);
9162
+ const hasSpaceCharsOnBothEnds = /^ /.test(text2) && / $/.test(text2);
9163
+ if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
9164
+ text2 = text2.substring(1, text2.length - 1);
9165
+ }
9166
+ text2 = escape$1(text2, true);
9167
+ return {
9168
+ type: "codespan",
9169
+ raw: cap[0],
9170
+ text: text2
9171
+ };
9172
+ }
9173
+ }
9174
+ br(src) {
9175
+ const cap = this.rules.inline.br.exec(src);
9176
+ if (cap) {
9177
+ return {
9178
+ type: "br",
9179
+ raw: cap[0]
9180
+ };
9181
+ }
9182
+ }
9183
+ del(src) {
9184
+ const cap = this.rules.inline.del.exec(src);
9185
+ if (cap) {
9186
+ return {
9187
+ type: "del",
9188
+ raw: cap[0],
9189
+ text: cap[2],
9190
+ tokens: this.lexer.inlineTokens(cap[2])
9191
+ };
9192
+ }
9193
+ }
9194
+ autolink(src) {
9195
+ const cap = this.rules.inline.autolink.exec(src);
9196
+ if (cap) {
9197
+ let text2, href;
9198
+ if (cap[2] === "@") {
9199
+ text2 = escape$1(cap[1]);
9200
+ href = "mailto:" + text2;
9201
+ } else {
9202
+ text2 = escape$1(cap[1]);
9203
+ href = text2;
9204
+ }
9205
+ return {
9206
+ type: "link",
9207
+ raw: cap[0],
9208
+ text: text2,
9209
+ href,
9210
+ tokens: [
9211
+ {
9212
+ type: "text",
9213
+ raw: text2,
9214
+ text: text2
9215
+ }
9216
+ ]
9217
+ };
9218
+ }
9219
+ }
9220
+ url(src) {
9221
+ let cap;
9222
+ if (cap = this.rules.inline.url.exec(src)) {
9223
+ let text2, href;
9224
+ if (cap[2] === "@") {
9225
+ text2 = escape$1(cap[0]);
9226
+ href = "mailto:" + text2;
9227
+ } else {
9228
+ let prevCapZero;
9229
+ do {
9230
+ prevCapZero = cap[0];
9231
+ cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? "";
9232
+ } while (prevCapZero !== cap[0]);
9233
+ text2 = escape$1(cap[0]);
9234
+ if (cap[1] === "www.") {
9235
+ href = "http://" + cap[0];
9236
+ } else {
9237
+ href = cap[0];
9238
+ }
9239
+ }
9240
+ return {
9241
+ type: "link",
9242
+ raw: cap[0],
9243
+ text: text2,
9244
+ href,
9245
+ tokens: [
9246
+ {
9247
+ type: "text",
9248
+ raw: text2,
9249
+ text: text2
9250
+ }
9251
+ ]
9252
+ };
9253
+ }
9254
+ }
9255
+ inlineText(src) {
9256
+ const cap = this.rules.inline.text.exec(src);
9257
+ if (cap) {
9258
+ let text2;
9259
+ if (this.lexer.state.inRawBlock) {
9260
+ text2 = cap[0];
9261
+ } else {
9262
+ text2 = escape$1(cap[0]);
9263
+ }
9264
+ return {
9265
+ type: "text",
9266
+ raw: cap[0],
9267
+ text: text2
9268
+ };
9269
+ }
9270
+ }
9271
+ };
9272
+ var newline = /^(?: *(?:\n|$))+/;
9273
+ var blockCode = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/;
9274
+ var fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
9275
+ var hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
9276
+ var heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/;
9277
+ var bullet = /(?:[*+-]|\d{1,9}[.)])/;
9278
+ var lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g, bullet).replace(/blockCode/g, / {4}/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).getRegex();
9279
+ var _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/;
9280
+ var blockText = /^[^\n]+/;
9281
+ var _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/;
9282
+ var def = edit(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label", _blockLabel).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
9283
+ var list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, bullet).getRegex();
9284
+ var _tag = "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";
9285
+ var _comment = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
9286
+ var html2 = edit("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))", "i").replace("comment", _comment).replace("tag", _tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
9287
+ var paragraph = edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex();
9288
+ var blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", paragraph).getRegex();
9289
+ var blockNormal = {
9290
+ blockquote,
9291
+ code: blockCode,
9292
+ def,
9293
+ fences,
9294
+ heading,
9295
+ hr,
9296
+ html: html2,
9297
+ lheading,
9298
+ list,
9299
+ newline,
9300
+ paragraph,
9301
+ table: noopTest,
9302
+ text: blockText
9303
+ };
9304
+ var gfmTable = edit("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex();
9305
+ var blockGfm = {
9306
+ ...blockNormal,
9307
+ table: gfmTable,
9308
+ paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", gfmTable).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex()
9309
+ };
9310
+ var blockPedantic = {
9311
+ ...blockNormal,
9312
+ html: edit(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", _comment).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(),
9313
+ def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
9314
+ heading: /^(#{1,6})(.*)(?:\n+|$)/,
9315
+ fences: noopTest,
9316
+ // fences not supported
9317
+ lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
9318
+ paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", lheading).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex()
9319
+ };
9320
+ var escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
9321
+ var inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
9322
+ var br = /^( {2,}|\\)\n(?!\s*$)/;
9323
+ var inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/;
9324
+ var _punctuation = "\\p{P}\\p{S}";
9325
+ var punctuation = edit(/^((?![*_])[\spunctuation])/, "u").replace(/punctuation/g, _punctuation).getRegex();
9326
+ var blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g;
9327
+ var emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, "u").replace(/punct/g, _punctuation).getRegex();
9328
+ var emStrongRDelimAst = edit("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])", "gu").replace(/punct/g, _punctuation).getRegex();
9329
+ var emStrongRDelimUnd = edit("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])", "gu").replace(/punct/g, _punctuation).getRegex();
9330
+ var anyPunctuation = edit(/\\([punct])/, "gu").replace(/punct/g, _punctuation).getRegex();
9331
+ var autolink = edit(/^<(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();
9332
+ var _inlineComment = edit(_comment).replace("(?:-->|$)", "-->").getRegex();
9333
+ var tag = edit("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", _inlineComment).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex();
9334
+ var _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
9335
+ var link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label", _inlineLabel).replace("href", /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex();
9336
+ var reflink = edit(/^!?\[(label)\]\[(ref)\]/).replace("label", _inlineLabel).replace("ref", _blockLabel).getRegex();
9337
+ var nolink = edit(/^!?\[(ref)\](?:\[\])?/).replace("ref", _blockLabel).getRegex();
9338
+ var reflinkSearch = edit("reflink|nolink(?!\\()", "g").replace("reflink", reflink).replace("nolink", nolink).getRegex();
9339
+ var inlineNormal = {
9340
+ _backpedal: noopTest,
9341
+ // only used for GFM url
9342
+ anyPunctuation,
9343
+ autolink,
9344
+ blockSkip,
9345
+ br,
9346
+ code: inlineCode,
9347
+ del: noopTest,
9348
+ emStrongLDelim,
9349
+ emStrongRDelimAst,
9350
+ emStrongRDelimUnd,
9351
+ escape,
9352
+ link,
9353
+ nolink,
9354
+ punctuation,
9355
+ reflink,
9356
+ reflinkSearch,
9357
+ tag,
9358
+ text: inlineText,
9359
+ url: noopTest
9360
+ };
9361
+ var inlinePedantic = {
9362
+ ...inlineNormal,
9363
+ link: edit(/^!?\[(label)\]\((.*?)\)/).replace("label", _inlineLabel).getRegex(),
9364
+ reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", _inlineLabel).getRegex()
9365
+ };
9366
+ var inlineGfm = {
9367
+ ...inlineNormal,
9368
+ escape: edit(escape).replace("])", "~|])").getRegex(),
9369
+ url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),
9370
+ _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
9371
+ del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
9372
+ text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
9373
+ };
9374
+ var inlineBreaks = {
9375
+ ...inlineGfm,
9376
+ br: edit(br).replace("{2,}", "*").getRegex(),
9377
+ text: edit(inlineGfm.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex()
9378
+ };
9379
+ var block = {
9380
+ normal: blockNormal,
9381
+ gfm: blockGfm,
9382
+ pedantic: blockPedantic
9383
+ };
9384
+ var inline = {
9385
+ normal: inlineNormal,
9386
+ gfm: inlineGfm,
9387
+ breaks: inlineBreaks,
9388
+ pedantic: inlinePedantic
9389
+ };
9390
+ var _Lexer = class __Lexer {
9391
+ tokens;
9392
+ options;
9393
+ state;
9394
+ tokenizer;
9395
+ inlineQueue;
9396
+ constructor(options2) {
9397
+ this.tokens = [];
9398
+ this.tokens.links = /* @__PURE__ */ Object.create(null);
9399
+ this.options = options2 || _defaults;
9400
+ this.options.tokenizer = this.options.tokenizer || new _Tokenizer();
9401
+ this.tokenizer = this.options.tokenizer;
9402
+ this.tokenizer.options = this.options;
9403
+ this.tokenizer.lexer = this;
9404
+ this.inlineQueue = [];
9405
+ this.state = {
9406
+ inLink: false,
9407
+ inRawBlock: false,
9408
+ top: true
9409
+ };
9410
+ const rules = {
9411
+ block: block.normal,
9412
+ inline: inline.normal
9413
+ };
9414
+ if (this.options.pedantic) {
9415
+ rules.block = block.pedantic;
9416
+ rules.inline = inline.pedantic;
9417
+ } else if (this.options.gfm) {
9418
+ rules.block = block.gfm;
9419
+ if (this.options.breaks) {
9420
+ rules.inline = inline.breaks;
9421
+ } else {
9422
+ rules.inline = inline.gfm;
9423
+ }
9424
+ }
9425
+ this.tokenizer.rules = rules;
9426
+ }
9427
+ /**
9428
+ * Expose Rules
9429
+ */
9430
+ static get rules() {
9431
+ return {
9432
+ block,
9433
+ inline
9434
+ };
9435
+ }
9436
+ /**
9437
+ * Static Lex Method
9438
+ */
9439
+ static lex(src, options2) {
9440
+ const lexer2 = new __Lexer(options2);
9441
+ return lexer2.lex(src);
9442
+ }
9443
+ /**
9444
+ * Static Lex Inline Method
9445
+ */
9446
+ static lexInline(src, options2) {
9447
+ const lexer2 = new __Lexer(options2);
9448
+ return lexer2.inlineTokens(src);
9449
+ }
9450
+ /**
9451
+ * Preprocessing
9452
+ */
9453
+ lex(src) {
9454
+ src = src.replace(/\r\n|\r/g, "\n");
9455
+ this.blockTokens(src, this.tokens);
9456
+ for (let i = 0; i < this.inlineQueue.length; i++) {
9457
+ const next = this.inlineQueue[i];
9458
+ this.inlineTokens(next.src, next.tokens);
9459
+ }
9460
+ this.inlineQueue = [];
9461
+ return this.tokens;
9462
+ }
9463
+ blockTokens(src, tokens = [], lastParagraphClipped = false) {
9464
+ if (this.options.pedantic) {
9465
+ src = src.replace(/\t/g, " ").replace(/^ +$/gm, "");
9466
+ } else {
9467
+ src = src.replace(/^( *)(\t+)/gm, (_, leading, tabs) => {
9468
+ return leading + " ".repeat(tabs.length);
9469
+ });
9470
+ }
9471
+ let token;
9472
+ let lastToken;
9473
+ let cutSrc;
9474
+ while (src) {
9475
+ if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => {
9476
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
9477
+ src = src.substring(token.raw.length);
9478
+ tokens.push(token);
9479
+ return true;
9480
+ }
9481
+ return false;
9482
+ })) {
9483
+ continue;
9484
+ }
9485
+ if (token = this.tokenizer.space(src)) {
9486
+ src = src.substring(token.raw.length);
9487
+ if (token.raw.length === 1 && tokens.length > 0) {
9488
+ tokens[tokens.length - 1].raw += "\n";
9489
+ } else {
9490
+ tokens.push(token);
9491
+ }
9492
+ continue;
9493
+ }
9494
+ if (token = this.tokenizer.code(src)) {
9495
+ src = src.substring(token.raw.length);
9496
+ lastToken = tokens[tokens.length - 1];
9497
+ if (lastToken && (lastToken.type === "paragraph" || lastToken.type === "text")) {
9498
+ lastToken.raw += "\n" + token.raw;
9499
+ lastToken.text += "\n" + token.text;
9500
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
9501
+ } else {
9502
+ tokens.push(token);
9503
+ }
9504
+ continue;
9505
+ }
9506
+ if (token = this.tokenizer.fences(src)) {
9507
+ src = src.substring(token.raw.length);
9508
+ tokens.push(token);
9509
+ continue;
9510
+ }
9511
+ if (token = this.tokenizer.heading(src)) {
9512
+ src = src.substring(token.raw.length);
9513
+ tokens.push(token);
9514
+ continue;
9515
+ }
9516
+ if (token = this.tokenizer.hr(src)) {
9517
+ src = src.substring(token.raw.length);
9518
+ tokens.push(token);
9519
+ continue;
9520
+ }
9521
+ if (token = this.tokenizer.blockquote(src)) {
9522
+ src = src.substring(token.raw.length);
9523
+ tokens.push(token);
9524
+ continue;
9525
+ }
9526
+ if (token = this.tokenizer.list(src)) {
9527
+ src = src.substring(token.raw.length);
9528
+ tokens.push(token);
9529
+ continue;
9530
+ }
9531
+ if (token = this.tokenizer.html(src)) {
9532
+ src = src.substring(token.raw.length);
9533
+ tokens.push(token);
9534
+ continue;
9535
+ }
9536
+ if (token = this.tokenizer.def(src)) {
9537
+ src = src.substring(token.raw.length);
9538
+ lastToken = tokens[tokens.length - 1];
9539
+ if (lastToken && (lastToken.type === "paragraph" || lastToken.type === "text")) {
9540
+ lastToken.raw += "\n" + token.raw;
9541
+ lastToken.text += "\n" + token.raw;
9542
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
9543
+ } else if (!this.tokens.links[token.tag]) {
9544
+ this.tokens.links[token.tag] = {
9545
+ href: token.href,
9546
+ title: token.title
9547
+ };
9548
+ }
9549
+ continue;
9550
+ }
9551
+ if (token = this.tokenizer.table(src)) {
9552
+ src = src.substring(token.raw.length);
9553
+ tokens.push(token);
9554
+ continue;
9555
+ }
9556
+ if (token = this.tokenizer.lheading(src)) {
9557
+ src = src.substring(token.raw.length);
9558
+ tokens.push(token);
9559
+ continue;
9560
+ }
9561
+ cutSrc = src;
9562
+ if (this.options.extensions && this.options.extensions.startBlock) {
9563
+ let startIndex = Infinity;
9564
+ const tempSrc = src.slice(1);
9565
+ let tempStart;
9566
+ this.options.extensions.startBlock.forEach((getStartIndex) => {
9567
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
9568
+ if (typeof tempStart === "number" && tempStart >= 0) {
9569
+ startIndex = Math.min(startIndex, tempStart);
9570
+ }
9571
+ });
9572
+ if (startIndex < Infinity && startIndex >= 0) {
9573
+ cutSrc = src.substring(0, startIndex + 1);
9574
+ }
9575
+ }
9576
+ if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
9577
+ lastToken = tokens[tokens.length - 1];
9578
+ if (lastParagraphClipped && lastToken?.type === "paragraph") {
9579
+ lastToken.raw += "\n" + token.raw;
9580
+ lastToken.text += "\n" + token.text;
9581
+ this.inlineQueue.pop();
9582
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
9583
+ } else {
9584
+ tokens.push(token);
9585
+ }
9586
+ lastParagraphClipped = cutSrc.length !== src.length;
9587
+ src = src.substring(token.raw.length);
9588
+ continue;
9589
+ }
9590
+ if (token = this.tokenizer.text(src)) {
9591
+ src = src.substring(token.raw.length);
9592
+ lastToken = tokens[tokens.length - 1];
9593
+ if (lastToken && lastToken.type === "text") {
9594
+ lastToken.raw += "\n" + token.raw;
9595
+ lastToken.text += "\n" + token.text;
9596
+ this.inlineQueue.pop();
9597
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
9598
+ } else {
9599
+ tokens.push(token);
9600
+ }
9601
+ continue;
9602
+ }
9603
+ if (src) {
9604
+ const errMsg = "Infinite loop on byte: " + src.charCodeAt(0);
9605
+ if (this.options.silent) {
9606
+ console.error(errMsg);
9607
+ break;
9608
+ } else {
9609
+ throw new Error(errMsg);
9610
+ }
9611
+ }
9612
+ }
9613
+ this.state.top = true;
9614
+ return tokens;
9615
+ }
9616
+ inline(src, tokens = []) {
9617
+ this.inlineQueue.push({ src, tokens });
9618
+ return tokens;
9619
+ }
9620
+ /**
9621
+ * Lexing/Compiling
9622
+ */
9623
+ inlineTokens(src, tokens = []) {
9624
+ let token, lastToken, cutSrc;
9625
+ let maskedSrc = src;
9626
+ let match;
9627
+ let keepPrevChar, prevChar;
9628
+ if (this.tokens.links) {
9629
+ const links = Object.keys(this.tokens.links);
9630
+ if (links.length > 0) {
9631
+ while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
9632
+ if (links.includes(match[0].slice(match[0].lastIndexOf("[") + 1, -1))) {
9633
+ maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
9634
+ }
9635
+ }
9636
+ }
9637
+ }
9638
+ while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
9639
+ maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
9640
+ }
9641
+ while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {
9642
+ maskedSrc = maskedSrc.slice(0, match.index) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
9643
+ }
9644
+ while (src) {
9645
+ if (!keepPrevChar) {
9646
+ prevChar = "";
9647
+ }
9648
+ keepPrevChar = false;
9649
+ if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((extTokenizer) => {
9650
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
9651
+ src = src.substring(token.raw.length);
9652
+ tokens.push(token);
9653
+ return true;
9654
+ }
9655
+ return false;
9656
+ })) {
9657
+ continue;
9658
+ }
9659
+ if (token = this.tokenizer.escape(src)) {
9660
+ src = src.substring(token.raw.length);
9661
+ tokens.push(token);
9662
+ continue;
9663
+ }
9664
+ if (token = this.tokenizer.tag(src)) {
9665
+ src = src.substring(token.raw.length);
9666
+ lastToken = tokens[tokens.length - 1];
9667
+ if (lastToken && token.type === "text" && lastToken.type === "text") {
9668
+ lastToken.raw += token.raw;
9669
+ lastToken.text += token.text;
9670
+ } else {
9671
+ tokens.push(token);
9672
+ }
9673
+ continue;
9674
+ }
9675
+ if (token = this.tokenizer.link(src)) {
9676
+ src = src.substring(token.raw.length);
9677
+ tokens.push(token);
9678
+ continue;
9679
+ }
9680
+ if (token = this.tokenizer.reflink(src, this.tokens.links)) {
9681
+ src = src.substring(token.raw.length);
9682
+ lastToken = tokens[tokens.length - 1];
9683
+ if (lastToken && token.type === "text" && lastToken.type === "text") {
9684
+ lastToken.raw += token.raw;
9685
+ lastToken.text += token.text;
9686
+ } else {
9687
+ tokens.push(token);
9688
+ }
9689
+ continue;
9690
+ }
9691
+ if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
9692
+ src = src.substring(token.raw.length);
9693
+ tokens.push(token);
9694
+ continue;
9695
+ }
9696
+ if (token = this.tokenizer.codespan(src)) {
9697
+ src = src.substring(token.raw.length);
9698
+ tokens.push(token);
9699
+ continue;
9700
+ }
9701
+ if (token = this.tokenizer.br(src)) {
9702
+ src = src.substring(token.raw.length);
9703
+ tokens.push(token);
9704
+ continue;
9705
+ }
9706
+ if (token = this.tokenizer.del(src)) {
9707
+ src = src.substring(token.raw.length);
9708
+ tokens.push(token);
9709
+ continue;
9710
+ }
9711
+ if (token = this.tokenizer.autolink(src)) {
9712
+ src = src.substring(token.raw.length);
9713
+ tokens.push(token);
9714
+ continue;
9715
+ }
9716
+ if (!this.state.inLink && (token = this.tokenizer.url(src))) {
9717
+ src = src.substring(token.raw.length);
9718
+ tokens.push(token);
9719
+ continue;
9720
+ }
9721
+ cutSrc = src;
9722
+ if (this.options.extensions && this.options.extensions.startInline) {
9723
+ let startIndex = Infinity;
9724
+ const tempSrc = src.slice(1);
9725
+ let tempStart;
9726
+ this.options.extensions.startInline.forEach((getStartIndex) => {
9727
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
9728
+ if (typeof tempStart === "number" && tempStart >= 0) {
9729
+ startIndex = Math.min(startIndex, tempStart);
9730
+ }
9731
+ });
9732
+ if (startIndex < Infinity && startIndex >= 0) {
9733
+ cutSrc = src.substring(0, startIndex + 1);
9734
+ }
9735
+ }
9736
+ if (token = this.tokenizer.inlineText(cutSrc)) {
9737
+ src = src.substring(token.raw.length);
9738
+ if (token.raw.slice(-1) !== "_") {
9739
+ prevChar = token.raw.slice(-1);
9740
+ }
9741
+ keepPrevChar = true;
9742
+ lastToken = tokens[tokens.length - 1];
9743
+ if (lastToken && lastToken.type === "text") {
9744
+ lastToken.raw += token.raw;
9745
+ lastToken.text += token.text;
9746
+ } else {
9747
+ tokens.push(token);
9748
+ }
9749
+ continue;
9750
+ }
9751
+ if (src) {
9752
+ const errMsg = "Infinite loop on byte: " + src.charCodeAt(0);
9753
+ if (this.options.silent) {
9754
+ console.error(errMsg);
9755
+ break;
9756
+ } else {
9757
+ throw new Error(errMsg);
9758
+ }
9759
+ }
9760
+ }
9761
+ return tokens;
9762
+ }
9763
+ };
9764
+ var _Renderer = class {
9765
+ options;
9766
+ parser;
9767
+ // set by the parser
9768
+ constructor(options2) {
9769
+ this.options = options2 || _defaults;
9770
+ }
9771
+ space(token) {
9772
+ return "";
9773
+ }
9774
+ code({ text: text2, lang, escaped }) {
9775
+ const langString = (lang || "").match(/^\S*/)?.[0];
9776
+ const code = text2.replace(/\n$/, "") + "\n";
9777
+ if (!langString) {
9778
+ return "<pre><code>" + (escaped ? code : escape$1(code, true)) + "</code></pre>\n";
9779
+ }
9780
+ return '<pre><code class="language-' + escape$1(langString) + '">' + (escaped ? code : escape$1(code, true)) + "</code></pre>\n";
9781
+ }
9782
+ blockquote({ tokens }) {
9783
+ const body = this.parser.parse(tokens);
9784
+ return `<blockquote>
9785
+ ${body}</blockquote>
9786
+ `;
9787
+ }
9788
+ html({ text: text2 }) {
9789
+ return text2;
9790
+ }
9791
+ heading({ tokens, depth }) {
9792
+ return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>
9793
+ `;
9794
+ }
9795
+ hr(token) {
9796
+ return "<hr>\n";
9797
+ }
9798
+ list(token) {
9799
+ const ordered = token.ordered;
9800
+ const start3 = token.start;
9801
+ let body = "";
9802
+ for (let j = 0; j < token.items.length; j++) {
9803
+ const item = token.items[j];
9804
+ body += this.listitem(item);
9805
+ }
9806
+ const type = ordered ? "ol" : "ul";
9807
+ const startAttr = ordered && start3 !== 1 ? ' start="' + start3 + '"' : "";
9808
+ return "<" + type + startAttr + ">\n" + body + "</" + type + ">\n";
9809
+ }
9810
+ listitem(item) {
9811
+ let itemBody = "";
9812
+ if (item.task) {
9813
+ const checkbox = this.checkbox({ checked: !!item.checked });
9814
+ if (item.loose) {
9815
+ if (item.tokens.length > 0 && item.tokens[0].type === "paragraph") {
9816
+ item.tokens[0].text = checkbox + " " + item.tokens[0].text;
9817
+ if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === "text") {
9818
+ item.tokens[0].tokens[0].text = checkbox + " " + item.tokens[0].tokens[0].text;
9819
+ }
9820
+ } else {
9821
+ item.tokens.unshift({
9822
+ type: "text",
9823
+ raw: checkbox + " ",
9824
+ text: checkbox + " "
9825
+ });
9826
+ }
9827
+ } else {
9828
+ itemBody += checkbox + " ";
9829
+ }
9830
+ }
9831
+ itemBody += this.parser.parse(item.tokens, !!item.loose);
9832
+ return `<li>${itemBody}</li>
9833
+ `;
9834
+ }
9835
+ checkbox({ checked }) {
9836
+ return "<input " + (checked ? 'checked="" ' : "") + 'disabled="" type="checkbox">';
9837
+ }
9838
+ paragraph({ tokens }) {
9839
+ return `<p>${this.parser.parseInline(tokens)}</p>
9840
+ `;
9841
+ }
9842
+ table(token) {
9843
+ let header = "";
9844
+ let cell = "";
9845
+ for (let j = 0; j < token.header.length; j++) {
9846
+ cell += this.tablecell(token.header[j]);
9847
+ }
9848
+ header += this.tablerow({ text: cell });
9849
+ let body = "";
9850
+ for (let j = 0; j < token.rows.length; j++) {
9851
+ const row = token.rows[j];
9852
+ cell = "";
9853
+ for (let k = 0; k < row.length; k++) {
9854
+ cell += this.tablecell(row[k]);
9855
+ }
9856
+ body += this.tablerow({ text: cell });
9857
+ }
9858
+ if (body)
9859
+ body = `<tbody>${body}</tbody>`;
9860
+ return "<table>\n<thead>\n" + header + "</thead>\n" + body + "</table>\n";
9861
+ }
9862
+ tablerow({ text: text2 }) {
9863
+ return `<tr>
9864
+ ${text2}</tr>
9865
+ `;
9866
+ }
9867
+ tablecell(token) {
9868
+ const content = this.parser.parseInline(token.tokens);
9869
+ const type = token.header ? "th" : "td";
9870
+ const tag2 = token.align ? `<${type} align="${token.align}">` : `<${type}>`;
9871
+ return tag2 + content + `</${type}>
9872
+ `;
9873
+ }
9874
+ /**
9875
+ * span level renderer
9876
+ */
9877
+ strong({ tokens }) {
9878
+ return `<strong>${this.parser.parseInline(tokens)}</strong>`;
9879
+ }
9880
+ em({ tokens }) {
9881
+ return `<em>${this.parser.parseInline(tokens)}</em>`;
9882
+ }
9883
+ codespan({ text: text2 }) {
9884
+ return `<code>${text2}</code>`;
9885
+ }
9886
+ br(token) {
9887
+ return "<br>";
9888
+ }
9889
+ del({ tokens }) {
9890
+ return `<del>${this.parser.parseInline(tokens)}</del>`;
9891
+ }
9892
+ link({ href, title, tokens }) {
9893
+ const text2 = this.parser.parseInline(tokens);
9894
+ const cleanHref = cleanUrl(href);
9895
+ if (cleanHref === null) {
9896
+ return text2;
9897
+ }
9898
+ href = cleanHref;
9899
+ let out = '<a href="' + href + '"';
9900
+ if (title) {
9901
+ out += ' title="' + title + '"';
9902
+ }
9903
+ out += ">" + text2 + "</a>";
9904
+ return out;
9905
+ }
9906
+ image({ href, title, text: text2 }) {
9907
+ const cleanHref = cleanUrl(href);
9908
+ if (cleanHref === null) {
9909
+ return text2;
9910
+ }
9911
+ href = cleanHref;
9912
+ let out = `<img src="${href}" alt="${text2}"`;
9913
+ if (title) {
9914
+ out += ` title="${title}"`;
9915
+ }
9916
+ out += ">";
9917
+ return out;
9918
+ }
9919
+ text(token) {
9920
+ return "tokens" in token && token.tokens ? this.parser.parseInline(token.tokens) : token.text;
9921
+ }
9922
+ };
9923
+ var _TextRenderer = class {
9924
+ // no need for block level renderers
9925
+ strong({ text: text2 }) {
9926
+ return text2;
9927
+ }
9928
+ em({ text: text2 }) {
9929
+ return text2;
9930
+ }
9931
+ codespan({ text: text2 }) {
9932
+ return text2;
9933
+ }
9934
+ del({ text: text2 }) {
9935
+ return text2;
9936
+ }
9937
+ html({ text: text2 }) {
9938
+ return text2;
9939
+ }
9940
+ text({ text: text2 }) {
9941
+ return text2;
9942
+ }
9943
+ link({ text: text2 }) {
9944
+ return "" + text2;
9945
+ }
9946
+ image({ text: text2 }) {
9947
+ return "" + text2;
9948
+ }
9949
+ br() {
9950
+ return "";
9951
+ }
9952
+ };
9953
+ var _Parser = class __Parser {
9954
+ options;
9955
+ renderer;
9956
+ textRenderer;
9957
+ constructor(options2) {
9958
+ this.options = options2 || _defaults;
9959
+ this.options.renderer = this.options.renderer || new _Renderer();
9960
+ this.renderer = this.options.renderer;
9961
+ this.renderer.options = this.options;
9962
+ this.renderer.parser = this;
9963
+ this.textRenderer = new _TextRenderer();
9964
+ }
9965
+ /**
9966
+ * Static Parse Method
9967
+ */
9968
+ static parse(tokens, options2) {
9969
+ const parser2 = new __Parser(options2);
9970
+ return parser2.parse(tokens);
9971
+ }
9972
+ /**
9973
+ * Static Parse Inline Method
9974
+ */
9975
+ static parseInline(tokens, options2) {
9976
+ const parser2 = new __Parser(options2);
9977
+ return parser2.parseInline(tokens);
9978
+ }
9979
+ /**
9980
+ * Parse Loop
9981
+ */
9982
+ parse(tokens, top2 = true) {
9983
+ let out = "";
9984
+ for (let i = 0; i < tokens.length; i++) {
9985
+ const anyToken = tokens[i];
9986
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {
9987
+ const genericToken = anyToken;
9988
+ const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);
9989
+ if (ret !== false || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text"].includes(genericToken.type)) {
9990
+ out += ret || "";
9991
+ continue;
9992
+ }
9993
+ }
9994
+ const token = anyToken;
9995
+ switch (token.type) {
9996
+ case "space": {
9997
+ out += this.renderer.space(token);
9998
+ continue;
9999
+ }
10000
+ case "hr": {
10001
+ out += this.renderer.hr(token);
10002
+ continue;
10003
+ }
10004
+ case "heading": {
10005
+ out += this.renderer.heading(token);
10006
+ continue;
10007
+ }
10008
+ case "code": {
10009
+ out += this.renderer.code(token);
10010
+ continue;
10011
+ }
10012
+ case "table": {
10013
+ out += this.renderer.table(token);
10014
+ continue;
10015
+ }
10016
+ case "blockquote": {
10017
+ out += this.renderer.blockquote(token);
10018
+ continue;
10019
+ }
10020
+ case "list": {
10021
+ out += this.renderer.list(token);
10022
+ continue;
10023
+ }
10024
+ case "html": {
10025
+ out += this.renderer.html(token);
10026
+ continue;
10027
+ }
10028
+ case "paragraph": {
10029
+ out += this.renderer.paragraph(token);
10030
+ continue;
10031
+ }
10032
+ case "text": {
10033
+ let textToken = token;
10034
+ let body = this.renderer.text(textToken);
10035
+ while (i + 1 < tokens.length && tokens[i + 1].type === "text") {
10036
+ textToken = tokens[++i];
10037
+ body += "\n" + this.renderer.text(textToken);
10038
+ }
10039
+ if (top2) {
10040
+ out += this.renderer.paragraph({
10041
+ type: "paragraph",
10042
+ raw: body,
10043
+ text: body,
10044
+ tokens: [{ type: "text", raw: body, text: body }]
10045
+ });
10046
+ } else {
10047
+ out += body;
10048
+ }
10049
+ continue;
10050
+ }
10051
+ default: {
10052
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
10053
+ if (this.options.silent) {
10054
+ console.error(errMsg);
10055
+ return "";
10056
+ } else {
10057
+ throw new Error(errMsg);
10058
+ }
10059
+ }
10060
+ }
10061
+ }
10062
+ return out;
10063
+ }
10064
+ /**
10065
+ * Parse Inline Tokens
10066
+ */
10067
+ parseInline(tokens, renderer) {
10068
+ renderer = renderer || this.renderer;
10069
+ let out = "";
10070
+ for (let i = 0; i < tokens.length; i++) {
10071
+ const anyToken = tokens[i];
10072
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {
10073
+ const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);
10074
+ if (ret !== false || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(anyToken.type)) {
10075
+ out += ret || "";
10076
+ continue;
10077
+ }
10078
+ }
10079
+ const token = anyToken;
10080
+ switch (token.type) {
10081
+ case "escape": {
10082
+ out += renderer.text(token);
10083
+ break;
10084
+ }
10085
+ case "html": {
10086
+ out += renderer.html(token);
10087
+ break;
10088
+ }
10089
+ case "link": {
10090
+ out += renderer.link(token);
10091
+ break;
10092
+ }
10093
+ case "image": {
10094
+ out += renderer.image(token);
10095
+ break;
10096
+ }
10097
+ case "strong": {
10098
+ out += renderer.strong(token);
10099
+ break;
10100
+ }
10101
+ case "em": {
10102
+ out += renderer.em(token);
10103
+ break;
10104
+ }
10105
+ case "codespan": {
10106
+ out += renderer.codespan(token);
10107
+ break;
10108
+ }
10109
+ case "br": {
10110
+ out += renderer.br(token);
10111
+ break;
10112
+ }
10113
+ case "del": {
10114
+ out += renderer.del(token);
10115
+ break;
10116
+ }
10117
+ case "text": {
10118
+ out += renderer.text(token);
10119
+ break;
10120
+ }
10121
+ default: {
10122
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
10123
+ if (this.options.silent) {
10124
+ console.error(errMsg);
10125
+ return "";
10126
+ } else {
10127
+ throw new Error(errMsg);
10128
+ }
10129
+ }
10130
+ }
10131
+ }
10132
+ return out;
10133
+ }
10134
+ };
10135
+ var _Hooks = class {
10136
+ options;
10137
+ constructor(options2) {
10138
+ this.options = options2 || _defaults;
10139
+ }
10140
+ static passThroughHooks = /* @__PURE__ */ new Set([
10141
+ "preprocess",
10142
+ "postprocess",
10143
+ "processAllTokens"
10144
+ ]);
10145
+ /**
10146
+ * Process markdown before marked
10147
+ */
10148
+ preprocess(markdown) {
10149
+ return markdown;
10150
+ }
10151
+ /**
10152
+ * Process HTML after marked is finished
10153
+ */
10154
+ postprocess(html3) {
10155
+ return html3;
10156
+ }
10157
+ /**
10158
+ * Process all tokens before walk tokens
10159
+ */
10160
+ processAllTokens(tokens) {
10161
+ return tokens;
10162
+ }
10163
+ };
10164
+ var Marked = class {
10165
+ defaults = _getDefaults();
10166
+ options = this.setOptions;
10167
+ parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);
10168
+ parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);
10169
+ Parser = _Parser;
10170
+ Renderer = _Renderer;
10171
+ TextRenderer = _TextRenderer;
10172
+ Lexer = _Lexer;
10173
+ Tokenizer = _Tokenizer;
10174
+ Hooks = _Hooks;
10175
+ constructor(...args) {
10176
+ this.use(...args);
10177
+ }
10178
+ /**
10179
+ * Run callback for every token
10180
+ */
10181
+ walkTokens(tokens, callback) {
10182
+ let values = [];
10183
+ for (const token of tokens) {
10184
+ values = values.concat(callback.call(this, token));
10185
+ switch (token.type) {
10186
+ case "table": {
10187
+ const tableToken = token;
10188
+ for (const cell of tableToken.header) {
10189
+ values = values.concat(this.walkTokens(cell.tokens, callback));
10190
+ }
10191
+ for (const row of tableToken.rows) {
10192
+ for (const cell of row) {
10193
+ values = values.concat(this.walkTokens(cell.tokens, callback));
10194
+ }
10195
+ }
10196
+ break;
10197
+ }
10198
+ case "list": {
10199
+ const listToken = token;
10200
+ values = values.concat(this.walkTokens(listToken.items, callback));
10201
+ break;
10202
+ }
10203
+ default: {
10204
+ const genericToken = token;
10205
+ if (this.defaults.extensions?.childTokens?.[genericToken.type]) {
10206
+ this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {
10207
+ const tokens2 = genericToken[childTokens].flat(Infinity);
10208
+ values = values.concat(this.walkTokens(tokens2, callback));
10209
+ });
10210
+ } else if (genericToken.tokens) {
10211
+ values = values.concat(this.walkTokens(genericToken.tokens, callback));
10212
+ }
10213
+ }
10214
+ }
10215
+ }
10216
+ return values;
10217
+ }
10218
+ use(...args) {
10219
+ const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };
10220
+ args.forEach((pack) => {
10221
+ const opts = { ...pack };
10222
+ opts.async = this.defaults.async || opts.async || false;
10223
+ if (pack.extensions) {
10224
+ pack.extensions.forEach((ext) => {
10225
+ if (!ext.name) {
10226
+ throw new Error("extension name required");
10227
+ }
10228
+ if ("renderer" in ext) {
10229
+ const prevRenderer = extensions.renderers[ext.name];
10230
+ if (prevRenderer) {
10231
+ extensions.renderers[ext.name] = function(...args2) {
10232
+ let ret = ext.renderer.apply(this, args2);
10233
+ if (ret === false) {
10234
+ ret = prevRenderer.apply(this, args2);
10235
+ }
10236
+ return ret;
10237
+ };
10238
+ } else {
10239
+ extensions.renderers[ext.name] = ext.renderer;
10240
+ }
10241
+ }
10242
+ if ("tokenizer" in ext) {
10243
+ if (!ext.level || ext.level !== "block" && ext.level !== "inline") {
10244
+ throw new Error("extension level must be 'block' or 'inline'");
10245
+ }
10246
+ const extLevel = extensions[ext.level];
10247
+ if (extLevel) {
10248
+ extLevel.unshift(ext.tokenizer);
10249
+ } else {
10250
+ extensions[ext.level] = [ext.tokenizer];
10251
+ }
10252
+ if (ext.start) {
10253
+ if (ext.level === "block") {
10254
+ if (extensions.startBlock) {
10255
+ extensions.startBlock.push(ext.start);
10256
+ } else {
10257
+ extensions.startBlock = [ext.start];
10258
+ }
10259
+ } else if (ext.level === "inline") {
10260
+ if (extensions.startInline) {
10261
+ extensions.startInline.push(ext.start);
10262
+ } else {
10263
+ extensions.startInline = [ext.start];
10264
+ }
10265
+ }
10266
+ }
10267
+ }
10268
+ if ("childTokens" in ext && ext.childTokens) {
10269
+ extensions.childTokens[ext.name] = ext.childTokens;
10270
+ }
10271
+ });
10272
+ opts.extensions = extensions;
10273
+ }
10274
+ if (pack.renderer) {
10275
+ const renderer = this.defaults.renderer || new _Renderer(this.defaults);
10276
+ for (const prop in pack.renderer) {
10277
+ if (!(prop in renderer)) {
10278
+ throw new Error(`renderer '${prop}' does not exist`);
10279
+ }
10280
+ if (["options", "parser"].includes(prop)) {
10281
+ continue;
10282
+ }
10283
+ const rendererProp = prop;
10284
+ let rendererFunc = pack.renderer[rendererProp];
10285
+ if (!pack.useNewRenderer) {
10286
+ rendererFunc = this.#convertRendererFunction(rendererFunc, rendererProp, renderer);
10287
+ }
10288
+ const prevRenderer = renderer[rendererProp];
10289
+ renderer[rendererProp] = (...args2) => {
10290
+ let ret = rendererFunc.apply(renderer, args2);
10291
+ if (ret === false) {
10292
+ ret = prevRenderer.apply(renderer, args2);
10293
+ }
10294
+ return ret || "";
10295
+ };
10296
+ }
10297
+ opts.renderer = renderer;
10298
+ }
10299
+ if (pack.tokenizer) {
10300
+ const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);
10301
+ for (const prop in pack.tokenizer) {
10302
+ if (!(prop in tokenizer)) {
10303
+ throw new Error(`tokenizer '${prop}' does not exist`);
10304
+ }
10305
+ if (["options", "rules", "lexer"].includes(prop)) {
10306
+ continue;
10307
+ }
10308
+ const tokenizerProp = prop;
10309
+ const tokenizerFunc = pack.tokenizer[tokenizerProp];
10310
+ const prevTokenizer = tokenizer[tokenizerProp];
10311
+ tokenizer[tokenizerProp] = (...args2) => {
10312
+ let ret = tokenizerFunc.apply(tokenizer, args2);
10313
+ if (ret === false) {
10314
+ ret = prevTokenizer.apply(tokenizer, args2);
10315
+ }
10316
+ return ret;
10317
+ };
10318
+ }
10319
+ opts.tokenizer = tokenizer;
10320
+ }
10321
+ if (pack.hooks) {
10322
+ const hooks = this.defaults.hooks || new _Hooks();
10323
+ for (const prop in pack.hooks) {
10324
+ if (!(prop in hooks)) {
10325
+ throw new Error(`hook '${prop}' does not exist`);
10326
+ }
10327
+ if (prop === "options") {
10328
+ continue;
10329
+ }
10330
+ const hooksProp = prop;
10331
+ const hooksFunc = pack.hooks[hooksProp];
10332
+ const prevHook = hooks[hooksProp];
10333
+ if (_Hooks.passThroughHooks.has(prop)) {
10334
+ hooks[hooksProp] = (arg) => {
10335
+ if (this.defaults.async) {
10336
+ return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => {
10337
+ return prevHook.call(hooks, ret2);
10338
+ });
10339
+ }
10340
+ const ret = hooksFunc.call(hooks, arg);
10341
+ return prevHook.call(hooks, ret);
10342
+ };
10343
+ } else {
10344
+ hooks[hooksProp] = (...args2) => {
10345
+ let ret = hooksFunc.apply(hooks, args2);
10346
+ if (ret === false) {
10347
+ ret = prevHook.apply(hooks, args2);
10348
+ }
10349
+ return ret;
10350
+ };
10351
+ }
10352
+ }
10353
+ opts.hooks = hooks;
10354
+ }
10355
+ if (pack.walkTokens) {
10356
+ const walkTokens2 = this.defaults.walkTokens;
10357
+ const packWalktokens = pack.walkTokens;
10358
+ opts.walkTokens = function(token) {
10359
+ let values = [];
10360
+ values.push(packWalktokens.call(this, token));
10361
+ if (walkTokens2) {
10362
+ values = values.concat(walkTokens2.call(this, token));
10363
+ }
10364
+ return values;
10365
+ };
10366
+ }
10367
+ this.defaults = { ...this.defaults, ...opts };
10368
+ });
10369
+ return this;
10370
+ }
10371
+ // TODO: Remove this in next major release
10372
+ #convertRendererFunction(func, prop, renderer) {
10373
+ switch (prop) {
10374
+ case "heading":
10375
+ return function(token) {
10376
+ if (!token.type || token.type !== prop) {
10377
+ return func.apply(this, arguments);
10378
+ }
10379
+ return func.call(this, renderer.parser.parseInline(token.tokens), token.depth, unescape(renderer.parser.parseInline(token.tokens, renderer.parser.textRenderer)));
10380
+ };
10381
+ case "code":
10382
+ return function(token) {
10383
+ if (!token.type || token.type !== prop) {
10384
+ return func.apply(this, arguments);
10385
+ }
10386
+ return func.call(this, token.text, token.lang, !!token.escaped);
10387
+ };
10388
+ case "table":
10389
+ return function(token) {
10390
+ if (!token.type || token.type !== prop) {
10391
+ return func.apply(this, arguments);
10392
+ }
10393
+ let header = "";
10394
+ let cell = "";
10395
+ for (let j = 0; j < token.header.length; j++) {
10396
+ cell += this.tablecell({
10397
+ text: token.header[j].text,
10398
+ tokens: token.header[j].tokens,
10399
+ header: true,
10400
+ align: token.align[j]
10401
+ });
10402
+ }
10403
+ header += this.tablerow({ text: cell });
10404
+ let body = "";
10405
+ for (let j = 0; j < token.rows.length; j++) {
10406
+ const row = token.rows[j];
10407
+ cell = "";
10408
+ for (let k = 0; k < row.length; k++) {
10409
+ cell += this.tablecell({
10410
+ text: row[k].text,
10411
+ tokens: row[k].tokens,
10412
+ header: false,
10413
+ align: token.align[k]
10414
+ });
10415
+ }
10416
+ body += this.tablerow({ text: cell });
10417
+ }
10418
+ return func.call(this, header, body);
10419
+ };
10420
+ case "blockquote":
10421
+ return function(token) {
10422
+ if (!token.type || token.type !== prop) {
10423
+ return func.apply(this, arguments);
10424
+ }
10425
+ const body = this.parser.parse(token.tokens);
10426
+ return func.call(this, body);
10427
+ };
10428
+ case "list":
10429
+ return function(token) {
10430
+ if (!token.type || token.type !== prop) {
10431
+ return func.apply(this, arguments);
10432
+ }
10433
+ const ordered = token.ordered;
10434
+ const start3 = token.start;
10435
+ const loose = token.loose;
10436
+ let body = "";
10437
+ for (let j = 0; j < token.items.length; j++) {
10438
+ const item = token.items[j];
10439
+ const checked = item.checked;
10440
+ const task = item.task;
10441
+ let itemBody = "";
10442
+ if (item.task) {
10443
+ const checkbox = this.checkbox({ checked: !!checked });
10444
+ if (loose) {
10445
+ if (item.tokens.length > 0 && item.tokens[0].type === "paragraph") {
10446
+ item.tokens[0].text = checkbox + " " + item.tokens[0].text;
10447
+ if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === "text") {
10448
+ item.tokens[0].tokens[0].text = checkbox + " " + item.tokens[0].tokens[0].text;
10449
+ }
10450
+ } else {
10451
+ item.tokens.unshift({
10452
+ type: "text",
10453
+ text: checkbox + " "
10454
+ });
10455
+ }
10456
+ } else {
10457
+ itemBody += checkbox + " ";
10458
+ }
10459
+ }
10460
+ itemBody += this.parser.parse(item.tokens, loose);
10461
+ body += this.listitem({
10462
+ type: "list_item",
10463
+ raw: itemBody,
10464
+ text: itemBody,
10465
+ task,
10466
+ checked: !!checked,
10467
+ loose,
10468
+ tokens: item.tokens
10469
+ });
10470
+ }
10471
+ return func.call(this, body, ordered, start3);
10472
+ };
10473
+ case "html":
10474
+ return function(token) {
10475
+ if (!token.type || token.type !== prop) {
10476
+ return func.apply(this, arguments);
10477
+ }
10478
+ return func.call(this, token.text, token.block);
10479
+ };
10480
+ case "paragraph":
10481
+ return function(token) {
10482
+ if (!token.type || token.type !== prop) {
10483
+ return func.apply(this, arguments);
10484
+ }
10485
+ return func.call(this, this.parser.parseInline(token.tokens));
10486
+ };
10487
+ case "escape":
10488
+ return function(token) {
10489
+ if (!token.type || token.type !== prop) {
10490
+ return func.apply(this, arguments);
10491
+ }
10492
+ return func.call(this, token.text);
10493
+ };
10494
+ case "link":
10495
+ return function(token) {
10496
+ if (!token.type || token.type !== prop) {
10497
+ return func.apply(this, arguments);
10498
+ }
10499
+ return func.call(this, token.href, token.title, this.parser.parseInline(token.tokens));
10500
+ };
10501
+ case "image":
10502
+ return function(token) {
10503
+ if (!token.type || token.type !== prop) {
10504
+ return func.apply(this, arguments);
10505
+ }
10506
+ return func.call(this, token.href, token.title, token.text);
10507
+ };
10508
+ case "strong":
10509
+ return function(token) {
10510
+ if (!token.type || token.type !== prop) {
10511
+ return func.apply(this, arguments);
10512
+ }
10513
+ return func.call(this, this.parser.parseInline(token.tokens));
10514
+ };
10515
+ case "em":
10516
+ return function(token) {
10517
+ if (!token.type || token.type !== prop) {
10518
+ return func.apply(this, arguments);
10519
+ }
10520
+ return func.call(this, this.parser.parseInline(token.tokens));
10521
+ };
10522
+ case "codespan":
10523
+ return function(token) {
10524
+ if (!token.type || token.type !== prop) {
10525
+ return func.apply(this, arguments);
10526
+ }
10527
+ return func.call(this, token.text);
10528
+ };
10529
+ case "del":
10530
+ return function(token) {
10531
+ if (!token.type || token.type !== prop) {
10532
+ return func.apply(this, arguments);
10533
+ }
10534
+ return func.call(this, this.parser.parseInline(token.tokens));
10535
+ };
10536
+ case "text":
10537
+ return function(token) {
10538
+ if (!token.type || token.type !== prop) {
10539
+ return func.apply(this, arguments);
10540
+ }
10541
+ return func.call(this, token.text);
10542
+ };
10543
+ }
10544
+ return func;
10545
+ }
10546
+ setOptions(opt) {
10547
+ this.defaults = { ...this.defaults, ...opt };
10548
+ return this;
10549
+ }
10550
+ lexer(src, options2) {
10551
+ return _Lexer.lex(src, options2 ?? this.defaults);
10552
+ }
10553
+ parser(tokens, options2) {
10554
+ return _Parser.parse(tokens, options2 ?? this.defaults);
10555
+ }
10556
+ #parseMarkdown(lexer2, parser2) {
10557
+ return (src, options2) => {
10558
+ const origOpt = { ...options2 };
10559
+ const opt = { ...this.defaults, ...origOpt };
10560
+ if (this.defaults.async === true && origOpt.async === false) {
10561
+ if (!opt.silent) {
10562
+ console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.");
10563
+ }
10564
+ opt.async = true;
10565
+ }
10566
+ const throwError = this.#onError(!!opt.silent, !!opt.async);
10567
+ if (typeof src === "undefined" || src === null) {
10568
+ return throwError(new Error("marked(): input parameter is undefined or null"));
10569
+ }
10570
+ if (typeof src !== "string") {
10571
+ return throwError(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected"));
10572
+ }
10573
+ if (opt.hooks) {
10574
+ opt.hooks.options = opt;
10575
+ }
10576
+ if (opt.async) {
10577
+ return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser2(tokens, opt)).then((html3) => opt.hooks ? opt.hooks.postprocess(html3) : html3).catch(throwError);
10578
+ }
10579
+ try {
10580
+ if (opt.hooks) {
10581
+ src = opt.hooks.preprocess(src);
10582
+ }
10583
+ let tokens = lexer2(src, opt);
10584
+ if (opt.hooks) {
10585
+ tokens = opt.hooks.processAllTokens(tokens);
10586
+ }
10587
+ if (opt.walkTokens) {
10588
+ this.walkTokens(tokens, opt.walkTokens);
10589
+ }
10590
+ let html3 = parser2(tokens, opt);
10591
+ if (opt.hooks) {
10592
+ html3 = opt.hooks.postprocess(html3);
10593
+ }
10594
+ return html3;
10595
+ } catch (e) {
10596
+ return throwError(e);
10597
+ }
10598
+ };
10599
+ }
10600
+ #onError(silent, async) {
10601
+ return (e) => {
10602
+ e.message += "\nPlease report this to https://github.com/markedjs/marked.";
10603
+ if (silent) {
10604
+ const msg = "<p>An error occurred:</p><pre>" + escape$1(e.message + "", true) + "</pre>";
10605
+ if (async) {
10606
+ return Promise.resolve(msg);
10607
+ }
10608
+ return msg;
10609
+ }
10610
+ if (async) {
10611
+ return Promise.reject(e);
10612
+ }
10613
+ throw e;
10614
+ };
10615
+ }
10616
+ };
10617
+ var markedInstance = new Marked();
10618
+ function marked(src, opt) {
10619
+ return markedInstance.parse(src, opt);
10620
+ }
10621
+ marked.options = marked.setOptions = function(options2) {
10622
+ markedInstance.setOptions(options2);
10623
+ marked.defaults = markedInstance.defaults;
10624
+ changeDefaults(marked.defaults);
10625
+ return marked;
10626
+ };
10627
+ marked.getDefaults = _getDefaults;
10628
+ marked.defaults = _defaults;
10629
+ marked.use = function(...args) {
10630
+ markedInstance.use(...args);
10631
+ marked.defaults = markedInstance.defaults;
10632
+ changeDefaults(marked.defaults);
10633
+ return marked;
10634
+ };
10635
+ marked.walkTokens = function(tokens, callback) {
10636
+ return markedInstance.walkTokens(tokens, callback);
10637
+ };
10638
+ marked.parseInline = markedInstance.parseInline;
10639
+ marked.Parser = _Parser;
10640
+ marked.parser = _Parser.parse;
10641
+ marked.Renderer = _Renderer;
10642
+ marked.TextRenderer = _TextRenderer;
10643
+ marked.Lexer = _Lexer;
10644
+ marked.lexer = _Lexer.lex;
10645
+ marked.Tokenizer = _Tokenizer;
10646
+ marked.Hooks = _Hooks;
10647
+ marked.parse = marked;
10648
+ var options = marked.options;
10649
+ var setOptions = marked.setOptions;
10650
+ var use = marked.use;
10651
+ var walkTokens = marked.walkTokens;
10652
+ var parseInline = marked.parseInline;
10653
+ var parser = _Parser.parse;
10654
+ var lexer = _Lexer.lex;
10655
+
7435
10656
  // src/js/controllers/easymde_controller.js
7436
10657
  var easymde_controller_default = class extends Controller {
7437
10658
  connect() {
7438
10659
  console.log(`easymde connected: ${this.element}`);
7439
- self.easyMDE = new EasyMDE({ element: this.element });
10660
+ self.easyMDE = new EasyMDE(this.#buildOptions());
10661
+ this.element.setAttribute("data-action", "turbo:morph-element->easymde#reconnect");
7440
10662
  }
7441
10663
  disconnect() {
7442
10664
  self.easyMDE.toTextArea();
7443
10665
  self.easyMDE = null;
7444
10666
  }
10667
+ reconnect() {
10668
+ this.disconnect();
10669
+ this.connect();
10670
+ }
10671
+ #buildOptions() {
10672
+ let options2 = {
10673
+ element: this.element,
10674
+ promptURLs: true,
10675
+ spellChecker: false,
10676
+ // Override the default preview renderer
10677
+ previewRender: (plainText) => {
10678
+ const cleanedText = purify.sanitize(plainText, {
10679
+ ALLOWED_TAGS: ["strong", "em", "sub", "sup", "details", "summary"],
10680
+ ALLOWED_ATTR: []
10681
+ });
10682
+ const cleanedHTML = marked(cleanedText);
10683
+ return purify.sanitize(cleanedHTML, { USE_PROFILES: { html: true } });
10684
+ }
10685
+ };
10686
+ if (this.element.attributes.id.value) {
10687
+ options2.autosave = {
10688
+ enabled: true,
10689
+ uniqueId: this.element.attributes.id.value,
10690
+ delay: 1e3
10691
+ };
10692
+ }
10693
+ return options2;
10694
+ }
7445
10695
  };
7446
10696
 
7447
10697
  // src/js/controllers/slim_select_controller.js
@@ -7451,11 +10701,16 @@
7451
10701
  self.slimSelect = new SlimSelect({
7452
10702
  select: this.element
7453
10703
  });
10704
+ this.element.setAttribute("data-action", "turbo:morph-element->slim-select#reconnect");
7454
10705
  }
7455
10706
  disconnect() {
7456
10707
  self.slimSelect.destroy();
7457
10708
  self.slimSelect = null;
7458
10709
  }
10710
+ reconnect() {
10711
+ this.disconnect();
10712
+ this.connect();
10713
+ }
7459
10714
  };
7460
10715
 
7461
10716
  // src/js/controllers/flatpickr_controller.js
@@ -7463,20 +10718,25 @@
7463
10718
  connect() {
7464
10719
  console.log(`flatpickr connected: ${this.element}`);
7465
10720
  self.picker = new flatpickr(this.element, this.#buildOptions());
10721
+ this.element.setAttribute("data-action", "turbo:morph-element->flatpickr#reconnect");
7466
10722
  }
7467
10723
  disconnect() {
7468
10724
  self.picker.destroy();
7469
10725
  self.picker = null;
7470
10726
  }
10727
+ reconnect() {
10728
+ this.disconnect();
10729
+ this.connect();
10730
+ }
7471
10731
  #buildOptions() {
7472
- let options = { altInput: true };
10732
+ let options2 = { altInput: true };
7473
10733
  if (this.element.attributes.type.value == "datetime-local") {
7474
- options.enableTime = true;
10734
+ options2.enableTime = true;
7475
10735
  } else if (this.element.attributes.type.value == "time") {
7476
- options.enableTime = true;
7477
- options.noCalendar = true;
10736
+ options2.enableTime = true;
10737
+ options2.noCalendar = true;
7478
10738
  }
7479
- return options;
10739
+ return options2;
7480
10740
  }
7481
10741
  };
7482
10742
 
@@ -7834,9 +11094,9 @@
7834
11094
  destinationElement.setAttribute(name, value);
7835
11095
  }
7836
11096
  }
7837
- function createDocumentFragment(html) {
11097
+ function createDocumentFragment(html3) {
7838
11098
  const template = document.createElement("template");
7839
- template.innerHTML = html;
11099
+ template.innerHTML = html3;
7840
11100
  return template.content;
7841
11101
  }
7842
11102
  function dispatch(eventName, { target, cancelable, detail } = {}) {
@@ -7869,8 +11129,8 @@
7869
11129
  function nextMicrotask() {
7870
11130
  return Promise.resolve();
7871
11131
  }
7872
- function parseHTMLDocument(html = "") {
7873
- return new DOMParser().parseFromString(html, "text/html");
11132
+ function parseHTMLDocument(html3 = "") {
11133
+ return new DOMParser().parseFromString(html3, "text/html");
7874
11134
  }
7875
11135
  function unindent(strings, ...values) {
7876
11136
  const lines = interpolate(strings, values).replace(/^\n/, "").split("\n");
@@ -7999,8 +11259,8 @@
7999
11259
  function findLinkFromClickTarget(target) {
8000
11260
  return findClosestRecursively(target, "a[href]:not([target^=_]):not([download])");
8001
11261
  }
8002
- function getLocationForLink(link) {
8003
- return expandURL(link.getAttribute("href") || "");
11262
+ function getLocationForLink(link2) {
11263
+ return expandURL(link2.getAttribute("href") || "");
8004
11264
  }
8005
11265
  function debounce3(fn2, delay) {
8006
11266
  let timeoutId = null;
@@ -8026,13 +11286,13 @@
8026
11286
  };
8027
11287
  var recentRequests = new LimitedSet(20);
8028
11288
  var nativeFetch = window.fetch;
8029
- function fetchWithTurboHeaders(url, options = {}) {
8030
- const modifiedHeaders = new Headers(options.headers || {});
11289
+ function fetchWithTurboHeaders(url, options2 = {}) {
11290
+ const modifiedHeaders = new Headers(options2.headers || {});
8031
11291
  const requestUID = uuid();
8032
11292
  recentRequests.add(requestUID);
8033
11293
  modifiedHeaders.append("X-Turbo-Request-Id", requestUID);
8034
11294
  return nativeFetch(url, {
8035
- ...options,
11295
+ ...options2,
8036
11296
  headers: modifiedHeaders
8037
11297
  });
8038
11298
  }
@@ -8225,14 +11485,14 @@
8225
11485
  }
8226
11486
  }
8227
11487
  function entriesExcludingFiles(requestBody) {
8228
- const entries = [];
11488
+ const entries2 = [];
8229
11489
  for (const [name, value] of requestBody) {
8230
11490
  if (value instanceof File)
8231
11491
  continue;
8232
11492
  else
8233
- entries.push([name, value]);
11493
+ entries2.push([name, value]);
8234
11494
  }
8235
- return entries;
11495
+ return entries2;
8236
11496
  }
8237
11497
  function mergeIntoURLSearchParams(url, requestBody) {
8238
11498
  const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));
@@ -8258,8 +11518,8 @@
8258
11518
  this.intersectionObserver.unobserve(this.element);
8259
11519
  }
8260
11520
  }
8261
- intersect = (entries) => {
8262
- const lastEntry = entries.slice(-1)[0];
11521
+ intersect = (entries2) => {
11522
+ const lastEntry = entries2.slice(-1)[0];
8263
11523
  if (lastEntry?.isIntersecting) {
8264
11524
  this.delegate.elementAppearedInViewport(this.element);
8265
11525
  }
@@ -8676,8 +11936,8 @@
8676
11936
  this.renderer = renderer;
8677
11937
  await this.prepareToRenderSnapshot(renderer);
8678
11938
  const renderInterception = new Promise((resolve) => this.#resolveInterceptionPromise = resolve);
8679
- const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };
8680
- const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);
11939
+ const options2 = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };
11940
+ const immediateRender = this.delegate.allowsImmediateRender(snapshot, options2);
8681
11941
  if (!immediateRender)
8682
11942
  await renderInterception;
8683
11943
  await this.renderSnapshot(renderer);
@@ -8793,12 +12053,12 @@
8793
12053
  clickBubbled = (event) => {
8794
12054
  if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {
8795
12055
  const target = event.composedPath && event.composedPath()[0] || event.target;
8796
- const link = findLinkFromClickTarget(target);
8797
- if (link && doesNotTargetIFrame(link)) {
8798
- const location2 = getLocationForLink(link);
8799
- if (this.delegate.willFollowLinkToLocation(link, location2, event)) {
12056
+ const link2 = findLinkFromClickTarget(target);
12057
+ if (link2 && doesNotTargetIFrame(link2)) {
12058
+ const location2 = getLocationForLink(link2);
12059
+ if (this.delegate.willFollowLinkToLocation(link2, location2, event)) {
8800
12060
  event.preventDefault();
8801
- this.delegate.followedLinkToLocation(link, location2);
12061
+ this.delegate.followedLinkToLocation(link2, location2);
8802
12062
  }
8803
12063
  }
8804
12064
  }
@@ -8819,17 +12079,17 @@
8819
12079
  this.linkInterceptor.stop();
8820
12080
  }
8821
12081
  // Link hover observer delegate
8822
- canPrefetchRequestToLocation(link, location2) {
12082
+ canPrefetchRequestToLocation(link2, location2) {
8823
12083
  return false;
8824
12084
  }
8825
- prefetchAndCacheRequestToLocation(link, location2) {
12085
+ prefetchAndCacheRequestToLocation(link2, location2) {
8826
12086
  return;
8827
12087
  }
8828
12088
  // Link click observer delegate
8829
- willFollowLinkToLocation(link, location2, originalEvent) {
8830
- return this.delegate.willSubmitFormLinkToLocation(link, location2, originalEvent) && (link.hasAttribute("data-turbo-method") || link.hasAttribute("data-turbo-stream"));
12089
+ willFollowLinkToLocation(link2, location2, originalEvent) {
12090
+ return this.delegate.willSubmitFormLinkToLocation(link2, location2, originalEvent) && (link2.hasAttribute("data-turbo-method") || link2.hasAttribute("data-turbo-stream"));
8831
12091
  }
8832
- followedLinkToLocation(link, location2) {
12092
+ followedLinkToLocation(link2, location2) {
8833
12093
  const form = document.createElement("form");
8834
12094
  const type = "hidden";
8835
12095
  for (const [name, value] of location2.searchParams) {
@@ -8839,22 +12099,22 @@
8839
12099
  form.setAttribute("data-turbo", "true");
8840
12100
  form.setAttribute("action", action.href);
8841
12101
  form.setAttribute("hidden", "");
8842
- const method = link.getAttribute("data-turbo-method");
12102
+ const method = link2.getAttribute("data-turbo-method");
8843
12103
  if (method)
8844
12104
  form.setAttribute("method", method);
8845
- const turboFrame = link.getAttribute("data-turbo-frame");
12105
+ const turboFrame = link2.getAttribute("data-turbo-frame");
8846
12106
  if (turboFrame)
8847
12107
  form.setAttribute("data-turbo-frame", turboFrame);
8848
- const turboAction = getVisitAction(link);
12108
+ const turboAction = getVisitAction(link2);
8849
12109
  if (turboAction)
8850
12110
  form.setAttribute("data-turbo-action", turboAction);
8851
- const turboConfirm = link.getAttribute("data-turbo-confirm");
12111
+ const turboConfirm = link2.getAttribute("data-turbo-confirm");
8852
12112
  if (turboConfirm)
8853
12113
  form.setAttribute("data-turbo-confirm", turboConfirm);
8854
- const turboStream = link.hasAttribute("data-turbo-stream");
12114
+ const turboStream = link2.hasAttribute("data-turbo-stream");
8855
12115
  if (turboStream)
8856
12116
  form.setAttribute("data-turbo-stream", "");
8857
- this.delegate.submittedFormLinkToLocation(link, location2, form);
12117
+ this.delegate.submittedFormLinkToLocation(link2, location2, form);
8858
12118
  document.body.appendChild(form);
8859
12119
  form.addEventListener("turbo:submit-end", () => form.remove(), { once: true });
8860
12120
  requestAnimationFrame(() => form.requestSubmit());
@@ -8891,8 +12151,8 @@
8891
12151
  permanentElement.replaceWith(placeholder);
8892
12152
  }
8893
12153
  replaceCurrentPermanentElementWithClone(permanentElement) {
8894
- const clone = permanentElement.cloneNode(true);
8895
- permanentElement.replaceWith(clone);
12154
+ const clone2 = permanentElement.cloneNode(true);
12155
+ permanentElement.replaceWith(clone2);
8896
12156
  }
8897
12157
  replacePlaceholderWithPermanentElement(permanentElement) {
8898
12158
  const placeholder = this.getPlaceholderById(permanentElement.id);
@@ -9014,10 +12274,10 @@
9014
12274
  scrollFrameIntoView() {
9015
12275
  if (this.currentElement.autoscroll || this.newElement.autoscroll) {
9016
12276
  const element = this.currentElement.firstElementChild;
9017
- const block = readScrollLogicalPosition(this.currentElement.getAttribute("data-autoscroll-block"), "end");
12277
+ const block2 = readScrollLogicalPosition(this.currentElement.getAttribute("data-autoscroll-block"), "end");
9018
12278
  const behavior = readScrollBehavior(this.currentElement.getAttribute("data-autoscroll-behavior"), "auto");
9019
12279
  if (element) {
9020
- element.scrollIntoView({ block, behavior });
12280
+ element.scrollIntoView({ block: block2, behavior });
9021
12281
  return true;
9022
12282
  }
9023
12283
  }
@@ -9238,8 +12498,8 @@
9238
12498
  return element;
9239
12499
  }
9240
12500
  var PageSnapshot = class _PageSnapshot extends Snapshot {
9241
- static fromHTMLString(html = "") {
9242
- return this.fromDocument(parseHTMLDocument(html));
12501
+ static fromHTMLString(html3 = "") {
12502
+ return this.fromDocument(parseHTMLDocument(html3));
9243
12503
  }
9244
12504
  static fromElement(element) {
9245
12505
  return this.fromDocument(element.ownerDocument);
@@ -9257,11 +12517,11 @@
9257
12517
  const selectElements = this.element.querySelectorAll("select");
9258
12518
  const clonedSelectElements = clonedElement.querySelectorAll("select");
9259
12519
  for (const [index, source] of selectElements.entries()) {
9260
- const clone = clonedSelectElements[index];
9261
- for (const option of clone.selectedOptions)
12520
+ const clone2 = clonedSelectElements[index];
12521
+ for (const option of clone2.selectedOptions)
9262
12522
  option.selected = false;
9263
12523
  for (const option of source.selectedOptions)
9264
- clone.options[option.index].selected = true;
12524
+ clone2.options[option.index].selected = true;
9265
12525
  }
9266
12526
  for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type="password"]')) {
9267
12527
  clonedPasswordInput.value = "";
@@ -9367,7 +12627,7 @@
9367
12627
  snapshotCached = false;
9368
12628
  state = VisitState.initialized;
9369
12629
  viewTransitioner = new ViewTransitioner();
9370
- constructor(delegate, location2, restorationIdentifier, options = {}) {
12630
+ constructor(delegate, location2, restorationIdentifier, options2 = {}) {
9371
12631
  this.delegate = delegate;
9372
12632
  this.location = location2;
9373
12633
  this.restorationIdentifier = restorationIdentifier || uuid();
@@ -9386,7 +12646,7 @@
9386
12646
  direction
9387
12647
  } = {
9388
12648
  ...defaultOptions,
9389
- ...options
12649
+ ...options2
9390
12650
  };
9391
12651
  this.action = action;
9392
12652
  this.historyChanged = historyChanged;
@@ -9709,9 +12969,9 @@
9709
12969
  constructor(session2) {
9710
12970
  this.session = session2;
9711
12971
  }
9712
- visitProposedToLocation(location2, options) {
12972
+ visitProposedToLocation(location2, options2) {
9713
12973
  if (locationIsVisitable(location2, this.navigator.rootLocation)) {
9714
- this.navigator.startVisit(location2, options?.restorationIdentifier || uuid(), options);
12974
+ this.navigator.startVisit(location2, options2?.restorationIdentifier || uuid(), options2);
9715
12975
  } else {
9716
12976
  window.location.href = location2.toString();
9717
12977
  }
@@ -10039,10 +13299,10 @@
10039
13299
  const target = event.target;
10040
13300
  const isLink = target.matches && target.matches("a[href]:not([target^=_]):not([download])");
10041
13301
  if (isLink && this.#isPrefetchable(target)) {
10042
- const link = target;
10043
- const location2 = getLocationForLink(link);
10044
- if (this.delegate.canPrefetchRequestToLocation(link, location2)) {
10045
- this.#prefetchedLink = link;
13302
+ const link2 = target;
13303
+ const location2 = getLocationForLink(link2);
13304
+ if (this.delegate.canPrefetchRequestToLocation(link2, location2)) {
13305
+ this.#prefetchedLink = link2;
10046
13306
  const fetchRequest = new FetchRequest(
10047
13307
  this,
10048
13308
  FetchMethod.get,
@@ -10072,10 +13332,10 @@
10072
13332
  }
10073
13333
  };
10074
13334
  prepareRequest(request) {
10075
- const link = request.target;
13335
+ const link2 = request.target;
10076
13336
  request.headers["X-Sec-Purpose"] = "prefetch";
10077
- const turboFrame = link.closest("turbo-frame");
10078
- const turboFrameTarget = link.getAttribute("data-turbo-frame") || turboFrame?.getAttribute("target") || turboFrame?.id;
13337
+ const turboFrame = link2.closest("turbo-frame");
13338
+ const turboFrameTarget = link2.getAttribute("data-turbo-frame") || turboFrame?.getAttribute("target") || turboFrame?.id;
10079
13339
  if (turboFrameTarget && turboFrameTarget !== "_top") {
10080
13340
  request.headers["Turbo-Frame"] = turboFrameTarget;
10081
13341
  }
@@ -10096,72 +13356,72 @@
10096
13356
  get #cacheTtl() {
10097
13357
  return Number(getMetaContent("turbo-prefetch-cache-time")) || cacheTtl;
10098
13358
  }
10099
- #isPrefetchable(link) {
10100
- const href = link.getAttribute("href");
13359
+ #isPrefetchable(link2) {
13360
+ const href = link2.getAttribute("href");
10101
13361
  if (!href)
10102
13362
  return false;
10103
- if (unfetchableLink(link))
13363
+ if (unfetchableLink(link2))
10104
13364
  return false;
10105
- if (linkToTheSamePage(link))
13365
+ if (linkToTheSamePage(link2))
10106
13366
  return false;
10107
- if (linkOptsOut(link))
13367
+ if (linkOptsOut(link2))
10108
13368
  return false;
10109
- if (nonSafeLink(link))
13369
+ if (nonSafeLink(link2))
10110
13370
  return false;
10111
- if (eventPrevented(link))
13371
+ if (eventPrevented(link2))
10112
13372
  return false;
10113
13373
  return true;
10114
13374
  }
10115
13375
  };
10116
- var unfetchableLink = (link) => {
10117
- return link.origin !== document.location.origin || !["http:", "https:"].includes(link.protocol) || link.hasAttribute("target");
13376
+ var unfetchableLink = (link2) => {
13377
+ return link2.origin !== document.location.origin || !["http:", "https:"].includes(link2.protocol) || link2.hasAttribute("target");
10118
13378
  };
10119
- var linkToTheSamePage = (link) => {
10120
- return link.pathname + link.search === document.location.pathname + document.location.search || link.href.startsWith("#");
13379
+ var linkToTheSamePage = (link2) => {
13380
+ return link2.pathname + link2.search === document.location.pathname + document.location.search || link2.href.startsWith("#");
10121
13381
  };
10122
- var linkOptsOut = (link) => {
10123
- if (link.getAttribute("data-turbo-prefetch") === "false")
13382
+ var linkOptsOut = (link2) => {
13383
+ if (link2.getAttribute("data-turbo-prefetch") === "false")
10124
13384
  return true;
10125
- if (link.getAttribute("data-turbo") === "false")
13385
+ if (link2.getAttribute("data-turbo") === "false")
10126
13386
  return true;
10127
- const turboPrefetchParent = findClosestRecursively(link, "[data-turbo-prefetch]");
13387
+ const turboPrefetchParent = findClosestRecursively(link2, "[data-turbo-prefetch]");
10128
13388
  if (turboPrefetchParent && turboPrefetchParent.getAttribute("data-turbo-prefetch") === "false")
10129
13389
  return true;
10130
13390
  return false;
10131
13391
  };
10132
- var nonSafeLink = (link) => {
10133
- const turboMethod = link.getAttribute("data-turbo-method");
13392
+ var nonSafeLink = (link2) => {
13393
+ const turboMethod = link2.getAttribute("data-turbo-method");
10134
13394
  if (turboMethod && turboMethod.toLowerCase() !== "get")
10135
13395
  return true;
10136
- if (isUJS(link))
13396
+ if (isUJS(link2))
10137
13397
  return true;
10138
- if (link.hasAttribute("data-turbo-confirm"))
13398
+ if (link2.hasAttribute("data-turbo-confirm"))
10139
13399
  return true;
10140
- if (link.hasAttribute("data-turbo-stream"))
13400
+ if (link2.hasAttribute("data-turbo-stream"))
10141
13401
  return true;
10142
13402
  return false;
10143
13403
  };
10144
- var isUJS = (link) => {
10145
- return link.hasAttribute("data-remote") || link.hasAttribute("data-behavior") || link.hasAttribute("data-confirm") || link.hasAttribute("data-method");
13404
+ var isUJS = (link2) => {
13405
+ return link2.hasAttribute("data-remote") || link2.hasAttribute("data-behavior") || link2.hasAttribute("data-confirm") || link2.hasAttribute("data-method");
10146
13406
  };
10147
- var eventPrevented = (link) => {
10148
- const event = dispatch("turbo:before-prefetch", { target: link, cancelable: true });
13407
+ var eventPrevented = (link2) => {
13408
+ const event = dispatch("turbo:before-prefetch", { target: link2, cancelable: true });
10149
13409
  return event.defaultPrevented;
10150
13410
  };
10151
13411
  var Navigator = class {
10152
13412
  constructor(delegate) {
10153
13413
  this.delegate = delegate;
10154
13414
  }
10155
- proposeVisit(location2, options = {}) {
10156
- if (this.delegate.allowsVisitingLocationWithAction(location2, options.action)) {
10157
- this.delegate.visitProposedToLocation(location2, options);
13415
+ proposeVisit(location2, options2 = {}) {
13416
+ if (this.delegate.allowsVisitingLocationWithAction(location2, options2.action)) {
13417
+ this.delegate.visitProposedToLocation(location2, options2);
10158
13418
  }
10159
13419
  }
10160
- startVisit(locatable, restorationIdentifier, options = {}) {
13420
+ startVisit(locatable, restorationIdentifier, options2 = {}) {
10161
13421
  this.stop();
10162
13422
  this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {
10163
13423
  referrer: this.location,
10164
- ...options
13424
+ ...options2
10165
13425
  });
10166
13426
  this.currentVisit.start();
10167
13427
  }
@@ -10476,13 +13736,13 @@
10476
13736
  }
10477
13737
  };
10478
13738
  async receiveMessageResponse(response) {
10479
- const html = await response.responseHTML;
10480
- if (html) {
10481
- this.receiveMessageHTML(html);
13739
+ const html3 = await response.responseHTML;
13740
+ if (html3) {
13741
+ this.receiveMessageHTML(html3);
10482
13742
  }
10483
13743
  }
10484
- receiveMessageHTML(html) {
10485
- this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));
13744
+ receiveMessageHTML(html3) {
13745
+ this.delegate.receivedMessageFromStream(StreamMessage.wrap(html3));
10486
13746
  }
10487
13747
  };
10488
13748
  function fetchResponseFromEvent(event) {
@@ -10930,10 +14190,10 @@
10930
14190
  return potentialSoftMatch;
10931
14191
  }
10932
14192
  function parseContent(newContent) {
10933
- let parser = new DOMParser();
14193
+ let parser2 = new DOMParser();
10934
14194
  let contentWithSvgsRemoved = newContent.replace(/<svg(\s[^>]*>|>)([\s\S]*?)<\/svg>/gim, "");
10935
14195
  if (contentWithSvgsRemoved.match(/<\/html>/) || contentWithSvgsRemoved.match(/<\/head>/) || contentWithSvgsRemoved.match(/<\/body>/)) {
10936
- let content = parser.parseFromString(newContent, "text/html");
14196
+ let content = parser2.parseFromString(newContent, "text/html");
10937
14197
  if (contentWithSvgsRemoved.match(/<\/html>/)) {
10938
14198
  content.generatedByIdiomorph = true;
10939
14199
  return content;
@@ -10947,7 +14207,7 @@
10947
14207
  }
10948
14208
  }
10949
14209
  } else {
10950
- let responseDoc = parser.parseFromString("<body><template>" + newContent + "</template></body>", "text/html");
14210
+ let responseDoc = parser2.parseFromString("<body><template>" + newContent + "</template></body>", "text/html");
10951
14211
  let content = responseDoc.body.querySelector("template").content;
10952
14212
  content.generatedByIdiomorph = true;
10953
14213
  return content;
@@ -11449,18 +14709,18 @@
11449
14709
  document.removeEventListener("DOMContentLoaded", this.#preloadAll);
11450
14710
  }
11451
14711
  preloadOnLoadLinksForView(element) {
11452
- for (const link of element.querySelectorAll(this.selector)) {
11453
- if (this.delegate.shouldPreloadLink(link)) {
11454
- this.preloadURL(link);
14712
+ for (const link2 of element.querySelectorAll(this.selector)) {
14713
+ if (this.delegate.shouldPreloadLink(link2)) {
14714
+ this.preloadURL(link2);
11455
14715
  }
11456
14716
  }
11457
14717
  }
11458
- async preloadURL(link) {
11459
- const location2 = new URL(link.href);
14718
+ async preloadURL(link2) {
14719
+ const location2 = new URL(link2.href);
11460
14720
  if (this.snapshotCache.has(location2)) {
11461
14721
  return;
11462
14722
  }
11463
- const fetchRequest = new FetchRequest(this, FetchMethod.get, location2, new URLSearchParams(), link);
14723
+ const fetchRequest = new FetchRequest(this, FetchMethod.get, location2, new URLSearchParams(), link2);
11464
14724
  await fetchRequest.perform();
11465
14725
  }
11466
14726
  // Fetch request delegate
@@ -11576,14 +14836,14 @@
11576
14836
  registerAdapter(adapter) {
11577
14837
  this.adapter = adapter;
11578
14838
  }
11579
- visit(location2, options = {}) {
11580
- const frameElement = options.frame ? document.getElementById(options.frame) : null;
14839
+ visit(location2, options2 = {}) {
14840
+ const frameElement = options2.frame ? document.getElementById(options2.frame) : null;
11581
14841
  if (frameElement instanceof FrameElement) {
11582
- const action = options.action || getVisitAction(frameElement);
14842
+ const action = options2.action || getVisitAction(frameElement);
11583
14843
  frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);
11584
14844
  frameElement.src = location2.toString();
11585
14845
  } else {
11586
- this.navigator.proposeVisit(expandURL(location2), options);
14846
+ this.navigator.proposeVisit(expandURL(location2), options2);
11587
14847
  }
11588
14848
  }
11589
14849
  refresh(url, requestId) {
@@ -11655,31 +14915,31 @@
11655
14915
  this.history.updateRestorationData({ scrollPosition: position });
11656
14916
  }
11657
14917
  // Form click observer delegate
11658
- willSubmitFormLinkToLocation(link, location2) {
11659
- return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation);
14918
+ willSubmitFormLinkToLocation(link2, location2) {
14919
+ return this.elementIsNavigatable(link2) && locationIsVisitable(location2, this.snapshot.rootLocation);
11660
14920
  }
11661
14921
  submittedFormLinkToLocation() {
11662
14922
  }
11663
14923
  // Link hover observer delegate
11664
- canPrefetchRequestToLocation(link, location2) {
11665
- return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation);
14924
+ canPrefetchRequestToLocation(link2, location2) {
14925
+ return this.elementIsNavigatable(link2) && locationIsVisitable(location2, this.snapshot.rootLocation);
11666
14926
  }
11667
14927
  // Link click observer delegate
11668
- willFollowLinkToLocation(link, location2, event) {
11669
- return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location2, event);
14928
+ willFollowLinkToLocation(link2, location2, event) {
14929
+ return this.elementIsNavigatable(link2) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link2, location2, event);
11670
14930
  }
11671
- followedLinkToLocation(link, location2) {
11672
- const action = this.getActionForLink(link);
11673
- const acceptsStreamResponse = link.hasAttribute("data-turbo-stream");
14931
+ followedLinkToLocation(link2, location2) {
14932
+ const action = this.getActionForLink(link2);
14933
+ const acceptsStreamResponse = link2.hasAttribute("data-turbo-stream");
11674
14934
  this.visit(location2.href, { action, acceptsStreamResponse });
11675
14935
  }
11676
14936
  // Navigator delegate
11677
14937
  allowsVisitingLocationWithAction(location2, action) {
11678
14938
  return this.locationWithActionIsSamePage(location2, action) || this.applicationAllowsVisitingLocation(location2);
11679
14939
  }
11680
- visitProposedToLocation(location2, options) {
14940
+ visitProposedToLocation(location2, options2) {
11681
14941
  extendURLWithDeprecatedProperties(location2);
11682
- this.adapter.visitProposedToLocation(location2, options);
14942
+ this.adapter.visitProposedToLocation(location2, options2);
11683
14943
  }
11684
14944
  // Visit delegate
11685
14945
  visitStarted(visit2) {
@@ -11732,8 +14992,8 @@
11732
14992
  this.notifyApplicationBeforeCachingSnapshot();
11733
14993
  }
11734
14994
  }
11735
- allowsImmediateRender({ element }, options) {
11736
- const event = this.notifyApplicationBeforeRender(element, options);
14995
+ allowsImmediateRender({ element }, options2) {
14996
+ const event = this.notifyApplicationBeforeRender(element, options2);
11737
14997
  const {
11738
14998
  defaultPrevented,
11739
14999
  detail: { render }
@@ -11761,17 +15021,17 @@
11761
15021
  this.notifyApplicationAfterFrameRender(fetchResponse, frame);
11762
15022
  }
11763
15023
  // Application events
11764
- applicationAllowsFollowingLinkToLocation(link, location2, ev) {
11765
- const event = this.notifyApplicationAfterClickingLinkToLocation(link, location2, ev);
15024
+ applicationAllowsFollowingLinkToLocation(link2, location2, ev) {
15025
+ const event = this.notifyApplicationAfterClickingLinkToLocation(link2, location2, ev);
11766
15026
  return !event.defaultPrevented;
11767
15027
  }
11768
15028
  applicationAllowsVisitingLocation(location2) {
11769
15029
  const event = this.notifyApplicationBeforeVisitingLocation(location2);
11770
15030
  return !event.defaultPrevented;
11771
15031
  }
11772
- notifyApplicationAfterClickingLinkToLocation(link, location2, event) {
15032
+ notifyApplicationAfterClickingLinkToLocation(link2, location2, event) {
11773
15033
  return dispatch("turbo:click", {
11774
- target: link,
15034
+ target: link2,
11775
15035
  detail: { url: location2.href, originalEvent: event },
11776
15036
  cancelable: true
11777
15037
  });
@@ -11788,9 +15048,9 @@
11788
15048
  notifyApplicationBeforeCachingSnapshot() {
11789
15049
  return dispatch("turbo:before-cache");
11790
15050
  }
11791
- notifyApplicationBeforeRender(newBody, options) {
15051
+ notifyApplicationBeforeRender(newBody, options2) {
11792
15052
  return dispatch("turbo:before-render", {
11793
- detail: { newBody, ...options },
15053
+ detail: { newBody, ...options2 },
11794
15054
  cancelable: true
11795
15055
  });
11796
15056
  }
@@ -11851,8 +15111,8 @@
11851
15111
  }
11852
15112
  }
11853
15113
  // Private
11854
- getActionForLink(link) {
11855
- return getVisitAction(link) || "advance";
15114
+ getActionForLink(link2) {
15115
+ return getVisitAction(link2) || "advance";
11856
15116
  }
11857
15117
  get snapshot() {
11858
15118
  return this.view.snapshot;
@@ -11876,8 +15136,8 @@
11876
15136
  function registerAdapter(adapter) {
11877
15137
  session.registerAdapter(adapter);
11878
15138
  }
11879
- function visit(location2, options) {
11880
- session.visit(location2, options);
15139
+ function visit(location2, options2) {
15140
+ session.visit(location2, options2);
11881
15141
  }
11882
15142
  function connectStreamSource(source) {
11883
15143
  session.connectStreamSource(source);
@@ -12009,9 +15269,9 @@
12009
15269
  this.sourceURL = fetchResponse.response.url;
12010
15270
  }
12011
15271
  try {
12012
- const html = await fetchResponse.responseHTML;
12013
- if (html) {
12014
- const document2 = parseHTMLDocument(html);
15272
+ const html3 = await fetchResponse.responseHTML;
15273
+ if (html3) {
15274
+ const document2 = parseHTMLDocument(html3);
12015
15275
  const pageSnapshot = PageSnapshot.fromDocument(document2);
12016
15276
  if (pageSnapshot.isVisitable) {
12017
15277
  await this.#loadFrameResponse(fetchResponse, document2);
@@ -12029,11 +15289,11 @@
12029
15289
  this.#loadSourceURL();
12030
15290
  }
12031
15291
  // Form link click observer delegate
12032
- willSubmitFormLinkToLocation(link) {
12033
- return this.#shouldInterceptNavigation(link);
15292
+ willSubmitFormLinkToLocation(link2) {
15293
+ return this.#shouldInterceptNavigation(link2);
12034
15294
  }
12035
- submittedFormLinkToLocation(link, _location, form) {
12036
- const frame = this.#findFrameElement(link);
15295
+ submittedFormLinkToLocation(link2, _location, form) {
15296
+ const frame = this.#findFrameElement(link2);
12037
15297
  if (frame)
12038
15298
  form.setAttribute("data-turbo-frame", frame.id);
12039
15299
  }
@@ -12108,10 +15368,10 @@
12108
15368
  clearBusyState(formElement, this.#findFrameElement(formElement));
12109
15369
  }
12110
15370
  // View delegate
12111
- allowsImmediateRender({ element: newFrame }, options) {
15371
+ allowsImmediateRender({ element: newFrame }, options2) {
12112
15372
  const event = dispatch("turbo:before-frame-render", {
12113
15373
  target: this.element,
12114
- detail: { newFrame, ...options },
15374
+ detail: { newFrame, ...options2 },
12115
15375
  cancelable: true
12116
15376
  });
12117
15377
  const {
@@ -12190,7 +15450,7 @@
12190
15450
  const { statusCode, redirected } = fetchResponse;
12191
15451
  const responseHTML = await fetchResponse.responseHTML;
12192
15452
  const response = { statusCode, redirected, responseHTML };
12193
- const options = {
15453
+ const options2 = {
12194
15454
  response,
12195
15455
  visitCachedSnapshot,
12196
15456
  willRender: false,
@@ -12199,8 +15459,8 @@
12199
15459
  snapshot: pageSnapshot
12200
15460
  };
12201
15461
  if (this.action)
12202
- options.action = this.action;
12203
- session.visit(frame.src, options);
15462
+ options2.action = this.action;
15463
+ session.visit(frame.src, options2);
12204
15464
  }
12205
15465
  };
12206
15466
  }
@@ -12220,11 +15480,11 @@
12220
15480
  #willHandleFrameMissingFromResponse(fetchResponse) {
12221
15481
  this.element.setAttribute("complete", "");
12222
15482
  const response = fetchResponse.response;
12223
- const visit2 = async (url, options) => {
15483
+ const visit2 = async (url, options2) => {
12224
15484
  if (url instanceof Response) {
12225
15485
  this.#visitResponse(url);
12226
15486
  } else {
12227
- session.visit(url, options);
15487
+ session.visit(url, options2);
12228
15488
  }
12229
15489
  };
12230
15490
  const event = dispatch("turbo:frame-missing", {
@@ -12640,6 +15900,9 @@
12640
15900
  })();
12641
15901
  /*! Bundled license information:
12642
15902
 
15903
+ dompurify/dist/purify.es.mjs:
15904
+ (*! @license DOMPurify 3.2.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.2/LICENSE *)
15905
+
12643
15906
  @hotwired/turbo/dist/turbo.es2017-esm.js:
12644
15907
  (*!
12645
15908
  Turbo 8.0.4