@coveo/atomic 3.34.0-pre.00dc0c9faa → 3.34.0-pre.011ede392f
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/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/atomic.esm.js.map +1 -1
- package/dist/atomic/components/_index.d.ts +0 -4
- package/dist/atomic/components/_index.js +19 -21
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-category-facet.js +1 -1
- package/dist/atomic/components/atomic-facet.js +1 -1
- package/dist/atomic/components/atomic-field-condition.js +1 -1
- package/dist/atomic/components/atomic-field-condition.js.map +1 -1
- package/dist/atomic/components/atomic-format-currency.js +1 -1
- package/dist/atomic/components/atomic-format-number.js +1 -1
- package/dist/atomic/components/atomic-format-unit.js +1 -1
- package/dist/atomic/components/atomic-insight-history-toggle.js +2 -2
- package/dist/atomic/components/atomic-insight-history-toggle.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result-action.js +2 -2
- package/dist/atomic/components/atomic-insight-result-action.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result-attach-to-case-action.js +2 -2
- package/dist/atomic/components/atomic-insight-result-attach-to-case-action.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result-attach-to-case-indicator.js +2 -2
- package/dist/atomic/components/atomic-insight-result-attach-to-case-indicator.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result-quickview-action.js +2 -2
- package/dist/atomic/components/atomic-insight-result-quickview-action.js.map +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-toggle.js +2 -2
- package/dist/atomic/components/atomic-insight-user-actions-toggle.js.map +1 -1
- package/dist/atomic/components/atomic-ipx-result-link.js +2 -2
- package/dist/atomic/components/atomic-ipx-result-link.js.map +1 -1
- package/dist/{esm/sections-ae00b53a.js → atomic/components/atomic-layout-section-utils.js} +1 -1
- package/dist/atomic/components/atomic-layout-section-utils.js.map +1 -0
- package/dist/atomic/components/atomic-numeric-facet.js +1 -1
- package/dist/atomic/components/atomic-quickview-modal2.js +23 -23
- package/dist/atomic/components/atomic-quickview-modal2.js.map +1 -1
- package/dist/atomic/components/atomic-quickview.js +2 -2
- package/dist/atomic/components/atomic-quickview.js.map +1 -1
- package/dist/atomic/components/atomic-refine-modal2.js +2 -2
- package/dist/atomic/components/atomic-refine-modal2.js.map +1 -1
- package/dist/atomic/components/atomic-result-badge.js +1 -1
- package/dist/atomic/components/atomic-result-badge.js.map +1 -1
- package/dist/atomic/components/atomic-result-children.js +2 -2
- package/dist/atomic/components/atomic-result-children.js.map +1 -1
- package/dist/atomic/components/atomic-result-date.js +1 -1
- package/dist/atomic/components/atomic-result-date.js.map +1 -1
- package/dist/atomic/components/atomic-result-fields-list.js +2 -2
- package/dist/atomic/components/atomic-result-fields-list.js.map +1 -1
- package/dist/atomic/components/atomic-result-html.js +1 -1
- package/dist/atomic/components/atomic-result-html.js.map +1 -1
- package/dist/atomic/components/atomic-result-icon.js +1 -1
- package/dist/atomic/components/atomic-result-icon.js.map +1 -1
- package/dist/atomic/components/atomic-result-image.js +1 -1
- package/dist/atomic/components/atomic-result-image.js.map +1 -1
- package/dist/atomic/components/atomic-result-link.js +2 -2
- package/dist/atomic/components/atomic-result-link.js.map +1 -1
- package/dist/atomic/components/atomic-result-list.js +1 -1
- package/dist/atomic/components/atomic-result-localized-text.js +1 -1
- package/dist/atomic/components/atomic-result-localized-text.js.map +1 -1
- package/dist/atomic/components/atomic-result-multi-value-text.js +1 -1
- package/dist/atomic/components/atomic-result-multi-value-text.js.map +1 -1
- package/dist/atomic/components/atomic-result-number.js +1 -1
- package/dist/atomic/components/atomic-result-number.js.map +1 -1
- package/dist/atomic/components/atomic-result-printable-uri.js +1 -1
- package/dist/atomic/components/atomic-result-printable-uri.js.map +1 -1
- package/dist/atomic/components/atomic-result-rating.js +1 -1
- package/dist/atomic/components/atomic-result-rating.js.map +1 -1
- package/dist/atomic/components/atomic-result-table-placeholder2.js +1 -1
- package/dist/atomic/components/atomic-result-text2.js +1 -1
- package/dist/atomic/components/atomic-result-text2.js.map +1 -1
- package/dist/atomic/components/atomic-result-timespan.js +1 -1
- package/dist/atomic/components/atomic-result-timespan.js.map +1 -1
- package/dist/atomic/components/atomic-result2.js.map +1 -1
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js +1 -1
- package/dist/atomic/components/atomic-search-box.js +5 -11
- package/dist/atomic/components/atomic-search-box.js.map +1 -1
- package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
- package/dist/atomic/components/atomic-smart-snippet-source2.js +1 -1
- package/dist/atomic/components/atomic-smart-snippet-source2.js.map +1 -1
- package/dist/atomic/components/atomic-sort-dropdown.js +2 -2
- package/dist/atomic/components/atomic-sort-expression.js +1 -1
- package/dist/atomic/components/atomic-tab-manager.js +1 -1
- package/dist/atomic/components/clock.js +2 -2
- package/dist/atomic/components/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.js +17 -32
- package/dist/atomic/components/components/commerce/atomic-product/atomic-product.js +26 -58
- package/dist/atomic/components/components/commerce/atomic-product-children/atomic-product-children.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-description/atomic-product-description.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-excerpt/atomic-product-excerpt.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-field-condition/atomic-product-field-condition.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-image/atomic-product-image.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-link/atomic-product-link.js +2 -1
- package/dist/atomic/components/components/commerce/atomic-product-multi-value-text/atomic-product-multi-value-text.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-numeric-field-value/atomic-product-numeric-field-value.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-price/atomic-product-price.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-rating/atomic-product-rating.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-text/atomic-product-text.js +1 -1
- package/dist/atomic/components/components/commerce/product-template-component-utils/context/interactive-product-context-controller.js +25 -0
- package/dist/atomic/components/components/commerce/product-template-component-utils/context/product-context-controller.js +29 -0
- package/dist/atomic/components/components/common/atomic-layout-section/layout.js +1 -1
- package/dist/atomic/components/components/common/layout/custom-render-controller.js +37 -0
- package/dist/atomic/components/components/common/layout/display-options.js +1 -1
- package/dist/atomic/components/components/common/layout/item-layout-controller.js +103 -0
- package/dist/atomic/components/components/common/layout/{sections.js → item-layout-sections.js} +1 -1
- package/dist/atomic/components/components/common/product-template/product-template-common.js +1 -1
- package/dist/atomic/components/components/common/validate-props-controller/validate-props-controller.js +50 -0
- package/dist/atomic/components/components/insight/atomic-insight-layout/insight-layout.js +1 -1
- package/dist/atomic/components/components/search/atomic-relevance-inspector/atomic-relevance-inspector.js +100 -0
- package/dist/atomic/components/components/search/atomic-search-box-recent-queries/atomic-search-box-recent-queries.js +137 -0
- package/dist/atomic/components/components/search/atomic-search-interface/atomic-search-interface.js +17 -24
- package/dist/atomic/components/components/search/index.js +2 -0
- package/dist/atomic/components/components/search/lazy-index.js +2 -0
- package/dist/atomic/components/display-options.js +1 -1
- package/dist/atomic/components/display-options.js.map +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/components/insight-layout.js +1 -1
- package/dist/atomic/components/insight-layout.js.map +1 -1
- package/dist/atomic/components/{sections2.js → item-layout-sections.js} +1 -1
- package/dist/atomic/components/item-layout-sections.js.map +1 -0
- package/dist/atomic/components/result-template-common.js +1 -1
- package/dist/atomic/components/result-template-common.js.map +1 -1
- package/dist/atomic/components/{result-template-decorators.js → stencil-result-template-decorators.js} +6 -2
- package/dist/atomic/components/stencil-result-template-decorators.js.map +1 -0
- package/dist/atomic/components/utils/compare-utils.js +49 -0
- package/dist/atomic/index.esm.js +1 -1
- package/dist/atomic/index.esm.js.map +1 -1
- package/dist/atomic/{p-0c8e7d5f.entry.js → p-0112f957.entry.js} +2 -2
- package/dist/atomic/p-0112f957.entry.js.map +1 -0
- package/dist/atomic/{p-8fdef8a3.entry.js → p-049228f2.entry.js} +2 -2
- package/dist/atomic/p-049228f2.entry.js.map +1 -0
- package/dist/atomic/{p-2caa1859.js → p-0e62bdd6.js} +2 -2
- package/dist/atomic/p-0e62bdd6.js.map +1 -0
- package/dist/atomic/{p-60800b2f.entry.js → p-0ed76e65.entry.js} +2 -2
- package/dist/atomic/{p-5f706e3d.entry.js → p-170c7da6.entry.js} +2 -2
- package/dist/atomic/{p-3857d6a3.entry.js → p-1bbaf206.entry.js} +2 -2
- package/dist/atomic/{p-7c3c5f07.entry.js → p-1ff761e0.entry.js} +2 -2
- package/dist/atomic/p-1ff761e0.entry.js.map +1 -0
- package/dist/atomic/{p-4723ffa5.entry.js → p-20b33c18.entry.js} +2 -2
- package/dist/atomic/{p-7709fba4.js → p-2250f505.js} +2 -2
- package/dist/atomic/p-2250f505.js.map +1 -0
- package/dist/atomic/{p-4069d801.entry.js → p-268ce7ca.entry.js} +2 -2
- package/dist/atomic/p-268ce7ca.entry.js.map +1 -0
- package/dist/atomic/{p-16f6c1f3.entry.js → p-2fb49fe8.entry.js} +2 -2
- package/dist/atomic/{p-13391e75.entry.js → p-3549a469.entry.js} +2 -2
- package/dist/atomic/{p-bd3542d2.entry.js → p-36112c34.entry.js} +2 -2
- package/dist/atomic/p-36112c34.entry.js.map +1 -0
- package/dist/atomic/{p-d6e04719.entry.js → p-373448df.entry.js} +2 -2
- package/dist/atomic/{p-e9dc8e90.entry.js → p-3ec45f9c.entry.js} +2 -2
- package/dist/atomic/p-3ec45f9c.entry.js.map +1 -0
- package/dist/atomic/{p-18684d4c.js → p-4080f740.js} +1 -1
- package/dist/atomic/p-4080f740.js.map +1 -0
- package/dist/atomic/{p-88af4470.entry.js → p-40c1dfcb.entry.js} +2 -2
- package/dist/atomic/{p-475124d2.entry.js → p-464370f7.entry.js} +2 -2
- package/dist/atomic/p-464370f7.entry.js.map +1 -0
- package/dist/atomic/{p-190ddaca.entry.js → p-4cf97b0a.entry.js} +2 -2
- package/dist/atomic/p-4cf97b0a.entry.js.map +1 -0
- package/dist/atomic/{p-20764605.entry.js → p-52d5461a.entry.js} +2 -2
- package/dist/atomic/{p-2e4628bb.entry.js → p-5894d6f6.entry.js} +2 -2
- package/dist/atomic/p-5894d6f6.entry.js.map +1 -0
- package/dist/atomic/{p-78427c6a.entry.js → p-5a9460ab.entry.js} +2 -2
- package/dist/atomic/p-5a9460ab.entry.js.map +1 -0
- package/dist/atomic/{p-fafd5042.entry.js → p-5f2abcb4.entry.js} +2 -2
- package/dist/atomic/p-5f2abcb4.entry.js.map +1 -0
- package/dist/atomic/{p-406a288c.entry.js → p-6078667f.entry.js} +2 -2
- package/dist/atomic/p-62e85c20.entry.js +2 -0
- package/dist/atomic/{p-1ff7a9da.entry.js → p-6a3b139f.entry.js} +2 -2
- package/dist/atomic/p-6a3b139f.entry.js.map +1 -0
- package/dist/atomic/p-6f1bffa2.entry.js +2 -0
- package/dist/atomic/p-6f1bffa2.entry.js.map +1 -0
- package/dist/atomic/{p-93da1f4e.entry.js → p-6f34dd3a.entry.js} +2 -2
- package/dist/atomic/p-6f34dd3a.entry.js.map +1 -0
- package/dist/atomic/{p-aa99e45e.js → p-74373c0a.js} +2 -2
- package/dist/atomic/{p-0c0b8d41.entry.js → p-768b172e.entry.js} +2 -2
- package/dist/atomic/{p-57020985.entry.js → p-77410a85.entry.js} +2 -2
- package/dist/atomic/{p-3cbab25b.entry.js → p-7e971d15.entry.js} +2 -2
- package/dist/atomic/{p-4601eb93.entry.js → p-83d3857f.entry.js} +2 -2
- package/dist/atomic/{p-ee957926.entry.js → p-8ce6badd.entry.js} +2 -2
- package/dist/atomic/p-8ce6badd.entry.js.map +1 -0
- package/dist/atomic/{p-b3f6561d.entry.js → p-8e964890.entry.js} +2 -2
- package/dist/atomic/p-8e964890.entry.js.map +1 -0
- package/dist/atomic/{p-6289adc7.entry.js → p-9239be63.entry.js} +2 -2
- package/dist/atomic/{p-f71b14b2.entry.js → p-9260dd7d.entry.js} +2 -2
- package/dist/atomic/{p-dbf0c5a3.entry.js → p-9564d67d.entry.js} +2 -2
- package/dist/atomic/{p-dbf0c5a3.entry.js.map → p-9564d67d.entry.js.map} +1 -1
- package/dist/atomic/{p-ed8e5c4d.entry.js → p-98dd6df1.entry.js} +2 -2
- package/dist/atomic/{p-3a7a1a00.entry.js → p-99d3a8ce.entry.js} +2 -2
- package/dist/atomic/p-99d3a8ce.entry.js.map +1 -0
- package/dist/atomic/{p-0b5efb51.entry.js → p-a1e5f767.entry.js} +2 -2
- package/dist/atomic/{p-1db20a4a.entry.js → p-a5f66ecd.entry.js} +2 -2
- package/dist/atomic/{p-c9f1790d.entry.js → p-acb1704c.entry.js} +2 -2
- package/dist/atomic/p-acb1704c.entry.js.map +1 -0
- package/dist/atomic/{p-7ec6dd3e.entry.js → p-af1b4924.entry.js} +2 -2
- package/dist/atomic/{p-e398835b.entry.js → p-b2b9e83f.entry.js} +2 -2
- package/dist/atomic/{p-0bdd730f.entry.js → p-b6ae0244.entry.js} +2 -2
- package/dist/atomic/{p-97ce3384.entry.js → p-be2a43f4.entry.js} +2 -2
- package/dist/atomic/{p-0f39889d.entry.js → p-c34f8190.entry.js} +2 -2
- package/dist/atomic/p-c34f8190.entry.js.map +1 -0
- package/dist/atomic/{p-c25f1437.entry.js → p-c41ab197.entry.js} +2 -2
- package/dist/atomic/p-c41ab197.entry.js.map +1 -0
- package/dist/atomic/{p-577d34ba.entry.js → p-c4fb6426.entry.js} +2 -2
- package/dist/atomic/{p-93f1d551.entry.js → p-c6e2939f.entry.js} +2 -2
- package/dist/atomic/p-c6e2939f.entry.js.map +1 -0
- package/dist/atomic/{p-723f76a1.entry.js → p-ca8c87ce.entry.js} +2 -2
- package/dist/atomic/{p-723f76a1.entry.js.map → p-ca8c87ce.entry.js.map} +1 -1
- package/dist/atomic/{p-852cc16d.entry.js → p-cacb7fd8.entry.js} +2 -2
- package/dist/atomic/p-cacb7fd8.entry.js.map +1 -0
- package/dist/atomic/{p-9c7dbbdf.js → p-cc2b2231.js} +1 -1
- package/dist/atomic/p-cc2b2231.js.map +1 -0
- package/dist/atomic/{p-a5714bc4.entry.js → p-d211a422.entry.js} +2 -2
- package/dist/atomic/{p-9faad55b.entry.js → p-dc128135.entry.js} +2 -2
- package/dist/atomic/{p-97748161.js → p-dc28ee14.js} +1 -1
- package/dist/{esm/sections-d787040b.js.map → atomic/p-dc28ee14.js.map} +1 -1
- package/dist/atomic/{p-c280cd05.js → p-e1cc5150.js} +1 -1
- package/dist/atomic/{p-945ddd53.entry.js → p-e1dbe31d.entry.js} +2 -2
- package/dist/atomic/p-e1dbe31d.entry.js.map +1 -0
- package/dist/atomic/{p-27b8404c.js → p-e62fc40e.js} +2 -2
- package/dist/atomic/p-e62fc40e.js.map +1 -0
- package/dist/atomic/{p-d1795580.entry.js → p-e7a25b00.entry.js} +2 -2
- package/dist/atomic/{p-a4d277c7.entry.js → p-e983d6cc.entry.js} +2 -2
- package/dist/atomic/p-e983d6cc.entry.js.map +1 -0
- package/dist/atomic/{p-dbcef3a9.entry.js → p-ed603210.entry.js} +2 -2
- package/dist/atomic/p-ed603210.entry.js.map +1 -0
- package/dist/atomic/{p-9337e1eb.entry.js → p-f251fa62.entry.js} +2 -2
- package/dist/atomic/{p-a71f04f4.entry.js → p-ff91ba6a.entry.js} +2 -2
- package/dist/cjs/_index.cjs.js +20 -20
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-5b0864ae.js → analytics-config-bc01ed6d.js} +2 -2
- package/dist/cjs/{analytics-config-5b0864ae.js.map → analytics-config-bc01ed6d.js.map} +1 -1
- package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-field-condition.cjs.entry.js +4 -4
- package/dist/cjs/atomic-field-condition.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-folded-result-list.cjs.entry.js +2 -2
- package/dist/cjs/atomic-format-currency.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-number.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-unit.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +3 -3
- package/dist/cjs/atomic-insight-layout.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js +3 -3
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js +3 -3
- package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js +3 -3
- package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-children-template.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-result-list.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js +3 -3
- package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-template.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-result.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +2 -2
- package/dist/cjs/atomic-ipx-result-link.cjs.entry.js +4 -4
- package/dist/cjs/atomic-ipx-result-link.cjs.entry.js.map +1 -1
- package/dist/cjs/{sections-4b4af2f8.js → atomic-layout-section-utils-08b4fbcd.js} +1 -1
- package/dist/cjs/atomic-layout-section-utils-08b4fbcd.js.map +1 -0
- package/dist/cjs/atomic-numeric-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js +23 -23
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-quickview.cjs.entry.js +3 -3
- package/dist/cjs/atomic-quickview.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-list.cjs.entry.js +2 -2
- package/dist/cjs/atomic-recs-result-template.cjs.entry.js +2 -2
- package/dist/cjs/atomic-recs-result.cjs.entry.js +2 -2
- package/dist/cjs/atomic-refine-modal.cjs.entry.js +4 -4
- package/dist/cjs/atomic-refine-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-badge.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-children-template.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-children.cjs.entry.js +3 -3
- package/dist/cjs/atomic-result-children.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-date.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-date.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-fields-list.cjs.entry.js +3 -3
- package/dist/cjs/atomic-result-fields-list.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-html.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-html.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-icon.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-image.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-image.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-link.cjs.entry.js +4 -4
- package/dist/cjs/atomic-result-link.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-list.cjs.entry.js +3 -3
- package/dist/cjs/atomic-result-localized-text.cjs.entry.js +3 -3
- package/dist/cjs/atomic-result-localized-text.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-multi-value-text.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-multi-value-text.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-number.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-number.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-placeholder_2.cjs.entry.js +3 -3
- package/dist/cjs/atomic-result-printable-uri.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-printable-uri.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-rating.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-rating.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-template.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-text_2.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-text_2.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-timespan.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-timespan.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js +76 -0
- package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-search-box.cjs.entry.js +3 -3
- package/dist/cjs/atomic-smart-snippet-answer_2.cjs.entry.js +1 -1
- package/dist/cjs/atomic-smart-snippet-answer_2.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-expression.cjs.entry.js +1 -1
- package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
- package/dist/cjs/atomic.cjs.js +1 -1
- package/dist/cjs/clock-7aeb19d0.js +7 -0
- package/dist/cjs/clock-7aeb19d0.js.map +1 -0
- package/dist/cjs/{display-options-14f05862.js → display-options-69531e8d.js} +4 -4
- package/dist/cjs/display-options-69531e8d.js.map +1 -0
- package/dist/cjs/index-757bc886.js +2 -6
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{insight-layout-355a94dd.js → insight-layout-b6ff92fd.js} +11 -11
- package/dist/cjs/insight-layout-b6ff92fd.js.map +1 -0
- package/dist/cjs/{sections-fbb93b53.js → item-layout-sections-b09ba4b3.js} +1 -1
- package/dist/cjs/item-layout-sections-b09ba4b3.js.map +1 -0
- package/dist/cjs/{result-template-common-88359dad.js → result-template-common-84bd4057.js} +3 -3
- package/dist/cjs/result-template-common-84bd4057.js.map +1 -0
- package/dist/cjs/{result-template-decorators-432d11a9.js → stencil-result-template-decorators-28b05aaf.js} +6 -2
- package/dist/cjs/stencil-result-template-decorators-28b05aaf.js.map +1 -0
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_index.js +19 -19
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-64be937d.js → analytics-config-8e41e174.js} +2 -2
- package/dist/esm/{analytics-config-64be937d.js.map → analytics-config-8e41e174.js.map} +1 -1
- package/dist/esm/atomic-category-facet.entry.js +1 -1
- package/dist/esm/atomic-facet.entry.js +1 -1
- package/dist/esm/atomic-field-condition.entry.js +3 -3
- package/dist/esm/atomic-field-condition.entry.js.map +1 -1
- package/dist/esm/atomic-folded-result-list.entry.js +2 -2
- package/dist/esm/atomic-format-currency.entry.js +1 -1
- package/dist/esm/atomic-format-number.entry.js +1 -1
- package/dist/esm/atomic-format-unit.entry.js +1 -1
- package/dist/esm/atomic-insight-folded-result-list.entry.js +2 -2
- package/dist/esm/atomic-insight-history-toggle.entry.js +2 -2
- package/dist/esm/atomic-insight-history-toggle.entry.js.map +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +3 -3
- package/dist/esm/atomic-insight-layout.entry.js +2 -2
- package/dist/esm/atomic-insight-result-action.entry.js +2 -2
- package/dist/esm/atomic-insight-result-action.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js +2 -2
- package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js +2 -2
- package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-children-template.entry.js +2 -2
- package/dist/esm/atomic-insight-result-list.entry.js +2 -2
- package/dist/esm/atomic-insight-result-quickview-action.entry.js +2 -2
- package/dist/esm/atomic-insight-result-quickview-action.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-template.entry.js +2 -2
- package/dist/esm/atomic-insight-result.entry.js +2 -2
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js +2 -2
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js.map +1 -1
- package/dist/esm/atomic-ipx-recs-list.entry.js +2 -2
- package/dist/esm/atomic-ipx-result-link.entry.js +2 -2
- package/dist/esm/atomic-ipx-result-link.entry.js.map +1 -1
- package/dist/{atomic/components/sections.js → esm/atomic-layout-section-utils-c8ca7445.js} +1 -1
- package/dist/esm/atomic-layout-section-utils-c8ca7445.js.map +1 -0
- package/dist/esm/atomic-numeric-facet.entry.js +1 -1
- package/dist/esm/atomic-quickview-modal.entry.js +23 -23
- package/dist/esm/atomic-quickview-modal.entry.js.map +1 -1
- package/dist/esm/atomic-quickview.entry.js +2 -2
- package/dist/esm/atomic-quickview.entry.js.map +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-recs-list.entry.js +2 -2
- package/dist/esm/atomic-recs-result-template.entry.js +2 -2
- package/dist/esm/atomic-recs-result.entry.js +2 -2
- package/dist/esm/atomic-refine-modal.entry.js +2 -2
- package/dist/esm/atomic-refine-modal.entry.js.map +1 -1
- package/dist/esm/atomic-result-badge.entry.js +1 -1
- package/dist/esm/atomic-result-badge.entry.js.map +1 -1
- package/dist/esm/atomic-result-children-template.entry.js +2 -2
- package/dist/esm/atomic-result-children.entry.js +2 -2
- package/dist/esm/atomic-result-children.entry.js.map +1 -1
- package/dist/esm/atomic-result-date.entry.js +1 -1
- package/dist/esm/atomic-result-date.entry.js.map +1 -1
- package/dist/esm/atomic-result-fields-list.entry.js +2 -2
- package/dist/esm/atomic-result-fields-list.entry.js.map +1 -1
- package/dist/esm/atomic-result-html.entry.js +1 -1
- package/dist/esm/atomic-result-html.entry.js.map +1 -1
- package/dist/esm/atomic-result-icon.entry.js +1 -1
- package/dist/esm/atomic-result-icon.entry.js.map +1 -1
- package/dist/esm/atomic-result-image.entry.js +1 -1
- package/dist/esm/atomic-result-image.entry.js.map +1 -1
- package/dist/esm/atomic-result-link.entry.js +2 -2
- package/dist/esm/atomic-result-link.entry.js.map +1 -1
- package/dist/esm/atomic-result-list.entry.js +3 -3
- package/dist/esm/atomic-result-localized-text.entry.js +2 -2
- package/dist/esm/atomic-result-localized-text.entry.js.map +1 -1
- package/dist/esm/atomic-result-multi-value-text.entry.js +1 -1
- package/dist/esm/atomic-result-multi-value-text.entry.js.map +1 -1
- package/dist/esm/atomic-result-number.entry.js +1 -1
- package/dist/esm/atomic-result-number.entry.js.map +1 -1
- package/dist/esm/atomic-result-placeholder_2.entry.js +3 -3
- package/dist/esm/atomic-result-printable-uri.entry.js +1 -1
- package/dist/esm/atomic-result-printable-uri.entry.js.map +1 -1
- package/dist/esm/atomic-result-rating.entry.js +1 -1
- package/dist/esm/atomic-result-rating.entry.js.map +1 -1
- package/dist/esm/atomic-result-template.entry.js +2 -2
- package/dist/esm/atomic-result-text_2.entry.js +1 -1
- package/dist/esm/atomic-result-text_2.entry.js.map +1 -1
- package/dist/esm/atomic-result-timespan.entry.js +1 -1
- package/dist/esm/atomic-result-timespan.entry.js.map +1 -1
- package/dist/esm/atomic-result.entry.js +2 -2
- package/dist/esm/atomic-result.entry.js.map +1 -1
- package/dist/esm/atomic-search-box-query-suggestions.entry.js +72 -0
- package/dist/esm/atomic-search-box-query-suggestions.entry.js.map +1 -0
- package/dist/esm/atomic-search-box.entry.js +3 -3
- package/dist/esm/atomic-smart-snippet-answer_2.entry.js +1 -1
- package/dist/esm/atomic-smart-snippet-answer_2.entry.js.map +1 -1
- package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
- package/dist/esm/atomic-sort-dropdown.entry.js +2 -2
- package/dist/esm/atomic-sort-expression.entry.js +1 -1
- package/dist/esm/atomic-tab-manager.entry.js +1 -1
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/clock-b1f5d7f7.js +5 -0
- package/dist/esm/clock-b1f5d7f7.js.map +1 -0
- package/dist/esm/{display-options-c16840c6.js → display-options-1199eed5.js} +2 -2
- package/dist/esm/display-options-1199eed5.js.map +1 -0
- package/dist/esm/index-3f35faca.js +2 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{insight-layout-776b87f2.js → insight-layout-a1e4b795.js} +2 -2
- package/dist/esm/insight-layout-a1e4b795.js.map +1 -0
- package/dist/esm/{sections-d787040b.js → item-layout-sections-8afb5049.js} +1 -1
- package/dist/esm/item-layout-sections-8afb5049.js.map +1 -0
- package/dist/esm/{result-template-common-ac9fecab.js → result-template-common-995b94f8.js} +2 -2
- package/dist/esm/result-template-common-995b94f8.js.map +1 -0
- package/dist/esm/{result-template-decorators-2ed76ea9.js → stencil-result-template-decorators-f989bc6b.js} +6 -2
- package/dist/esm/stencil-result-template-decorators-f989bc6b.js.map +1 -0
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.d.ts +2 -3
- package/dist/types/components/commerce/atomic-product/atomic-product.d.ts +5 -17
- package/dist/types/components/commerce/product-template-component-utils/context/fetch-product-context.d.ts +12 -0
- package/dist/types/components/commerce/product-template-component-utils/context/interactive-product-context-controller.d.ts +27 -0
- package/dist/types/components/commerce/product-template-component-utils/context/product-context-controller.d.ts +33 -0
- package/dist/types/components/commerce/product-template-component-utils/{stencil-product-template-decorators.d.ts → context/stencil-product-template-decorators.d.ts} +1 -1
- package/dist/types/components/common/atomic-layout-section/atomic-layout-section.d.ts +1 -1
- package/dist/types/components/common/facets/facet-search/facet-search-input-guard.d.ts +1 -1
- package/dist/types/components/common/layout/custom-render-controller.d.ts +25 -0
- package/dist/types/components/common/layout/item-layout-controller.d.ts +47 -0
- package/dist/types/components/common/no-items/guard.d.ts +1 -1
- package/dist/types/components/common/refine-modal/guard.d.ts +1 -1
- package/dist/types/components/common/smart-snippets/atomic-smart-snippet-source.d.ts +1 -1
- package/dist/types/components/common/sort/sort-guard.d.ts +1 -1
- package/dist/types/components/common/validate-props-controller/validate-props-controller.d.ts +32 -0
- package/dist/types/components/search/atomic-relevance-inspector/atomic-relevance-inspector.d.ts +18 -8
- package/dist/types/components/search/atomic-result/atomic-result.d.ts +1 -1
- package/dist/types/components/search/atomic-search-box-recent-queries/atomic-search-box-recent-queries.d.ts +45 -0
- package/dist/types/components/search/atomic-search-interface/atomic-search-interface.d.ts +6 -3
- package/dist/types/components/search/index.d.ts +2 -0
- package/dist/types/components/search/result-template-component-utils/context/fetch-result-context.d.ts +8 -0
- package/dist/types/components/search/result-template-component-utils/context/interactive-result-context-controller.d.ts +12 -0
- package/dist/types/components/search/result-template-component-utils/context/result-context-controller.d.ts +18 -0
- package/dist/types/components/search/{result-template-components/result-template-decorators.d.ts → result-template-component-utils/context/stencil-result-template-decorators.d.ts} +6 -2
- package/dist/types/components.d.ts +0 -102
- package/dist/types/directives/hierarchical-path.d.ts +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/utils/compare-utils.d.ts +9 -0
- package/docs/atomic-docs.json +1 -185
- package/package.json +7 -7
- package/dist/atomic/components/atomic-relevance-inspector.d.ts +0 -11
- package/dist/atomic/components/atomic-relevance-inspector.js +0 -53
- package/dist/atomic/components/atomic-relevance-inspector.js.map +0 -1
- package/dist/atomic/components/atomic-search-box-recent-queries.d.ts +0 -11
- package/dist/atomic/components/atomic-search-box-recent-queries.js +0 -8
- package/dist/atomic/components/atomic-search-box-recent-queries.js.map +0 -1
- package/dist/atomic/components/atomic-search-box-recent-queries2.js +0 -183
- package/dist/atomic/components/atomic-search-box-recent-queries2.js.map +0 -1
- package/dist/atomic/components/components/common/item-list/fetch-item-context.js +0 -15
- package/dist/atomic/components/decorators/commerce/product-template-decorators.js +0 -68
- package/dist/atomic/components/result-template-decorators.js.map +0 -1
- package/dist/atomic/components/sections.js.map +0 -1
- package/dist/atomic/components/sections2.js.map +0 -1
- package/dist/atomic/p-0c8e7d5f.entry.js.map +0 -1
- package/dist/atomic/p-0f39889d.entry.js.map +0 -1
- package/dist/atomic/p-18684d4c.js.map +0 -1
- package/dist/atomic/p-190ddaca.entry.js.map +0 -1
- package/dist/atomic/p-1ff7a9da.entry.js.map +0 -1
- package/dist/atomic/p-250f34d4.entry.js +0 -2
- package/dist/atomic/p-27b8404c.js.map +0 -1
- package/dist/atomic/p-2caa1859.js.map +0 -1
- package/dist/atomic/p-2e4628bb.entry.js.map +0 -1
- package/dist/atomic/p-3a7a1a00.entry.js.map +0 -1
- package/dist/atomic/p-4069d801.entry.js.map +0 -1
- package/dist/atomic/p-475124d2.entry.js.map +0 -1
- package/dist/atomic/p-7709fba4.js.map +0 -1
- package/dist/atomic/p-78427c6a.entry.js.map +0 -1
- package/dist/atomic/p-7c3c5f07.entry.js.map +0 -1
- package/dist/atomic/p-852cc16d.entry.js.map +0 -1
- package/dist/atomic/p-8fdef8a3.entry.js.map +0 -1
- package/dist/atomic/p-93da1f4e.entry.js.map +0 -1
- package/dist/atomic/p-93f1d551.entry.js.map +0 -1
- package/dist/atomic/p-945ddd53.entry.js.map +0 -1
- package/dist/atomic/p-97748161.js.map +0 -1
- package/dist/atomic/p-9c7dbbdf.js.map +0 -1
- package/dist/atomic/p-a4d277c7.entry.js.map +0 -1
- package/dist/atomic/p-b3f6561d.entry.js.map +0 -1
- package/dist/atomic/p-bd3542d2.entry.js.map +0 -1
- package/dist/atomic/p-c25f1437.entry.js.map +0 -1
- package/dist/atomic/p-c9f1790d.entry.js.map +0 -1
- package/dist/atomic/p-dbcef3a9.entry.js.map +0 -1
- package/dist/atomic/p-de687bed.entry.js +0 -2
- package/dist/atomic/p-de687bed.entry.js.map +0 -1
- package/dist/atomic/p-df4397ab.entry.js +0 -2
- package/dist/atomic/p-df4397ab.entry.js.map +0 -1
- package/dist/atomic/p-e9dc8e90.entry.js.map +0 -1
- package/dist/atomic/p-ee957926.entry.js.map +0 -1
- package/dist/atomic/p-fafd5042.entry.js.map +0 -1
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js +0 -38
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +0 -234
- package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js.map +0 -1
- package/dist/cjs/clock-f03ff827.js +0 -7
- package/dist/cjs/clock-f03ff827.js.map +0 -1
- package/dist/cjs/display-options-14f05862.js.map +0 -1
- package/dist/cjs/insight-layout-355a94dd.js.map +0 -1
- package/dist/cjs/result-template-common-88359dad.js.map +0 -1
- package/dist/cjs/result-template-decorators-432d11a9.js.map +0 -1
- package/dist/cjs/sections-4b4af2f8.js.map +0 -1
- package/dist/cjs/sections-fbb93b53.js.map +0 -1
- package/dist/esm/atomic-relevance-inspector.entry.js +0 -34
- package/dist/esm/atomic-relevance-inspector.entry.js.map +0 -1
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +0 -229
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js.map +0 -1
- package/dist/esm/clock-add3e9a5.js +0 -5
- package/dist/esm/clock-add3e9a5.js.map +0 -1
- package/dist/esm/display-options-c16840c6.js.map +0 -1
- package/dist/esm/insight-layout-776b87f2.js.map +0 -1
- package/dist/esm/result-template-common-ac9fecab.js.map +0 -1
- package/dist/esm/result-template-decorators-2ed76ea9.js.map +0 -1
- package/dist/esm/sections-ae00b53a.js.map +0 -1
- package/dist/types/components/search/search-box-suggestions/atomic-search-box-recent-queries/atomic-search-box-recent-queries.d.ts +0 -37
- package/dist/types/decorators/commerce/product-template-decorators.d.ts +0 -68
- /package/dist/atomic/components/components/common/atomic-layout-section/{sections.js → atomic-layout-section-utils.js} +0 -0
- /package/dist/atomic/{p-60800b2f.entry.js.map → p-0ed76e65.entry.js.map} +0 -0
- /package/dist/atomic/{p-5f706e3d.entry.js.map → p-170c7da6.entry.js.map} +0 -0
- /package/dist/atomic/{p-3857d6a3.entry.js.map → p-1bbaf206.entry.js.map} +0 -0
- /package/dist/atomic/{p-4723ffa5.entry.js.map → p-20b33c18.entry.js.map} +0 -0
- /package/dist/atomic/{p-16f6c1f3.entry.js.map → p-2fb49fe8.entry.js.map} +0 -0
- /package/dist/atomic/{p-13391e75.entry.js.map → p-3549a469.entry.js.map} +0 -0
- /package/dist/atomic/{p-d6e04719.entry.js.map → p-373448df.entry.js.map} +0 -0
- /package/dist/atomic/{p-88af4470.entry.js.map → p-40c1dfcb.entry.js.map} +0 -0
- /package/dist/atomic/{p-20764605.entry.js.map → p-52d5461a.entry.js.map} +0 -0
- /package/dist/atomic/{p-406a288c.entry.js.map → p-6078667f.entry.js.map} +0 -0
- /package/dist/atomic/{p-250f34d4.entry.js.map → p-62e85c20.entry.js.map} +0 -0
- /package/dist/atomic/{p-aa99e45e.js.map → p-74373c0a.js.map} +0 -0
- /package/dist/atomic/{p-0c0b8d41.entry.js.map → p-768b172e.entry.js.map} +0 -0
- /package/dist/atomic/{p-57020985.entry.js.map → p-77410a85.entry.js.map} +0 -0
- /package/dist/atomic/{p-3cbab25b.entry.js.map → p-7e971d15.entry.js.map} +0 -0
- /package/dist/atomic/{p-4601eb93.entry.js.map → p-83d3857f.entry.js.map} +0 -0
- /package/dist/atomic/{p-6289adc7.entry.js.map → p-9239be63.entry.js.map} +0 -0
- /package/dist/atomic/{p-f71b14b2.entry.js.map → p-9260dd7d.entry.js.map} +0 -0
- /package/dist/atomic/{p-ed8e5c4d.entry.js.map → p-98dd6df1.entry.js.map} +0 -0
- /package/dist/atomic/{p-0b5efb51.entry.js.map → p-a1e5f767.entry.js.map} +0 -0
- /package/dist/atomic/{p-1db20a4a.entry.js.map → p-a5f66ecd.entry.js.map} +0 -0
- /package/dist/atomic/{p-7ec6dd3e.entry.js.map → p-af1b4924.entry.js.map} +0 -0
- /package/dist/atomic/{p-e398835b.entry.js.map → p-b2b9e83f.entry.js.map} +0 -0
- /package/dist/atomic/{p-0bdd730f.entry.js.map → p-b6ae0244.entry.js.map} +0 -0
- /package/dist/atomic/{p-97ce3384.entry.js.map → p-be2a43f4.entry.js.map} +0 -0
- /package/dist/atomic/{p-577d34ba.entry.js.map → p-c4fb6426.entry.js.map} +0 -0
- /package/dist/atomic/{p-a5714bc4.entry.js.map → p-d211a422.entry.js.map} +0 -0
- /package/dist/atomic/{p-9faad55b.entry.js.map → p-dc128135.entry.js.map} +0 -0
- /package/dist/atomic/{p-c280cd05.js.map → p-e1cc5150.js.map} +0 -0
- /package/dist/atomic/{p-d1795580.entry.js.map → p-e7a25b00.entry.js.map} +0 -0
- /package/dist/atomic/{p-9337e1eb.entry.js.map → p-f251fa62.entry.js.map} +0 -0
- /package/dist/atomic/{p-a71f04f4.entry.js.map → p-ff91ba6a.entry.js.map} +0 -0
- /package/dist/types/components/common/atomic-layout-section/{sections.d.ts → atomic-layout-section-utils.d.ts} +0 -0
- /package/dist/types/components/common/layout/{sections.d.ts → item-layout-sections.d.ts} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["ResultContext","opts","folded","ItemContext","parentName","InteractiveResultContext","InteractiveItemContext","resultContext","element","itemContext"],"sources":["src/components/search/result-template-components/result-template-decorators.tsx"],"sourcesContent":["import {FoldedResult, Result} from '@coveo/headless';\nimport {\n InteractiveItemContext,\n InteractiveItemContextEvent,\n ItemContext,\n ItemContextEvent,\n itemContext,\n} from '../../common/item-list/stencil-item-decorators';\n\n/**\n * A [StencilJS property decorator](https://stenciljs.com/) to be used for result template components.\n * This allows the Stencil component to fetch the current result from its rendered parent, the `atomic-result` component.\n *\n * Example:\n * @ResultContext() private result!: Result;\n *\n * For more information and examples, view the \"Utilities\" section of the readme.\n */\nexport function ResultContext(opts: {folded: boolean} = {folded: false}) {\n return ItemContext({parentName: 'atomic-result', folded: opts.folded});\n}\n\nexport function InteractiveResultContext() {\n return InteractiveItemContext();\n}\n\nexport type ResultContextEvent<T = Result> = ItemContextEvent<T>;\nexport type InteractiveResultContextEvent = InteractiveItemContextEvent;\n\n/**\n * Retrieves `Result` on a rendered `atomic-result`.\n *\n * This method is useful for building custom result template elements, see [Create a Result List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-result-template-component-example) for more information.\n *\n * You should use the method in the [connectedCallback lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).\n *\n * @param element The element that the event is dispatched to, which must be the child of a rendered \"atomic-result\".\n * @returns A promise that resolves on initialization of the parent \"atomic-result\" element, or rejects when there is no parent \"atomic-result\" element.\n */\nexport function resultContext<T extends Result | FoldedResult = Result>(\n element: Element\n) {\n return itemContext<T>(element, 'atomic-result');\n}\n"],"mappings":"2DAkBgBA,EAAcC,EAA0B,CAACC,OAAQ,QAC/D,OAAOC,EAAY,CAACC,WAAY,gBAAiBF,OAAQD,EAAKC,QAChE,C,SAEgBG,IACd,OAAOC,GACT,C,SAegBC,EACdC,GAEA,OAAOC,EAAeD,EAAS,gBACjC,Q","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["possiblyWarnOnBadFieldType","field","itemValueRaw","host","logger","isArray","error","nodeName","toLowerCase","ItemTextFallback","defaultValue","item","getProperty","children","raw","isUndefined","remove","h","Fragment","renderWithHighlights","value","highlights","highlightString","openingDelimiter","closingDelimiter","highlightedValue","content","replace","RegExp","ItemTextHighlighted","highlightKeywords","onError","textValue","Host","innerHTML","AtomicResultText","this","shouldHighlight","render","resultValueAsString","getStringValueFromResultOrNull","result","bindings","engine","default","ResultTemplatesHelpers","getResultProperty","getFieldValueCaption","i18n","HighlightUtils","__decorate","InitializeBindings","ResultContext","AtomicText","strings","t","count","connectedCallback","Error"],"sources":["src/components/common/item-text/field-warning.ts","src/components/common/item-text/stencil-item-text-fallback.tsx","src/components/common/item-text/render-highlights.ts","src/components/common/item-text/stencil-item-text-highlighted.tsx","src/components/search/result-template-components/atomic-result-text/atomic-result-text.tsx","src/components/search/atomic-text/atomic-text.tsx"],"sourcesContent":["import {isArray} from '@coveo/bueno';\n\nexport function possiblyWarnOnBadFieldType(\n field: string,\n itemValueRaw: unknown,\n host: HTMLElement,\n logger: Pick<Console, 'error'>\n) {\n if (isArray(itemValueRaw)) {\n logger.error(\n `${host.nodeName.toLowerCase()} cannot be used with multi value field \"${field}\" with values \"${itemValueRaw}\".`,\n host\n );\n }\n}\n","import {isUndefined} from '@coveo/bueno';\nimport {Fragment, FunctionalComponent, VNode, h} from '@stencil/core';\nimport {possiblyWarnOnBadFieldType} from './field-warning';\n\nexport interface ItemTextProps<T> {\n logger: Pick<Console, 'error'>;\n host: HTMLElement;\n defaultValue: string | undefined;\n field: string;\n item: T;\n getProperty: (result: T, property: string) => unknown;\n}\n\nexport const ItemTextFallback = <T,>(\n {field, host, logger, defaultValue, item, getProperty}: ItemTextProps<T>,\n children: VNode[]\n): FunctionalComponent<ItemTextProps<T>> | null => {\n const raw = getProperty(item, field);\n possiblyWarnOnBadFieldType(field, raw, host, logger);\n\n if (isUndefined(defaultValue)) {\n host.remove();\n return null;\n } else {\n return <Fragment>{children}</Fragment>;\n }\n};\n","export type HighlightKeywords = {\n offset: number;\n length: number;\n};\n\nexport type HighlightString = (params: {\n content: string;\n openingDelimiter: string;\n closingDelimiter: string;\n highlights: HighlightKeywords[];\n}) => string;\n\nexport function renderWithHighlights(\n value: string,\n highlights: HighlightKeywords[],\n highlightString: HighlightString\n) {\n const openingDelimiter = '_openingDelimiter_';\n const closingDelimiter = '_closingDelimiter_';\n const highlightedValue = highlightString({\n content: value,\n openingDelimiter,\n closingDelimiter,\n highlights,\n });\n return highlightedValue\n .replace(new RegExp(openingDelimiter, 'g'), '<b>')\n .replace(new RegExp(closingDelimiter, 'g'), '</b>');\n}\n","import {FunctionalComponent, h, Host} from '@stencil/core';\nimport {\n HighlightKeywords,\n HighlightString,\n renderWithHighlights,\n} from './render-highlights';\n\nexport interface ItemTextHighlightedProps {\n textValue: string;\n highlightKeywords: HighlightKeywords[];\n onError: (error: Error) => void;\n highlightString: HighlightString;\n}\n\nexport const ItemTextHighlighted: FunctionalComponent<\n ItemTextHighlightedProps\n> = ({highlightKeywords, highlightString, onError, textValue}) => {\n try {\n const highlightedValue = renderWithHighlights(\n textValue,\n highlightKeywords,\n highlightString\n );\n\n // deepcode ignore ReactSetInnerHtml: This is not React code\n return <Host innerHTML={highlightedValue}></Host>;\n } catch (error) {\n onError(error as Error);\n }\n};\n","import {HighlightUtils, Result, ResultTemplatesHelpers} from '@coveo/headless';\nimport {Component, Prop, h, Element, State} from '@stencil/core';\nimport {getFieldValueCaption} from '../../../../utils/field-utils';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {getStringValueFromResultOrNull} from '../../../../utils/result-utils';\nimport {ItemTextFallback} from '../../../common/item-text/stencil-item-text-fallback';\nimport {ItemTextHighlighted} from '../../../common/item-text/stencil-item-text-highlighted';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-result-text` component renders the value of a string result field.\n */\n@Component({\n tag: 'atomic-result-text',\n shadow: false,\n})\nexport class AtomicResultText implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @ResultContext() private result!: Result;\n\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The result field which the component should use.\n * This will look in the Result object first, and then in the Result.raw object for the fields.\n * It is important to include the necessary field in the `atomic-search-interface` component.\n */\n @Prop({reflect: true}) public field!: string;\n /**\n * When this is set to `true`, the component attempts to highlight text based on the highlighting properties provided by the search API response.\n */\n @Prop({reflect: true}) public shouldHighlight = true;\n\n /**\n * The locale key for the text to display when the configured field has no value.\n */\n @Prop({reflect: true}) public default?: string;\n\n public render() {\n const resultValueAsString = getStringValueFromResultOrNull(\n this.result,\n this.field\n );\n\n if (resultValueAsString === null) {\n return (\n <ItemTextFallback\n field={this.field}\n host={this.host}\n logger={this.bindings.engine.logger}\n defaultValue={this.default}\n item={this.result}\n getProperty={ResultTemplatesHelpers.getResultProperty}\n >\n <atomic-text\n value={getFieldValueCaption(\n this.field,\n this.default!,\n this.bindings.i18n\n )}\n ></atomic-text>\n </ItemTextFallback>\n );\n }\n\n const textValue = `${resultValueAsString}`;\n const highlightKeywords = ResultTemplatesHelpers.getResultProperty(\n this.result,\n `${this.field}Highlights`\n ) as HighlightUtils.HighlightKeyword[];\n\n return this.shouldHighlight && highlightKeywords ? (\n <ItemTextHighlighted\n textValue={textValue}\n highlightKeywords={highlightKeywords}\n highlightString={HighlightUtils.highlightString}\n onError={(error) => (this.error = error)}\n ></ItemTextHighlighted>\n ) : (\n getFieldValueCaption(this.field, textValue, this.bindings.i18n)\n );\n }\n}\n","import {Component, Prop, State} from '@stencil/core';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {Bindings} from '../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-text` component leverages the I18n translation module through the atomic-search-interface.\n */\n@Component({\n tag: 'atomic-text',\n shadow: true,\n})\nexport class AtomicText implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n\n private strings = {\n value: () =>\n this.bindings.i18n.t(this.value, {\n count: this.count,\n }),\n };\n @State() public error!: Error;\n\n /**\n * The string key value.\n */\n @Prop({reflect: true}) public value!: string;\n /**\n * The count value used for plurals.\n */\n @Prop({reflect: true}) public count?: number;\n\n public connectedCallback() {\n if (!this.value) {\n this.error = new Error('The \"value\" attribute must be defined.');\n }\n }\n\n public render() {\n return this.strings.value();\n }\n}\n"],"mappings":"sdAEgBA,EACdC,EACAC,EACAC,EACAC,GAEA,GAAIC,EAAQH,GAAe,CACzBE,EAAOE,MACL,GAAGH,EAAKI,SAASC,wDAAwDP,mBAAuBC,MAChGC,E,CAGN,CCDO,MAAMM,EAAmB,EAC7BR,QAAOE,OAAMC,SAAQM,eAAcC,OAAMC,eAC1CC,KAEA,MAAMC,EAAMF,EAAYD,EAAMV,GAC9BD,EAA2BC,EAAOa,EAAKX,EAAMC,GAE7C,GAAIW,EAAYL,GAAe,CAC7BP,EAAKa,SACL,OAAO,I,KACF,CACL,OAAOC,EAACC,EAAQ,KAAEL,E,YCZNM,EACdC,EACAC,EACAC,GAEA,MAAMC,EAAmB,qBACzB,MAAMC,EAAmB,qBACzB,MAAMC,EAAmBH,EAAgB,CACvCI,QAASN,EACTG,mBACAC,mBACAH,eAEF,OAAOI,EACJE,QAAQ,IAAIC,OAAOL,EAAkB,KAAM,OAC3CI,QAAQ,IAAIC,OAAOJ,EAAkB,KAAM,OAChD,CCdO,MAAMK,EAET,EAAEC,oBAAmBR,kBAAiBS,UAASC,gBACjD,IACE,MAAMP,EAAmBN,EACvBa,EACAF,EACAR,GAIF,OAAOL,EAACgB,EAAI,CAACC,UAAWT,G,CACxB,MAAOnB,GACPyB,EAAQzB,E,oXCPC6B,EAAgB,M,yBAiBGC,KAAAC,gBAAkB,K,+DAAA,K,uBAOzC,MAAAC,GACL,MAAMC,EAAsBC,EAC1BJ,KAAKK,OACLL,KAAKnC,OAGP,GAAIsC,IAAwB,KAAM,CAChC,OACEtB,EAACR,EAAgB,CACfR,MAAOmC,KAAKnC,MACZE,KAAMiC,KAAKjC,KACXC,OAAQgC,KAAKM,SAASC,OAAOvC,OAC7BM,aAAc0B,KAAKQ,QACnBjC,KAAMyB,KAAKK,OACX7B,YAAaiC,EAAuBC,mBAEpC7B,EAAA,eACEG,MAAO2B,EACLX,KAAKnC,MACLmC,KAAKQ,QACLR,KAAKM,SAASM,Q,CAOxB,MAAMhB,EAAY,GAAGO,IACrB,MAAMT,EAAoBe,EAAuBC,kBAC/CV,KAAKK,OACL,GAAGL,KAAKnC,mBAGV,OAAOmC,KAAKC,iBAAmBP,EAC7Bb,EAACY,EAAmB,CAClBG,UAAWA,EACXF,kBAAmBA,EACnBR,gBAAiB2B,EAAe3B,gBAChCS,QAAUzB,GAAW8B,KAAK9B,MAAQA,IAGpCyC,EAAqBX,KAAKnC,MAAO+B,EAAWI,KAAKM,SAASM,K,6BAhEjCE,GAA5BC,K,+BACwBD,GAAxBE,K,8YCRUC,EAAU,M,yBAGbjB,KAAAkB,QAAU,CAChBlC,MAAO,IACLgB,KAAKM,SAASM,KAAKO,EAAEnB,KAAKhB,MAAO,CAC/BoC,MAAOpB,KAAKoB,S,+DAcX,iBAAAC,GACL,IAAKrB,KAAKhB,MAAO,CACfgB,KAAK9B,MAAQ,IAAIoD,MAAM,yC,EAIpB,MAAApB,GACL,OAAOF,KAAKkB,QAAQlC,O,GA1BO8B,EAAA,CAA5BC,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicResultImageCss","AtomicResultImageStyle0","AtomicResultImage","this","useFallback","url","value","ResultTemplatesHelpers","getResultProperty","result","field","Array","isArray","altText","imageAltField","bindings","i18n","t","itemName","title","logWarning","message","engine","logger","warn","host","handleImageError","fallback","handleMissingFallback","remove","validateUrl","render","h","alt","src","filterProtocol","onError","loading","__decorate","InitializeBindings","ResultContext"],"sources":["src/components/search/result-template-components/atomic-result-image/atomic-result-image.pcss?tag=atomic-result-image","src/components/search/result-template-components/atomic-result-image/atomic-result-image.tsx"],"sourcesContent":["atomic-result-image {\n display: grid;\n place-items: center;\n grid-template-rows: 100%;\n width: 100%;\n height: 100%;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n}\n","import {Result, ResultTemplatesHelpers} from '@coveo/headless';\nimport {Component, h, Prop, Element, State} from '@stencil/core';\nimport {\n InitializeBindings,\n InitializableComponent,\n} from '../../../../utils/initialization-utils';\nimport {filterProtocol} from '../../../../utils/xss-utils';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-result-image` component renders an image from a result field.\n */\n@Component({\n tag: 'atomic-result-image',\n styleUrl: 'atomic-result-image.pcss',\n shadow: false,\n})\nexport class AtomicResultImage implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @ResultContext() private result!: Result;\n @Element() private host!: HTMLElement;\n @State() private useFallback = false;\n\n /**\n * The result field which the component should use. This will look for the field in the Result object first, then in the Result.raw object. It is important to include the necessary field in the `atomic-search-interface` component.\n */\n @Prop({reflect: true}) field!: string;\n\n /**\n * The result field that contains the alt text for the image. This will look for the field in the Result object first, then in the Result.raw object\n *\n * If the field is not specified, or does not contain a valid value, the alt text will be set to \"Image for {productName}\".\n */\n @Prop({reflect: true}) imageAltField?: string;\n\n /**\n * An optional fallback image URL that will be used in case the specified image field is not available or encounters an error.\n */\n @Prop({reflect: true}) fallback?: string;\n\n public error!: Error;\n\n public get url() {\n const value = ResultTemplatesHelpers.getResultProperty(\n this.result,\n this.field\n );\n return Array.isArray(value) ? value[0] : value;\n }\n\n private get altText(): string {\n if (this.imageAltField) {\n const value = ResultTemplatesHelpers.getResultProperty(\n this.result,\n this.imageAltField\n );\n\n if (Array.isArray(value) && typeof value[0] === 'string') {\n return value[0];\n }\n\n if (typeof value === 'string') {\n return value;\n }\n }\n\n return this.bindings.i18n.t('image-alt-fallback', {\n itemName: this.result.title,\n });\n }\n\n private logWarning(message: string) {\n this.bindings.engine.logger.warn(message, this.host);\n }\n\n private handleImageError() {\n const message = `The image url \"${this.url}\" is not valid or could not be loaded. You might want to add a \"fallback\" property.`;\n\n this.fallback ? (this.useFallback = true) : this.logWarning(message);\n }\n\n private handleMissingFallback(message: string) {\n if (!this.fallback) {\n this.logWarning(message);\n this.host.remove();\n return null;\n }\n return this.fallback;\n }\n\n private validateUrl(url: string) {\n if (!url) {\n const message = `\"${this.field}\" is missing. Please review your indexation. You might want to add a \"fallback\" property.`;\n return this.handleMissingFallback(message);\n }\n\n if (typeof url !== 'string') {\n const message = `Expected \"${this.field}\" to be a text field. Please review your indexation. You might want to add a \"fallback\" property.`;\n return this.handleMissingFallback(message);\n }\n\n return url;\n }\n\n public render() {\n let url = this.useFallback ? this.fallback : this.url;\n\n if (!this.useFallback) {\n url = this.validateUrl(url);\n if (!url) {\n return;\n }\n }\n\n return (\n <img\n alt={this.altText}\n src={filterProtocol(url)}\n onError={() => this.handleImageError()}\n loading=\"lazy\"\n />\n );\n }\n}\n"],"mappings":"+UAAA,MAAMA,EAAuB,wKAC7B,MAAAC,EAAeD,E,iXCiBFE,EAAiB,M,yBAIXC,KAAAC,YAAc,M,iBAAA,M,0EAqB/B,OAAWC,GACT,MAAMC,EAAQC,EAAuBC,kBACnCL,KAAKM,OACLN,KAAKO,OAEP,OAAOC,MAAMC,QAAQN,GAASA,EAAM,GAAKA,C,CAG3C,WAAYO,GACV,GAAIV,KAAKW,cAAe,CACtB,MAAMR,EAAQC,EAAuBC,kBACnCL,KAAKM,OACLN,KAAKW,eAGP,GAAIH,MAAMC,QAAQN,WAAiBA,EAAM,KAAO,SAAU,CACxD,OAAOA,EAAM,E,CAGf,UAAWA,IAAU,SAAU,CAC7B,OAAOA,C,EAIX,OAAOH,KAAKY,SAASC,KAAKC,EAAE,qBAAsB,CAChDC,SAAUf,KAAKM,OAAOU,O,CAIlB,UAAAC,CAAWC,GACjBlB,KAAKY,SAASO,OAAOC,OAAOC,KAAKH,EAASlB,KAAKsB,K,CAGzC,gBAAAC,GACN,MAAML,EAAU,kBAAkBlB,KAAKE,yFAEvCF,KAAKwB,SAAYxB,KAAKC,YAAc,KAAQD,KAAKiB,WAAWC,E,CAGtD,qBAAAO,CAAsBP,GAC5B,IAAKlB,KAAKwB,SAAU,CAClBxB,KAAKiB,WAAWC,GAChBlB,KAAKsB,KAAKI,SACV,OAAO,I,CAET,OAAO1B,KAAKwB,Q,CAGN,WAAAG,CAAYzB,GAClB,IAAKA,EAAK,CACR,MAAMgB,EAAU,IAAIlB,KAAKO,iGACzB,OAAOP,KAAKyB,sBAAsBP,E,CAGpC,UAAWhB,IAAQ,SAAU,CAC3B,MAAMgB,EAAU,aAAalB,KAAKO,yGAClC,OAAOP,KAAKyB,sBAAsBP,E,CAGpC,OAAOhB,C,CAGF,MAAA0B,GACL,IAAI1B,EAAMF,KAAKC,YAAcD,KAAKwB,SAAWxB,KAAKE,IAElD,IAAKF,KAAKC,YAAa,CACrBC,EAAMF,KAAK2B,YAAYzB,GACvB,IAAKA,EAAK,CACR,M,EAIJ,OACE2B,EAAA,OACEC,IAAK9B,KAAKU,QACVqB,IAAKC,EAAe9B,GACpB+B,QAAS,IAAMjC,KAAKuB,mBACpBW,QAAQ,Q,6BArGeC,EAAA,CAA5BC,K,+BACwBD,EAAA,CAAxBE,K","ignoreList":[]}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{r as t,g as s}from"./p-dc3df5ce.js";import{M as e}from"./p-3af2fca0.js";import{R as i,m as r}from"./p-7709fba4.js";import"@coveo/bueno";import"./p-a12e1c59.js";import"./p-f284897c.js";import"./p-0462f723.js";import"@coveo/headless";import"./p-acd1a1d3.js";import"./p-97748161.js";var o=undefined&&undefined.__decorate||function(t,s,e,i){var r=arguments.length,o=r<3?s:i===null?i=Object.getOwnPropertyDescriptor(s,e):i,a;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")o=Reflect.decorate(t,s,e,i);else for(var c=t.length-1;c>=0;c--)if(a=t[c])o=(r<3?a(o):r>3?a(s,e,o):a(s,e))||o;return r>3&&o&&Object.defineProperty(s,e,o),o};const a=class{constructor(s){t(this,s);this.conditions=[];this.mustMatch={};this.mustNotMatch={};this.error=undefined;this.conditions=[];this.mustMatch={};this.mustNotMatch={}}connectedCallback(){this.resultTemplateCommon=new i({host:this.host,setError:t=>{this.error=t},validParents:["atomic-result-children"]})}async getTemplate(){return this.resultTemplateCommon.getTemplate(this.conditions,this.error)}componentWillLoad(){this.resultTemplateCommon.matchConditions=r(this.mustMatch,this.mustNotMatch)}render(){return this.resultTemplateCommon.renderIfError(this.error)}get host(){return s(this)}};o([e({splitValues:true})],a.prototype,"mustMatch",void 0);o([e({splitValues:true})],a.prototype,"mustNotMatch",void 0);export{a as atomic_result_children_template};
|
2
|
-
//# sourceMappingURL=p-250f34d4.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["getDisplayClass","display","getDensityClass","density","getImageClass","image","getItemListDisplayClasses","isLoading","isAppLoading","classes","getItemDisplayClasses","push","join","ItemLayout","constructor","children","imageSize","this","getImageSizeFromSections","getSection","getAttribute","undefined","section","Array","from","find","element","tagName","toLowerCase","getClasses","HTMLContent","containsSections"],"sources":["src/components/common/layout/display-options.ts"],"sourcesContent":["import {containsSections, type ItemSectionTagName} from './sections';\n\nexport type ItemDisplayBasicLayout = 'list' | 'grid';\nexport type ItemDisplayLayout = ItemDisplayBasicLayout | 'table';\nexport type ItemDisplayDensity = 'comfortable' | 'normal' | 'compact';\nexport type ItemDisplayImageSize = 'large' | 'small' | 'icon' | 'none';\nexport type ItemTarget = '_self' | '_blank' | '_parent' | '_top';\n\nfunction getDisplayClass(display: ItemDisplayLayout) {\n switch (display) {\n case 'grid':\n return 'display-grid';\n case 'table':\n return 'display-table';\n default:\n return 'display-list';\n }\n}\n\nfunction getDensityClass(density: ItemDisplayDensity) {\n switch (density) {\n case 'comfortable':\n return 'density-comfortable';\n case 'compact':\n return 'density-compact';\n default:\n return 'density-normal';\n }\n}\n\nfunction getImageClass(image: ItemDisplayImageSize) {\n switch (image) {\n case 'large':\n return 'image-large';\n case 'small':\n return 'image-small';\n case 'none':\n return 'image-none';\n default:\n return 'image-icon';\n }\n}\n\nexport function getItemListDisplayClasses(\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n image: ItemDisplayImageSize,\n isLoading: boolean,\n isAppLoading: boolean\n) {\n const classes = getItemDisplayClasses(display, density, image);\n\n if (isLoading) {\n classes.push('loading');\n }\n\n if (isAppLoading) {\n classes.push('placeholder');\n }\n return classes.join(' ');\n}\n\nexport function getItemDisplayClasses(\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n image: ItemDisplayImageSize\n) {\n const classes = [\n getDisplayClass(display),\n getDensityClass(density),\n getImageClass(image),\n ];\n return classes;\n}\n\nexport class ItemLayout {\n private children: HTMLCollection;\n private density: ItemDisplayDensity;\n private imageSize: ItemDisplayImageSize;\n private display: ItemDisplayLayout;\n\n constructor(\n children: HTMLCollection,\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n imageSize: ItemDisplayImageSize\n ) {\n this.children = children;\n this.display = display;\n this.density = density;\n this.imageSize = imageSize;\n }\n\n private getImageSizeFromSections() {\n const imageSize = this.getSection(\n 'atomic-result-section-visual'\n )?.getAttribute('image-size');\n if (!imageSize) {\n return undefined;\n }\n return imageSize as ItemDisplayImageSize;\n }\n\n private getSection(section: ItemSectionTagName) {\n return Array.from(this.children).find(\n (element) => element.tagName.toLowerCase() === section\n );\n }\n\n public getClasses(HTMLContent?: string) {\n const classes = getItemDisplayClasses(\n this.display,\n this.density,\n this.getImageSizeFromSections() ?? this.imageSize\n );\n if (\n HTMLContent\n ? containsSections(HTMLContent)\n : containsSections(this.children)\n ) {\n classes.push('with-sections');\n }\n return classes;\n }\n}\n"],"mappings":"oCAQA,SAASA,EAAgBC,GACvB,OAAQA,GACN,IAAK,OACH,MAAO,eACT,IAAK,QACH,MAAO,gBACT,QACE,MAAO,eAEb,CAEA,SAASC,EAAgBC,GACvB,OAAQA,GACN,IAAK,cACH,MAAO,sBACT,IAAK,UACH,MAAO,kBACT,QACE,MAAO,iBAEb,CAEA,SAASC,EAAcC,GACrB,OAAQA,GACN,IAAK,QACH,MAAO,cACT,IAAK,QACH,MAAO,cACT,IAAK,OACH,MAAO,aACT,QACE,MAAO,aAEb,C,SAEgBC,EACdL,EACAE,EACAE,EACAE,EACAC,GAEA,MAAMC,EAAUC,EAAsBT,EAASE,EAASE,GAExD,GAAIE,EAAW,CACbE,EAAQE,KAAK,U,CAGf,GAAIH,EAAc,CAChBC,EAAQE,KAAK,c,CAEf,OAAOF,EAAQG,KAAK,IACtB,C,SAEgBF,EACdT,EACAE,EACAE,GAEA,MAAMI,EAAU,CACdT,EAAgBC,GAChBC,EAAgBC,GAChBC,EAAcC,IAEhB,OAAOI,CACT,C,MAEaI,EAMX,WAAAC,CACEC,EACAd,EACAE,EACAa,GAEAC,KAAKF,SAAWA,EAChBE,KAAKhB,QAAUA,EACfgB,KAAKd,QAAUA,EACfc,KAAKD,UAAYA,C,CAGX,wBAAAE,GACN,MAAMF,EAAYC,KAAKE,WACrB,iCACCC,aAAa,cAChB,IAAKJ,EAAW,CACd,OAAOK,S,CAET,OAAOL,C,CAGD,UAAAG,CAAWG,GACjB,OAAOC,MAAMC,KAAKP,KAAKF,UAAUU,MAC9BC,GAAYA,EAAQC,QAAQC,gBAAkBN,G,CAI5C,UAAAO,CAAWC,GAChB,MAAMrB,EAAUC,EACdO,KAAKhB,QACLgB,KAAKd,QACLc,KAAKC,4BAA8BD,KAAKD,WAE1C,GACEc,EACIC,EAAiBD,GACjBC,EAAiBd,KAAKF,UAC1B,CACAN,EAAQE,KAAK,gB,CAEf,OAAOF,C","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["tabsSelector","refineModalSelector","searchBoxSelector","toggleSelectors","smartSnippetSelectors","generatedAnswerSelector","makeDesktopQuery","mobileBreakpoint","buildInsightLayout","element","widget","id","layoutSelector","hasTabs","Boolean","findSection","querySelector","interfaceStyle","search","sectionSelector","map","toggleSelector","facets","results","join","filter","declaration"],"sources":["src/components/insight/atomic-insight-layout/insight-layout.ts"],"sourcesContent":["import {\n findSection,\n sectionSelector,\n} from '../../common/atomic-layout-section/sections';\n\nconst tabsSelector = 'atomic-insight-tabs';\nconst refineModalSelector = 'atomic-insight-refine-modal';\nconst searchBoxSelector = 'atomic-insight-search-box';\nconst toggleSelectors = [\n 'atomic-insight-refine-toggle',\n 'atomic-insight-edit-toggle',\n 'atomic-insight-history-toggle',\n];\nconst smartSnippetSelectors = [\n 'atomic-insight-smart-snippet-suggestions',\n 'atomic-insight-smart-snippet',\n];\nconst generatedAnswerSelector = 'atomic-insight-generated-answer';\n\nexport function makeDesktopQuery(mobileBreakpoint: string) {\n return `only screen and (min-width: ${mobileBreakpoint})`;\n}\n\nexport function buildInsightLayout(element: HTMLElement, widget: boolean) {\n const id = element.id;\n const layoutSelector = `atomic-insight-layout#${id}`;\n\n const hasTabs = Boolean(\n findSection(element, 'search')?.querySelector(tabsSelector)\n );\n\n const interfaceStyle = widget\n ? `\n ${layoutSelector} {\n display: grid;\n grid-template-rows: auto auto 8fr 1fr;\n max-height: 100%;\n box-sizing: border-box;\n }\n ${layoutSelector} ${refineModalSelector} {\n grid-row-start: 5;\n }`\n : '';\n\n const search = `${sectionSelector('search')} {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n grid-gap: 0.5rem;\n background: var(--atomic-neutral-light);\n padding-top: 1.5rem;\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n box-sizing: border-box;\n min-width: 0;\n ${!hasTabs ? 'padding-bottom: 1.5rem;' : ''}\n }\n\n ${sectionSelector('search')} ${searchBoxSelector} {\n flex-grow: 1;\n height: 2.6rem;\n }\n\n ${toggleSelectors.map(\n (toggleSelector) => `${sectionSelector('search')} ${toggleSelector} {\n flex-shrink: 0;\n }`\n )}\n\n ${sectionSelector('search')} ${tabsSelector} {\n width: 100%;\n }\n `;\n\n const facets = `${sectionSelector('facets')} {\n display: none;\n }\n `;\n\n const results = `\n ${sectionSelector('results')} {\n overflow: auto;\n }\n\n ${sectionSelector('results')} ${smartSnippetSelectors.join(',')} {\n padding: 1.5rem 1.5rem 0px;\n }\n\n ${sectionSelector('results')} ${generatedAnswerSelector} {\n margin-left: 1.5rem;\n margin-right: 1.5rem;\n }\n `;\n\n return [interfaceStyle, search, facets, results]\n .filter((declaration) => declaration !== '')\n .join('\\n\\n');\n}\n"],"mappings":"2CAKA,MAAMA,EAAe,sBACrB,MAAMC,EAAsB,8BAC5B,MAAMC,EAAoB,4BAC1B,MAAMC,EAAkB,CACtB,+BACA,6BACA,iCAEF,MAAMC,EAAwB,CAC5B,2CACA,gCAEF,MAAMC,EAA0B,kC,SAEhBC,EAAiBC,GAC/B,MAAO,+BAA+BA,IACxC,C,SAEgBC,EAAmBC,EAAsBC,GACvD,MAAMC,EAAKF,EAAQE,GACnB,MAAMC,EAAiB,yBAAyBD,IAEhD,MAAME,EAAUC,QACdC,EAAYN,EAAS,WAAWO,cAAchB,IAGhD,MAAMiB,EAAiBP,EACnB,OACFE,mIAMAA,KAAkBX,mCAGhB,GAEJ,MAAMiB,EAAS,GAAGC,EAAgB,6SAW3BN,EAAU,0BAA4B,oBAGzCM,EAAgB,aAAajB,iEAK7BC,EAAgBiB,KACfC,GAAmB,GAAGF,EAAgB,aAAaE,gDAKpDF,EAAgB,aAAanB,uCAKjC,MAAMsB,EAAS,GAAGH,EAAgB,iDAKlC,MAAMI,EAAU,SACZJ,EAAgB,qDAIhBA,EAAgB,cAAcf,EAAsBoB,KAAK,2DAIzDL,EAAgB,cAAcd,4EAMlC,MAAO,CAACY,EAAgBC,EAAQI,EAAQC,GACrCE,QAAQC,GAAgBA,IAAgB,KACxCF,KAAK,OACV,Q","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicIpxResultLinkCss","AtomicIpxResultLinkStyle0","AtomicIPXResultLink","initialize","this","host","dispatchEvent","buildCustomEvent","stopPropagation","actionsHistoryActions","loadIPXActionsHistoryActions","bindings","engine","connectedCallback","slotName","hasDefaultSlot","getDefaultSlotFromHost","linkAttributes","getAttributesFromLinkSlot","onSelect","resultPermanentId","result","raw","permanentid","action","addPageViewEntryInActionsHistory","dispatch","interactiveResult","select","render","href","isUndefined","hrefTemplate","clickUri","buildStringTemplateFromResult","h","LinkWithItemAnalytics","key","onBeginDelayedSelect","beginDelayedSelect","onCancelPendingSelect","cancelPendingSelect","attributes","field","default","__decorate","InitializeBindings","ResultContext","InteractiveResultContext"],"sources":["src/components/ipx/atomic-ipx-result-link/atomic-ipx-result-link.pcss?tag=atomic-ipx-result-link","src/components/ipx/atomic-ipx-result-link/atomic-ipx-result-link.tsx"],"sourcesContent":["@import '../../../global/global.pcss';\n@reference '../../../utils/tailwind-utilities/link-style.css';\n\natomic-ipx-result-link {\n a {\n @apply link-style;\n }\n}\n","import {isUndefined} from '@coveo/bueno';\nimport {\n IPXActionsHistoryActionCreators,\n InteractiveResult,\n loadIPXActionsHistoryActions,\n} from '@coveo/headless';\nimport {Component, h, Prop, Element} from '@stencil/core';\nimport {buildCustomEvent} from '../../../utils/event-utils';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {buildStringTemplateFromResult} from '../../../utils/result-utils';\nimport {getDefaultSlotFromHost} from '../../../utils/slot-utils';\nimport {AnyUnfoldedItem} from '../../common/item-list/unfolded-item';\nimport {getAttributesFromLinkSlot} from '../../common/item-link/attributes-slot';\nimport {LinkWithItemAnalytics} from '../../common/item-link/stencil-item-link';\nimport {RecsBindings} from '../../recommendations/atomic-recs-interface/atomic-recs-interface';\nimport {\n ResultContext,\n InteractiveResultContext,\n} from '../../search/result-template-components/result-template-decorators';\n\n/**\n * The `atomic-ipx-result-link` component automatically transforms a search result title into a clickable link that points to the original item. It is an experimental internal component not intended for general use.\n * @slot default - Lets you display alternative content inside the link\n * @slot attributes - Lets you pass [attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes) down to the link element, overriding other attributes, to be used exclusively with an \"a\" tag such as `<a slot=\"attributes\" target=\"_blank\" download></a>`.\n * @internal\n */\n@Component({\n tag: 'atomic-ipx-result-link',\n styleUrl: 'atomic-ipx-result-link.pcss',\n shadow: false,\n})\nexport class AtomicIPXResultLink\n implements InitializableComponent<RecsBindings>\n{\n @InitializeBindings() public bindings!: RecsBindings;\n public error!: Error;\n\n @ResultContext() private result!: AnyUnfoldedItem;\n @InteractiveResultContext() private interactiveResult!: InteractiveResult;\n\n @Element() private host!: HTMLElement;\n\n /**\n * Specifies a template literal from which to generate the `href` attribute value (see\n * [Template literals](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals)).\n *\n * The template literal can reference any number of result properties from the parent result. It can also reference the window object.\n *\n * For example, the following markup generates an `href` value such as `http://uri.com?id=itemTitle`, using the result's `clickUri` and `itemtitle` fields.\n * ```html\n * <atomic-ipx-result-link href-template='${clickUri}?id=${raw.itemtitle}'></atomic-ipx-result-link>\n * ```\n */\n @Prop({reflect: true}) hrefTemplate?: string;\n\n private hasDefaultSlot!: boolean;\n private linkAttributes?: Attr[];\n private stopPropagation?: boolean;\n private actionsHistoryActions?: IPXActionsHistoryActionCreators;\n\n public initialize() {\n this.host.dispatchEvent(\n buildCustomEvent(\n 'atomic/resolveStopPropagation',\n (stopPropagation: boolean) => {\n this.stopPropagation = stopPropagation;\n }\n )\n );\n this.actionsHistoryActions = loadIPXActionsHistoryActions(\n this.bindings.engine\n );\n }\n\n public connectedCallback() {\n const slotName = 'attributes';\n this.hasDefaultSlot = !!getDefaultSlotFromHost(this.host);\n this.linkAttributes = getAttributesFromLinkSlot(this.host, slotName);\n }\n\n public async onSelect() {\n const resultPermanentId = this.result.raw.permanentid;\n if (resultPermanentId && this.actionsHistoryActions) {\n const action =\n this.actionsHistoryActions.addPageViewEntryInActionsHistory(\n resultPermanentId\n );\n this.bindings.engine.dispatch(action);\n }\n this.interactiveResult.select();\n }\n\n public render() {\n const href = isUndefined(this.hrefTemplate)\n ? this.result.clickUri\n : buildStringTemplateFromResult(\n this.hrefTemplate,\n this.result,\n this.bindings\n );\n\n return (\n <LinkWithItemAnalytics\n href={href}\n onSelect={() => this.onSelect()}\n onBeginDelayedSelect={() => this.interactiveResult.beginDelayedSelect()}\n onCancelPendingSelect={() =>\n this.interactiveResult.cancelPendingSelect()\n }\n attributes={this.linkAttributes}\n stopPropagation={this.stopPropagation}\n >\n {this.hasDefaultSlot ? (\n <slot />\n ) : (\n <atomic-result-text\n field=\"title\"\n default=\"no-title\"\n ></atomic-result-text>\n )}\n </LinkWithItemAnalytics>\n );\n }\n}\n"],"mappings":"uhBAAA,MAAMA,EAAyB,yzkEAC/B,MAAAC,EAAeD,E,iXCiCFE,EAAmB,M,qDA6BvB,UAAAC,GACLC,KAAKC,KAAKC,cACRC,EACE,iCACCC,IACCJ,KAAKI,gBAAkBA,CAAe,KAI5CJ,KAAKK,sBAAwBC,EAC3BN,KAAKO,SAASC,O,CAIX,iBAAAC,GACL,MAAMC,EAAW,aACjBV,KAAKW,iBAAmBC,EAAuBZ,KAAKC,MACpDD,KAAKa,eAAiBC,EAA0Bd,KAAKC,KAAMS,E,CAGtD,cAAMK,GACX,MAAMC,EAAoBhB,KAAKiB,OAAOC,IAAIC,YAC1C,GAAIH,GAAqBhB,KAAKK,sBAAuB,CACnD,MAAMe,EACJpB,KAAKK,sBAAsBgB,iCACzBL,GAEJhB,KAAKO,SAASC,OAAOc,SAASF,E,CAEhCpB,KAAKuB,kBAAkBC,Q,CAGlB,MAAAC,GACL,MAAMC,EAAOC,EAAY3B,KAAK4B,cAC1B5B,KAAKiB,OAAOY,SACZC,EACE9B,KAAK4B,aACL5B,KAAKiB,OACLjB,KAAKO,UAGX,OACEwB,EAACC,EAAqB,CAAAC,IAAA,2CACpBP,KAAMA,EACNX,SAAU,IAAMf,KAAKe,WACrBmB,qBAAsB,IAAMlC,KAAKuB,kBAAkBY,qBACnDC,sBAAuB,IACrBpC,KAAKuB,kBAAkBc,sBAEzBC,WAAYtC,KAAKa,eACjBT,gBAAiBJ,KAAKI,iBAErBJ,KAAKW,eACJoB,EAAA,aAEAA,EAAA,sBACEQ,MAAM,QACNC,QAAQ,a,6BAnFWC,EAAA,CAA5BC,K,+BAGwBD,EAAA,CAAxBE,K,6BACmCF,EAAA,CAAnCG,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicResultChildrenCss","AtomicResultChildrenStyle0","childTemplateComponent","componentTag","AtomicResultChildren","this","resultTemplateRegistered","templateHasError","showInitialChildren","inheritTemplates","noResultText","toggleShowInitialChildren","foldedResultList","logShowMoreFoldedResults","result","logShowLessFoldedResults","loadedFullCollection","resolveChildTemplates","event","preventDefault","detail","itemTemplateProvider","initialize","childrenTemplates","Array","from","host","querySelectorAll","filter","template","elementHasAncestorTag","length","error","Error","ItemTemplateProvider","includeDefaultTemplate","templateElements","getResultTemplateRegistered","getTemplateHasError","setResultTemplateRegistered","value","setTemplateHasError","bindings","renderChild","child","isLast","content","getTemplateContent","key","uniqueId","children","map","h","interactiveResult","buildInteractiveResult","engine","options","extractUnfoldedItem","store","density","displayConfig","imageSize","classes","trim","componentWillRender","initialChildren","collection","foldedResultListState","results","find","r","loadFullCollection","dispatchEvent","buildCustomEvent","renderCollection","showShouldButtons","moreResultsAvailable","Fragment","ShowHideButton","loadAllResults","i18n","t","collapseResults","CollectionGuard","isLoadingMoreResults","hasChildren","numberOfChildren","ChildrenWrapper","i","renderFoldedResult","render","ResultChildrenGuard","__decorate","InitializeBindings","ChildTemplatesContext","FoldedItemListContext","ResultContext","folded","ItemDisplayConfigContext","FoldedItemListStateContext"],"sources":["src/components/search/result-lists/atomic-result-children/atomic-result-children.pcss?tag=atomic-result-children&encapsulation=shadow","src/components/search/result-lists/atomic-result-children/atomic-result-children.tsx"],"sourcesContent":["@import '../../../../components/common/result-children/result-children.pcss';\n","import {\n buildInteractiveResult,\n FoldedResult,\n FoldedResultList,\n FoldedResultListState,\n} from '@coveo/headless';\nimport {\n Component,\n Element,\n State,\n h,\n Listen,\n Prop,\n Fragment,\n} from '@stencil/core';\nimport {buildCustomEvent} from '../../../../utils/event-utils';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {elementHasAncestorTag} from '../../../../utils/utils';\nimport {extractUnfoldedItem} from '../../../common/item-list/unfolded-item';\nimport {\n FoldedItemListContext,\n FoldedItemListStateContext,\n} from '../../../common/item-list/item-list-decorators';\nimport {ItemTemplateProvider} from '../../../common/item-list/item-template-provider';\nimport {\n ChildTemplatesContext,\n ChildTemplatesContextEvent,\n DisplayConfig,\n ItemDisplayConfigContext,\n} from '../../../common/item-list/stencil-item-decorators';\nimport {ItemDisplayImageSize} from '../../../common/layout/display-options';\nimport {ChildrenWrapper} from '../../../common/result-children/children-wrapper';\nimport {CollectionGuard} from '../../../common/result-children/collection-guard';\nimport {ResultChildrenGuard} from '../../../common/result-children/guard';\nimport {ShowHideButton} from '../../../common/result-children/show-hide-button';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../../result-template-components/result-template-decorators';\n\nconst childTemplateComponent = 'atomic-result-children-template';\nconst componentTag = 'atomic-result-children';\n\n/**\n * The `atomic-result-children` component is responsible for displaying child results by applying one or more child result templates.\n * Includes two slots, \"before-children\" and \"after-children\", which allow for rendering content before and after the list of children,\n * only when children exist.\n * @part children-root - The wrapper for the message when there are child results\n * @part no-result-root - The wrapper for the message when there are no results.\n * @part show-hide-button - The button that allows to collapse or show all child results.\n * @slot before-children - Slot that allows rendering content before the list of children, only when children exist.\n * @slot after-children - Slot that allows rendering content after the list of children, only when children exist.\n */\n@Component({\n tag: 'atomic-result-children',\n styleUrl: 'atomic-result-children.pcss',\n shadow: true,\n})\nexport class AtomicResultChildren implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @ChildTemplatesContext()\n public itemTemplateProvider?: ItemTemplateProvider;\n @FoldedItemListContext()\n private foldedResultList!: FoldedResultList;\n @ResultContext({folded: true})\n private result!: FoldedResult;\n @ItemDisplayConfigContext()\n private displayConfig!: DisplayConfig;\n private initialChildren!: FoldedResult[];\n\n @Element() public host!: HTMLDivElement;\n @State() public error!: Error;\n @State() private resultTemplateRegistered = false;\n @State() private templateHasError = false;\n @FoldedItemListStateContext()\n @State()\n private foldedResultListState!: FoldedResultListState;\n @State()\n private showInitialChildren = false;\n\n /**\n * Whether to inherit templates defined in a parent atomic-result-children. Only works for the second level of child nesting.\n */\n @Prop() inheritTemplates = false;\n /**\n * The expected size of the image displayed in the children results.\n */\n @Prop({reflect: true}) imageSize?: ItemDisplayImageSize;\n /**\n * The non-localized copy for an empty result state. An empty string will result in the component being hidden.\n */\n @Prop() public noResultText = 'no-documents-related';\n\n @Listen('atomic/resolveChildTemplates')\n public resolveChildTemplates(event: ChildTemplatesContextEvent) {\n event.preventDefault();\n event.detail(this.itemTemplateProvider);\n }\n\n public initialize() {\n if (this.inheritTemplates) {\n return;\n }\n\n const childrenTemplates = Array.from(\n this.host.querySelectorAll(childTemplateComponent)\n ).filter(\n (template) => !elementHasAncestorTag(template, childTemplateComponent)\n );\n\n if (!childrenTemplates.length) {\n this.error = new Error(\n `The \"${componentTag}\" component requires at least one \"${childTemplateComponent}\" component.`\n );\n return;\n }\n\n this.itemTemplateProvider = new ItemTemplateProvider({\n includeDefaultTemplate: false,\n templateElements: childrenTemplates,\n getResultTemplateRegistered: () => this.resultTemplateRegistered,\n getTemplateHasError: () => this.templateHasError,\n setResultTemplateRegistered: (value: boolean) => {\n this.resultTemplateRegistered = value;\n },\n setTemplateHasError: (value: boolean) => {\n this.templateHasError = value;\n },\n bindings: this.bindings,\n });\n }\n\n private renderChild(child: FoldedResult, isLast: boolean) {\n const content = this.itemTemplateProvider?.getTemplateContent(child.result);\n\n if (!content) {\n return;\n }\n\n const key =\n child.result.uniqueId +\n child.children.map((child) => child.result.uniqueId);\n return (\n <atomic-result\n key={key}\n content={content}\n result={child}\n interactiveResult={buildInteractiveResult(this.bindings.engine, {\n options: {result: extractUnfoldedItem(child)},\n })}\n store={this.bindings.store}\n density={this.displayConfig.density}\n imageSize={this.imageSize || this.displayConfig.imageSize}\n classes={`child-result ${isLast ? 'last-child' : ''}`.trim()}\n ></atomic-result>\n );\n }\n\n public componentWillRender() {\n if (this.initialChildren || !this.collection) {\n return;\n }\n\n this.initialChildren = this.collection.children;\n }\n\n private get collection() {\n return this.foldedResultListState.results.find((r) => {\n return r.result.uniqueId === this.result.result.uniqueId;\n });\n }\n private loadFullCollection() {\n this.loadedFullCollection = true;\n this.host.dispatchEvent(\n buildCustomEvent('atomic/loadCollection', this.collection)\n );\n }\n private toggleShowInitialChildren = () => {\n if (this.showInitialChildren) {\n this.foldedResultList.logShowMoreFoldedResults(this.result.result);\n } else {\n this.foldedResultList.logShowLessFoldedResults();\n }\n\n this.showInitialChildren = !this.showInitialChildren;\n };\n\n @State() private loadedFullCollection = false;\n\n private renderCollection() {\n const collection = this.collection!;\n\n const children = this.showInitialChildren\n ? this.initialChildren\n : collection.children;\n\n const showShouldButtons =\n this.loadedFullCollection || collection.moreResultsAvailable;\n\n return (\n <Fragment>\n {showShouldButtons && (\n <ShowHideButton\n moreResultsAvailable={collection.moreResultsAvailable}\n loadFullCollection={() => this.loadFullCollection()}\n showInitialChildren={this.showInitialChildren}\n toggleShowInitialChildren={this.toggleShowInitialChildren}\n loadAllResults={this.bindings.i18n.t('load-all-results')}\n collapseResults={this.bindings.i18n.t('collapse-results')}\n />\n )}\n\n <CollectionGuard\n isLoadingMoreResults={collection.isLoadingMoreResults}\n moreResultsAvailable={collection.moreResultsAvailable}\n hasChildren={collection.children.length > 0}\n numberOfChildren={collection.children.length}\n density={this.displayConfig.density}\n imageSize={this.imageSize || this.displayConfig.imageSize}\n noResultText={this.bindings.i18n.t(this.noResultText)}\n >\n <ChildrenWrapper hasChildren={collection.children.length > 0}>\n {children.map((child, i) =>\n this.renderChild(child, i === children.length - 1)\n )}\n </ChildrenWrapper>\n </CollectionGuard>\n </Fragment>\n );\n }\n\n private renderFoldedResult() {\n if (this.result.children.length === 0) {\n return;\n }\n\n const children = this.result.children;\n\n return (\n <ChildrenWrapper hasChildren={children.length > 0}>\n {children.map((child, i) =>\n this.renderChild(child, i === children.length - 1)\n )}\n </ChildrenWrapper>\n );\n }\n\n public render() {\n return (\n <ResultChildrenGuard\n inheritTemplates={this.inheritTemplates}\n resultTemplateRegistered={this.resultTemplateRegistered}\n templateHasError={this.templateHasError}\n >\n {this.collection ? this.renderCollection() : this.renderFoldedResult()}\n </ResultChildrenGuard>\n );\n }\n}\n"],"mappings":"unBAAA,MAAMA,EAA0B,q7jEAChC,MAAAC,EAAeD,E,2WCwCf,MAAME,EAAyB,kCAC/B,MAAMC,EAAe,yB,MAiBRC,EAAoB,M,yBAcdC,KAAAC,yBAA2B,MAC3BD,KAAAE,iBAAmB,MAK5BF,KAAAG,oBAAsB,MAKtBH,KAAAI,iBAAmB,MAQZJ,KAAAK,aAAe,uBAsFtBL,KAAAM,0BAA4B,KAClC,GAAIN,KAAKG,oBAAqB,CAC5BH,KAAKO,iBAAiBC,yBAAyBR,KAAKS,OAAOA,O,KACtD,CACLT,KAAKO,iBAAiBG,0B,CAGxBV,KAAKG,qBAAuBH,KAAKG,mBAAmB,EAGrCH,KAAAW,qBAAuB,M,mDAnHI,M,sBACR,M,8DAKN,M,sBAKH,M,2CAQG,uB,0BAgGU,K,CA7FjC,qBAAAC,CAAsBC,GAC3BA,EAAMC,iBACND,EAAME,OAAOf,KAAKgB,qB,CAGb,UAAAC,GACL,GAAIjB,KAAKI,iBAAkB,CACzB,M,CAGF,MAAMc,EAAoBC,MAAMC,KAC9BpB,KAAKqB,KAAKC,iBAAiBzB,IAC3B0B,QACCC,IAAcC,EAAsBD,EAAU3B,KAGjD,IAAKqB,EAAkBQ,OAAQ,CAC7B1B,KAAK2B,MAAQ,IAAIC,MACf,QAAQ9B,uCAAkDD,iBAE5D,M,CAGFG,KAAKgB,qBAAuB,IAAIa,EAAqB,CACnDC,uBAAwB,MACxBC,iBAAkBb,EAClBc,4BAA6B,IAAMhC,KAAKC,yBACxCgC,oBAAqB,IAAMjC,KAAKE,iBAChCgC,4BAA8BC,IAC5BnC,KAAKC,yBAA2BkC,CAAK,EAEvCC,oBAAsBD,IACpBnC,KAAKE,iBAAmBiC,CAAK,EAE/BE,SAAUrC,KAAKqC,U,CAIX,WAAAC,CAAYC,EAAqBC,GACvC,MAAMC,EAAUzC,KAAKgB,sBAAsB0B,mBAAmBH,EAAM9B,QAEpE,IAAKgC,EAAS,CACZ,M,CAGF,MAAME,EACJJ,EAAM9B,OAAOmC,SACbL,EAAMM,SAASC,KAAKP,GAAUA,EAAM9B,OAAOmC,WAC7C,OACEG,EAAA,iBACEJ,IAAKA,EACLF,QAASA,EACThC,OAAQ8B,EACRS,kBAAmBC,EAAuBjD,KAAKqC,SAASa,OAAQ,CAC9DC,QAAS,CAAC1C,OAAQ2C,EAAoBb,MAExCc,MAAOrD,KAAKqC,SAASgB,MACrBC,QAAStD,KAAKuD,cAAcD,QAC5BE,UAAWxD,KAAKwD,WAAaxD,KAAKuD,cAAcC,UAChDC,QAAS,gBAAgBjB,EAAS,aAAe,KAAKkB,Q,CAKrD,mBAAAC,GACL,GAAI3D,KAAK4D,kBAAoB5D,KAAK6D,WAAY,CAC5C,M,CAGF7D,KAAK4D,gBAAkB5D,KAAK6D,WAAWhB,Q,CAGzC,cAAYgB,GACV,OAAO7D,KAAK8D,sBAAsBC,QAAQC,MAAMC,GACvCA,EAAExD,OAAOmC,WAAa5C,KAAKS,OAAOA,OAAOmC,U,CAG5C,kBAAAsB,GACNlE,KAAKW,qBAAuB,KAC5BX,KAAKqB,KAAK8C,cACRC,EAAiB,wBAAyBpE,KAAK6D,Y,CAe3C,gBAAAQ,GACN,MAAMR,EAAa7D,KAAK6D,WAExB,MAAMhB,EAAW7C,KAAKG,oBAClBH,KAAK4D,gBACLC,EAAWhB,SAEf,MAAMyB,EACJtE,KAAKW,sBAAwBkD,EAAWU,qBAE1C,OACExB,EAACyB,EAAQ,KACNF,GACCvB,EAAC0B,EAAc,CACbF,qBAAsBV,EAAWU,qBACjCL,mBAAoB,IAAMlE,KAAKkE,qBAC/B/D,oBAAqBH,KAAKG,oBAC1BG,0BAA2BN,KAAKM,0BAChCoE,eAAgB1E,KAAKqC,SAASsC,KAAKC,EAAE,oBACrCC,gBAAiB7E,KAAKqC,SAASsC,KAAKC,EAAE,sBAI1C7B,EAAC+B,EAAe,CACdC,qBAAsBlB,EAAWkB,qBACjCR,qBAAsBV,EAAWU,qBACjCS,YAAanB,EAAWhB,SAASnB,OAAS,EAC1CuD,iBAAkBpB,EAAWhB,SAASnB,OACtC4B,QAAStD,KAAKuD,cAAcD,QAC5BE,UAAWxD,KAAKwD,WAAaxD,KAAKuD,cAAcC,UAChDnD,aAAcL,KAAKqC,SAASsC,KAAKC,EAAE5E,KAAKK,eAExC0C,EAACmC,EAAe,CAACF,YAAanB,EAAWhB,SAASnB,OAAS,GACxDmB,EAASC,KAAI,CAACP,EAAO4C,IACpBnF,KAAKsC,YAAYC,EAAO4C,IAAMtC,EAASnB,OAAS,O,CAQpD,kBAAA0D,GACN,GAAIpF,KAAKS,OAAOoC,SAASnB,SAAW,EAAG,CACrC,M,CAGF,MAAMmB,EAAW7C,KAAKS,OAAOoC,SAE7B,OACEE,EAACmC,EAAe,CAACF,YAAanC,EAASnB,OAAS,GAC7CmB,EAASC,KAAI,CAACP,EAAO4C,IACpBnF,KAAKsC,YAAYC,EAAO4C,IAAMtC,EAASnB,OAAS,K,CAMjD,MAAA2D,GACL,OACEtC,EAACuC,EAAmB,CAAA3C,IAAA,2CAClBvC,iBAAkBJ,KAAKI,iBACvBH,yBAA0BD,KAAKC,yBAC/BC,iBAAkBF,KAAKE,kBAEtBF,KAAK6D,WAAa7D,KAAKqE,mBAAqBrE,KAAKoF,qB,6BAnM3BG,EAAA,CAA5BC,K,+BAEMD,EAAA,CADNE,K,2CAGOF,EAAA,CADPG,K,uCAGOH,EAAA,CADPI,EAAc,CAACC,OAAQ,Q,6BAGhBL,EAAA,CADPM,K,oCAUON,EAAA,CAFPO,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicResultBadgeCss","AtomicResultBadgeStyle0","AtomicResultBadge","renderIcon","h","part","icon","this","class","getTextContent","field","undefined","label","value","renderText","renderBadge","componentWillRender","hasValue","ResultTemplatesHelpers","getResultProperty","result","host","remove","render","__decorate","ResultContext"],"sources":["src/components/search/result-template-components/atomic-result-badge/atomic-result-badge.pcss?tag=atomic-result-badge&encapsulation=shadow","src/components/search/result-template-components/atomic-result-badge/atomic-result-badge.tsx"],"sourcesContent":["@import '../../../../global/global.pcss';\n\n:host {\n display: inline-flex;\n place-items: center;\n height: var(--row-height, auto);\n word-break: break-word;\n}\n","import {Result, ResultTemplatesHelpers} from '@coveo/headless';\nimport {Component, Element, Prop, h} from '@stencil/core';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-result-badge` element renders a badge to highlight special features of a result.\n *\n * A badge can either display:\n * * Text:\n * ```html\n * <atomic-result-badge label=\"trending\"></atomic-result-badge>\n * ```\n * * The contents of a single-value field:\n * ```html\n * <atomic-result-badge field=\"objecttype\"></atomic-result-badge>\n * ```\n * * An icon:\n * ```html\n * <atomic-result-badge icon=\"https://my-website.fake/star.svg\"></atomic-result-badge>\n * ```\n * * Slotted elements:\n * ```html\n * <atomic-result-badge icon=\"https://my-website.fake/stopwatch.svg\">\n * Deal ends in <my-dynamic-countdown></my-dynamic-countdown>\n * </atomic-result-badge>\n * ```\n *\n * The contents of a multi-value field can be displayed as in the following example:\n * ```html\n * <atomic-result-badge icon=\"https://my-website.fake/language.svg\">\n * <atomic-result-multi-value-text field=\"language\"></atomic-result-multi-value-text>\n * </atomic-result-badge>\n * ```\n *\n * @part result-badge-element - The decorative outer-most element with the background color and text color.\n * @part result-badge-icon - The icon displayed at the left-end of the badge, if present.\n * @part result-badge-label - The wrapper around the contents at the right-end of the badge. This may be text, a field or slotted elements depending on which was configured.\n * @slot default - The element(s) to display inside the badge, instead of a field or label.\n */\n@Component({\n tag: 'atomic-result-badge',\n styleUrl: 'atomic-result-badge.pcss',\n shadow: true,\n})\nexport class AtomicResultBadge {\n @ResultContext() private result!: Result;\n @Element() host!: HTMLElement;\n /**\n * The field to display in the badge.\n *\n * Not compatible with `label`, slotted elements nor multi-value fields.\n */\n @Prop({reflect: true}) public field?: string;\n\n /**\n * The text to display in the badge.\n *\n * Not compatible with `field` nor slotted elements.\n */\n @Prop({reflect: true}) public label?: string;\n\n /**\n * Specifies an icon to display at the left-end of the badge.\n * This can be used in conjunction with `field`, `label` or slotted elements.\n *\n * - Use a value that starts with `http://`, `https://`, `./`, or `../`, to fetch and display an icon from a given location.\n * - Use a value that starts with `assets://`, to display an icon from the Atomic package.\n * - Use a stringified SVG to display it directly\n */\n @Prop({reflect: true}) public icon?: string;\n\n private renderIcon() {\n return (\n <atomic-icon\n part=\"result-badge-icon\"\n icon={this.icon!}\n class=\"h-3 w-3 fill-current\"\n ></atomic-icon>\n );\n }\n\n private getTextContent() {\n if (this.field !== undefined) {\n return <atomic-result-text field={this.field}></atomic-result-text>;\n }\n if (this.label !== undefined) {\n return <atomic-text value={this.label}></atomic-text>;\n }\n return <slot></slot>;\n }\n\n private renderText() {\n return <span part=\"result-badge-label\">{this.getTextContent()}</span>;\n }\n\n private renderBadge() {\n return (\n <div\n part=\"result-badge-element\"\n class=\"bg-neutral-light text-neutral-dark inline-flex h-full place-items-center space-x-1.5 rounded-full px-3\"\n >\n {this.icon && this.renderIcon()}\n {this.renderText()}\n </div>\n );\n }\n\n componentWillRender() {\n if (this.field) {\n const hasValue =\n ResultTemplatesHelpers.getResultProperty(this.result, this.field) !==\n null;\n if (!hasValue) {\n this.host.remove();\n }\n }\n }\n\n render() {\n return this.renderBadge();\n }\n}\n"],"mappings":"uNAAA,MAAMA,EAAuB,2kjEAC7B,MAAAC,EAAeD,E,iXC2CFE,EAAiB,M,uFA2BpB,UAAAC,GACN,OACEC,EAAA,eACEC,KAAK,oBACLC,KAAMC,KAAKD,KACXE,MAAM,wB,CAKJ,cAAAC,GACN,GAAIF,KAAKG,QAAUC,UAAW,CAC5B,OAAOP,EAAA,sBAAoBM,MAAOH,KAAKG,O,CAEzC,GAAIH,KAAKK,QAAUD,UAAW,CAC5B,OAAOP,EAAA,eAAaS,MAAON,KAAKK,O,CAElC,OAAOR,EAAA,Y,CAGD,UAAAU,GACN,OAAOV,EAAA,QAAMC,KAAK,sBAAsBE,KAAKE,iB,CAGvC,WAAAM,GACN,OACEX,EAAA,OACEC,KAAK,uBACLG,MAAM,0GAELD,KAAKD,MAAQC,KAAKJ,aAClBI,KAAKO,a,CAKZ,mBAAAE,GACE,GAAIT,KAAKG,MAAO,CACd,MAAMO,EACJC,EAAuBC,kBAAkBZ,KAAKa,OAAQb,KAAKG,SAC3D,KACF,IAAKO,EAAU,CACbV,KAAKc,KAAKC,Q,GAKhB,MAAAC,GACE,OAAOhB,KAAKQ,a,6BA1EWS,EAAA,CAAxBC,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicResultLinkCss","AtomicResultLinkStyle0","AtomicResultLink","initialize","this","host","dispatchEvent","buildCustomEvent","stopPropagation","connectedCallback","slotName","hasDefaultSlot","getDefaultSlotFromHost","linkAttributes","getAttributesFromLinkSlot","render","href","isUndefined","hrefTemplate","result","clickUri","buildStringTemplateFromResult","bindings","h","LinkWithItemAnalytics","key","onSelect","interactiveResult","select","onBeginDelayedSelect","beginDelayedSelect","onCancelPendingSelect","cancelPendingSelect","attributes","field","default","__decorate","InitializeBindings","ResultContext","InteractiveResultContext"],"sources":["src/components/search/result-template-components/atomic-result-link/atomic-result-link.pcss?tag=atomic-result-link","src/components/search/result-template-components/atomic-result-link/atomic-result-link.tsx"],"sourcesContent":["@import '../../../../global/global.pcss';\n@reference '../../../../utils/tailwind-utilities/link-style.css';\natomic-result-link {\n a {\n @apply link-style;\n }\n}\n","import {isUndefined} from '@coveo/bueno';\nimport {InteractiveResult} from '@coveo/headless';\nimport {Component, h, Prop, Element} from '@stencil/core';\nimport {buildCustomEvent} from '../../../../utils/event-utils';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {buildStringTemplateFromResult} from '../../../../utils/result-utils';\nimport {getDefaultSlotFromHost} from '../../../../utils/slot-utils';\nimport {AnyUnfoldedItem} from '../../../common/item-list/unfolded-item';\nimport {getAttributesFromLinkSlot} from '../../../common/item-link/attributes-slot';\nimport {LinkWithItemAnalytics} from '../../../common/item-link/stencil-item-link';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {\n InteractiveResultContext,\n ResultContext,\n} from '../result-template-decorators';\n\n/**\n * The `atomic-result-link` component automatically transforms a search result title into a clickable link that points to the original item.\n * @slot default - Lets you display alternative content inside the link\n * @slot attributes - Lets you pass [attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attributes) down to the link element, overriding other attributes, to be used exclusively with an \"a\" tag such as `<a slot=\"attributes\" target=\"_blank\" download></a>`.\n */\n@Component({\n tag: 'atomic-result-link',\n styleUrl: 'atomic-result-link.pcss',\n shadow: false,\n})\nexport class AtomicResultLink implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n public error!: Error;\n\n @ResultContext() private result!: AnyUnfoldedItem;\n @InteractiveResultContext() private interactiveResult!: InteractiveResult;\n\n @Element() private host!: HTMLElement;\n\n /**\n * Specifies a template literal from which to generate the `href` attribute value (see\n * [Template literals](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals)).\n *\n * The template literal can reference any number of result properties from the parent result. It can also reference the window object.\n *\n * For example, the following markup generates an `href` value such as `http://uri.com?id=itemTitle`, using the result's `clickUri` and `itemtitle` fields.\n * ```html\n * <atomic-result-link href-template='${clickUri}?id=${raw.itemtitle}'></atomic-result-link>\n * ```\n */\n @Prop({reflect: true}) hrefTemplate?: string;\n\n private hasDefaultSlot!: boolean;\n private linkAttributes?: Attr[];\n private stopPropagation?: boolean;\n\n public initialize() {\n this.host.dispatchEvent(\n buildCustomEvent(\n 'atomic/resolveStopPropagation',\n (stopPropagation: boolean) => {\n this.stopPropagation = stopPropagation;\n }\n )\n );\n }\n\n public connectedCallback() {\n const slotName = 'attributes';\n this.hasDefaultSlot = !!getDefaultSlotFromHost(this.host);\n this.linkAttributes = getAttributesFromLinkSlot(this.host, slotName);\n }\n\n public render() {\n const href = isUndefined(this.hrefTemplate)\n ? this.result.clickUri\n : buildStringTemplateFromResult(\n this.hrefTemplate,\n this.result,\n this.bindings\n );\n\n return (\n <LinkWithItemAnalytics\n href={href}\n onSelect={() => this.interactiveResult.select()}\n onBeginDelayedSelect={() => this.interactiveResult.beginDelayedSelect()}\n onCancelPendingSelect={() =>\n this.interactiveResult.cancelPendingSelect()\n }\n attributes={this.linkAttributes}\n stopPropagation={this.stopPropagation}\n >\n {this.hasDefaultSlot ? (\n <slot />\n ) : (\n <atomic-result-text\n field=\"title\"\n default=\"no-title\"\n ></atomic-result-text>\n )}\n </LinkWithItemAnalytics>\n );\n }\n}\n"],"mappings":"gfAAA,MAAMA,EAAsB,qwkEAC5B,MAAAC,EAAeD,E,iXC4BFE,EAAgB,M,qDA0BpB,UAAAC,GACLC,KAAKC,KAAKC,cACRC,EACE,iCACCC,IACCJ,KAAKI,gBAAkBA,CAAe,I,CAMvC,iBAAAC,GACL,MAAMC,EAAW,aACjBN,KAAKO,iBAAmBC,EAAuBR,KAAKC,MACpDD,KAAKS,eAAiBC,EAA0BV,KAAKC,KAAMK,E,CAGtD,MAAAK,GACL,MAAMC,EAAOC,EAAYb,KAAKc,cAC1Bd,KAAKe,OAAOC,SACZC,EACEjB,KAAKc,aACLd,KAAKe,OACLf,KAAKkB,UAGX,OACEC,EAACC,EAAqB,CAAAC,IAAA,2CACpBT,KAAMA,EACNU,SAAU,IAAMtB,KAAKuB,kBAAkBC,SACvCC,qBAAsB,IAAMzB,KAAKuB,kBAAkBG,qBACnDC,sBAAuB,IACrB3B,KAAKuB,kBAAkBK,sBAEzBC,WAAY7B,KAAKS,eACjBL,gBAAiBJ,KAAKI,iBAErBJ,KAAKO,eACJY,EAAA,aAEAA,EAAA,sBACEW,MAAM,QACNC,QAAQ,a,6BAnEWC,EAAA,CAA5BC,K,+BAGwBD,EAAA,CAAxBE,K,6BACmCF,EAAA,CAAnCG,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["getTemplateNodeType","node","isResultSectionNode","isVisualNode","isElementNode","tagName","toLowerCase","tableElementTagName","groupNodesByType","nodes","aggregate","Array","from","ResultTemplateCommon","constructor","host","setError","validParents","allowEmpty","this","matchConditions","gridCellLinkTarget","validateTemplate","hasValidParent","map","p","toUpperCase","includes","parentElement","nodeName","Error","join","attributes","getNamedItem","value","template","querySelector","innerHTML","trim","content","console","warn","section","sectionNodes","other","otherNodes","childNodes","length","getTemplate","conditions","error","concat","getTemplateElement","linkContent","getLinkTemplateElement","priority","renderIfError","h","element","getDefaultLinkTemplateElement","linkTemplate","document","createElement","makeMatchConditions","mustMatch","mustNotMatch","field","push","ResultTemplatesHelpers","fieldMustMatch","fieldMustNotMatch","makeDefinedConditions","ifDefined","ifNotDefined","fieldNames","split","fieldsMustBeDefined","fieldsMustNotBeDefined"],"sources":["src/components/common/result-templates/result-template-common.tsx"],"sourcesContent":["import {\n ResultTemplate,\n ResultTemplateCondition,\n ResultTemplatesHelpers,\n} from '@coveo/headless';\nimport {h} from '@stencil/core';\nimport {aggregate, isElementNode, isVisualNode} from '../../../utils/utils';\nimport {tableElementTagName} from '../../search/atomic-table-result/table-element-utils';\nimport {ItemTarget} from '../layout/display-options';\nimport {isResultSectionNode} from '../layout/sections';\n\nexport type TemplateContent = DocumentFragment;\n\ninterface ResultTemplateCommonProps {\n allowEmpty?: boolean;\n host: HTMLDivElement;\n validParents: string[];\n setError: (error: Error) => void;\n}\n\ntype TemplateNodeType =\n | 'section'\n | 'metadata'\n | 'table-column-definition'\n | 'other';\n\nexport function getTemplateNodeType(node: Node): TemplateNodeType {\n if (isResultSectionNode(node)) {\n return 'section';\n }\n if (!isVisualNode(node)) {\n return 'metadata';\n }\n if (\n isElementNode(node) &&\n node.tagName.toLowerCase() === tableElementTagName\n ) {\n return 'table-column-definition';\n }\n return 'other';\n}\n\nfunction groupNodesByType(nodes: NodeList) {\n return aggregate(Array.from(nodes), (node) => getTemplateNodeType(node));\n}\n\nexport class ResultTemplateCommon {\n private host: HTMLDivElement;\n public matchConditions: ResultTemplateCondition[] = [];\n private gridCellLinkTarget: ItemTarget = '_self';\n\n constructor({\n host,\n setError,\n validParents,\n allowEmpty = false,\n }: ResultTemplateCommonProps) {\n this.host = host;\n this.validateTemplate(host, setError, validParents, allowEmpty);\n }\n\n validateTemplate(\n host: HTMLDivElement,\n setError: (error: Error) => void,\n validParents: string[],\n allowEmpty = true\n ) {\n const hasValidParent = validParents\n .map((p) => p.toUpperCase())\n .includes(host.parentElement?.nodeName || '');\n const tagName = host.nodeName.toLowerCase();\n\n if (!hasValidParent) {\n setError(\n new Error(\n `The \"${tagName}\" component has to be the child of one of the following: ${validParents\n .map((p) => `\"${p.toLowerCase()}\"`)\n .join(', ')}.`\n )\n );\n return;\n }\n\n if (\n host.parentElement?.attributes.getNamedItem('display')?.value === 'grid'\n ) {\n this.gridCellLinkTarget = host.parentElement?.attributes.getNamedItem(\n 'grid-cell-link-target'\n )?.value as ItemTarget;\n }\n\n const template = host.querySelector<HTMLTemplateElement>(\n 'template:not([slot])'\n );\n if (!template) {\n setError(\n new Error(\n `The \"${tagName}\" component has to contain a \"template\" element as a child.`\n )\n );\n return;\n }\n\n if (!allowEmpty && !template.innerHTML.trim()) {\n setError(\n new Error(`The \"template\" tag inside \"${tagName}\" cannot be empty.`)\n );\n return;\n }\n\n if (template.content.querySelector('script')) {\n console.warn(\n 'Any \"script\" tags defined inside of \"template\" elements are not supported and will not be executed when the results are rendered.',\n host\n );\n }\n\n const {section: sectionNodes, other: otherNodes} = groupNodesByType(\n template.content.childNodes\n );\n if (sectionNodes?.length && otherNodes?.length) {\n console.warn(\n 'Result templates should only contain section elements or non-section elements. Future updates could unpredictably affect this result template.',\n host,\n {sectionNodes, otherNodes}\n );\n }\n }\n\n getTemplate(\n conditions: ResultTemplateCondition[],\n error: Error\n ): ResultTemplate<TemplateContent> | null {\n if (error) {\n return null;\n }\n\n return {\n conditions: conditions.concat(this.matchConditions),\n content: getTemplateElement(this.host).content!,\n linkContent: this.getLinkTemplateElement(this.host).content!,\n priority: 1,\n };\n }\n\n renderIfError(error: Error) {\n if (error) {\n return (\n <atomic-component-error\n element={this.host}\n error={error}\n ></atomic-component-error>\n );\n }\n }\n\n getDefaultLinkTemplateElement() {\n const linkTemplate = document.createElement('template');\n linkTemplate.innerHTML = `<atomic-result-link>${this.gridCellLinkTarget ? `<a slot=\"attributes\" target=\"${this.gridCellLinkTarget}\"></a>` : ''}</atomic-result-link>`;\n return linkTemplate;\n }\n\n getLinkTemplateElement(host: HTMLElement) {\n return (\n host.querySelector<HTMLTemplateElement>('template[slot=\"link\"]') ??\n this.getDefaultLinkTemplateElement()\n );\n }\n}\n\nfunction getTemplateElement(host: HTMLElement) {\n return host.querySelector<HTMLTemplateElement>('template:not([slot])')!;\n}\n\nexport function makeMatchConditions(\n mustMatch: Record<string, string[]>,\n mustNotMatch: Record<string, string[]>\n): ResultTemplateCondition[] {\n const conditions: ResultTemplateCondition[] = [];\n for (const field in mustMatch) {\n conditions.push(\n ResultTemplatesHelpers.fieldMustMatch(field, mustMatch[field])\n );\n }\n\n for (const field in mustNotMatch) {\n conditions.push(\n ResultTemplatesHelpers.fieldMustNotMatch(field, mustNotMatch[field])\n );\n }\n return conditions;\n}\n\nexport function makeDefinedConditions(\n ifDefined?: string,\n ifNotDefined?: string\n): ResultTemplateCondition[] {\n const conditions: ResultTemplateCondition[] = [];\n if (ifDefined) {\n const fieldNames = ifDefined.split(',');\n conditions.push(ResultTemplatesHelpers.fieldsMustBeDefined(fieldNames));\n }\n\n if (ifNotDefined) {\n const fieldNames = ifNotDefined.split(',');\n conditions.push(ResultTemplatesHelpers.fieldsMustNotBeDefined(fieldNames));\n }\n return conditions;\n}\n"],"mappings":"2NA0BgBA,EAAoBC,GAClC,GAAIC,EAAoBD,GAAO,CAC7B,MAAO,S,CAET,IAAKE,EAAaF,GAAO,CACvB,MAAO,U,CAET,GACEG,EAAcH,IACdA,EAAKI,QAAQC,gBAAkBC,EAC/B,CACA,MAAO,yB,CAET,MAAO,OACT,CAEA,SAASC,EAAiBC,GACxB,OAAOC,EAAUC,MAAMC,KAAKH,IAASR,GAASD,EAAoBC,IACpE,C,MAEaY,EAKX,WAAAC,EAAYC,KACVA,EAAIC,SACJA,EAAQC,aACRA,EAAYC,WACZA,EAAa,QAPRC,KAAAC,gBAA6C,GAC5CD,KAAAE,mBAAiC,QAQvCF,KAAKJ,KAAOA,EACZI,KAAKG,iBAAiBP,EAAMC,EAAUC,EAAcC,E,CAGtD,gBAAAI,CACEP,EACAC,EACAC,EACAC,EAAa,MAEb,MAAMK,EAAiBN,EACpBO,KAAKC,GAAMA,EAAEC,gBACbC,SAASZ,EAAKa,eAAeC,UAAY,IAC5C,MAAMxB,EAAUU,EAAKc,SAASvB,cAE9B,IAAKiB,EAAgB,CACnBP,EACE,IAAIc,MACF,QAAQzB,6DAAmEY,EACxEO,KAAKC,GAAM,IAAIA,EAAEnB,mBACjByB,KAAK,WAGZ,M,CAGF,GACEhB,EAAKa,eAAeI,WAAWC,aAAa,YAAYC,QAAU,OAClE,CACAf,KAAKE,mBAAqBN,EAAKa,eAAeI,WAAWC,aACvD,0BACCC,K,CAGL,MAAMC,EAAWpB,EAAKqB,cACpB,wBAEF,IAAKD,EAAU,CACbnB,EACE,IAAIc,MACF,QAAQzB,iEAGZ,M,CAGF,IAAKa,IAAeiB,EAASE,UAAUC,OAAQ,CAC7CtB,EACE,IAAIc,MAAM,8BAA8BzB,wBAE1C,M,CAGF,GAAI8B,EAASI,QAAQH,cAAc,UAAW,CAC5CI,QAAQC,KACN,oIACA1B,E,CAIJ,MAAO2B,QAASC,EAAcC,MAAOC,GAAcrC,EACjD2B,EAASI,QAAQO,YAEnB,GAAIH,GAAcI,QAAUF,GAAYE,OAAQ,CAC9CP,QAAQC,KACN,iJACA1B,EACA,CAAC4B,eAAcE,c,EAKrB,WAAAG,CACEC,EACAC,GAEA,GAAIA,EAAO,CACT,OAAO,I,CAGT,MAAO,CACLD,WAAYA,EAAWE,OAAOhC,KAAKC,iBACnCmB,QAASa,EAAmBjC,KAAKJ,MAAMwB,QACvCc,YAAalC,KAAKmC,uBAAuBnC,KAAKJ,MAAMwB,QACpDgB,SAAU,E,CAId,aAAAC,CAAcN,GACZ,GAAIA,EAAO,CACT,OACEO,EAAA,0BACEC,QAASvC,KAAKJ,KACdmC,MAAOA,G,EAMf,6BAAAS,GACE,MAAMC,EAAeC,SAASC,cAAc,YAC5CF,EAAavB,UAAY,uBAAuBlB,KAAKE,mBAAqB,gCAAgCF,KAAKE,2BAA6B,0BAC5I,OAAOuC,C,CAGT,sBAAAN,CAAuBvC,GACrB,OACEA,EAAKqB,cAAmC,0BACxCjB,KAAKwC,+B,EAKX,SAASP,EAAmBrC,GAC1B,OAAOA,EAAKqB,cAAmC,uBACjD,C,SAEgB2B,EACdC,EACAC,GAEA,MAAMhB,EAAwC,GAC9C,IAAK,MAAMiB,KAASF,EAAW,CAC7Bf,EAAWkB,KACTC,EAAuBC,eAAeH,EAAOF,EAAUE,I,CAI3D,IAAK,MAAMA,KAASD,EAAc,CAChChB,EAAWkB,KACTC,EAAuBE,kBAAkBJ,EAAOD,EAAaC,I,CAGjE,OAAOjB,CACT,C,SAEgBsB,EACdC,EACAC,GAEA,MAAMxB,EAAwC,GAC9C,GAAIuB,EAAW,CACb,MAAME,EAAaF,EAAUG,MAAM,KACnC1B,EAAWkB,KAAKC,EAAuBQ,oBAAoBF,G,CAG7D,GAAID,EAAc,CAChB,MAAMC,EAAaD,EAAaE,MAAM,KACtC1B,EAAWkB,KAAKC,EAAuBS,uBAAuBH,G,CAEhE,OAAOzB,CACT,Q","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["AtomicResultHtml","this","sanitize","render","resultValue","getStringValueFromResultOrNull","result","field","host","remove","h","value","__decorate","InitializeBindings","ResultContext"],"sources":["src/components/search/result-template-components/atomic-result-html/atomic-result-html.tsx"],"sourcesContent":["import {Result} from '@coveo/headless';\nimport {Component, Prop, h, Element, State} from '@stencil/core';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {getStringValueFromResultOrNull} from '../../../../utils/result-utils';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-result-html` component renders the HTML value of a string result field.\n *\n * There is an inherent XSS security concern associated with the usage of this component.\n *\n * Use only with fields for which you are certain the data is harmless.\n */\n@Component({\n tag: 'atomic-result-html',\n shadow: false,\n})\nexport class AtomicResultHtml implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @ResultContext() private result!: Result;\n\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The result field which the component should use.\n * If set, Atomic searches for the specified field in the `Result` object first.\n * If there's no such a field, Atomic searches through the `Result.raw` object.\n * It's important to include the necessary field in the `ResultList` component.\n */\n @Prop({reflect: true}) public field!: string;\n /**\n * Specify if the content should be sanitized, using [`DOMPurify`](https://www.npmjs.com/package/dompurify).\n */\n @Prop({reflect: true}) public sanitize = true;\n\n public render() {\n const resultValue = getStringValueFromResultOrNull(this.result, this.field);\n if (!resultValue) {\n this.host.remove();\n return;\n }\n\n return (\n <atomic-html value={resultValue} sanitize={this.sanitize}></atomic-html>\n );\n }\n}\n"],"mappings":"+pBAqBaA,EAAgB,M,yBAkBGC,KAAAC,SAAW,K,wDAAA,I,CAElC,MAAAC,GACL,MAAMC,EAAcC,EAA+BJ,KAAKK,OAAQL,KAAKM,OACrE,IAAKH,EAAa,CAChBH,KAAKO,KAAKC,SACV,M,CAGF,OACEC,EAAA,eAAaC,MAAOP,EAAaF,SAAUD,KAAKC,U,6BA3BvBU,EAAA,CAA5BC,K,+BACwBD,EAAA,CAAxBE,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["identifierKeywordsSection","QuickviewSidebar","props","words","minimized","numberOfWords","Object","values","length","minimizeButton","h","MinimizeButton","wordsLength","class","HighlightKeywordsCheckbox","Keywords","i18n","onMinimize","highlightKeywords","IconButton","partPrefix","icon","MinimizeIcon","style","title","t","ariaLabel","onClick","badge","undefined","ariaExpanded","toString","ariaControls","onHighlightKeywords","Fragment","StencilCheckbox","text","id","checked","highlightNone","onToggle","htmlFor","map","keyword","wordIsEnabled","keywords","enabled","key","backgroundColor","color","Intl","NumberFormat","language","notation","format","occurrences","FieldsetGroup","label","ArrowDown","disabled","navigateForward","ArrowUp","navigateBackward","tabIndex","ariaPressed","Remove","Add","indexIdentifier","documentIdentifierInIframe","writeDocument","documentWriter","content","open","write","close","scrollingElement","scrollTop","currentResultAlreadyWrittenToDocument","uniqueIdentifier","currentDocIdentifier","getElementById","textContent","ensureSameResultIsNotOverwritten","docIdentifier","createElement","display","setAttribute","body","appendChild","warnAboutLimitedUsageQuickview","logger","warn","QuickviewIframe","onSetIframeRef","sandbox","src","waitForIframeContentToBeWritten","Promise","resolve","setTimeout","ref","async","el","iframeRef","contentDocument","buildPreviewBar","previewBarId","bar","innerHTML","position","top","right","width","height","buildPreviewUnit","word","wordElement","docHeight","previewUnit","elementPosition","getBoundingClientRect","border","previewBorderColor","buildQuickviewPreviewBar","iframe","remove","scrollHeight","forEach","elements","rgbToHsv","r","g","b","max","Math","min","v","d","s","hsvToRgb","i","floor","f","p","q","round","HIGHLIGHT_PREFIX","QuickviewWordHighlight","constructor","stemmingInfoFromIndex","keywordElementInIframe","this","currentNavigationPosition","parsed","parseKeywordIdentifier","getText","keywordIdentifier","focusedColor","computeInvertedColor","computeSaturatedColor","addElement","push","highlightNavigation","putElementIntoView","isTaggedWord","element","nodeName","toLowerCase","currentElement","otherElements","filter","scrollIntoView","innerTextOfHTMLElement","getHighlightedInnerText","resolveOriginalTerm","trim","highlight","found","keys","find","originalTerm","originalTermMatch","stemmingExpansions","stemmingExpansionMatch","stemmingExpansion","getTextOfHTMLElement","children","Array","from","parts","substring","match","keywordTermPart","parseInt","innerText","extractRgb","newSaturation","rSaturated","gSaturated","bSaturated","rgbExtracted","getWordsHighlights","wordsHighlights","querySelectorAll","wordHTMLElementToHighlight","wordHighlight","alreadyScannedKeyword","atomicQuickviewModalCss","AtomicQuickviewModalStyle0","AtomicQuickviewModal","minimizeSidebar","watchHighlightKeywords","handleHighlightsScripts","componentWillLoad","bindings","store","isMobile","reset","result","interactiveResult","renderHeader","headerContent","buildInteractiveResult","engine","options","LinkWithItemAnalytics","href","clickUri","onSelect","select","onBeginDelayedSelect","beginDelayedSelect","onCancelPendingSelect","cancelPendingSelect","className","part","CloseIcon","onClose","slot","renderBody","minimize","quickviewSrc","quickviewUniqueIdentifier","termsToHighlight","renderFooter","Button","previousQuickview","emit","current","first","total","nextQuickview","modalCloseCallback","isOpen","highlightScriptId","state","resultPreview","contentURL","enableHighlights","removeDisableHighlightScript","enableHighlightsSpecificKeyword","identifier","disableHighlights","createDisableHighlightScript","disableHighlightsSpecificKeyword","doc","contentWindow","document","head","scriptId","createStyleElement","createTextNode","flatPhrasesToHighlight","phrasesToHighlight","search","response","entries","phrase","flatMap","keywordEntry","keywordStemming","requestId","uniqueId","render","fullscreen","exportparts","ATOMIC_MODAL_EXPORT_PARTS","__decorate","InitializeBindings"],"sources":["src/components/search/result-template-components/atomic-quickview-sidebar/atomic-quickview-sidebar.tsx","src/components/search/result-template-components/quickview-iframe/quickview-iframe.tsx","src/components/search/result-template-components/quickview-preview-bar/quickview-preview-bar.ts","src/utils/color-utils.ts","src/components/search/result-template-components/quickview-word-highlight/quickview-word-highlight.tsx","src/components/search/result-template-components/atomic-quickview-modal/atomic-quickview-modal.pcss?tag=atomic-quickview-modal&encapsulation=shadow","src/components/search/result-template-components/atomic-quickview-modal/atomic-quickview-modal.tsx"],"sourcesContent":["import {Fragment, FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport Add from '../../../../images/add.svg';\nimport ArrowDown from '../../../../images/arrow-bottom-rounded.svg';\nimport ArrowUp from '../../../../images/arrow-top-rounded.svg';\nimport MinimizeIcon from '../../../../images/menu.svg';\nimport Remove from '../../../../images/remove.svg';\nimport {IconButton} from '../../../common/stencil-iconButton';\nimport {StencilCheckbox} from '../../../common/stencil-checkbox';\nimport {FieldsetGroup} from '../../../common/stencil-fieldset-group';\nimport type {HighlightKeywords} from '../atomic-quickview-modal/atomic-quickview-modal';\nimport {QuickviewWordHighlight} from '../quickview-word-highlight/quickview-word-highlight';\n\nconst identifierKeywordsSection = 'coveo-quickview-sidebar-keywords';\n\nexport interface QuickviewSidebarProps {\n words: Record<string, QuickviewWordHighlight>;\n i18n: i18n;\n highlightKeywords: HighlightKeywords;\n onHighlightKeywords: (highlight: HighlightKeywords) => void;\n minimized: boolean;\n onMinimize: (minimize: boolean) => void;\n}\n\nexport const QuickviewSidebar: FunctionalComponent<QuickviewSidebarProps> = (\n props\n) => {\n const {words, minimized} = props;\n const numberOfWords = Object.values(words).length;\n\n if (numberOfWords === 0) {\n return;\n }\n\n const minimizeButton = (\n <MinimizeButton {...props} wordsLength={numberOfWords} />\n );\n\n return (\n <div class=\"border-neutral h-full border-r p-4\">\n {minimized && minimizeButton}\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center\">\n <HighlightKeywordsCheckbox {...props} />\n </div>\n {!minimized && <div>{minimizeButton}</div>}\n </div>\n\n {!minimized && <Keywords {...props} words={words} />}\n </div>\n );\n};\n\nconst MinimizeButton: FunctionalComponent<\n Pick<\n QuickviewSidebarProps,\n 'i18n' | 'minimized' | 'onMinimize' | 'highlightKeywords'\n > & {wordsLength: number}\n> = ({i18n, minimized, onMinimize, highlightKeywords, wordsLength}) => (\n <IconButton\n partPrefix=\"sidebar-minimize\"\n icon={MinimizeIcon}\n style=\"text-transparent\"\n title={i18n.t('quickview-toggle-navigation')}\n ariaLabel={i18n.t('quickview-toggle-navigation')}\n onClick={() => onMinimize(!minimized)}\n badge={\n highlightKeywords && minimized ? <slot>{wordsLength}</slot> : undefined\n }\n class={`w-fit ${minimized ? '' : 'ml-auto'}`}\n ariaExpanded={(!minimized).toString()}\n ariaControls={identifierKeywordsSection}\n />\n);\n\nconst HighlightKeywordsCheckbox: FunctionalComponent<\n Pick<\n QuickviewSidebarProps,\n 'i18n' | 'highlightKeywords' | 'onHighlightKeywords' | 'minimized'\n >\n> = ({i18n, highlightKeywords, onHighlightKeywords, minimized}) => (\n <Fragment>\n <StencilCheckbox\n text={i18n.t('keywords-highlight')}\n class=\"mr-2\"\n id=\"atomic-quickview-sidebar-highlight-keywords\"\n checked={!highlightKeywords.highlightNone}\n onToggle={(checked) =>\n onHighlightKeywords({\n ...highlightKeywords,\n highlightNone: !checked,\n })\n }\n ></StencilCheckbox>\n {!minimized && (\n <label\n class=\"cursor-pointer font-bold whitespace-nowrap\"\n htmlFor=\"atomic-quickview-sidebar-highlight-keywords\"\n >\n {i18n.t('keywords-highlight')}\n </label>\n )}\n </Fragment>\n);\n\nconst Keywords: FunctionalComponent<\n Pick<\n QuickviewSidebarProps,\n 'i18n' | 'onHighlightKeywords' | 'highlightKeywords'\n > & {\n words: Record<string, QuickviewWordHighlight>;\n }\n> = ({words, i18n, highlightKeywords, onHighlightKeywords}) => {\n return (\n <div id={identifierKeywordsSection}>\n {Object.values(words).map((keyword) => {\n const wordIsEnabled =\n !highlightKeywords.highlightNone &&\n (highlightKeywords.keywords[keyword.text] === undefined ||\n highlightKeywords.keywords[keyword.text].enabled === true);\n\n return (\n <div\n key={keyword.text}\n class=\"my-4 flex w-100 items-center justify-between gap-x-2\"\n >\n <div\n class={`bg-background border-neutral flex grow items-center overflow-x-auto rounded-lg border ${\n !wordIsEnabled ? 'pointer-events-none opacity-50' : ''\n }`}\n >\n <div\n class=\"flex grow items-center border-r p-4\"\n aria-hidden=\"true\"\n >\n <div\n class=\"mr-2 h-5 w-5 flex-none\"\n style={{backgroundColor: keyword.color}}\n ></div>\n <div class=\"mr-2 grow whitespace-nowrap\">{keyword.text}</div>\n <div class=\"flex-none\">\n (\n {new Intl.NumberFormat(i18n.language, {\n notation: 'compact',\n }).format(keyword.occurrences)}\n )\n </div>\n </div>\n <FieldsetGroup\n label={i18n.t('quickview-navigate-keywords', {\n occurrences: keyword.occurrences,\n keyword: keyword.text,\n })}\n >\n <div class=\"flex px-2\">\n <IconButton\n partPrefix=\"sidebar-next\"\n icon={ArrowDown}\n disabled={!wordIsEnabled}\n style=\"text-transparent\"\n class=\"border-0\"\n ariaLabel={i18n.t('next')}\n title={i18n.t('next')}\n onClick={() => keyword.navigateForward()}\n />\n <IconButton\n partPrefix=\"sidebar-previous\"\n icon={ArrowUp}\n disabled={!wordIsEnabled}\n style=\"text-transparent\"\n class=\"border-0\"\n ariaLabel={i18n.t('previous')}\n title={i18n.t('previous')}\n onClick={() => keyword.navigateBackward()}\n />\n </div>\n </FieldsetGroup>\n </div>\n <IconButton\n partPrefix=\"sidebar-remove-word\"\n class={`${\n highlightKeywords.highlightNone\n ? 'pointer-events-none opacity-50'\n : ''\n }`}\n tabIndex={highlightKeywords.highlightNone ? '-1' : '0'}\n ariaPressed={(!wordIsEnabled).toString()}\n style=\"text-transparent\"\n icon={wordIsEnabled ? Remove : Add}\n ariaLabel={i18n.t('quickview-remove-word')}\n onClick={() => {\n onHighlightKeywords({\n ...highlightKeywords,\n keywords: {\n ...highlightKeywords.keywords,\n [keyword.text]: {\n enabled: !wordIsEnabled,\n indexIdentifier: keyword.indexIdentifier,\n },\n },\n });\n }}\n />\n </div>\n );\n })}\n </div>\n );\n};\n","import {SearchEngine} from '@coveo/headless';\nimport {FunctionalComponent, h} from '@stencil/core';\n\nconst documentIdentifierInIframe = 'CoveoDocIdentifier';\n\nconst writeDocument = (documentWriter: Document, content: string) => {\n documentWriter.open();\n documentWriter.write(content);\n documentWriter.close();\n if (documentWriter.scrollingElement) {\n documentWriter.scrollingElement.scrollTop = 0;\n }\n};\n\nconst currentResultAlreadyWrittenToDocument = (\n documentWriter: Document,\n uniqueIdentifier: string\n) => {\n const currentDocIdentifier = documentWriter.getElementById(\n documentIdentifierInIframe\n );\n\n return (\n currentDocIdentifier &&\n currentDocIdentifier.textContent === uniqueIdentifier\n );\n};\n\nconst ensureSameResultIsNotOverwritten = (\n documentWriter: Document,\n uniqueIdentifier: string\n) => {\n const docIdentifier = documentWriter.createElement('div');\n docIdentifier.style.display = 'none';\n docIdentifier.setAttribute('aria-hidden', 'true');\n docIdentifier.id = documentIdentifierInIframe;\n docIdentifier.textContent = uniqueIdentifier;\n documentWriter.body.appendChild(docIdentifier);\n};\n\nconst warnAboutLimitedUsageQuickview = (logger?: SearchEngine['logger']) => {\n logger?.warn(\n 'Quickview initialized in restricted mode due to incompatible sandboxing environment. Keywords hit navigation will be disabled.'\n );\n};\n\nexport const QuickviewIframe: FunctionalComponent<{\n title: string;\n content?: string;\n onSetIframeRef: (ref: HTMLIFrameElement) => void;\n uniqueIdentifier?: string;\n sandbox?: string;\n src?: string;\n logger?: SearchEngine['logger'];\n}> = ({title, onSetIframeRef, uniqueIdentifier, content, sandbox, src, logger}) => {\n // When a document is written with document.open/document.write/document.close\n // it is not synchronous and the content of the iframe is only available to be queried at the end of the current call stack.\n // This add a \"wait\" (setTimeout 0) before calling the `onSetIframeRef` from the parent modal quickview\n const waitForIframeContentToBeWritten = () => {\n return new Promise((resolve) => setTimeout(resolve));\n };\n\n return (\n <iframe\n title={title}\n src=\"about:blank\"\n class=\"h-full w-full\"\n sandbox={sandbox}\n ref={async (el) => {\n const iframeRef = el as HTMLIFrameElement;\n\n if (!uniqueIdentifier || !content) {\n return;\n }\n\n const documentWriter = iframeRef.contentDocument;\n if (!documentWriter) {\n if (src) {\n warnAboutLimitedUsageQuickview(logger);\n iframeRef.src = src;\n }\n\n return;\n }\n if (\n currentResultAlreadyWrittenToDocument(\n documentWriter,\n uniqueIdentifier\n )\n ) {\n return;\n }\n\n writeDocument(documentWriter, content);\n ensureSameResultIsNotOverwritten(documentWriter, uniqueIdentifier);\n\n await waitForIframeContentToBeWritten();\n onSetIframeRef(iframeRef);\n }}\n ></iframe>\n );\n};\n","import type {HighlightKeywords} from '../atomic-quickview-modal/atomic-quickview-modal';\nimport type {QuickviewWordHighlight} from '../quickview-word-highlight/quickview-word-highlight';\n\nconst buildPreviewBar = (documentWriter: Document) => {\n const previewBarId = 'CoveoPreviewBar';\n const bar =\n documentWriter.getElementById(previewBarId) ||\n documentWriter.createElement('div');\n\n bar.id = previewBarId;\n bar.innerHTML = '';\n bar.style.position = 'fixed';\n bar.style.top = '0';\n bar.style.right = '0';\n bar.style.width = '15px';\n bar.style.height = '100%';\n bar.setAttribute('aria-hidden', 'true');\n return bar;\n};\n\nconst buildPreviewUnit = (\n documentWriter: Document,\n word: QuickviewWordHighlight,\n wordElement: HTMLElement,\n docHeight: number,\n highlightKeywords: HighlightKeywords\n) => {\n const previewUnit = documentWriter.createElement('div');\n if (highlightKeywords.keywords[word.text]?.enabled === false) {\n previewUnit.style.display = 'none';\n return previewUnit;\n }\n\n const elementPosition = wordElement.getBoundingClientRect().top;\n\n previewUnit.style.position = 'absolute';\n previewUnit.style.top = `${(elementPosition / docHeight) * 100}%`;\n previewUnit.style.width = '100%';\n previewUnit.style.height = '1px';\n previewUnit.style.border = `1px solid ${word.previewBorderColor}`;\n previewUnit.style.backgroundColor = word.color;\n return previewUnit;\n};\n\nexport const buildQuickviewPreviewBar = (\n words: Record<string, QuickviewWordHighlight>,\n highlightKeywords: HighlightKeywords,\n iframe?: HTMLIFrameElement\n) => {\n if (!iframe) {\n return;\n }\n const documentWriter = iframe.contentDocument;\n if (!documentWriter) {\n return;\n }\n const bar = buildPreviewBar(documentWriter);\n if (highlightKeywords.highlightNone) {\n bar.remove();\n return;\n }\n const docHeight = documentWriter.body.scrollHeight;\n\n Object.values(words).forEach((word) => {\n word.elements.forEach((wordElement) => {\n const previewUnit = buildPreviewUnit(\n documentWriter,\n word,\n wordElement,\n docHeight,\n highlightKeywords\n );\n\n bar.appendChild(previewUnit);\n });\n });\n documentWriter.body.appendChild(bar);\n};\n","export const rgbToHsv = (r: number, g: number, b: number) => {\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h: number;\n const v = max;\n\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n default:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return {h, s, v};\n};\n\nexport const hsvToRgb = (h: number, s: number, v: number) => {\n let r: number, g: number, b: number;\n\n const i = Math.floor(h * 6);\n const f = h * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n break;\n }\n\n return {\n r: Math.round(r),\n g: Math.round(g),\n b: Math.round(b),\n };\n};\n","import {TermsToHighlight} from '@coveo/headless';\nimport {hsvToRgb, rgbToHsv} from '../../../../utils/color-utils';\n\nexport const HIGHLIGHT_PREFIX = 'CoveoHighlight';\nexport class QuickviewWordHighlight {\n public text: string;\n public indexIdentifier: string;\n public occurrences = 0;\n public color: string;\n public focusedColor: string;\n public previewBorderColor: string;\n public elements: HTMLElement[] = [];\n\n private currentNavigationPosition = -1;\n\n constructor(\n private stemmingInfoFromIndex: TermsToHighlight,\n keywordElementInIframe: HTMLElement\n ) {\n const parsed = this.parseKeywordIdentifier(keywordElementInIframe);\n if (!parsed) {\n throw 'Invalid keyword identifier for quickview';\n }\n\n this.text = this.getText(keywordElementInIframe);\n this.indexIdentifier = `${parsed.keywordIdentifier}`;\n this.color = keywordElementInIframe.style.backgroundColor;\n this.focusedColor = this.computeInvertedColor();\n this.previewBorderColor = this.computeSaturatedColor();\n\n this.addElement(keywordElementInIframe);\n }\n\n public addElement(keywordElementInIframe: HTMLElement) {\n this.occurrences++;\n this.elements.push(keywordElementInIframe);\n }\n\n public navigateForward() {\n this.currentNavigationPosition++;\n if (this.currentNavigationPosition >= this.elements.length) {\n this.currentNavigationPosition = 0;\n }\n this.highlightNavigation();\n this.putElementIntoView();\n return this.elements[this.currentNavigationPosition];\n }\n\n public navigateBackward() {\n this.currentNavigationPosition--;\n if (this.currentNavigationPosition < 0) {\n this.currentNavigationPosition = this.elements.length - 1;\n }\n this.highlightNavigation();\n this.putElementIntoView();\n return this.elements[this.currentNavigationPosition];\n }\n\n private isTaggedWord(element: HTMLElement) {\n return element.nodeName.toLowerCase() === 'coveotaggedword';\n }\n\n private highlightNavigation() {\n const currentElement = this.elements[this.currentNavigationPosition];\n const otherElements = this.elements.filter((el) => el !== currentElement);\n currentElement.style.color = this.color;\n currentElement.style.backgroundColor = this.focusedColor;\n otherElements.forEach((element) => {\n element.style.color = '';\n element.style.backgroundColor = this.color;\n });\n }\n\n private putElementIntoView() {\n const element = this.elements[this.currentNavigationPosition];\n element.scrollIntoView();\n }\n\n private getText(element: HTMLElement) {\n const innerTextOfHTMLElement = this.getHighlightedInnerText(element);\n return this.resolveOriginalTerm(innerTextOfHTMLElement).trim();\n }\n\n private resolveOriginalTerm(highlight: string): string {\n // First try to find either an exact match between the highlight and the original non-stemmed keyword.\n // Otherwise try to find a match between the highlight and the stemming keyword expansions\n // If nothing is found (which should not normally happen...), simply return the highlight keyword as is.\n\n const found = Object.keys(this.stemmingInfoFromIndex).find(\n (originalTerm) => {\n const originalTermMatch =\n originalTerm.toLowerCase() === highlight.toLowerCase();\n if (originalTermMatch) {\n return true;\n }\n const stemmingExpansions = this.stemmingInfoFromIndex[originalTerm];\n if (!stemmingExpansions) {\n return false;\n }\n\n const stemmingExpansionMatch = stemmingExpansions.find(\n (stemmingExpansion) =>\n stemmingExpansion.toLowerCase() === highlight.toLowerCase()\n );\n return stemmingExpansionMatch;\n }\n );\n return found || highlight;\n }\n\n private getHighlightedInnerText(element: HTMLElement): string {\n if (!this.isTaggedWord(element)) {\n return this.getTextOfHTMLElement(element);\n }\n\n const children = Array.from(element.children) as HTMLElement[];\n if (children.length >= 1) {\n return this.getTextOfHTMLElement(children[0]);\n }\n\n return '';\n }\n\n private parseKeywordIdentifier(element: HTMLElement) {\n const parts = element.id\n .substring(HIGHLIGHT_PREFIX.length + 1)\n .match(/^([0-9]+)\\.([0-9]+)\\.([0-9]+)$/);\n\n if (!parts || parts.length <= 3) {\n return null;\n }\n\n return {\n keywordIdentifier: parts[1],\n keywordTermPart: parseInt(parts[3], 10),\n };\n }\n\n private getTextOfHTMLElement(el: HTMLElement) {\n return el.innerText || el.textContent || '';\n }\n\n private computeInvertedColor() {\n const {r, g, b} = this.extractRgb();\n return `rgb(${255 - r}, ${255 - g}, ${255 - b})`;\n }\n\n private computeSaturatedColor() {\n const {r, g, b} = this.extractRgb();\n const {h, s, v} = rgbToHsv(r, g, b);\n let newSaturation = s * 2;\n if (newSaturation > 1) {\n newSaturation = 1;\n }\n const {\n r: rSaturated,\n g: gSaturated,\n b: bSaturated,\n } = hsvToRgb(h, newSaturation, v);\n return `rgb(${rSaturated}, ${gSaturated}, ${bSaturated})`;\n }\n\n private extractRgb() {\n const rgbExtracted = this.color.match(/\\d+/g);\n if (!rgbExtracted) {\n return {r: 255, g: 255, b: 255};\n }\n\n return {\n r: parseInt(rgbExtracted[0], 10),\n g: parseInt(rgbExtracted[1], 10),\n b: parseInt(rgbExtracted[2], 10),\n };\n }\n}\n\nexport const getWordsHighlights = (\n stemmingInfoFromIndex: TermsToHighlight,\n iframe?: HTMLIFrameElement\n) => {\n const wordsHighlights: Record<string, QuickviewWordHighlight> = {};\n if (!iframe) {\n return wordsHighlights;\n }\n\n iframe.contentDocument?.body\n .querySelectorAll(`[id^=\"${HIGHLIGHT_PREFIX}\"]`)\n .forEach((el) => {\n const wordHTMLElementToHighlight = el as HTMLElement;\n\n const wordHighlight = new QuickviewWordHighlight(\n stemmingInfoFromIndex,\n wordHTMLElementToHighlight\n );\n\n if (!wordHighlight.text) {\n return;\n }\n\n const alreadyScannedKeyword =\n wordsHighlights[wordHighlight.indexIdentifier];\n\n if (alreadyScannedKeyword) {\n alreadyScannedKeyword.addElement(wordHTMLElementToHighlight);\n } else {\n wordsHighlights[wordHighlight.indexIdentifier] = wordHighlight;\n }\n });\n\n return wordsHighlights;\n};\n","@import '../../../../global/global.pcss';\n@reference '../../../../utils/tailwind-utilities/link-style.css';\n\n.atomic-quickview-modal {\n &::part(backdrop) {\n grid-template-columns: 1fr max(80vw, 30rem) 1fr;\n }\n &::part(body),\n &::part(header),\n &::part(footer) {\n @apply max-w-full;\n }\n\n &::part(footer) {\n @apply flex justify-center;\n }\n\n &::part(body-wrapper) {\n @apply h-full overflow-hidden p-0;\n }\n\n &::part(body) {\n @apply h-full;\n }\n\n &::part(backdrop) {\n grid-template-rows: 1fr 100% 3fr;\n }\n\n &::part(header-wrapper) {\n @apply bg-neutral-light;\n }\n\n a {\n @apply link-style;\n }\n}\n","import {\n buildInteractiveResult,\n Result,\n InteractiveResult,\n TermsToHighlight,\n} from '@coveo/headless';\nimport {\n Component,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Watch,\n Method,\n VNode,\n Fragment,\n} from '@stencil/core';\nimport CloseIcon from '../../../../images/close.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {ATOMIC_MODAL_EXPORT_PARTS} from '../../../common/atomic-modal/export-parts';\nimport {IconButton} from '../../../common/stencil-iconButton';\nimport {LinkWithItemAnalytics} from '../../../common/item-link/stencil-item-link';\nimport {Button} from '../../../common/stencil-button';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {QuickviewSidebar} from '../atomic-quickview-sidebar/atomic-quickview-sidebar';\nimport {QuickviewIframe} from '../quickview-iframe/quickview-iframe';\nimport {buildQuickviewPreviewBar} from '../quickview-preview-bar/quickview-preview-bar';\nimport {\n getWordsHighlights,\n HIGHLIGHT_PREFIX,\n QuickviewWordHighlight,\n} from '../quickview-word-highlight/quickview-word-highlight';\n\nexport interface HighlightKeywords {\n highlightNone: boolean;\n keywords: {\n [text: string]: {\n indexIdentifier: string;\n enabled: boolean;\n };\n };\n}\n\n/**\n * The modal opened when clicking on a quickview button.\n * Do not use this component directly; use `atomic-quickview` instead.\n *\n * @part backdrop - The transparent backdrop hiding the content behind the modal.\n * @part container - The modal's outermost container with the outline and background.\n * @part header-wrapper - The wrapper around the header.\n * @part header - The header at the top of the modal.\n * @part header-ruler - The horizontal ruler underneath the header.\n * @part body-wrapper - The wrapper around the body.\n * @part body - The body of the modal, between the header and the footer.\n * @part footer-wrapper - The wrapper with a shadow or background color around the footer.\n * @part footer - The footer at the bottom of the modal.\n * @part quickview-modal-header-icon - The close icon of the modal.\n * @part quickview-modal-header-title - The title of the modal.\n */\n@Component({\n tag: 'atomic-quickview-modal',\n styleUrl: 'atomic-quickview-modal.pcss',\n shadow: true,\n})\nexport class AtomicQuickviewModal implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @State() public error!: Error;\n\n @State() private highlightKeywords: HighlightKeywords = {\n highlightNone: false,\n keywords: {},\n };\n @Watch('highlightKeywords')\n watchHighlightKeywords() {\n this.handleHighlightsScripts();\n }\n\n @Event({eventName: 'atomic/quickview/next'}) nextQuickview?: EventEmitter;\n @Event({eventName: 'atomic/quickview/previous'})\n previousQuickview?: EventEmitter;\n\n @State() private minimizeSidebar = false;\n @State() private words: Record<string, QuickviewWordHighlight> = {};\n private iframeRef?: HTMLIFrameElement;\n\n @Prop({mutable: true, reflect: false}) content?: string;\n @Prop({mutable: true, reflect: false}) result?: Result;\n @Prop() current?: number;\n @Prop() total?: number;\n @Prop() sandbox?: string;\n @Prop() modalCloseCallback?: () => void;\n\n private interactiveResult?: InteractiveResult;\n\n public componentWillLoad(): void {\n this.minimizeSidebar = this.bindings.store.isMobile();\n }\n\n @Method()\n public async reset() {\n this.highlightKeywords = {\n highlightNone: false,\n keywords: {},\n };\n this.minimizeSidebar = false;\n this.iframeRef = undefined;\n this.content = undefined;\n this.result = undefined;\n this.interactiveResult = undefined;\n }\n\n private renderHeader() {\n let headerContent: VNode | null = null;\n if (this.result) {\n this.interactiveResult = buildInteractiveResult(this.bindings.engine, {\n options: {result: this.result},\n });\n headerContent = (\n <Fragment>\n <LinkWithItemAnalytics\n href={this.result?.clickUri}\n onSelect={() => this.interactiveResult?.select()}\n onBeginDelayedSelect={() =>\n this.interactiveResult?.beginDelayedSelect()\n }\n onCancelPendingSelect={() =>\n this.interactiveResult?.cancelPendingSelect()\n }\n className=\"truncate\"\n part=\"quickview-modal-header-title\"\n >\n {this.result.title}\n </LinkWithItemAnalytics>\n <IconButton\n partPrefix=\"quickview-modal-header\"\n icon={CloseIcon}\n onClick={() => this.onClose()}\n ariaLabel={this.bindings.i18n.t('close')}\n style=\"text-transparent\"\n title={this.bindings.i18n.t('close')}\n />\n </Fragment>\n );\n }\n return (\n <div slot=\"header\" class=\"flex w-full items-center justify-between\">\n {headerContent}\n </div>\n );\n }\n\n private renderBody() {\n return (\n <div slot=\"body\" class=\"grid h-full grid-cols-[min-content_auto]\">\n <div\n class=\"h-full overflow-y-auto\"\n style={{backgroundColor: 'var(--atomic-neutral-light)'}}\n >\n <QuickviewSidebar\n words={this.words}\n i18n={this.bindings.i18n}\n highlightKeywords={this.highlightKeywords}\n onHighlightKeywords={(highlight) =>\n (this.highlightKeywords = highlight)\n }\n minimized={this.minimizeSidebar}\n onMinimize={(minimize) => (this.minimizeSidebar = minimize)}\n />\n </div>\n <div class=\"relative overflow-auto\">\n <QuickviewIframe\n title={this.result?.title ?? this.bindings.i18n.t('preview-modal-title')} \n logger={this.logger}\n src={this.quickviewSrc}\n sandbox={this.sandbox}\n uniqueIdentifier={this.quickviewUniqueIdentifier}\n content={this.content}\n onSetIframeRef={async (ref) => {\n this.iframeRef = ref;\n this.words = getWordsHighlights(\n this.termsToHighlight,\n this.iframeRef\n );\n this.handleHighlightsScripts();\n }}\n />\n {buildQuickviewPreviewBar(\n this.words,\n this.highlightKeywords,\n this.iframeRef\n )}\n </div>\n </div>\n );\n }\n\n private renderFooter() {\n return (\n <div slot=\"footer\" class=\"flex items-center gap-2\">\n <Button\n class=\"p-2\"\n style=\"square-neutral\"\n onClick={() => this.previousQuickview?.emit()}\n disabled={this.current === 1}\n text={this.bindings.i18n.t('quickview-previous')}\n ></Button>\n <p class=\"text-center\">\n {this.bindings.i18n.t('showing-results-of', {\n first: this.current,\n total: this.total,\n })}\n </p>\n <Button\n class=\"p-2\"\n style=\"square-neutral\"\n onClick={() => this.nextQuickview?.emit()}\n disabled={this.current === this.total}\n text={this.bindings.i18n.t('quickview-next')}\n ></Button>\n </div>\n );\n }\n\n private onClose() {\n this.content = undefined;\n this.result = undefined;\n this.modalCloseCallback && this.modalCloseCallback();\n }\n\n private get isOpen() {\n return !!this.content && !!this.result;\n }\n\n private get highlightScriptId() {\n return 'CoveoDisableHighlightStyle';\n }\n\n private get logger() {\n return this.bindings.engine.logger;\n }\n\n private get quickviewSrc() {\n return this.bindings.engine.state.resultPreview?.contentURL;\n }\n\n private enableHighlights() {\n this.removeDisableHighlightScript();\n }\n\n private enableHighlightsSpecificKeyword(identifier: string) {\n this.removeDisableHighlightScript(identifier);\n }\n\n private disableHighlights() {\n this.createDisableHighlightScript();\n }\n\n private disableHighlightsSpecificKeyword(identifier: string) {\n this.createDisableHighlightScript(identifier);\n }\n\n private removeDisableHighlightScript(identifier?: string) {\n const doc = this.iframeRef?.contentWindow?.document;\n if (!doc) {\n return;\n }\n doc\n .getElementById(\n `${this.highlightScriptId}${identifier ? `:${identifier}` : ''}`\n )\n ?.remove();\n }\n\n private createDisableHighlightScript(identifier?: string) {\n const doc = this.iframeRef?.contentWindow?.document;\n if (!doc) {\n return;\n }\n\n const head = doc.head;\n const scriptId = `${this.highlightScriptId}${\n identifier ? `:${identifier}` : ''\n }`;\n const style =\n doc.getElementById(scriptId) || this.bindings.createStyleElement();\n style.setAttribute('id', scriptId);\n head.appendChild(style);\n style.appendChild(\n doc.createTextNode(`[id^=\"${HIGHLIGHT_PREFIX}${\n identifier ? `:${identifier}` : ''\n }\"] {\n background-color: inherit !important;\n color: inherit !important;\n }`)\n );\n }\n\n private get termsToHighlight() {\n const flatPhrasesToHighlight: TermsToHighlight = {};\n\n const phrasesToHighlight =\n this.bindings.engine.state.search.response.phrasesToHighlight;\n\n Object.entries(phrasesToHighlight).forEach(([phrase, keywords]) => {\n flatPhrasesToHighlight[phrase] = Object.entries(keywords).flatMap(\n ([keywordEntry, keywordStemming]) => {\n return [keywordEntry, ...keywordStemming];\n }\n );\n });\n\n return {\n ...this.bindings.engine.state.search.response.termsToHighlight,\n ...flatPhrasesToHighlight,\n };\n }\n\n private get requestId() {\n return this.bindings.engine.state.search.requestId;\n }\n\n private get quickviewUniqueIdentifier() {\n return this.result?.uniqueId + this.requestId;\n }\n\n private handleHighlightsScripts() {\n if (!this.highlightKeywords.highlightNone) {\n this.enableHighlights();\n } else {\n this.disableHighlights();\n }\n Object.values(this.highlightKeywords.keywords).forEach((word) => {\n if (word.enabled) {\n this.enableHighlightsSpecificKeyword(word.indexIdentifier);\n } else {\n this.disableHighlightsSpecificKeyword(word.indexIdentifier);\n }\n });\n }\n\n public render() {\n return (\n <atomic-modal\n fullscreen={this.bindings.store.isMobile()}\n class={'atomic-quickview-modal'}\n isOpen={this.isOpen}\n close={() => this.onClose()}\n exportparts={ATOMIC_MODAL_EXPORT_PARTS}\n >\n {this.renderHeader()}\n {this.renderBody()}\n {this.renderFooter()}\n </atomic-modal>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicResultRatingCss","AtomicResultRatingStyle0","AtomicResultRating","this","maxValueInIndex","icon","Star","numberOfStars","updateNumberOfStars","value","ResultTemplatesHelpers","getResultProperty","result","field","computeNumberOfStars","error","Error","componentWillRender","render","host","remove","h","Rating","i18n","bindings","numberOfTotalIcons","numberOfActiveIcons","iconSize","__decorate","InitializeBindings","ResultContext"],"sources":["src/components/search/result-template-components/atomic-result-rating/atomic-result-rating.pcss?tag=atomic-result-rating&encapsulation=shadow","src/components/search/result-template-components/atomic-result-rating/atomic-result-rating.tsx"],"sourcesContent":["@import '../../../../global/global.pcss';\n@import '../../../common/atomic-rating/atomic-rating.pcss';\n","import {Result, ResultTemplatesHelpers} from '@coveo/headless';\nimport {Component, Element, Prop, h, State} from '@stencil/core';\nimport Star from '../../../../images/star.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {\n Rating,\n computeNumberOfStars,\n} from '../../../common/atomic-rating/stencil-rating';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-result-rating` element renders a star rating.\n *\n * @part value-rating - The wrapper that contains the row of inactive stars and the row of active stars.\n * @part value-rating-icon - The individual star icons used in the rating display.\n */\n@Component({\n tag: 'atomic-result-rating',\n styleUrl: 'atomic-result-rating.pcss',\n shadow: true,\n})\nexport class AtomicResultRating implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @ResultContext() private result!: Result;\n @Element() host!: HTMLElement;\n\n /**\n * The field whose values you want to display as a rating.\n */\n @Prop({reflect: true}) public field!: string;\n\n /**\n * The maximum value of the field. This value is also used as the number of icons to be displayed.\n */\n @Prop({reflect: true}) public maxValueInIndex = 5;\n\n /**\n * The SVG icon to use to display the rating.\n *\n * - Use a value that starts with `http://`, `https://`, `./`, or `../`, to fetch and display an icon from a given location.\n * - Use a value that starts with `assets://`, to display an icon from the Atomic package.\n * - Use a stringified SVG to display it directly.\n *\n * When using a custom icon, at least part of your icon should have the color set to `fill=\"currentColor\"`.\n * This part of the SVG will take on the colors set in the following [variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties):\n *\n * - `--atomic-rating-icon-active-color`\n * - `--atomic-rating-icon-inactive-color`\n */\n @Prop({reflect: true}) public icon = Star;\n\n @State() public error!: Error;\n\n @State() numberOfStars: number | null = null;\n\n private updateNumberOfStars() {\n const value = ResultTemplatesHelpers.getResultProperty(\n this.result,\n this.field\n );\n try {\n this.numberOfStars = computeNumberOfStars(value, this.field);\n } catch (error) {\n this.error = error instanceof Error ? error : new Error(`${error}`);\n this.numberOfStars = null;\n }\n }\n\n componentWillRender() {\n this.updateNumberOfStars();\n }\n\n render() {\n if (this.numberOfStars === null) {\n this.host.remove();\n return;\n }\n return (\n <Rating\n i18n={this.bindings.i18n}\n icon={this.icon}\n numberOfTotalIcons={this.maxValueInIndex}\n numberOfActiveIcons={this.numberOfStars}\n iconSize={0.875}\n ></Rating>\n );\n }\n}\n"],"mappings":"6VAAA,MAAMA,EAAwB,+ujEAC9B,MAAAC,EAAeD,E,iXCwBFE,EAAkB,M,yBAaCC,KAAAC,gBAAkB,EAelBD,KAAAE,KAAOC,EAI5BH,KAAAI,cAA+B,K,0CAnBQ,E,UAeXD,E,wCAIG,I,CAEhC,mBAAAE,GACN,MAAMC,EAAQC,EAAuBC,kBACnCR,KAAKS,OACLT,KAAKU,OAEP,IACEV,KAAKI,cAAgBO,EAAqBL,EAAON,KAAKU,M,CACtD,MAAOE,GACPZ,KAAKY,MAAQA,aAAiBC,MAAQD,EAAQ,IAAIC,MAAM,GAAGD,KAC3DZ,KAAKI,cAAgB,I,EAIzB,mBAAAU,GACEd,KAAKK,qB,CAGP,MAAAU,GACE,GAAIf,KAAKI,gBAAkB,KAAM,CAC/BJ,KAAKgB,KAAKC,SACV,M,CAEF,OACEC,EAACC,EAAM,CACLC,KAAMpB,KAAKqB,SAASD,KACpBlB,KAAMF,KAAKE,KACXoB,mBAAoBtB,KAAKC,gBACzBsB,oBAAqBvB,KAAKI,cAC1BoB,SAAU,M,6BA7DaC,EAAA,CAA5BC,K,+BACwBD,EAAA,CAAxBE,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicQuickviewCss","AtomicQuickviewStyle0","AtomicQuickview","this","sandbox","onNextQuickview","evt","stopImmediatePropagation","quickview","next","onPreviousQuickview","previous","focusTarget","buttonFocusTarget","FocusTargetController","initialize","buildQuickview","bindings","engine","options","result","Schema","StringValue","required","regex","validate","addQuickviewModalIfNeeded","quickviewModalRef","quickviewModal","interfaceElement","querySelector","document","createElement","setAttribute","appendChild","updateModalContent","state","content","total","quickviewState","totalResults","current","currentResult","modalCloseCallback","focus","quickviewAriaMessage","isLoading","i18n","t","first","last","title","onClick","event","stopPropagation","fetchResultContent","componentWillUpdate","render","resultHasPreview","h","Button","key","part","style","class","ref","setTarget","icon","QuickviewIcon","__decorate","InitializeBindings","ResultContext","BindStateToController","AriaLiveRegion"],"sources":["src/components/search/result-template-components/atomic-quickview/atomic-quickview.pcss?tag=atomic-quickview&encapsulation=shadow","src/components/search/result-template-components/atomic-quickview/atomic-quickview.tsx"],"sourcesContent":["@import '../../../../global/global.pcss';\n","import {Schema, StringValue} from '@coveo/bueno';\nimport {\n Result,\n buildQuickview,\n Quickview,\n QuickviewState,\n} from '@coveo/headless';\nimport {Component, h, Listen, Prop, State} from '@stencil/core';\nimport QuickviewIcon from '../../../../images/quickview.svg';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {\n AriaLiveRegion,\n FocusTargetController,\n} from '../../../../utils/stencil-accessibility-utils';\nimport {Button} from '../../../common/stencil-button';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-quickview` component renders a button which the end user can click to open a modal box containing a preview\n * about a result.\n *\n * The `atomic-quickview` is not meant to replace the `atomic-result-link` to access an item in a result template; it has certain limitations (e.g., custom styles and embedded\n * images/links may not work as expected in an `atomic-quickview`).\n *\n * @part button - The button that opens the quickview modal on click.\n * @part icon - The icon for the quickview button.\n */\n@Component({\n tag: 'atomic-quickview',\n styleUrl: 'atomic-quickview.pcss',\n shadow: true,\n})\nexport class AtomicQuickview implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @ResultContext() private result!: Result;\n private buttonFocusTarget?: FocusTargetController;\n\n @State() public error!: Error;\n\n public quickview!: Quickview;\n\n @BindStateToController('quickview')\n @State()\n public quickviewState!: QuickviewState;\n\n /**\n * The `sandbox` attribute to apply to the quickview iframe.\n *\n * The quickview is loaded inside an iframe with a [`sandbox`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox) attribute for security reasons.\n *\n * This attribute exists primarily to protect against potential XSS attacks that could originate from the document being displayed.\n *\n * By default, the sandbox attributes are: `allow-popups allow-top-navigation allow-same-origin`.\n *\n * `allow-same-origin` is not optional, and must always be included in the list of allowed capabilities for the component to function properly.\n */\n @Prop() public sandbox =\n 'allow-popups allow-top-navigation allow-same-origin';\n\n @AriaLiveRegion('quickview')\n protected quickviewAriaMessage!: string;\n\n @Listen('atomic/quickview/next', {target: 'body'})\n public onNextQuickview(evt: Event) {\n evt.stopImmediatePropagation();\n this.quickview.next();\n }\n\n @Listen('atomic/quickview/previous', {target: 'body'})\n public onPreviousQuickview(evt: Event) {\n evt.stopImmediatePropagation();\n this.quickview.previous();\n }\n\n private quickviewModalRef?: HTMLAtomicQuickviewModalElement;\n\n public get focusTarget() {\n if (!this.buttonFocusTarget) {\n this.buttonFocusTarget = new FocusTargetController(this);\n }\n return this.buttonFocusTarget;\n }\n\n public initialize() {\n this.quickview = buildQuickview(this.bindings.engine, {\n options: {result: this.result},\n });\n new Schema({\n sandbox: new StringValue({\n required: true,\n regex: /allow-same-origin/,\n }),\n }).validate({sandbox: this.sandbox});\n }\n\n private addQuickviewModalIfNeeded() {\n if (this.quickviewModalRef) {\n return;\n }\n\n const quickviewModal = this.bindings.interfaceElement.querySelector(\n 'atomic-quickview-modal'\n );\n if (quickviewModal) {\n this.quickviewModalRef = quickviewModal;\n return;\n }\n this.quickviewModalRef = document.createElement('atomic-quickview-modal');\n this.quickviewModalRef.setAttribute('sandbox', this.sandbox);\n this.bindings.interfaceElement.appendChild(this.quickviewModalRef);\n }\n\n private updateModalContent() {\n if (this.quickviewModalRef && this.quickview.state.content) {\n this.quickviewModalRef.content = this.quickview.state.content;\n this.quickviewModalRef.result = this.result;\n this.quickviewModalRef.total = this.quickviewState.totalResults;\n this.quickviewModalRef.current = this.quickviewState.currentResult;\n this.quickviewModalRef.modalCloseCallback = () =>\n this.focusTarget.focus();\n\n this.quickviewAriaMessage = this.quickviewState.isLoading\n ? this.bindings.i18n.t('quickview-loading')\n : this.bindings.i18n.t('quickview-loaded', {\n first: this.quickviewState.currentResult,\n last: this.quickviewState.totalResults,\n title: this.result.title,\n });\n }\n }\n\n private onClick(event?: MouseEvent) {\n event?.stopPropagation();\n this.quickview.fetchResultContent();\n }\n\n componentWillUpdate(): void {\n this.addQuickviewModalIfNeeded();\n this.updateModalContent();\n }\n\n public render() {\n if (this.quickviewState.resultHasPreview) {\n return (\n <Button\n part=\"button\"\n title={this.bindings.i18n.t('quickview')}\n style=\"outline-primary\"\n class=\"p-2\"\n onClick={(event) => this.onClick(event)}\n ref={this.focusTarget.setTarget}\n >\n <atomic-icon\n part=\"icon\"\n class=\"flex w-5 justify-center\"\n icon={QuickviewIcon}\n ></atomic-icon>\n </Button>\n );\n }\n }\n}\n"],"mappings":"6iBAAA,MAAMA,EAAqB,+8iEAC3B,MAAAC,EAAeD,E,iXCoCFE,EAAe,M,yBAwBXC,KAAAC,QACb,sD,gEAAA,qD,CAMK,eAAAC,CAAgBC,GACrBA,EAAIC,2BACJJ,KAAKK,UAAUC,M,CAIV,mBAAAC,CAAoBJ,GACzBA,EAAIC,2BACJJ,KAAKK,UAAUG,U,CAKjB,eAAWC,GACT,IAAKT,KAAKU,kBAAmB,CAC3BV,KAAKU,kBAAoB,IAAIC,EAAsBX,K,CAErD,OAAOA,KAAKU,iB,CAGP,UAAAE,GACLZ,KAAKK,UAAYQ,EAAeb,KAAKc,SAASC,OAAQ,CACpDC,QAAS,CAACC,OAAQjB,KAAKiB,UAEzB,IAAIC,EAAO,CACTjB,QAAS,IAAIkB,EAAY,CACvBC,SAAU,KACVC,MAAO,wBAERC,SAAS,CAACrB,QAASD,KAAKC,S,CAGrB,yBAAAsB,GACN,GAAIvB,KAAKwB,kBAAmB,CAC1B,M,CAGF,MAAMC,EAAiBzB,KAAKc,SAASY,iBAAiBC,cACpD,0BAEF,GAAIF,EAAgB,CAClBzB,KAAKwB,kBAAoBC,EACzB,M,CAEFzB,KAAKwB,kBAAoBI,SAASC,cAAc,0BAChD7B,KAAKwB,kBAAkBM,aAAa,UAAW9B,KAAKC,SACpDD,KAAKc,SAASY,iBAAiBK,YAAY/B,KAAKwB,kB,CAG1C,kBAAAQ,GACN,GAAIhC,KAAKwB,mBAAqBxB,KAAKK,UAAU4B,MAAMC,QAAS,CAC1DlC,KAAKwB,kBAAkBU,QAAUlC,KAAKK,UAAU4B,MAAMC,QACtDlC,KAAKwB,kBAAkBP,OAASjB,KAAKiB,OACrCjB,KAAKwB,kBAAkBW,MAAQnC,KAAKoC,eAAeC,aACnDrC,KAAKwB,kBAAkBc,QAAUtC,KAAKoC,eAAeG,cACrDvC,KAAKwB,kBAAkBgB,mBAAqB,IAC1CxC,KAAKS,YAAYgC,QAEnBzC,KAAK0C,qBAAuB1C,KAAKoC,eAAeO,UAC5C3C,KAAKc,SAAS8B,KAAKC,EAAE,qBACrB7C,KAAKc,SAAS8B,KAAKC,EAAE,mBAAoB,CACvCC,MAAO9C,KAAKoC,eAAeG,cAC3BQ,KAAM/C,KAAKoC,eAAeC,aAC1BW,MAAOhD,KAAKiB,OAAO+B,O,EAKrB,OAAAC,CAAQC,GACdA,GAAOC,kBACPnD,KAAKK,UAAU+C,oB,CAGjB,mBAAAC,GACErD,KAAKuB,4BACLvB,KAAKgC,oB,CAGA,MAAAsB,GACL,GAAItD,KAAKoC,eAAemB,iBAAkB,CACxC,OACEC,EAACC,EAAM,CAAAC,IAAA,2CACLC,KAAK,SACLX,MAAOhD,KAAKc,SAAS8B,KAAKC,EAAE,aAC5Be,MAAM,kBACNC,MAAM,MACNZ,QAAUC,GAAUlD,KAAKiD,QAAQC,GACjCY,IAAK9D,KAAKS,YAAYsD,WAEtBP,EAAA,eAAAE,IAAA,2CACEC,KAAK,OACLE,MAAM,0BACNG,KAAMC,I,IA1HaC,EAAA,CAA5BC,K,+BACwBD,EAAA,CAAxBE,K,6BASMF,EAAA,CAFNG,EAAsB,c,qCAmBbH,EAAA,CADTI,EAAe,c","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicResultCss","AtomicResultStyle0","AtomicResult","this","linkContent","DocumentFragment","display","density","imageSize","classes","executedRenderingFunctionOnce","resolveResult","event","preventDefault","stopPropagation","detail","result","resolveInteractiveResult","interactiveResult","resolveStopPropagation","resolveResultDisplayConfig","handleClick","host","shadowRoot","querySelector","click","connectedCallback","layout","ItemLayout","content","children","isCustomRenderFunctionMode","renderingFunction","undefined","getContentHTML","parentNodeToString","getLinkHTML","shouldExecuteRenderFunction","resultRootRef","render","h","Host","class","resultComponentClass","ref","linkContainerRef","getClasses","concat","join","innerHTML","componentDidLoad","loadingFlag","store","unsetLoadingFlag","classList","add","componentDidRender","customRenderOutputAsString","className"],"sources":["src/components/search/atomic-result/atomic-result.pcss?tag=atomic-result&encapsulation=shadow","src/components/search/atomic-result/atomic-result.tsx"],"sourcesContent":["@import '../../common/template-system/template-system.pcss';\n\n:host {\n @apply atomic-template-system;\n}\n","import {FoldedResult, InteractiveResult, Result} from '@coveo/headless';\nimport {Component, h, Prop, Element, Listen, Host} from '@stencil/core';\nimport {parentNodeToString} from '../../../utils/dom-utils';\nimport {DisplayConfig} from '../../common/item-list/stencil-item-decorators';\nimport {\n ItemRenderingFunction,\n resultComponentClass,\n} from '../../common/item-list/stencil-item-list-common';\nimport {\n ItemLayout,\n ItemDisplayDensity,\n ItemDisplayImageSize,\n ItemDisplayLayout,\n} from '../../common/layout/display-options';\nimport {SearchStore} from '../atomic-search-interface/store';\nimport {\n InteractiveResultContextEvent,\n ResultContextEvent,\n} from '../result-template-components/result-template-decorators';\n\n/**\n * The `atomic-result` component is used internally by the `atomic-result-list` component.\n */\n@Component({\n tag: 'atomic-result',\n styleUrl: 'atomic-result.pcss',\n shadow: true,\n})\nexport class AtomicResult {\n private layout!: ItemLayout;\n\n @Element() host!: HTMLElement;\n\n /**\n * Whether an atomic-result-link inside atomic-result should stop click event propagation.\n */\n @Prop() stopPropagation?: boolean;\n\n /**\n * The result item.\n */\n @Prop() result!: Result | FoldedResult;\n\n /**\n * The InteractiveResult item.\n * @internal\n */\n @Prop() interactiveResult!: InteractiveResult;\n\n /**\n * Global Atomic state.\n * @internal\n */\n @Prop() store?: SearchStore;\n\n /**\n * The result content to display.\n */\n @Prop() content?: ParentNode;\n\n /**\n * The result link to use when the result is clicked in a grid layout.\n *\n * @default - An `atomic-result-link` without any customization.\n */\n @Prop() linkContent: ParentNode = new DocumentFragment();\n\n /**\n * How results should be displayed.\n */\n @Prop() display: ItemDisplayLayout = 'list';\n\n /**\n * How large or small results should be.\n */\n @Prop() density: ItemDisplayDensity = 'normal';\n\n /**\n * The size of the visual section in result list items.\n *\n * This is overwritten by the image size defined in the result content, if it exists.\n */\n @Prop() imageSize: ItemDisplayImageSize = 'icon';\n\n /**\n * The classes to add to the result element.\n */\n @Prop() classes = '';\n\n /**\n * @internal\n */\n @Prop() loadingFlag?: string;\n\n /**\n * Internal function used by atomic-recs-list in advanced setups, which lets you bypass the standard HTML template system.\n * Particularly useful for Atomic React\n *\n * @internal\n */\n @Prop() renderingFunction: ItemRenderingFunction;\n\n private resultRootRef?: HTMLElement;\n private linkContainerRef?: HTMLElement;\n private executedRenderingFunctionOnce = false;\n\n @Listen('atomic/resolveResult')\n public resolveResult(event: ResultContextEvent<FoldedResult | Result>) {\n event.preventDefault();\n event.stopPropagation();\n event.detail(this.result);\n }\n\n @Listen('atomic/resolveInteractiveResult')\n public resolveInteractiveResult(event: InteractiveResultContextEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.interactiveResult) {\n event.detail(this.interactiveResult);\n }\n }\n\n @Listen('atomic/resolveStopPropagation')\n public resolveStopPropagation(event: CustomEvent) {\n event.detail(this.stopPropagation);\n }\n\n @Listen('atomic/resolveResultDisplayConfig')\n public resolveResultDisplayConfig(event: ResultContextEvent<DisplayConfig>) {\n event.preventDefault();\n event.stopPropagation();\n event.detail({\n density: this.density,\n imageSize: this.imageSize!,\n });\n }\n\n @Listen('click')\n public handleClick(event: MouseEvent) {\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n this.host\n .shadowRoot!.querySelector<HTMLAnchorElement>(\n '.link-container > atomic-result-link a:not([slot])'\n )\n ?.click();\n }\n\n public connectedCallback() {\n this.layout = new ItemLayout(\n this.content!.children,\n this.display,\n this.density,\n this.imageSize\n );\n }\n\n private get isCustomRenderFunctionMode() {\n return this.renderingFunction !== undefined;\n }\n\n private getContentHTML() {\n return parentNodeToString(this.content!);\n }\n\n private getLinkHTML() {\n return parentNodeToString(this.linkContent);\n }\n\n private shouldExecuteRenderFunction() {\n return (\n this.isCustomRenderFunctionMode &&\n this.resultRootRef &&\n !this.executedRenderingFunctionOnce\n );\n }\n\n public render() {\n if (this.isCustomRenderFunctionMode) {\n return (\n <Host class={resultComponentClass}>\n <div\n class=\"result-root\"\n ref={(ref) => (this.resultRootRef = ref)}\n ></div>\n <div\n class=\"link-container\"\n ref={(ref) => (this.linkContainerRef = ref)}\n ></div>\n </Host>\n );\n }\n return (\n <Host class={resultComponentClass}>\n <div\n class={`result-root ${this.layout\n .getClasses()\n .concat(this.classes)\n .join(' ')}`}\n innerHTML={this.getContentHTML()}\n ></div>\n <div class=\"link-container\" innerHTML={this.getLinkHTML()}></div>\n </Host>\n );\n }\n\n public componentDidLoad() {\n if (this.loadingFlag && this.store) {\n this.store.unsetLoadingFlag(this.loadingFlag);\n }\n this.host.classList.add('hydrated');\n }\n\n public componentDidRender() {\n if (this.shouldExecuteRenderFunction()) {\n const customRenderOutputAsString = this.renderingFunction!(\n this.result,\n this.resultRootRef!,\n this.linkContainerRef!\n );\n\n this.resultRootRef!.className += ` ${this.layout\n .getClasses(customRenderOutputAsString)\n .concat(this.classes)\n .join(' ')}`;\n\n this.executedRenderingFunctionOnce = true;\n }\n this.host.classList.add('hydrated');\n }\n}\n"],"mappings":"6UAAA,MAAMA,EAAkB,glkHACxB,MAAAC,EAAeD,E,MC2BFE,EAAY,M,yBAqCfC,KAAAC,YAA0B,IAAIC,iBAK9BF,KAAAG,QAA6B,OAK7BH,KAAAI,QAA8B,SAO9BJ,KAAAK,UAAkC,OAKlCL,KAAAM,QAAU,GAiBVN,KAAAO,8BAAgC,M,mJAvCN,IAAIL,iB,aAKD,O,aAKC,S,eAOI,O,aAKxB,G,4DAoBX,aAAAM,CAAcC,GACnBA,EAAMC,iBACND,EAAME,kBACNF,EAAMG,OAAOZ,KAAKa,O,CAIb,wBAAAC,CAAyBL,GAC9BA,EAAMC,iBACND,EAAME,kBACN,GAAIX,KAAKe,kBAAmB,CAC1BN,EAAMG,OAAOZ,KAAKe,kB,EAKf,sBAAAC,CAAuBP,GAC5BA,EAAMG,OAAOZ,KAAKW,gB,CAIb,0BAAAM,CAA2BR,GAChCA,EAAMC,iBACND,EAAME,kBACNF,EAAMG,OAAO,CACXR,QAASJ,KAAKI,QACdC,UAAWL,KAAKK,W,CAKb,WAAAa,CAAYT,GACjB,GAAIT,KAAKW,gBAAiB,CACxBF,EAAME,iB,CAERX,KAAKmB,KACFC,WAAYC,cACX,uDAEAC,O,CAGC,iBAAAC,GACLvB,KAAKwB,OAAS,IAAIC,EAChBzB,KAAK0B,QAASC,SACd3B,KAAKG,QACLH,KAAKI,QACLJ,KAAKK,U,CAIT,8BAAYuB,GACV,OAAO5B,KAAK6B,oBAAsBC,S,CAG5B,cAAAC,GACN,OAAOC,EAAmBhC,KAAK0B,Q,CAGzB,WAAAO,GACN,OAAOD,EAAmBhC,KAAKC,Y,CAGzB,2BAAAiC,GACN,OACElC,KAAK4B,4BACL5B,KAAKmC,gBACJnC,KAAKO,6B,CAIH,MAAA6B,GACL,GAAIpC,KAAK4B,2BAA4B,CACnC,OACES,EAACC,EAAI,CAACC,MAAOC,GACXH,EAAA,OACEE,MAAM,cACNE,IAAMA,GAASzC,KAAKmC,cAAgBM,IAEtCJ,EAAA,OACEE,MAAM,iBACNE,IAAMA,GAASzC,KAAK0C,iBAAmBD,I,CAK/C,OACEJ,EAACC,EAAI,CAACC,MAAOC,GACXH,EAAA,OACEE,MAAO,eAAevC,KAAKwB,OACxBmB,aACAC,OAAO5C,KAAKM,SACZuC,KAAK,OACRC,UAAW9C,KAAK+B,mBAElBM,EAAA,OAAKE,MAAM,iBAAiBO,UAAW9C,KAAKiC,gB,CAK3C,gBAAAc,GACL,GAAI/C,KAAKgD,aAAehD,KAAKiD,MAAO,CAClCjD,KAAKiD,MAAMC,iBAAiBlD,KAAKgD,Y,CAEnChD,KAAKmB,KAAKgC,UAAUC,IAAI,W,CAGnB,kBAAAC,GACL,GAAIrD,KAAKkC,8BAA+B,CACtC,MAAMoB,EAA6BtD,KAAK6B,kBACtC7B,KAAKa,OACLb,KAAKmC,cACLnC,KAAK0C,kBAGP1C,KAAKmC,cAAeoB,WAAa,IAAIvD,KAAKwB,OACvCmB,WAAWW,GACXV,OAAO5C,KAAKM,SACZuC,KAAK,OAER7C,KAAKO,8BAAgC,I,CAEvCP,KAAKmB,KAAKgC,UAAUC,IAAI,W","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicInsightResultAttachToCaseIndicatorCss","AtomicInsightResultAttachToCaseIndicatorStyle0","AtomicInsightResultAttachToCaseIndicator","initialize","caseId","this","bindings","engine","state","insightCaseContext","attachToCase","buildAttachToCase","options","result","render","isAttached","h","key","part","class","icon","AttachIcon","title","i18n","t","__decorate","InitializeBindings","ResultContext","BindStateToController"],"sources":["src/components/insight/atomic-insight-result-attach-to-case-indicator/atomic-insight-result-attach-to-case-indicator.pcss?tag=atomic-insight-result-attach-to-case-indicator","src/components/insight/atomic-insight-result-attach-to-case-indicator/atomic-insight-result-attach-to-case-indicator.tsx"],"sourcesContent":["@import '../../../global/global.pcss';\n","import {AttachToCase, buildAttachToCase, Result} from '@coveo/headless/insight';\nimport {Component, State, h, Element} from '@stencil/core';\nimport AttachIcon from '../../../images/attach.svg';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {ResultContext} from '../../search/result-template-components/result-template-decorators';\nimport {InsightBindings} from '../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * @internal\n * The `atomic-insight-result-attach-to-case-indicator` component can be included inside a result template to indicate whether a result is attached to the current case.\n *\n * @part icon The icon that indicates whether the result is attached to the case.\n */\n@Component({\n tag: 'atomic-insight-result-attach-to-case-indicator',\n styleUrl: 'atomic-insight-result-attach-to-case-indicator.pcss',\n})\nexport class AtomicInsightResultAttachToCaseIndicator\n implements InitializableComponent<InsightBindings>\n{\n @InitializeBindings() public bindings!: InsightBindings;\n @ResultContext() private result!: Result;\n\n @Element() host!: HTMLElement;\n @State() public error!: Error;\n\n public attachToCase!: AttachToCase;\n\n @BindStateToController('attachToCase')\n @State()\n public attachToCaseState!: {};\n\n public initialize() {\n const caseId: string =\n this.bindings.engine.state.insightCaseContext?.caseId || '';\n this.attachToCase = buildAttachToCase(this.bindings.engine, {\n options: {\n result: this.result,\n caseId: caseId,\n },\n });\n }\n\n public render() {\n if (this.attachToCase.isAttached()) {\n return (\n <atomic-icon\n part=\"icon\"\n class=\"flex w-5 justify-center\"\n icon={AttachIcon}\n title={this.bindings.i18n.t('result-is-attached')}\n ></atomic-icon>\n );\n }\n }\n}\n"],"mappings":"yVAAA,MAAMA,EAA8C,+8iEACpD,MAAAC,EAAeD,E,iXCoBFE,EAAwC,M,+EAe5C,UAAAC,GACL,MAAMC,EACJC,KAAKC,SAASC,OAAOC,MAAMC,oBAAoBL,QAAU,GAC3DC,KAAKK,aAAeC,EAAkBN,KAAKC,SAASC,OAAQ,CAC1DK,QAAS,CACPC,OAAQR,KAAKQ,OACbT,OAAQA,I,CAKP,MAAAU,GACL,GAAIT,KAAKK,aAAaK,aAAc,CAClC,OACEC,EAAA,eAAAC,IAAA,2CACEC,KAAK,OACLC,MAAM,0BACNC,KAAMC,EACNC,MAAOjB,KAAKC,SAASiB,KAAKC,EAAE,uB,8BA9BPC,EAAA,CAA5BC,K,+BACwBD,EAAA,CAAxBE,K,6BASMF,EAAA,CAFNG,EAAsB,iB","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["t","s","module","exports","this","n","i","e","r","o","u","d","a","h","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","g","f","$l","m","p","l","$","Math","ceil","floor","y","abs","v","negative","format","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","round","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","valueOf","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","$utils","duration","isDuration","bind","dayjs","extend","AtomicResultTimespan","unit","initialize","Schema","field","StringValue","required","emptyAllowed","validate","value","error","Error","isNaN","render","bindings","i18n","count","ResultTemplatesHelpers","getResultProperty","result","__decorate","InitializeBindings","ResultContext"],"sources":["../../node_modules/dayjs/plugin/duration.js","src/components/search/result-template-components/atomic-result-timespan/atomic-result-timespan.tsx"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","import {Schema, StringValue} from '@coveo/bueno';\nimport {Result, ResultTemplatesHelpers} from '@coveo/headless';\nimport {Component, Prop, State} from '@stencil/core';\nimport dayjs from 'dayjs';\nimport {DurationUnitType} from 'dayjs/plugin/duration';\nimport duration from 'dayjs/plugin/duration';\nimport {InitializeBindings} from '../../../../utils/initialization-utils';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../result-template-decorators';\n\ndayjs.extend(duration);\n\n/**\n * The `atomic-result-timespan` component renders a target result number field value as a duration.\n */\n@Component({\n tag: 'atomic-result-timespan',\n})\nexport class AtomicResultTimespan {\n @InitializeBindings()\n public bindings!: Bindings;\n\n @ResultContext() private result!: Result;\n\n @State() public error!: Error;\n\n /**\n * The target result field.\n * The component first looks for the field in the Result object, and then in the Result.raw object.\n * It is important to include the necessary field in the `atomic-search-interface` component.\n */\n @Prop({reflect: true}) field!: string;\n /**\n * The unit of measurement of the field value.\n * Available units: https://day.js.org/docs/en/durations/creating\n */\n @Prop({reflect: true}) unit = 'ms';\n /**\n * The format to apply to the result field value.\n *\n * By default, the format is HH:mm:ss when the duration is under a day, and it is an approximation when longer (days, months or years).\n *\n * The string displayed when there is an approximation can be modified with [localization](https://docs.coveo.com/en/atomic/latest/usage/atomic-localization/).\n *\n * Available formats: https://day.js.org/docs/en/durations/format\n */\n @Prop({reflect: true}) format?: string;\n\n public initialize() {\n new Schema({\n field: new StringValue({required: true, emptyAllowed: false}),\n }).validate({\n field: this.field,\n });\n if (!this.value) {\n this.error = new Error(`No value found for field ${this.field}`);\n return;\n }\n if (isNaN(this.value)) {\n this.error = new Error(\n `Value ${this.value} for field ${this.field} is not a number`\n );\n }\n }\n\n public render() {\n const duration = dayjs.duration(this.value, this.unit as DurationUnitType);\n if (this.format) {\n return duration.format(this.format);\n }\n\n if (duration.asYears() >= 1) {\n return this.bindings.i18n.t('approx_year', {\n count: Math.round(duration.asYears()),\n });\n }\n\n if (duration.asMonths() >= 1) {\n return this.bindings.i18n.t('approx_month', {\n count: Math.round(duration.asMonths()),\n });\n }\n\n if (duration.asDays() >= 1) {\n return this.bindings.i18n.t('approx_day', {\n count: Math.round(duration.asDays()),\n });\n }\n\n return duration.format('HH:mm:ss');\n }\n\n private get value() {\n return ResultTemplatesHelpers.getResultProperty(\n this.result,\n this.field\n ) as number;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["resultSectionTags","Set","productSectionTags","allTags","isResultSectionNode","element","isElementNode","has","tagName","toLowerCase","containsSections","content","Array","from","values","some","tag","includes","child"],"sources":["src/components/common/layout/sections.ts"],"sourcesContent":["import {isElementNode} from '../../../utils/utils';\n\nconst resultSectionTags = new Set([\n 'atomic-result-section-visual',\n 'atomic-result-section-badges',\n 'atomic-result-section-actions',\n 'atomic-result-section-title',\n 'atomic-result-section-title-metadata',\n 'atomic-result-section-emphasized',\n 'atomic-result-section-excerpt',\n 'atomic-result-section-bottom-metadata',\n 'atomic-result-section-children',\n] as const);\n\nconst productSectionTags = new Set([\n 'atomic-product-section-visual',\n 'atomic-product-section-badges',\n 'atomic-product-section-actions',\n 'atomic-product-section-name',\n 'atomic-product-section-metadata',\n 'atomic-product-section-emphasized',\n 'atomic-product-section-description',\n 'atomic-product-section-bottom-metadata',\n 'atomic-product-section-children',\n] as const);\n\nconst allTags = new Set([...resultSectionTags, ...productSectionTags]);\n\ntype SetValueType<T> = T extends Set<infer U> ? U : never;\n\nexport type ItemSectionTagName = SetValueType<typeof allTags>;\n\nexport function isResultSectionNode(element: Node) {\n if (!isElementNode(element)) {\n return false;\n }\n return allTags.has(element.tagName.toLowerCase() as ItemSectionTagName);\n}\n\nexport function containsSections(content: string | NodeList | HTMLCollection) {\n if (typeof content === 'string') {\n return Array.from(allTags.values()).some((tag) => content.includes(tag));\n }\n return Array.from(content).some((child) => isResultSectionNode(child));\n}\n"],"mappings":"oCAEA,MAAMA,EAAoB,IAAIC,IAAI,CAChC,+BACA,+BACA,gCACA,8BACA,uCACA,mCACA,gCACA,wCACA,mCAGF,MAAMC,EAAqB,IAAID,IAAI,CACjC,gCACA,gCACA,iCACA,8BACA,kCACA,oCACA,qCACA,yCACA,oCAGF,MAAME,EAAU,IAAIF,IAAI,IAAID,KAAsBE,I,SAMlCE,EAAoBC,GAClC,IAAKC,EAAcD,GAAU,CAC3B,OAAO,K,CAET,OAAOF,EAAQI,IAAIF,EAAQG,QAAQC,cACrC,C,SAEgBC,EAAiBC,GAC/B,UAAWA,IAAY,SAAU,CAC/B,OAAOC,MAAMC,KAAKV,EAAQW,UAAUC,MAAMC,GAAQL,EAAQM,SAASD,I,CAErE,OAAOJ,MAAMC,KAAKF,GAASI,MAAMG,GAAUd,EAAoBc,IACjE,Q","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["findSection","element","section","querySelector","sectionSelector"],"sources":["src/components/common/atomic-layout-section/sections.ts"],"sourcesContent":["import type {AtomicLayoutSection} from './atomic-layout-section';\n\nexport type Section =\n | 'search'\n | 'facets'\n | 'main'\n | 'status'\n | 'results'\n | 'horizontal-facets'\n | 'products'\n | 'pagination';\n\nexport function findSection(element: HTMLElement, section: Section) {\n return element.querySelector(\n sectionSelector(section)\n ) as AtomicLayoutSection | null;\n}\n\nexport function sectionSelector(section: Section) {\n return `atomic-layout-section[section=\"${section}\"]`;\n}\n"],"mappings":"SAYgBA,EAAYC,EAAsBC,GAChD,OAAOD,EAAQE,cACbC,EAAgBF,GAEpB,C,SAEgBE,EAAgBF,GAC9B,MAAO,kCAAkCA,KAC3C,Q","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["atomicFieldConditionCss","AtomicFieldConditionStyle0","AtomicFieldCondition","this","mustMatch","mustNotMatch","conditions","shouldBeRemoved","componentWillLoad","ifDefined","fieldNames","split","push","ResultTemplatesHelpers","fieldsMustBeDefined","ifNotDefined","fieldsMustNotBeDefined","makeMatchConditions","render","every","condition","result","h","componentDidLoad","host","remove","__decorate","MapProp","splitValues","ResultContext"],"sources":["src/components/search/result-template-components/atomic-field-condition/atomic-field-condition.pcss?tag=atomic-field-condition","src/components/search/result-template-components/atomic-field-condition/atomic-field-condition.tsx"],"sourcesContent":["atomic-field-condition {\n max-width: 100%;\n}\n","import {\n Result,\n ResultTemplateCondition,\n ResultTemplatesHelpers,\n} from '@coveo/headless';\nimport {Component, Prop, h, Element} from '@stencil/core';\nimport {MapProp} from '../../../../utils/props-utils';\nimport {makeMatchConditions} from '../../../common/result-templates/result-template-common';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-field-condition` component takes a list of conditions that, if fulfilled, apply the template in which it's defined.\n * The condition properties can be based on any top-level result property of the `result` object, not restricted to fields (e.g., `isRecommendation`).\n *\n * @slot default - The content to display if the conditions are met.\n *\n * @MapProp name: mustMatch;attr: must-match;docs: The field and values that define which result items the condition must be applied to. For example, a template with the following attribute only applies to result items whose `filetype` is `lithiummessage` or `YouTubePlaylist`: `must-match-filetype=\"lithiummessage,YouTubePlaylist\"`;type: Record<string, string[]> ;default: {}\n * @MapProp name: mustNotMatch;attr: must-not-match;docs: The field and values that define which result items the condition must not be applied to. For example, a template with the following attribute only applies to result items whose `filetype` is not `lithiummessage`: `must-not-match-filetype=\"lithiummessage\";type: Record<string, string[]> ;default: {}\n */\n@Component({\n tag: 'atomic-field-condition',\n styleUrl: 'atomic-field-condition.pcss',\n shadow: false,\n})\nexport class AtomicFieldCondition {\n @Element() host!: HTMLElement;\n\n /**\n * Verifies whether the specified fields are defined.\n */\n @Prop({reflect: true}) ifDefined?: string;\n /**\n * Verifies whether the specified fields are not defined.\n */\n @Prop({reflect: true}) ifNotDefined?: string;\n\n /**\n * Verifies whether the specified fields match the specified values.\n * @type {Record<string, string[]>}\n */\n @Prop() @MapProp({splitValues: true}) mustMatch: Record<string, string[]> =\n {};\n\n /**\n * Verifies whether the specified fields do not match the specified values.\n * @type {Record<string, string[]>}\n */\n @Prop() @MapProp({splitValues: true}) mustNotMatch: Record<string, string[]> =\n {};\n\n private conditions: ResultTemplateCondition[] = [];\n private shouldBeRemoved = false;\n\n @ResultContext() private result!: Result;\n\n public componentWillLoad() {\n if (this.ifDefined) {\n const fieldNames = this.ifDefined.split(',');\n this.conditions.push(\n ResultTemplatesHelpers.fieldsMustBeDefined(fieldNames)\n );\n }\n\n if (this.ifNotDefined) {\n const fieldNames = this.ifNotDefined.split(',');\n this.conditions.push(\n ResultTemplatesHelpers.fieldsMustNotBeDefined(fieldNames)\n );\n }\n\n this.conditions.push(\n ...makeMatchConditions(this.mustMatch, this.mustNotMatch)\n );\n }\n\n public render() {\n if (!this.conditions.every((condition) => condition(this.result))) {\n this.shouldBeRemoved = true;\n return '';\n }\n\n return <slot />;\n }\n\n public componentDidLoad() {\n this.shouldBeRemoved && this.host.remove();\n }\n}\n"],"mappings":"4aAAA,MAAMA,EAA0B,yCAChC,MAAAC,EAAeD,E,iXCuBFE,EAAoB,M,yBAgBOC,KAAAC,UACpC,GAMoCD,KAAAE,aACpC,GAEMF,KAAAG,WAAwC,GACxCH,KAAAI,gBAAkB,M,oEAVxB,G,kBAOA,E,CAOK,iBAAAC,GACL,GAAIL,KAAKM,UAAW,CAClB,MAAMC,EAAaP,KAAKM,UAAUE,MAAM,KACxCR,KAAKG,WAAWM,KACdC,EAAuBC,oBAAoBJ,G,CAI/C,GAAIP,KAAKY,aAAc,CACrB,MAAML,EAAaP,KAAKY,aAAaJ,MAAM,KAC3CR,KAAKG,WAAWM,KACdC,EAAuBG,uBAAuBN,G,CAIlDP,KAAKG,WAAWM,QACXK,EAAoBd,KAAKC,UAAWD,KAAKE,c,CAIzC,MAAAa,GACL,IAAKf,KAAKG,WAAWa,OAAOC,GAAcA,EAAUjB,KAAKkB,UAAU,CACjElB,KAAKI,gBAAkB,KACvB,MAAO,E,CAGT,OAAOe,EAAA,Y,CAGF,gBAAAC,GACLpB,KAAKI,iBAAmBJ,KAAKqB,KAAKC,Q,6BA7CEC,EAAA,CAA7BC,EAAQ,CAACC,YAAa,Q,gCAOOF,EAAA,CAA7BC,EAAQ,CAACC,YAAa,Q,mCAMNF,EAAA,CAAxBG,K","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["AtomicResultNumber","this","formatter","defaultNumberFormatter","valueToDisplay","setFormat","event","preventDefault","stopPropagation","detail","parseValue","value","ResultTemplatesHelpers","getResultProperty","result","field","valueAsNumber","parseFloat","Number","isNaN","error","Error","formatValue","bindings","i18n","languages","toString","updateValueToDisplay","componentWillRender","render","host","remove","__decorate","InitializeBindings","ResultContext"],"sources":["src/components/search/result-template-components/atomic-result-number/atomic-result-number.tsx"],"sourcesContent":["import {Result, ResultTemplatesHelpers} from '@coveo/headless';\nimport {Component, Prop, Element, State, Listen} from '@stencil/core';\nimport {InitializeBindings} from '../../../../utils/initialization-utils';\nimport {\n defaultNumberFormatter,\n NumberFormatter,\n} from '../../../common/formats/format-common';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {ResultContext} from '../result-template-decorators';\n\n/**\n * The `atomic-result-number` component renders the value of a number result field.\n *\n * @slot default - The number can be formatted by adding a `atomic-format-number`, `atomic-format-currency` or `atomic-format-unit` component into this component.\n */\n@Component({\n tag: 'atomic-result-number',\n shadow: false,\n})\nexport class AtomicResultNumber {\n @InitializeBindings() public bindings!: Bindings;\n @ResultContext() private result!: Result;\n\n @Element() host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The field that the component should use.\n * The component will try to find this field in the `Result.raw` object unless it finds it in the `Result` object first.\n * Make sure this field is present in the `fieldsToInclude` property of the `atomic-search-interface` component.\n */\n @Prop({reflect: true}) field!: string;\n\n @State() formatter: NumberFormatter = defaultNumberFormatter;\n\n @State() valueToDisplay: string | null = null;\n\n @Listen('atomic/numberFormat')\n public setFormat(event: CustomEvent<NumberFormatter>) {\n event.preventDefault();\n event.stopPropagation();\n this.formatter = event.detail;\n }\n\n private parseValue() {\n const value = ResultTemplatesHelpers.getResultProperty(\n this.result,\n this.field\n );\n if (value === null) {\n return null;\n }\n const valueAsNumber = parseFloat(`${value}`);\n if (Number.isNaN(valueAsNumber)) {\n this.error = new Error(\n `Could not parse \"${value}\" from field \"${this.field}\" as a number.`\n );\n return null;\n }\n return valueAsNumber;\n }\n\n private formatValue(value: number) {\n try {\n return this.formatter(value, this.bindings.i18n.languages as string[]);\n } catch (error) {\n this.error = error as Error;\n return value.toString();\n }\n }\n\n private updateValueToDisplay() {\n const value = this.parseValue();\n if (value !== null) {\n this.valueToDisplay = this.formatValue(value);\n }\n }\n\n componentWillRender() {\n this.updateValueToDisplay();\n }\n\n public render() {\n if (this.valueToDisplay === null) {\n this.host.remove();\n return;\n }\n return this.valueToDisplay;\n }\n}\n"],"mappings":"yrBAmBaA,EAAkB,M,yBAepBC,KAAAC,UAA6BC,EAE7BF,KAAAG,eAAgC,K,yDAFHD,E,oBAEG,I,CAGlC,SAAAE,CAAUC,GACfA,EAAMC,iBACND,EAAME,kBACNP,KAAKC,UAAYI,EAAMG,M,CAGjB,UAAAC,GACN,MAAMC,EAAQC,EAAuBC,kBACnCZ,KAAKa,OACLb,KAAKc,OAEP,GAAIJ,IAAU,KAAM,CAClB,OAAO,I,CAET,MAAMK,EAAgBC,WAAW,GAAGN,KACpC,GAAIO,OAAOC,MAAMH,GAAgB,CAC/Bf,KAAKmB,MAAQ,IAAIC,MACf,oBAAoBV,kBAAsBV,KAAKc,uBAEjD,OAAO,I,CAET,OAAOC,C,CAGD,WAAAM,CAAYX,GAClB,IACE,OAAOV,KAAKC,UAAUS,EAAOV,KAAKsB,SAASC,KAAKC,U,CAChD,MAAOL,GACPnB,KAAKmB,MAAQA,EACb,OAAOT,EAAMe,U,EAIT,oBAAAC,GACN,MAAMhB,EAAQV,KAAKS,aACnB,GAAIC,IAAU,KAAM,CAClBV,KAAKG,eAAiBH,KAAKqB,YAAYX,E,EAI3C,mBAAAiB,GACE3B,KAAK0B,sB,CAGA,MAAAE,GACL,GAAI5B,KAAKG,iBAAmB,KAAM,CAChCH,KAAK6B,KAAKC,SACV,M,CAEF,OAAO9B,KAAKG,c,6BApEe4B,EAAA,CAA5BC,K,+BACwBD,EAAA,CAAxBE,K","ignoreList":[]}
|