videomail-client 15.11.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10972,7 +10972,7 @@ var __webpack_exports__ = {};
10972
10972
  var client = __webpack_require__("Q");
10973
10973
  var client_default = /*#__PURE__*/ __webpack_require__.n(client);
10974
10974
  var package_namespaceObject = {
10975
- rE: "15.11.0"
10975
+ rE: "16.0.0"
10976
10976
  };
10977
10977
  function isAudioEnabled(options) {
10978
10978
  return Boolean(options.audio.enabled);
@@ -15099,6 +15099,7 @@ var __webpack_exports__ = {};
15099
15099
  this.options.logger.debug(`Form: doTheSubmit(${string_pretty(e)})`);
15100
15100
  e.preventDefault();
15101
15101
  } else this.options.logger.debug("Form: doTheSubmit()");
15102
+ const hasHostAction = this.formElement.hasAttribute("action");
15102
15103
  const url = null != (_this_formElement_getAttribute = this.formElement.getAttribute("action")) ? _this_formElement_getAttribute : this.options.apiUrl;
15103
15104
  const method = this.formElement.getAttribute("method");
15104
15105
  let chosenMethod;
@@ -15112,7 +15113,7 @@ var __webpack_exports__ = {};
15112
15113
  default:
15113
15114
  chosenMethod = FormMethod.POST;
15114
15115
  }
15115
- if (this.container.hasElement()) yield this.container.submitAll(this.getData(), chosenMethod, url);
15116
+ if (this.container.hasElement()) yield this.container.submitAll(this.getData(), chosenMethod, url, hasHostAction);
15116
15117
  return false;
15117
15118
  }).call(this);
15118
15119
  }
@@ -15461,7 +15462,7 @@ var __webpack_exports__ = {};
15461
15462
  audio: {
15462
15463
  enabled: false,
15463
15464
  switch: false,
15464
- volume: 0.2,
15465
+ volume: 1,
15465
15466
  bufferSize: "auto"
15466
15467
  },
15467
15468
  video: {
@@ -15624,7 +15625,7 @@ var __webpack_exports__ = {};
15624
15625
  main.A && main.A.locals && main.A.locals;
15625
15626
  var document_visibility = __webpack_require__("xF");
15626
15627
  var document_visibility_default = /*#__PURE__*/ __webpack_require__.n(document_visibility);
15627
- /*! @license DOMPurify 3.4.16 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.16/LICENSE */ function _OverloadYield(e, d) {
15628
+ /*! @license DOMPurify 3.4.17 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.17/LICENSE */ function _OverloadYield(e, d) {
15628
15629
  this.v = e, this.k = d;
15629
15630
  }
15630
15631
  function _arrayLikeToArray(r, a) {
@@ -15746,9 +15747,12 @@ var __webpack_exports__ = {};
15746
15747
  const arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
15747
15748
  const arrayPop = unapply(Array.prototype.pop);
15748
15749
  const arrayPush = unapply(Array.prototype.push);
15749
- Array.prototype.slice;
15750
+ const arraySlice = unapply(Array.prototype.slice);
15750
15751
  const arraySplice = unapply(Array.prototype.splice);
15751
15752
  const arrayIsArray = Array.isArray;
15753
+ const setCreate = unconstruct(Set);
15754
+ const setAdd = unapply(Set.prototype.add);
15755
+ const setHas = unapply(Set.prototype.has);
15752
15756
  const stringToLowerCase = unapply(String.prototype.toLowerCase);
15753
15757
  const stringToString = unapply(String.prototype.toString);
15754
15758
  const stringMatch = unapply(String.prototype.match);
@@ -15854,6 +15858,14 @@ var __webpack_exports__ = {};
15854
15858
  }
15855
15859
  return fallbackValue;
15856
15860
  }
15861
+ function lookupAccessor(object, prop) {
15862
+ while(null !== object){
15863
+ const desc = getOwnPropertyDescriptor(object, prop);
15864
+ if (desc) return desc.get ? unapply(desc.get) : null;
15865
+ object = getPrototypeOf(object);
15866
+ }
15867
+ return null;
15868
+ }
15857
15869
  function isRegex(value) {
15858
15870
  try {
15859
15871
  regExpTest(value, "");
@@ -16540,7 +16552,7 @@ var __webpack_exports__ = {};
16540
16552
  documentFragment: 11,
16541
16553
  notation: 12
16542
16554
  };
16543
- const LITERAL_TEXT_ELEMENT_NAMES = [
16555
+ const LITERAL_TEXT_ELEMENTS = purify_es_freeze(addToSet({}, [
16544
16556
  "style",
16545
16557
  "script",
16546
16558
  "xmp",
@@ -16549,15 +16561,7 @@ var __webpack_exports__ = {};
16549
16561
  "noframes",
16550
16562
  "plaintext",
16551
16563
  "noscript"
16552
- ];
16553
- const LITERAL_TEXT_ELEMENTS = purify_es_freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));
16554
- const LITERAL_TEXT_CLOSE = function() {
16555
- const map = {};
16556
- arrayForEach(LITERAL_TEXT_ELEMENT_NAMES, (name)=>{
16557
- map[name] = purify_es_seal(new RegExp("</" + name + "(?=[\\t\\n\\f\\r />])", "i"));
16558
- });
16559
- return purify_es_freeze(map);
16560
- }();
16564
+ ]));
16561
16565
  const purify_es_getGlobal = function() {
16562
16566
  return "u" < typeof window ? null : window;
16563
16567
  };
