@coveo/atomic-react 3.11.21 → 3.11.23

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.
@@ -606,24 +606,65 @@ const renderBreadcrumbContainer = ({ props })=>(children)=>{
606
606
  </div>`;
607
607
  };
608
608
 
609
- /*! @license DOMPurify 3.4.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.1/LICENSE */
610
-
611
- const {
612
- entries,
613
- setPrototypeOf,
614
- isFrozen,
615
- getPrototypeOf,
616
- getOwnPropertyDescriptor
617
- } = Object;
618
- let {
619
- freeze,
620
- seal,
621
- create
622
- } = Object; // eslint-disable-line import/no-mutable-exports
623
- let {
624
- apply,
625
- construct
626
- } = typeof Reflect !== 'undefined' && Reflect;
609
+ /*! @license DOMPurify 3.4.5 | (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.5/LICENSE */
610
+
611
+ function _arrayLikeToArray$1(r, a) {
612
+ (null == a || a > r.length) && (a = r.length);
613
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
614
+ return n;
615
+ }
616
+ function _arrayWithHoles(r) {
617
+ if (Array.isArray(r)) return r;
618
+ }
619
+ function _iterableToArrayLimit(r, l) {
620
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
621
+ if (null != t) {
622
+ var e,
623
+ n,
624
+ i,
625
+ u,
626
+ a = [],
627
+ f = true,
628
+ o = false;
629
+ try {
630
+ if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
631
+ } catch (r) {
632
+ o = true, n = r;
633
+ } finally {
634
+ try {
635
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
636
+ } finally {
637
+ if (o) throw n;
638
+ }
639
+ }
640
+ return a;
641
+ }
642
+ }
643
+ function _nonIterableRest() {
644
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
645
+ }
646
+ function _slicedToArray(r, e) {
647
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray$1(r, e) || _nonIterableRest();
648
+ }
649
+ function _unsupportedIterableToArray$1(r, a) {
650
+ if (r) {
651
+ if ("string" == typeof r) return _arrayLikeToArray$1(r, a);
652
+ var t = {}.toString.call(r).slice(8, -1);
653
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0;
654
+ }
655
+ }
656
+
657
+ const entries = Object.entries,
658
+ setPrototypeOf = Object.setPrototypeOf,
659
+ isFrozen = Object.isFrozen,
660
+ getPrototypeOf = Object.getPrototypeOf,
661
+ getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
662
+ let freeze = Object.freeze,
663
+ seal = Object.seal,
664
+ create = Object.create; // eslint-disable-line import/no-mutable-exports
665
+ let _ref = typeof Reflect !== 'undefined' && Reflect,
666
+ apply = _ref.apply,
667
+ construct = _ref.construct;
627
668
  if (!freeze) {
628
669
  freeze = function freeze(x) {
629
670
  return x;
@@ -760,7 +801,10 @@ function cleanArray(array) {
760
801
  */
761
802
  function clone$1(object) {
762
803
  const newObject = create(null);
763
- for (const [property, value] of entries(object)) {
804
+ for (const _ref2 of entries(object)) {
805
+ var _ref3 = _slicedToArray(_ref2, 2);
806
+ const property = _ref3[0];
807
+ const value = _ref3[1];
764
808
  const isPropertyExist = objectHasOwnProperty(object, property);
765
809
  if (isPropertyExist) {
766
810
  if (arrayIsArray(value)) {
@@ -874,15 +918,14 @@ const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mgly
874
918
  const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
875
919
  const text = freeze(['#text']);
876
920
 
877
- const html$2 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);
921
+ const html$2 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'command', 'commandfor', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);
878
922
  const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
879
923
  const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnalign', 'columnlines', 'columnspacing', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lquote', 'lspace', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
880
924
  const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
881
925
 
882
- // eslint-disable-next-line unicorn/better-regex
883
- const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
884
- const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
885
- const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex
926
+ const MUSTACHE_EXPR = seal(/{{[\w\W]*|^[\w\W]*}}/g);
927
+ const ERB_EXPR = seal(/<%[\w\W]*|^[\w\W]*%>/g);
928
+ const TMPLIT_EXPR = seal(/\${[\w\W]*/g);
886
929
  const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape
887
930
  const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
888
931
  const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
@@ -893,20 +936,6 @@ const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205
893
936
  const DOCTYPE_NAME = seal(/^html$/i);
894
937
  const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
895
938
 
896
- var EXPRESSIONS = /*#__PURE__*/Object.freeze({
897
- __proto__: null,
898
- ARIA_ATTR: ARIA_ATTR,
899
- ATTR_WHITESPACE: ATTR_WHITESPACE,
900
- CUSTOM_ELEMENT: CUSTOM_ELEMENT,
901
- DATA_ATTR: DATA_ATTR,
902
- DOCTYPE_NAME: DOCTYPE_NAME,
903
- ERB_EXPR: ERB_EXPR,
904
- IS_ALLOWED_URI: IS_ALLOWED_URI,
905
- IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
906
- MUSTACHE_EXPR: MUSTACHE_EXPR,
907
- TMPLIT_EXPR: TMPLIT_EXPR
908
- });
909
-
910
939
  /* eslint-disable @typescript-eslint/indent */
911
940
  // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
912
941
  const NODE_TYPE = {
@@ -973,7 +1002,7 @@ const _createHooksMap = function _createHooksMap() {
973
1002
  function createDOMPurify() {
974
1003
  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
975
1004
  const DOMPurify = root => createDOMPurify(root);
976
- DOMPurify.version = '3.4.1';
1005
+ DOMPurify.version = '3.4.5';
977
1006
  DOMPurify.removed = [];
978
1007
  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
979
1008
  // Not running in a browser, provide a factory function
@@ -981,28 +1010,26 @@ function createDOMPurify() {
981
1010
  DOMPurify.isSupported = false;
982
1011
  return DOMPurify;
983
1012
  }
984
- let {
985
- document
986
- } = window;
1013
+ let document = window.document;
987
1014
  const originalDocument = document;
988
1015
  const currentScript = originalDocument.currentScript;
989
- const {
990
- DocumentFragment,
991
- HTMLTemplateElement,
992
- Node,
993
- Element,
994
- NodeFilter,
995
- NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
996
- HTMLFormElement,
997
- DOMParser,
998
- trustedTypes
999
- } = window;
1016
+ const DocumentFragment = window.DocumentFragment,
1017
+ HTMLTemplateElement = window.HTMLTemplateElement,
1018
+ Node = window.Node,
1019
+ Element = window.Element,
1020
+ NodeFilter = window.NodeFilter,
1021
+ _window$NamedNodeMap = window.NamedNodeMap,
1022
+ NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,
1023
+ HTMLFormElement = window.HTMLFormElement,
1024
+ DOMParser = window.DOMParser,
1025
+ trustedTypes = window.trustedTypes;
1000
1026
  const ElementPrototype = Element.prototype;
1001
1027
  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
1002
1028
  const remove = lookupGetter(ElementPrototype, 'remove');
1003
1029
  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
1004
1030
  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
1005
1031
  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
1032
+ const getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;
1006
1033
  // As per issue #47, the web-components registry is inherited by a
1007
1034
  // new document created via createHTMLDocument. As per the spec
1008
1035
  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
@@ -1017,33 +1044,26 @@ function createDOMPurify() {
1017
1044
  }
1018
1045
  let trustedTypesPolicy;
1019
1046
  let emptyHTML = '';
1020
- const {
1021
- implementation,
1022
- createNodeIterator,
1023
- createDocumentFragment,
1024
- getElementsByTagName
1025
- } = document;
1026
- const {
1027
- importNode
1028
- } = originalDocument;
1047
+ const _document = document,
1048
+ implementation = _document.implementation,
1049
+ createNodeIterator = _document.createNodeIterator,
1050
+ createDocumentFragment = _document.createDocumentFragment,
1051
+ getElementsByTagName = _document.getElementsByTagName;
1052
+ const importNode = originalDocument.importNode;
1029
1053
  let hooks = _createHooksMap();
1030
1054
  /**
1031
1055
  * Expose whether this browser supports running the full DOMPurify.
1032
1056
  */
1033
1057
  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
1034
- const {
1035
- MUSTACHE_EXPR,
1036
- ERB_EXPR,
1037
- TMPLIT_EXPR,
1038
- DATA_ATTR,
1039
- ARIA_ATTR,
1040
- IS_SCRIPT_OR_DATA,
1041
- ATTR_WHITESPACE,
1042
- CUSTOM_ELEMENT
1043
- } = EXPRESSIONS;
1044
- let {
1045
- IS_ALLOWED_URI: IS_ALLOWED_URI$1
1046
- } = EXPRESSIONS;
1058
+ const MUSTACHE_EXPR$1 = MUSTACHE_EXPR,
1059
+ ERB_EXPR$1 = ERB_EXPR,
1060
+ TMPLIT_EXPR$1 = TMPLIT_EXPR,
1061
+ DATA_ATTR$1 = DATA_ATTR,
1062
+ ARIA_ATTR$1 = ARIA_ATTR,
1063
+ IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,
1064
+ ATTR_WHITESPACE$1 = ATTR_WHITESPACE,
1065
+ CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;
1066
+ let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
1047
1067
  /**
1048
1068
  * We consider the elements and attributes below to be safe. Ideally
1049
1069
  * don't add any new ones but feel free to remove unwanted ones.
@@ -1563,6 +1583,40 @@ function createDOMPurify() {
1563
1583
  // eslint-disable-next-line no-bitwise
1564
1584
  NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
1565
1585
  };
1586
+ /**
1587
+ * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the
1588
+ * character data of an element subtree. Used as the final safety net for
1589
+ * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions
1590
+ * which only form after text-node normalization (e.g. fragments split across
1591
+ * stripped elements) cannot survive into a template-evaluating framework.
1592
+ *
1593
+ * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`
1594
+ * in place rather than round-tripping through innerHTML. This preserves
1595
+ * descendant node references (important for IN_PLACE callers), avoids a
1596
+ * serialize/reparse cycle, and reads literal character data — which means
1597
+ * `<%...%>` in text content matches the ERB regex against its real bytes
1598
+ * instead of the HTML-entity-escaped form innerHTML would produce.
1599
+ *
1600
+ * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for
1601
+ * attributes is performed during the per-node `_sanitizeAttributes` pass.
1602
+ *
1603
+ * @param node The root element whose character data should be scrubbed.
1604
+ */
1605
+ const _scrubTemplateExpressions = function _scrubTemplateExpressions(node) {
1606
+ node.normalize();
1607
+ const walker = createNodeIterator.call(node.ownerDocument || node, node,
1608
+ // eslint-disable-next-line no-bitwise
1609
+ NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
1610
+ let currentNode = walker.nextNode();
1611
+ while (currentNode) {
1612
+ let data = currentNode.data;
1613
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
1614
+ data = stringReplace(data, expr, ' ');
1615
+ });
1616
+ currentNode.data = data;
1617
+ currentNode = walker.nextNode();
1618
+ }
1619
+ };
1566
1620
  /**
1567
1621
  * _isClobbered
1568
1622
  *
@@ -1573,13 +1627,31 @@ function createDOMPurify() {
1573
1627
  return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');
1574
1628
  };
1575
1629
  /**
1576
- * Checks whether the given object is a DOM node.
1630
+ * Checks whether the given object is a DOM node, including nodes that
1631
+ * originate from a different window/realm (e.g. an iframe's
1632
+ * contentDocument). The previous `value instanceof Node` check was
1633
+ * realm-bound: nodes from a different window failed it, causing
1634
+ * sanitize() to silently stringify them and reset IN_PLACE to false,
1635
+ * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.
1636
+ *
1637
+ * Implementation: call the cached `nodeType` getter from Node.prototype
1638
+ * directly on the value. This bypasses any clobbered instance property
1639
+ * (e.g. a child element named "nodeType") and works across realms
1640
+ * because the WebIDL `nodeType` getter reads an internal slot that
1641
+ * every real Node has, regardless of which window minted it.
1577
1642
  *
1578
1643
  * @param value object to check whether it's a DOM node
1579
- * @return true is object is a DOM node
1644
+ * @return true if value is a DOM node from any realm
1580
1645
  */
