@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.
- package/dist/assets/ai_slack_summary.svg +1 -1
- package/dist/assets/end_call.svg +1 -1
- package/dist/assets/hierarchy_table.svg +1 -0
- package/dist/assets/in_app_messaging.svg +1 -1
- package/dist/assets/inspector_brief.svg +1 -0
- package/dist/assets/mcp_server.svg +1 -1
- package/dist/assets/play.svg +1 -1
- package/dist/assets/rcs_message.svg +1 -0
- package/dist/assets/record_companion_agent.svg +1 -0
- package/dist/assets/send_to_flow.svg +1 -0
- package/dist/assets/shift_ui.svg +1 -0
- package/dist/assets/similar_case.svg +1 -1
- package/dist/assets/slack_canvas.svg +1 -1
- package/dist/assets/slack_list_item.svg +1 -1
- package/dist/assets/slack_lists.svg +1 -1
- package/dist/assets/table_code.svg +1 -0
- package/dist/cjs/atomic-react.cjs +248 -109
- package/dist/cjs/atomic-react.cjs.map +1 -1
- package/dist/cjs/commerce/atomic-react.cjs +232 -107
- package/dist/cjs/commerce/atomic-react.cjs.map +1 -1
- package/dist/cjs/recommendation/atomic-react.cjs +248 -109
- package/dist/cjs/recommendation/atomic-react.cjs.map +1 -1
- package/package.json +7 -7
|
@@ -606,24 +606,65 @@ const renderBreadcrumbContainer = ({ props })=>(children)=>{
|
|
|
606
606
|
</div>`;
|
|
607
607
|
};
|
|
608
608
|
|
|
609
|
-
/*! @license DOMPurify 3.4.
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
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
|
|
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
|
-
|
|
883
|
-
const
|
|
884
|
-
const
|
|
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.
|
|
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
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
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
|
|
1644
|
+
* @return true if value is a DOM node from any realm
|
|
1580
1645
|
*/
|
|
1581
1646
|
const _isNode = function _isNode(value) {
|
|
1582
|
-
|
|
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 (
|
|
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
|
-
|
|
1775
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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 (
|
|
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
|
-
|
|
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(),
|