@@ -16604,7 +16608,7 @@ var __webpack_exports__ = {};
16604
16608
  function createDOMPurify() {
16605
16609
  let window1 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : purify_es_getGlobal();
16606
16610
  const DOMPurify = (root)=>createDOMPurify(root);
16607
- DOMPurify.version = "3.4.16";
16611
+ DOMPurify.version = "3.4.17";
16608
16612
  DOMPurify.removed = [];
16609
16613
  if (!window1 || !window1.document || window1.document.nodeType !== NODE_TYPE.document || !window1.Element) {
16610
16614
  DOMPurify.isSupported = false;
@@ -16636,6 +16640,10 @@ var __webpack_exports__ = {};
16636
16640
  const _readNodeName = function(node) {
16637
16641
  return getNodeName ? getNodeName(node) : node.nodeName;
16638
16642
  };
16643
+ const getNamespaceURI = lookupAccessor(ElementPrototype, "namespaceURI");
16644
+ const _readNamespaceURI = function(element) {
16645
+ return getNamespaceURI ? getNamespaceURI(element) : element.namespaceURI;
16646
+ };
16639
16647
  if ("function" == typeof HTMLTemplateElement) {
16640
16648
  const template = document1.createElement("template");
16641
16649
  if (template.content && template.content.ownerDocument) document1 = template.content.ownerDocument;
@@ -16749,6 +16757,7 @@ var __webpack_exports__ = {};
16749
16757
  const SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
16750
16758
  let KEEP_CONTENT = true;
16751
16759
  let IN_PLACE = false;
16760
+ let IN_PLACE_VISITED = null;
16752
16761
  let USE_PROFILES = {};
16753
16762
  let FORBID_CONTENTS = null;
16754
16763
  const DEFAULT_FORBID_CONTENTS = addToSet({}, [
@@ -17009,18 +17018,27 @@ var __webpack_exports__ = {};
17009
17018
  return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
17010
17019
  };
17011
17020
  const _checkValidNamespace = function(element) {
17012
- let parent = getParentNode(element);
17013
- if (!parent || !parent.tagName) parent = {
17014
- namespaceURI: NAMESPACE,
17015
- tagName: "template"
17016
- };
17017
- const tagName = stringToLowerCase(element.tagName);
17018
- const parentTagName = stringToLowerCase(parent.tagName);
17019
- if (!ALLOWED_NAMESPACES[element.namespaceURI]) return false;
17020
- if (element.namespaceURI === SVG_NAMESPACE) return _checkSvgNamespace(tagName, parent, parentTagName);
17021
- if (element.namespaceURI === MATHML_NAMESPACE) return _checkMathMlNamespace(tagName, parent, parentTagName);
17022
- if (element.namespaceURI === HTML_NAMESPACE) return _checkHtmlNamespace(tagName, parent, parentTagName);
17023
- if ("application/xhtml+xml" === PARSER_MEDIA_TYPE && ALLOWED_NAMESPACES[element.namespaceURI]) return true;
17021
+ const elementNamespace = _readNamespaceURI(element);
17022
+ const tagName = stringToLowerCase(_readNodeName(element));
17023
+ const parentNode = getParentNode(element);
17024
+ let parent;
17025
+ let parentTagName;
17026
+ if (parentNode && _readNodeType(parentNode) === NODE_TYPE.element) {
17027
+ parent = {
17028
+ namespaceURI: _readNamespaceURI(parentNode)
17029
+ };
17030
+ parentTagName = stringToLowerCase(_readNodeName(parentNode));
17031
+ } else {
17032
+ parent = {
17033
+ namespaceURI: NAMESPACE
17034
+ };
17035
+ parentTagName = "template";
17036
+ }
17037
+ if (!ALLOWED_NAMESPACES[elementNamespace]) return false;
17038
+ if (elementNamespace === SVG_NAMESPACE) return _checkSvgNamespace(tagName, parent, parentTagName);
17039
+ if (elementNamespace === MATHML_NAMESPACE) return _checkMathMlNamespace(tagName, parent, parentTagName);
17040
+ if (elementNamespace === HTML_NAMESPACE) return _checkHtmlNamespace(tagName, parent, parentTagName);
17041
+ if ("application/xhtml+xml" === PARSER_MEDIA_TYPE && ALLOWED_NAMESPACES[elementNamespace]) return true;
17024
17042
  return false;
17025
17043
  };
17026
17044
  const _forceRemove = function(node) {
@@ -17046,18 +17064,12 @@ var __webpack_exports__ = {};
17046
17064
  const _neutralizeRoot = function(root) {
17047
17065
  _neutralizeSubtree(root);
17048
17066
  const childNodes = getChildNodes(root);
17049
- if (childNodes) {
17050
- const snapshot = [];
17051
- arrayForEach(childNodes, (child)=>{
17052
- arrayPush(snapshot, child);
17053
- });
17054
- arrayForEach(snapshot, (child)=>{
17055
- try {
17056
- remove(child);
17057
- } catch (_) {}
17058
- });
17059
- }
17060
- const attributes = getAttributes(root);
17067
+ if (childNodes) arrayForEach(arraySlice(childNodes), (child)=>{
17068
+ try {
17069
+ remove(child);
17070
+ } catch (_) {}
17071
+ });
17072
+ const attributes = _readNodeType(root) === NODE_TYPE.element ? getAttributes(root) : null;
17061
17073
  if (attributes) for(let i = attributes.length - 1; i >= 0; --i){
17062
17074
  const attribute = attributes[i];
17063
17075
  const name = attribute && attribute.name;
@@ -17098,17 +17110,98 @@ var __webpack_exports__ = {};
17098
17110
  if ("string" == typeof name && !ALLOWED_ATTR[transformCaseFunc(name)]) _stripAttributeNode(element, attribute, name);
17099
17111
  }
17100
17112
  };
17101
- const _neutralizeSubtree = function(root) {
17113
+ const _walkTree = function(root, visit) {
17114
+ let intoShadow = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
17102
17115
  const stack = [
17103
17116
  root
17104
17117
  ];
17105
17118
  while(stack.length > 0){
17106
17119
  const node = stack.pop();
17107
- if (_readNodeType(node) === NODE_TYPE.element) _stripDisallowedAttributes(node);
17120
+ if (false === visit(node)) continue;
17121
+ if (intoShadow && _readNodeType(node) === NODE_TYPE.element) {
17122
+ const shadowRoot = getShadowRoot(node);
17123
+ if (_isDocumentFragment(shadowRoot)) stack.push(shadowRoot);
17124
+ }
17108
17125
  const childNodes = getChildNodes(node);
17109
17126
  if (childNodes) for(let i = childNodes.length - 1; i >= 0; --i)stack.push(childNodes[i]);
17110
17127
  }
17111
17128
  };
17129
+ const _neutralizeSubtree = function(root) {
17130
+ _walkTree(root, (node)=>{
17131
+ if (_readNodeType(node) === NODE_TYPE.element) _stripDisallowedAttributes(node);
17132
+ });
17133
+ };
17134
+ const _collectLiveNodes = function(root) {
17135
+ const nodes = [];
17136
+ _walkTree(root, (node)=>{
17137
+ nodes.push(node);
17138
+ }, true);
17139
+ return nodes;
17140
+ };
17141
+ const _neutralizeEscapedElements = function(root, before) {
17142
+ const reachable = setCreate();
17143
+ arrayForEach(_collectLiveNodes(root), (node)=>{
17144
+ if (_readNodeType(node) === NODE_TYPE.element) setAdd(reachable, node);
17145
+ });
17146
+ arrayForEach(before, (node)=>{
17147
+ if (_readNodeType(node) === NODE_TYPE.element && !setHas(reachable, node)) _stripDisallowedAttributes(node);
17148
+ });
17149
+ };
17150
+ const _neutralizeDiscarded = function(root, before) {
17151
+ let rootRemoved = false;
17152
+ arrayForEach(DOMPurify.removed, (entry)=>{
17153
+ if (entry.element) {
17154
+ rootRemoved = rootRemoved || entry.element === root;
17155
+ _neutralizeSubtree(entry.element);
17156
+ }
17157
+ });
17158
+ _neutralizeEscapedElements(root, before);
17159
+ return rootRemoved;
17160
+ };
17161
+ const MAX_UNVISITED_ROUNDS = 8;
17162
+ const _sanitizeUnvisitedNodes = function(root, before) {
17163
+ const visited = IN_PLACE_VISITED;
17164
+ let original = null;
17165
+ const getOriginal = ()=>{
17166
+ if (!original) {
17167
+ original = setCreate();
17168
+ arrayForEach(before, (beforeNode)=>{
17169
+ setAdd(original, beforeNode);
17170
+ });
17171
+ }
17172
+ return original;
17173
+ };
17174
+ for(let round = 0;; round++){
17175
+ const live = _collectLiveNodes(root);
17176
+ const containers = [
17177
+ root
17178
+ ];
17179
+ let pending = false;
17180
+ arrayForEach(live, (node)=>{
17181
+ if (_readNodeType(node) === NODE_TYPE.documentFragment) arrayPush(containers, node);
17182
+ else if (!pending && !setHas(visited, node)) pending = setHas(getOriginal(), node);
17183
+ });
17184
+ if (!pending) return;
17185
+ if (round >= MAX_UNVISITED_ROUNDS) throw typeErrorCreate("the tree kept changing during in-place sanitization; refusing to return it");
17186
+ arrayForEach(containers, (container, index)=>{
17187
+ _sanitizeUnvisitedIn(container, index > 0, root, getOriginal());
17188
+ });
17189
+ }
17190
+ };
17191
+ const _sanitizeUnvisitedIn = function(container, inShadow, root, original) {
17192
+ const iterator = _createNodeIterator(container);
17193
+ let node;
17194
+ while(node = iterator.nextNode()){
17195
+ if (!setHas(original, node) || setHas(IN_PLACE_VISITED, node)) continue;
17196
+ if (inShadow) _executeHooks(hooks.uponSanitizeShadowNode, node, null);
17197
+ _sanitizeElements(node, root);
17198
+ _sanitizeAttributes(node, root);
17199
+ if (_isDocumentFragment(node.content)) _sanitizeShadowDOM2(node.content);
17200
+ }
17201
+ };
17202
+ const _markVisited = function(node) {
17203
+ if (IN_PLACE_VISITED) setAdd(IN_PLACE_VISITED, node);
17204
+ };
17112
17205
  const _isPatchLinkageAttribute = function(lcName, lcTag) {
17113
17206
  if (!SAFE_FOR_XML) return false;
17114
17207
  if ("patchsrc" === lcName) return true;
@@ -17116,17 +17209,13 @@ var __webpack_exports__ = {};
17116
17209
  };
17117
17210
  const _neutralizePatchLinkage = function(root) {
17118
17211
  if (!SAFE_FOR_XML) return;
17119
- const stack = [
17120
- root
17121
- ];
17122
- while(stack.length > 0){
17123
- const node = stack.pop();
17212
+ _walkTree(root, (node)=>{
17124
17213
  const nodeType = _readNodeType(node);
17125
17214
  if (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {
17126
17215
  try {
17127
17216
  remove(node);
17128
17217
  } catch (_) {}
17129
- continue;
17218
+ return false;
17130
17219
  }
17131
17220
  if (nodeType === NODE_TYPE.element) {
17132
17221
  const element = node;
@@ -17136,9 +17225,8 @@ var __webpack_exports__ = {};
17136
17225
  if (element.hasAttribute && element.hasAttribute("for") && _isPatchLinkageAttribute("for", lcTag)) element.removeAttribute("for");
17137
17226
  } catch (_) {}
17138
17227
  }
17139
- const childNodes = getChildNodes(node);
17140
- if (childNodes) for(let i = childNodes.length - 1; i >= 0; --i)stack.push(childNodes[i]);
17141
- }
17228
+ return true;
17229
+ });
17142
17230
  };
17143
17231
  const _initDocument = function(dirty) {
17144
17232
  let doc = null;
@@ -17176,6 +17264,13 @@ var __webpack_exports__ = {};
17176
17264
  };
17177
17265
  const _scrubTemplateExpressions2 = function(node) {
17178
17266
  var _node$querySelectorAl;
17267
+ _scrubOwnCharacterData(node);
17268
+ const templates = null == (_node$querySelectorAl = node.querySelectorAll) ? void 0 : _node$querySelectorAl.call(node, "template");
17269
+ if (templates) arrayForEach(templates, (tmpl)=>{
17270
+ if (_isDocumentFragment(tmpl.content)) _scrubTemplateExpressions2(tmpl.content);
17271
+ });
17272
+ };
17273
+ const _scrubOwnCharacterData = function(node) {
17179
17274
  node.normalize();
17180
17275
  const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;
17181
17276
  const walker = createNodeIterator.call(doc || node, node, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
@@ -17184,10 +17279,6 @@ var __webpack_exports__ = {};
17184
17279
  currentNode.data = _stripTemplateExpressions(currentNode.data);
17185
17280
  currentNode = walker.nextNode();
17186
17281
  }
17187
- const templates = null == (_node$querySelectorAl = node.querySelectorAll) ? void 0 : _node$querySelectorAl.call(node, "template");
17188
- if (templates) arrayForEach(templates, (tmpl)=>{
17189
- if (_isDocumentFragment(tmpl.content)) _scrubTemplateExpressions2(tmpl.content);
17190
- });
17191
17282
  };
17192
17283
  const _isClobbered = function(element) {
17193
17284
  const realTagName = getNodeName ? getNodeName(element) : null;
@@ -17219,7 +17310,7 @@ var __webpack_exports__ = {};
17219
17310
  }
17220
17311
  const _isUnsafeNode = function(currentNode, tagName) {
17221
17312
  if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) return true;
17222
- if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && LITERAL_TEXT_ELEMENTS[tagName] && (_isNode(currentNode.firstElementChild) || "string" == typeof currentNode.textContent && regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent))) return true;
17313
+ if (SAFE_FOR_XML && LITERAL_TEXT_ELEMENTS[tagName] && _readNodeType(currentNode) === NODE_TYPE.element && _readNamespaceURI(currentNode) === HTML_NAMESPACE && (_isNode(currentNode.firstElementChild) || "string" == typeof currentNode.textContent && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent))) return true;
17223
17314
  if (currentNode.nodeType === NODE_TYPE.processingInstruction) return true;
17224
17315
  if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) return true;
17225
17316
  return false;
@@ -17234,7 +17325,7 @@ var __webpack_exports__ = {};
17234
17325
  };
17235
17326
  const _sanitizeDisallowedNode = function(currentNode, tagName, root) {
17236
17327
  if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;
17237
- if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
17328
+ if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && !FORBID_CONTENTS[stringToLowerCase(tagName)]) {
17238
17329
  const parentNode = getParentNode(currentNode);
17239
17330
  const childNodes = getChildNodes(currentNode);
17240
17331
  if (childNodes && parentNode) {
@@ -17258,6 +17349,7 @@ var __webpack_exports__ = {};
17258
17349
  return true;
17259
17350
  };
17260
17351
  const _sanitizeElements = function(currentNode, root) {
17352
+ _markVisited(currentNode);
17261
17353
  _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
17262
17354
  if (_handleHookDetachedNode(currentNode, root)) return true;
17263
17355
  if (_isClobbered(currentNode)) {
@@ -17353,6 +17445,10 @@ var __webpack_exports__ = {};
17353
17445
  return false;
17354
17446
  }
17355
17447
  };
17448
+ const _isUnsafeAttributeValue = function(name, value) {
17449
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) return true;
17450
+ return "attributename" === stringToLowerCase(name) && null !== stringMatch(value, "href");
17451
+ };
17356
17452
  const _sanitizeAttributes = function(currentNode, root) {
17357
17453
  _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
17358
17454
  if (_handleHookDetachedNode(currentNode, root)) return;
@@ -17386,11 +17482,7 @@ var __webpack_exports__ = {};
17386
17482
  value = SANITIZE_NAMED_PROPS_PREFIX + value;
17387
17483
  recreatedNamedProp = true;
17388
17484
  }
17389
- if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
17390
- _removeAttribute(name, currentNode, attr);
17391
- continue;
17392
- }
17393
- if ("attributename" === lcName && stringMatch(value, "href")) {
17485
+ if (_isUnsafeAttributeValue(name, value)) {
17394
17486
  _removeAttribute(name, currentNode, attr);
17395
17487
  continue;
17396
17488
  }
@@ -17433,6 +17525,7 @@ var __webpack_exports__ = {};
17433
17525
  }