1581
1646
  const _isNode = function _isNode(value) {
1582
- return typeof Node === 'function' && value instanceof Node;
1647
+ if (!getNodeType || typeof value !== 'object' || value === null) {
1648
+ return false;
1649
+ }
1650
+ try {
1651
+ return typeof getNodeType(value) === 'number';
1652
+ } catch (_) {
1653
+ return false;
1654
+ }
1583
1655
  };
1584
1656
  function _executeHooks(hooks, currentNode, data) {
1585
1657
  arrayForEach(hooks, hook => {
@@ -1671,7 +1743,7 @@ function createDOMPurify() {
1671
1743
  if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
1672
1744
  /* Get the element's text content */
1673
1745
  content = currentNode.textContent;
1674
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
1746
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
1675
1747
  content = stringReplace(content, expr, ' ');
1676
1748
  });
1677
1749
  if (currentNode.textContent !== content) {
@@ -1703,11 +1775,12 @@ function createDOMPurify() {
1703
1775
  if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
1704
1776
  return false;
1705
1777
  }
1778
+ const nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);
1706
1779
  /* Allow valid data-* attributes: At least one character after "-"
1707
1780
  (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
1708
1781
  XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
1709
1782
  We don't need to check the value; it's always URI safe. */
1710
- if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
1783
+ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!nameIsPermitted || FORBID_ATTR[lcName]) {
1711
1784
  if (
1712
1785
  // First condition does a very basic check if a) it's basically a valid custom element tagname AND
1713
1786
  // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
@@ -1719,7 +1792,7 @@ function createDOMPurify() {
1719
1792
  return false;
1720
1793
  }
1721
1794
  /* Check value is safe. First, is attr inert? If so, is safe */
1722
- } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
1795
+ } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (value) {
1723
1796
  return false;
1724
1797
  } else ;
1725
1798
  return true;
@@ -1737,7 +1810,7 @@ function createDOMPurify() {
1737
1810
  * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
1738
1811
  */
1739
1812
  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
1740
- return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT, tagName);
1813
+ return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);
1741
1814
  };