17434
17526
  }
17435
17527
  }
17528
+ if (SAFE_FOR_TEMPLATES) _scrubOwnCharacterData(fragment);
17436
17529
  _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
17437
17530
  };
17438
17531
  const _sanitizeAttachedShadowRoots = function(root) {
@@ -17498,6 +17591,8 @@ var __webpack_exports__ = {};
17498
17591
  if (hooks.uponSanitizeAttribute.length > 0) ALLOWED_ATTR = clone(ALLOWED_ATTR);
17499
17592
  DOMPurify.removed = [];
17500
17593
  const inPlace = IN_PLACE && "string" != typeof dirty && _isNode(dirty);
17594
+ let inPlaceNodes = [];
17595
+ const outerVisited = IN_PLACE_VISITED;
17501
17596
  if (inPlace) {
17502
17597
  _neutralizePatchLinkage(dirty);
17503
17598
  const nn = _readNodeName(dirty);
@@ -17512,12 +17607,8 @@ var __webpack_exports__ = {};
17512
17607
  _neutralizeRoot(dirty);
17513
17608
  throw typeErrorCreate("root node is clobbered and cannot be sanitized in-place");
17514
17609
  }
17515
- try {
17516
- _sanitizeAttachedShadowRoots(dirty);
17517
- } catch (error) {
17518
- _neutralizeRoot(dirty);
17519
- throw error;
17520
- }
17610
+ inPlaceNodes = _collectLiveNodes(dirty);
17611
+ IN_PLACE_VISITED = setCreate();
17521
17612
  } else if (_isNode(dirty)) {
17522
17613
  body = _initDocument("<!---->");
17523
17614
  importedNode = body.ownerDocument.importNode(dirty, true);
@@ -17533,30 +17624,25 @@ var __webpack_exports__ = {};
17533
17624
  if (body && FORCE_BODY) _forceRemove(body.firstChild);
17534
17625
  const walkRoot = inPlace ? dirty : body;
17535
17626
  try {
17627
+ if (inPlace) _sanitizeAttachedShadowRoots(dirty);
17536
17628
  const nodeIterator = _createNodeIterator(walkRoot);
17537
17629
  while(currentNode = nodeIterator.nextNode()){
17538
17630
  _sanitizeElements(currentNode, walkRoot);
17539
17631
  _sanitizeAttributes(currentNode, walkRoot);
17540
17632
  if (_isDocumentFragment(currentNode.content)) _sanitizeShadowDOM2(currentNode.content);
17541
17633
  }
17634
+ if (inPlace) _sanitizeUnvisitedNodes(dirty, inPlaceNodes);
17542
17635
  } catch (error) {
17543
17636
  if (inPlace) {
17544
17637
  _neutralizeRoot(dirty);
17545
- arrayForEach(DOMPurify.removed, (entry)=>{
17546
- if (entry.element) _neutralizeSubtree(entry.element);
17547
- });
17638
+ _neutralizeDiscarded(dirty, inPlaceNodes);
17548
17639
  }
17549
17640
  throw error;
17641
+ } finally{
17642
+ IN_PLACE_VISITED = outerVisited;
17550
17643
  }
17551
17644
  if (inPlace) {
17552
- let rootWasRemoved = false;
17553
- arrayForEach(DOMPurify.removed, (entry)=>{
17554
- if (entry.element) {
17555
- if (entry.element === dirty) rootWasRemoved = true;
17556
- _neutralizeSubtree(entry.element);
17557
- }
17558
- });
17559
- if (rootWasRemoved) throw typeErrorCreate("a node selected for removal could not be safely returned; refusing to sanitize in place");
17645
+ if (_neutralizeDiscarded(dirty, inPlaceNodes)) throw typeErrorCreate("a node selected for removal could not be safely returned; refusing to sanitize in place");
17560
17646
  if (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(dirty);
17561
17647
  return dirty;
17562
17648
  }
@@ -17593,6 +17679,7 @@ var __webpack_exports__ = {};
17593
17679
  if (!CONFIG) _parseConfig({});
17594
17680
  const lcTag = transformCaseFunc(tag);
17595
17681
  const lcName = transformCaseFunc(attr);
17682
+ if ("string" == typeof value && (_isUnsafeAttributeValue(attr, value) || !ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value))) return false;
17596
17683
  return _isValidAttribute(lcTag, lcName, value);
17597
17684
  };
17598
17685
  DOMPurify.addHook = function(entryPoint, hookFunction) {
@@ -19171,7 +19258,8 @@ var __webpack_exports__ = {};
19171
19258
  const l = this.float32Array.length;
19172
19259
  const arr = new Int16Array(l);
19173
19260
  this.float32Array.forEach((sample, i)=>{
19174
- arr[i] = 0x7fff * Math.min(1, sample);
19261
+ const clampedSample = Number.isFinite(sample) ? Math.max(-1, sample) : sample;
19262
+ arr[i] = 0x7fff * Math.min(1, clampedSample);
19175
19263
  });
19176
19264
  return typedarray_to_buffer(arr);
19177
19265
  }
@@ -19238,10 +19326,9 @@ var __webpack_exports__ = {};
19238
19326
  });
19239
19327
  volume.gain.value = this.options.audio.volume;
19240
19328
  this.scriptProcessor = this.getAudioContext().createScriptProcessor(bufferSize, CHANNELS, CHANNELS);
19241
- this.audioInput.connect(this.scriptProcessor);
19242
- this.scriptProcessor.connect(this.getAudioContext().destination);
19243
19329
  this.audioInput.connect(volume);
19244
19330
  volume.connect(this.scriptProcessor);
19331
+ this.scriptProcessor.connect(this.getAudioContext().destination);
19245
19332
  }