1742
1815
  /**
1743
1816
  * _sanitizeAttributes
@@ -1752,9 +1825,7 @@ function createDOMPurify() {
1752
1825
  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
1753
1826
  /* Execute a hook if present */
1754
1827
  _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
1755
- const {
1756
- attributes
1757
- } = currentNode;
1828
+ const attributes = currentNode.attributes;
1758
1829
  /* Check if we have attributes; if not we might have a text node */
1759
1830
  if (!attributes || _isClobbered(currentNode)) {
1760
1831
  return;
@@ -1770,11 +1841,9 @@ function createDOMPurify() {
1770
1841
  /* Go backwards over all attributes; safely remove bad ones */
1771
1842
  while (l--) {
1772
1843
  const attr = attributes[l];
1773
- const {
1774
- name,
1775
- namespaceURI,
1776
- value: attrValue
1777
- } = attr;
1844
+ const name = attr.name,
1845
+ namespaceURI = attr.namespaceURI,
1846
+ attrValue = attr.value;
1778
1847
  const lcName = transformCaseFunc(name);
1779
1848
  const initValue = attrValue;
1780
1849
  let value = name === 'value' ? initValue : stringTrim(initValue);
@@ -1822,7 +1891,7 @@ function createDOMPurify() {
1822
1891
  }
1823
1892
  /* Sanitize attribute content to be template-safe */
1824
1893
  if (SAFE_FOR_TEMPLATES) {
1825
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
1894
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
1826
1895
  value = stringReplace(value, expr, ' ');
1827
1896
  });
1828
1897
  }
@@ -1896,6 +1965,49 @@ function createDOMPurify() {
1896
1965
  /* Execute a hook if present */
1897
1966
  _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
1898
1967
  };
1968
+ /**
1969
+ * _sanitizeAttachedShadowRoots
1970
+ *
1971
+ * Walks `root` and feeds every attached shadow root we encounter into
1972
+ * the existing _sanitizeShadowDOM pipeline. The default node iterator
1973
+ * does not descend into shadow trees, so nodes inside an attached
1974
+ * shadow root would otherwise be skipped entirely.
1975
+ *
1976
+ * Two real input paths put attached shadow roots in front of us:
1977
+ * 1. IN_PLACE on a DOM node that already has shadow roots attached.
1978
+ * 2. DOM-node input where importNode(dirty, true) deep-clones the
1979
+ * shadow root because it was created with `clonable: true`.
1980
+ *
1981
+ * This pass runs once, up front, so the main iteration loop (and the
1982
+ * existing _sanitizeShadowDOM template-content recursion) stay
1983
+ * untouched — string-input paths are not affected.
1984
+ *
1985
+ * @param root the subtree root to walk for attached shadow roots
1986
+ */
1987
+ const _sanitizeAttachedShadowRoots2 = function _sanitizeAttachedShadowRoots(root) {
1988
+ if (root.nodeType === NODE_TYPE.element && root.shadowRoot instanceof DocumentFragment) {
1989
+ const sr = root.shadowRoot;
1990
+ // Recurse first so that nested shadow roots are reached even if
1991
+ // _sanitizeShadowDOM removes hosts at this level.
1992
+ _sanitizeAttachedShadowRoots2(sr);
1993
+ _sanitizeShadowDOM2(sr);
1994
+ }
1995
+ // Snapshot children before recursing. Sanitization of one subtree
1996
+ // (e.g. via an uponSanitizeShadowNode hook) may detach siblings,
1997
+ // and naive nextSibling traversal would silently skip the rest of
1998
+ // the list once a node is detached.
1999
+ const childNodes = root.childNodes;
2000
+ if (!childNodes) {
2001
+ return;
2002
+ }
2003
+ const snapshot = [];
2004
+ arrayForEach(childNodes, child => {
2005
+ arrayPush(snapshot, child);
2006
+ });
2007
+ for (const child of snapshot) {
2008
+ _sanitizeAttachedShadowRoots2(child);
2009
+ }
2010
+ };
1899
2011
  // eslint-disable-next-line complexity
1900
2012
  DOMPurify.sanitize = function (dirty) {
1901
2013
  let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -1940,7 +2052,10 @@ function createDOMPurify() {
1940
2052
  throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
1941
2053
  }
1942
2054
  }
1943
- } else if (dirty instanceof Node) {
2055
+ /* Sanitize attached shadow roots before the main iterator runs.
2056
+ The iterator does not descend into shadow trees. */
2057
+ _sanitizeAttachedShadowRoots2(dirty);
2058
+ } else if (_isNode(dirty)) {
1944
2059
  /* If dirty is a DOM element, append to an empty document to avoid
1945
2060
  elements being stripped by the parser */
1946
2061
  body = _initDocument('<!---->');
@@ -1954,6 +2069,10 @@ function createDOMPurify() {
1954
2069
  // eslint-disable-next-line unicorn/prefer-dom-node-append
1955
2070
  body.appendChild(importedNode);
1956
2071
  }
2072
+ /* Clonable shadow roots are deep-cloned by importNode(); sanitize
2073
+ them before the main iterator runs, since the iterator does not
2074
+ descend into shadow trees. */
2075
+ _sanitizeAttachedShadowRoots2(importedNode);
1957
2076
  } else {
1958
2077
  /* Exit directly if we have nothing to do */
1959
2078
  if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
@@ -1987,17 +2106,15 @@ function createDOMPurify() {
1987
2106
  }
1988
2107
  /* If we sanitized `dirty` in-place, return it. */
1989
2108
  if (IN_PLACE) {
2109
+ if (SAFE_FOR_TEMPLATES) {
2110
+ _scrubTemplateExpressions(dirty);
2111
+ }
1990
2112
  return dirty;
1991
2113
  }
1992
2114
  /* Return sanitized string or DOM */
1993
2115
  if (RETURN_DOM) {
1994
2116
  if (SAFE_FOR_TEMPLATES) {
1995
- body.normalize();
1996
- let html = body.innerHTML;
1997
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
1998
- html = stringReplace(html, expr, ' ');
1999
- });
2000
- body.innerHTML = html;
2117
+ _scrubTemplateExpressions(body);
2001
2118
  }