19246
19333
  record(cb) {
19247
19334
  this.options.logger.debug("AudioRecorder: record()");
@@ -21663,6 +21750,19 @@ var __webpack_exports__ = {};
21663
21750
  else obj[key] = value;
21664
21751
  return obj;
21665
21752
  }
21753
+ function container_object_spread(target) {
21754
+ for(var i = 1; i < arguments.length; i++){
21755
+ var source = null != arguments[i] ? arguments[i] : {};
21756
+ var ownKeys = Object.keys(source);
21757
+ if ("function" == typeof Object.getOwnPropertySymbols) ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
21758
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21759
+ }));
21760
+ ownKeys.forEach(function(key) {
21761
+ container_define_property(target, key, source[key]);
21762
+ });
21763
+ }
21764
+ return target;
21765
+ }
21666
21766
  class Container extends util_Despot {
21667
21767
  buildChildren(playerOnly = false, parentElement) {
21668
21768
  const parentElementInfo = parentElement ? `, parentElement="${string_pretty(parentElement)}"` : "";
@@ -21879,6 +21979,7 @@ var __webpack_exports__ = {};
21879
21979
  this.removeBrowserEventListeners();
21880
21980
  this.removeAllListeners();
21881
21981
  this.built = this.submitted = false;
21982
+ this.pendingHostSubmission = void 0;
21882
21983
  }
21883
21984
  }