2002
2119
  if (RETURN_DOM_FRAGMENT) {
2003
2120
  returnNode = createDocumentFragment.call(body.ownerDocument);
@@ -2027,7 +2144,7 @@ function createDOMPurify() {
2027
2144
  }
2028
2145
  /* Sanitize final string template-safe */
2029
2146
  if (SAFE_FOR_TEMPLATES) {
2030
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
2147
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
2031
2148
  serializedHTML = stringReplace(serializedHTML, expr, ' ');
2032
2149
  });
2033
2150
  }
@@ -7134,7 +7251,7 @@ function getWindow$1() {
7134
7251
  }
7135
7252
  function getAtomicEnvironment(headlessVersion) {
7136
7253
  return {
7137
- version: "3.58.0",
7254
+ version: "3.59.0",
7138
7255
  headlessVersion
7139
7256
  };
7140
7257
  }
@@ -9146,7 +9263,7 @@ const bindAnalyticsToLink = (link, { onSelect, onBeginDelayedSelect, onCancelPen
9146
9263
  };
9147
9264
 
9148
9265
  const renderLinkWithItemAnalytics = ({ props })=>(children)=>{
9149
- const { href, className, part, title, stopPropagation = true, ref: refCallback, attributes, tabIndex, target = '_self', rel, onMouseOver, onMouseLeave, onFocus, onBlur, onSelect, onBeginDelayedSelect, onCancelPendingSelect, onInitializeLink } = props;
9266
+ const { href, className, part, title, ariaLabel, stopPropagation = true, ref: refCallback, attributes, tabIndex, target = '_self', rel, onMouseOver, onMouseLeave, onFocus, onBlur, onSelect, onBeginDelayedSelect, onCancelPendingSelect, onInitializeLink } = props;
9150
9267
  return lit.html`
9151
9268
  <a
9152
9269
  class=${ifDefined_js.ifDefined(className)}
@@ -9154,6 +9271,7 @@ const renderLinkWithItemAnalytics = ({ props })=>(children)=>{
9154
9271
  href=${filterProtocol(href)}
9155
9272
  target=${target}
9156
9273
  title=${ifDefined_js.ifDefined(title)}
9274
+ aria-label=${ifDefined_js.ifDefined(ariaLabel)}
9157
9275
  rel=${ifDefined_js.ifDefined(rel)}
9158
9276
  ${ref_js.ref((el)=>{
9159
9277
  if (!el) return;
@@ -18156,7 +18274,7 @@ const customRenderer = {
18156
18274
  const titleAttribute = title ? ` title="${escapeHtml(title)}"` : '';
18157
18275
  const safeHref = href ? escapeHtml(href) : '';
18158
18276
  if (!safeHref) return `<span>${text}</span>`;
18159
- return `<atomic-generated-answer-inline-link href="${safeHref}"${titleAttribute}>${text}</atomic-generated-answer-inline-link>`;
18277
+ return `<atomic-generated-answer-inline-link href="${safeHref}"${titleAttribute} exportparts="answer-link,answer-link-text,answer-link-icon">${text}</atomic-generated-answer-inline-link>`;
18160
18278
  },
18161
18279
  listitem (text) {
18162
18280
  const unwrappedText = text.replace(/^<p[^>]*>/, '').replace(/<\/p>\n?$/, '');
@@ -18193,7 +18311,7 @@ const renderGeneratedMarkdownContent = ({ props })=>{
18193
18311
  ],
18194
18312
  CUSTOM_ELEMENT_HANDLING: {
18195
18313
  tagNameCheck: /^atomic-generated-answer-inline-link$/,
18196
- attributeNameCheck: /^(href|title)$/
18314
+ attributeNameCheck: /^(href|title|exportparts)$/
18197
18315
  }
18198
18316
  });
18199
18317
  return lit.html`
@@ -19169,6 +19287,7 @@ function _ts_metadata$1i(k, v) {
19169
19287
  if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
19170
19288
  }
19171
19289
  const MIN_ANSWERS_TO_COLLAPSE = 2;
19290
+ const GENERATED_ANSWER_CONTENT_EXPORT_PARTS = "feedback-and-copy-buttons,feedback-button,copy-button,citations-label,citation,citation-popover,generated-text,answer-code-block,answer-emphasis,answer-inline-code,answer-heading-1,answer-heading-2,answer-heading-3,answer-heading-4,answer-heading-5,answer-heading-6,answer-list-item,answer-link,answer-link-text,answer-link-icon,answer-ordered-list,answer-paragraph,answer-quote-block,answer-unordered-list,answer-strong,answer-table,answer-table-container,answer-table-content,answer-table-header";
19172
19291
  class AtomicGeneratedAnswerThread extends lit.LitElement {
19173
19292
  updated(changedProperties) {
19174
19293
  if (changedProperties.has('generatedAnswers')) {
@@ -19215,6 +19334,7 @@ class AtomicGeneratedAnswerThread extends lit.LitElement {
19215
19334
  .onClickLike=${this.onClickLike}
19216
19335
  .onClickDislike=${this.onClickDislike}
19217
19336
  .onCopyToClipboard=${this.onCopyToClipboard}
19337
+ exportparts=${GENERATED_ANSWER_CONTENT_EXPORT_PARTS}
19218
19338
  ></atomic-generated-answer-content>
19219
19339
  </atomic-generated-answer-thread-item>
19220
19340
  `;
@@ -24052,7 +24172,8 @@ let AtomicBreadbox$1 = class AtomicBreadbox extends lit.LitElement {
24052
24172
  initialize() {
24053
24173
  this.breadcrumbManager = headless.buildBreadcrumbManager(this.bindings.engine);
24054
24174
  this.facetManager = headless.buildFacetManager(this.bindings.engine);
24055
- if (window.ResizeObserver && this.parentElement) {
24175
+ if (this.disableCollapse) this.isCollapsed = false;
24176
+ else if (window.ResizeObserver && this.parentElement) {
24056
24177
  this.resizeObserver = new ResizeObserver(()=>this.adaptBreadcrumbs());
24057
24178
  this.resizeObserver.observe(this.parentElement);
24058
24179
  }
@@ -24072,7 +24193,7 @@ let AtomicBreadbox$1 = class AtomicBreadbox extends lit.LitElement {
24072
24193
  i18n: this.bindings.i18n
24073
24194
  }
24074
24195
  })(lit.html`${this.renderBreadcrumbs(breadcrumbs)}
24075
- ${renderBreadcrumbShowMore({
24196
+ ${this.disableCollapse ? lit.nothing : lit.html`${renderBreadcrumbShowMore({
24076
24197
  props: {
24077
24198
  refCallback: async (el)=>{
24078
24199
  await this.breadcrumbShowLessFocus.setTarget(el);
@@ -24091,7 +24212,7 @@ let AtomicBreadbox$1 = class AtomicBreadbox extends lit.LitElement {
24091
24212
  })
24092
24213
  }
24093
24214
  })}
24094
- ${renderBreadcrumbShowLess({
24215
+ ${renderBreadcrumbShowLess({
24095
24216
  props: {
24096
24217
  onShowLess: ()=>{
24097
24218
  this.breadcrumbShowLessFocus.focusOnNextTarget();
@@ -24100,7 +24221,7 @@ let AtomicBreadbox$1 = class AtomicBreadbox extends lit.LitElement {
24100
24221
  isCollapsed: this.isCollapsed,
24101
24222
  i18n: this.bindings.i18n
24102
24223
  }
24103
- })}
24224
+ })}`}
24104
24225
  ${renderBreadcrumbClearAll({
24105
24226
  props: {
24106
24227
  refCallback: async (ref)=>{
@@ -24139,7 +24260,7 @@ let AtomicBreadbox$1 = class AtomicBreadbox extends lit.LitElement {
24139
24260
  this.breadcrumbs.forEach((breadcrumb)=>this.show(breadcrumb));
24140
24261
  }
24141
24262
  adaptBreadcrumbs() {
24142
- if (!this.breadcrumbs.length) return;
24263
+ if (this.disableCollapse || !this.breadcrumbs.length) return;
24143
24264
  this.showAllBreadcrumbs();
24144
24265
  if (!this.isCollapsed) return void this.updateShowLessDisplay();
24145
24266
  this.hideOverflowingBreadcrumbs();
@@ -24283,7 +24404,7 @@ let AtomicBreadbox$1 = class AtomicBreadbox extends lit.LitElement {
24283
24404
  });
24284
24405
  }
24285
24406
  constructor(){
24286
- super(), this.lastRemovedBreadcrumbIndex = 0, this.numberOfBreadcrumbs = 0, this.numberOfCollapsedBreadcrumbs = 0, this.isCollapsed = true, this.showMoreText = '', this.breadboxAriaMessage = new AriaLiveRegionController(this, 'breadbox', true), this.pathLimit = 3;
24407
+ super(), this.lastRemovedBreadcrumbIndex = 0, this.numberOfBreadcrumbs = 0, this.numberOfCollapsedBreadcrumbs = 0, this.isCollapsed = true, this.showMoreText = '', this.disableCollapse = false, this.breadboxAriaMessage = new AriaLiveRegionController(this, 'breadbox', true), this.pathLimit = 3;
24287
24408
  new ValidatePropsController(this, ()=>({
24288
24409
  pathLimit: this.pathLimit
24289
24410
  }), AtomicBreadbox.propsSchema);
@@ -24319,6 +24440,12 @@ _ts_decorate$10([
24319
24440
  _ts_decorate$10([
24320
24441
  decorators_js.state()
24321
24442
  ], AtomicBreadbox$1.prototype, "showMoreText", void 0);
24443
+ _ts_decorate$10([
24444
+ decorators_js.property({
24445
+ type: Boolean,
24446
+ attribute: 'disable-collapse'
24447
+ })
24448
+ ], AtomicBreadbox$1.prototype, "disableCollapse", void 0);
24322
24449
  _ts_decorate$10([
24323
24450
  decorators_js.property({
24324
24451
  type: Number,
@@ -27125,6 +27252,8 @@ function _ts_decorate$P(decorators, target, key, desc) {
27125
27252
  function _ts_metadata$M(k, v) {
27126
27253
  if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
27127
27254
  }
27255
+ const GENERATED_ANSWER_THREAD_EXPORT_PARTS = "feedback-and-copy-buttons,feedback-button,copy-button,citations-label,citation,citation-popover,generated-text,answer-code-block,answer-emphasis,answer-inline-code,answer-heading-1,answer-heading-2,answer-heading-3,answer-heading-4,answer-heading-5,answer-heading-6,answer-list-item,answer-link,answer-link-text,answer-link-icon,answer-ordered-list,answer-paragraph,answer-quote-block,answer-unordered-list,answer-strong,answer-table,answer-table-container,answer-table-content,answer-table-header";
27256
+ const FOLLOW_UP_INPUT_EXPORT_PARTS = "input-container,input-field,submit-button,submit-icon";
27128
27257
  let AtomicGeneratedAnswer$1 = class AtomicGeneratedAnswer extends lit.LitElement {
27129
27258
  initialize() {
27130
27259
  if (this.tabsIncluded.length > 0 && this.tabsExcluded.length > 0) console.warn('Values for both "tabs-included" and "tabs-excluded" have been provided. This could lead to unexpected behaviors.');
@@ -27386,6 +27515,7 @@ let AtomicGeneratedAnswer$1 = class AtomicGeneratedAnswer extends lit.LitElement
27386
27515
  .onClickLike=${(answerId)=>this.generatedAnswerWithFollowUps?.like(answerId)}
27387
27516
  .onClickDislike=${(answerId)=>this.generatedAnswerWithFollowUps?.dislike(answerId)}
27388
27517
  .onCopyToClipboard=${(answerId)=>this.generatedAnswerWithFollowUps?.logCopyToClipboard(answerId)}
27518
+ exportparts=${GENERATED_ANSWER_THREAD_EXPORT_PARTS}
27389
27519
  ></atomic-generated-answer-thread>`;
27390
27520
  }
27391
27521
  return renderAnswerContent({
@@ -27448,6 +27578,7 @@ let AtomicGeneratedAnswer$1 = class AtomicGeneratedAnswer extends lit.LitElement
27448
27578
  .i18n=${this.bindings.i18n}
27449
27579
  .askFollowUp=${this.handleAskFollowUp.bind(this)}
27450
27580
  .submitButtonDisabled=${this.isAnswerGenerationOngoing}
27581
+ exportparts=${FOLLOW_UP_INPUT_EXPORT_PARTS}
27451
27582
  >
27452
27583
  </atomic-ask-follow-up-input>
27453
27584
  </div>`;
@@ -31146,6 +31277,7 @@ function requireBgStandard_common () {
31146
31277
  entitlementPolicy: "rgb(57, 101, 71)",
31147
31278
  form: "rgb(59, 167, 85)",
31148
31279
  queryEditor: "rgb(126, 38, 0)",
31280
+ hierarchyTable: "rgb(255, 93, 45)",
31149
31281
  visualization: "rgb(27, 150, 255)",
31150
31282
  similarCase: "rgb(144, 80, 233)",
31151
31283
  products: "rgb(90, 27, 169)",
@@ -31163,6 +31295,7 @@ function requireBgStandard_common () {
31163
31295
  workforceEngagement: "rgb(182, 5, 84)",
31164
31296
  constant: "rgb(16, 124, 173)",
31165
31297
  marketingActions: "rgb(59, 167, 85)",
31298
+ recordCompanionAgent: "rgb(3, 45, 96)",
31166
31299
  calculatedDimension: "rgb(27, 150, 255)",
31167
31300
  caseTranscript: "rgb(255, 93, 45)",
31168
31301
  listFee: "rgb(47, 44, 183)",
@@ -31269,6 +31402,7 @@ function requireBgStandard_common () {
31269
31402
  recordCreate: "rgb(255, 83, 138)",
31270
31403
  campaignMembers: "rgb(255, 93, 45)",
31271
31404
  retailBanking: "rgb(6, 165, 154)",
31405
+ rcsMessage: "rgb(59, 167, 85)",
31272
31406
  productServiceCampaign: "rgb(16, 124, 173)",
31273
31407
  portalRoles: "rgb(255, 93, 45)",
31274
31408
  operationPlanStep: "rgb(90, 27, 169)",
@@ -31419,6 +31553,7 @@ function requireBgStandard_common () {
31419
31553
  adEventOutcome: "rgb(182, 5, 84)",
31420
31554
  operationPlanRequest: "rgb(90, 27, 169)",
31421
31555
  custom: "rgb(147, 147, 147)",
31556
+ shiftUi: "rgb(182, 5, 84)",
31422
31557
  relatedList: "rgb(6, 165, 154)",
31423
31558
  botTraining: "rgb(16, 124, 173)",
31424
31559
  lifeSciences: "rgb(150, 2, 199)",
@@ -31426,6 +31561,7 @@ function requireBgStandard_common () {
31426
31561
  insuranceConsole: "rgb(6, 165, 154)",
31427
31562
  dashboardComponent: "rgb(88, 103, 232)",
31428
31563
  incident: "rgb(182, 5, 84)",
31564
+ inspectorBrief: "rgb(59, 167, 85)",
31429
31565
  contract: "rgb(57, 101, 71)",
31430
31566
  policy: "rgb(6, 165, 154)",
31431
31567
  sobject: "rgb(147, 147, 147)",
@@ -31597,6 +31733,7 @@ function requireBgStandard_common () {
31597
31733
  practitionerRole: "rgb(255, 83, 138)",
31598
31734
  password: "rgb(147, 147, 147)",
31599
31735
  datashareTarget: "rgb(255, 83, 138)",
31736
+ sendToFlow: "rgb(16, 124, 173)",
31600
31737
  expenseReport: "rgb(47, 44, 183)",
31601
31738
  patientService: "rgb(150, 2, 199)",
31602
31739
  branchMerge: "rgb(255, 83, 138)",
@@ -31669,6 +31806,7 @@ function requireBgStandard_common () {
31669
31806
  productRequestLineItem: "rgb(59, 167, 85)",
31670
31807
  returnOrderLineItem: "rgb(6, 165, 154)",
31671
31808
  chart: "rgb(6, 165, 154)",
31809
+ tableCode: "rgb(255, 93, 45)",
31672
31810
  customer: "rgb(57, 101, 71)",
31673
31811
  buyerGroupQualifier: "rgb(57, 101, 71)",
31674
31812
  quickText: "rgb(27, 150, 255)",
@@ -33001,6 +33139,7 @@ let AtomicResultPrintableUri$1 = class AtomicResultPrintableUri extends LightDom
33001
33139
  return renderLinkWithItemAnalytics({
33002
33140
  props: {
33003
33141
  href: this.result.clickUri,
33142
+ ariaLabel: this.result.printableUri || this.result.clickUri,
33004
33143
  onSelect: ()=>this.interactiveResult.select(),
33005
33144
  onBeginDelayedSelect: ()=>this.interactiveResult.beginDelayedSelect(),
33006
33145
  onCancelPendingSelect: ()=>this.interactiveResult.cancelPendingSelect(),