21884
21985
  show(params) {
@@ -21914,6 +22015,7 @@ var __webpack_exports__ = {};
21914
22015
  const keepHidden = null == params ? void 0 : params.keepHidden;
21915
22016
  this.options.logger.debug(`Container: startOver(keepHidden = ${keepHidden})`);
21916
22017
  this.submitted = false;
22018
+ this.pendingHostSubmission = void 0;
21917
22019
  const replay = this.getReplay();
21918
22020
  replay.hide();
21919
22021
  replay.reset();
@@ -22048,11 +22150,17 @@ var __webpack_exports__ = {};
22048
22150
  buttonsAreReady() {
22049
22151
  return this.buttons.isReady();
22050
22152
  }
22051
- submitAll(formData, method, url) {
22153
+ getPendingHostSubmissionResponse(key) {
22154
+ var _this_pendingHostSubmission, _this_pendingHostSubmission1;
22155
+ return (null == (_this_pendingHostSubmission = this.pendingHostSubmission) ? void 0 : _this_pendingHostSubmission.key) === key ? null == (_this_pendingHostSubmission1 = this.pendingHostSubmission) ? void 0 : _this_pendingHostSubmission1.response : void 0;
22156
+ }
22157
+ submitAll(formData, method, url, hasHostAction = false) {
22052
22158
  return container_async_to_generator(function*() {
22053
22159
  let response;
22160
+ let hostResponse;
22161
+ const videomailKey = formData[this.options.selectors.keyInputName];
22054
22162
  try {
22055
- const hasVideomailKey = Boolean(formData[this.options.selectors.keyInputName]);
22163
+ const hasVideomailKey = Boolean(videomailKey);
22056
22164
  if (!hasVideomailKey && !this.options.enableAutoSubmission) return;
22057
22165
  const output = [
22058
22166
  method,
@@ -22063,7 +22171,18 @@ var __webpack_exports__ = {};
22063
22171
  if (this.options.disableFormWhenSubmitting) this.disableForm(true);
22064
22172
  this.emit("SUBMITTING");
22065
22173
  if (hasVideomailKey) {
22066
- response = yield this.submitVideomail(formData, method);
22174
+ var _this_getPendingHostSubmissionResponse;
22175
+ response = null != (_this_getPendingHostSubmissionResponse = this.getPendingHostSubmissionResponse(videomailKey)) ? _this_getPendingHostSubmissionResponse : yield this.submitVideomail(formData, method);
22176
+ if (this.options.enableAutoSubmission && hasHostAction) {
22177
+ if (videomailKey) this.pendingHostSubmission = {
22178
+ key: videomailKey,
22179
+ response
22180
+ };
22181
+ const hostFormData = container_object_spread({}, formData);
22182
+ if (this.options.submitWithVideomail) hostFormData.videomail = response.body.videomail;
22183
+ hostResponse = yield this.resource.form(hostFormData, url);
22184
+ this.pendingHostSubmission = void 0;
22185
+ }
22067
22186
  this.submitted = true;
22068
22187
  this.emit("SUBMITTED", {
22069
22188
  videomail: response.body.videomail,
@@ -22086,7 +22205,8 @@ var __webpack_exports__ = {};
22086
22205
  err
22087
22206
  });
22088
22207
  } finally{
22089
- if ((null == response ? void 0 : response.text) && "text/html" === response.type) document.body.innerHTML = purify_default.sanitize(response.text);
22208
+ const finalResponse = null != hostResponse ? hostResponse : response;
22209
+ if ((null == finalResponse ? void 0 : finalResponse.text) && "text/html" === finalResponse.type) document.body.innerHTML = purify_default.sanitize(finalResponse.text);
22090
22210
  this.endWaiting();
22091
22211
  }
22092
22212
  }).call(this);
@@ -22158,7 +22278,7 @@ var __webpack_exports__ = {};
22158
22278
  this.visuals.setLimitSeconds(limitSeconds);
22159
22279
  }
22160
22280
  constructor(options){
22161
- super("Container", options), container_define_property(this, "visibility", document_visibility_default()()), container_define_property(this, "htmlElement", document.querySelector("html")), container_define_property(this, "visuals", void 0), container_define_property(this, "buttons", void 0), container_define_property(this, "resource", void 0), container_define_property(this, "form", void 0), container_define_property(this, "hasError", false), container_define_property(this, "submitted", false), container_define_property(this, "lastValidation", false), container_define_property(this, "containerElement", void 0), container_define_property(this, "built", false), container_define_property(this, "stopListeningToVisibility", void 0), container_define_property(this, "handleWindowResize", ()=>{
22281
+ super("Container", options), container_define_property(this, "visibility", document_visibility_default()()), container_define_property(this, "htmlElement", document.querySelector("html")), container_define_property(this, "visuals", void 0), container_define_property(this, "buttons", void 0), container_define_property(this, "resource", void 0), container_define_property(this, "form", void 0), container_define_property(this, "hasError", false), container_define_property(this, "submitted", false), container_define_property(this, "pendingHostSubmission", void 0), container_define_property(this, "lastValidation", false), container_define_property(this, "containerElement", void 0), container_define_property(this, "built", false), container_define_property(this, "stopListeningToVisibility", void 0), container_define_property(this, "handleWindowResize", ()=>{
22162
22282
  if (this.built) this.emit("WINDOW_RESIZE", "container");
22163
22283
  }), container_define_property(this, "handleBeforeUnload", (e)=>{
22164
22284
  this.unload({