@coveo/atomic 3.33.8-pre.fbe332fd49 → 3.33.9-pre.158cee9fec

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.
Files changed (428) hide show
  1. package/dist/atomic/_atomic.esm.js +1 -1
  2. package/dist/atomic/atomic.esm.js.map +1 -1
  3. package/dist/atomic/autoloader/index.cjs.js +2 -2
  4. package/dist/atomic/autoloader/index.esm.js +2 -2
  5. package/dist/atomic/components/_index.d.ts +2 -2
  6. package/dist/atomic/components/_index.js +1 -1
  7. package/dist/atomic/components/analytics-config.js +1 -1
  8. package/dist/atomic/components/atomic-citation.js +1 -1
  9. package/dist/atomic/components/atomic-facet-manager.js +1 -1
  10. package/dist/atomic/components/atomic-generated-answer-feedback-modal.js +1 -1
  11. package/dist/atomic/components/atomic-html2.js +1 -1
  12. package/dist/atomic/components/atomic-insight-edit-toggle.js +1 -1
  13. package/dist/atomic/components/atomic-insight-facet.js +1 -1
  14. package/dist/atomic/components/atomic-insight-folded-result-list.js +1 -1
  15. package/dist/atomic/components/atomic-insight-full-search-button.js +1 -1
  16. package/dist/atomic/components/atomic-insight-history-toggle.js +1 -1
  17. package/dist/atomic/components/atomic-insight-interface.js +1 -1
  18. package/dist/atomic/components/atomic-insight-no-results.js +1 -1
  19. package/dist/atomic/components/atomic-insight-numeric-facet.js +1 -1
  20. package/dist/atomic/components/atomic-insight-pager.js +5 -41
  21. package/dist/atomic/components/atomic-insight-pager.js.map +1 -1
  22. package/dist/atomic/components/atomic-insight-query-error.js +1 -1
  23. package/dist/atomic/components/atomic-insight-refine-modal2.js +2 -2
  24. package/dist/atomic/components/atomic-insight-refine-toggle.js +1 -1
  25. package/dist/atomic/components/atomic-insight-result-action.js +1 -1
  26. package/dist/atomic/components/atomic-insight-result-attach-to-case-action.js +1 -1
  27. package/dist/atomic/components/atomic-insight-result-attach-to-case-indicator.js +1 -1
  28. package/dist/atomic/components/atomic-insight-result-children.js +1 -1
  29. package/dist/atomic/components/atomic-insight-result-list.js +1 -1
  30. package/dist/atomic/components/atomic-insight-result-quickview-action.js +1 -1
  31. package/dist/atomic/components/atomic-insight-result2.js +1 -1
  32. package/dist/atomic/components/atomic-insight-search-box.js +2 -2
  33. package/dist/atomic/components/atomic-insight-smart-snippet-feedback-modal2.js +2 -2
  34. package/dist/atomic/components/atomic-insight-tabs.js +1 -1
  35. package/dist/atomic/components/atomic-insight-user-actions-session2.js +1 -1
  36. package/dist/atomic/components/atomic-insight-user-actions-toggle.js +1 -1
  37. package/dist/atomic/components/atomic-ipx-body2.js +2 -2
  38. package/dist/atomic/components/atomic-ipx-button.js +2 -2
  39. package/dist/atomic/components/atomic-ipx-embedded.js +1 -1
  40. package/dist/atomic/components/atomic-ipx-modal.js +2 -2
  41. package/dist/atomic/components/atomic-ipx-recs-list.js +1 -1
  42. package/dist/atomic/components/atomic-ipx-refine-modal2.js +1 -1
  43. package/dist/atomic/components/atomic-ipx-refine-toggle.js +1 -1
  44. package/dist/atomic/components/atomic-ipx-result-link.js +1 -1
  45. package/dist/atomic/components/atomic-ipx-tabs.js +1 -1
  46. package/dist/atomic/components/atomic-load-more-results.js +1 -1
  47. package/dist/atomic/components/atomic-no-results.js +1 -1
  48. package/dist/atomic/components/atomic-numeric-facet.js +1 -0
  49. package/dist/atomic/components/atomic-numeric-facet.js.map +1 -1
  50. package/dist/atomic/components/atomic-pager.d.ts +11 -0
  51. package/dist/atomic/components/atomic-pager.js +134 -0
  52. package/dist/atomic/components/atomic-pager.js.map +1 -0
  53. package/dist/atomic/components/atomic-query-error.js +1 -1
  54. package/dist/atomic/components/atomic-recs-error.js +1 -1
  55. package/dist/atomic/components/atomic-recs-interface.js +1 -1
  56. package/dist/atomic/components/atomic-recs-list.js +1 -1
  57. package/dist/atomic/components/atomic-refine-modal2.js +1 -1
  58. package/dist/atomic/components/atomic-refine-toggle.js +1 -1
  59. package/dist/atomic/components/atomic-relevance-inspector.js +46 -1
  60. package/dist/atomic/components/atomic-relevance-inspector.js.map +1 -1
  61. package/dist/atomic/components/atomic-result-placeholder2.js +2 -2
  62. package/dist/atomic/components/atomic-result-table-placeholder2.js +1 -1
  63. package/dist/atomic/components/atomic-search-box-instant-results.js +1 -1
  64. package/dist/atomic/components/atomic-search-box.js +15 -4
  65. package/dist/atomic/components/atomic-search-box.js.map +1 -1
  66. package/dist/atomic/components/atomic-smart-snippet-answer2.js +1 -1
  67. package/dist/atomic/components/atomic-smart-snippet-collapse-wrapper2.js +2 -2
  68. package/dist/atomic/components/atomic-smart-snippet-expandable-answer2.js +1 -1
  69. package/dist/atomic/components/atomic-smart-snippet-source2.js +1 -1
  70. package/dist/atomic/components/atomic-stencil-facet-date-input.js +3 -3
  71. package/dist/atomic/components/atomic-suggestion-renderer2.js +1 -1
  72. package/dist/atomic/components/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +50 -8
  73. package/dist/atomic/components/components/commerce/atomic-commerce-query-summary/atomic-commerce-query-summary.js +2 -2
  74. package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.js +25 -10
  75. package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +12 -5
  76. package/dist/atomic/components/components/common/atomic-modal/atomic-modal.js +2 -0
  77. package/dist/atomic/components/components/common/formats/format-common.js +1 -1
  78. package/dist/atomic/components/components/search/atomic-search-interface/analytics-config.js +57 -0
  79. package/dist/atomic/components/components/search/atomic-search-interface/atomic-search-interface.js +496 -0
  80. package/dist/atomic/components/components/search/atomic-search-layout/atomic-search-layout.js +20 -9
  81. package/dist/atomic/components/components/search/index.js +1 -1
  82. package/dist/atomic/components/components/search/lazy-index.js +1 -1
  83. package/dist/atomic/components/depends-on.js +28 -28
  84. package/dist/atomic/components/depends-on.js.map +1 -1
  85. package/dist/atomic/components/facet-number-input.js +2 -2
  86. package/dist/atomic/components/format-common.js.map +1 -1
  87. package/dist/atomic/components/global/environment.js +1 -1
  88. package/dist/atomic/components/stencil-pager-navigation.js +42 -0
  89. package/dist/atomic/components/stencil-pager-navigation.js.map +1 -0
  90. package/dist/atomic/components/tab-button.js +1 -1
  91. package/dist/atomic/components/tab-popover.js +1 -1
  92. package/dist/atomic/{p-6329ff94.entry.js → p-004adbb8.entry.js} +2 -2
  93. package/dist/atomic/{p-d0f47b33.entry.js → p-00a6ab8c.entry.js} +2 -2
  94. package/dist/atomic/{p-3b20b011.entry.js → p-0610b3e7.entry.js} +2 -2
  95. package/dist/atomic/{p-ee6771f1.entry.js → p-07b6424c.entry.js} +2 -2
  96. package/dist/atomic/{p-2f8de0b9.entry.js → p-07fbb49a.entry.js} +2 -2
  97. package/dist/atomic/{p-811d6dcb.entry.js → p-0b3f6994.entry.js} +2 -2
  98. package/dist/atomic/{p-83c9244a.entry.js → p-0e27d4f2.entry.js} +2 -2
  99. package/dist/atomic/{p-c126ee6b.entry.js → p-0e5dc57f.entry.js} +2 -2
  100. package/dist/atomic/p-0edea6f9.entry.js +2 -0
  101. package/dist/atomic/{p-20341936.entry.js → p-10b5e0f3.entry.js} +2 -2
  102. package/dist/atomic/{p-2ca352f4.entry.js → p-15406648.entry.js} +2 -2
  103. package/dist/atomic/{p-a3efa89e.entry.js → p-160553ce.entry.js} +2 -2
  104. package/dist/atomic/p-211d7d6a.js +2 -0
  105. package/dist/atomic/p-211d7d6a.js.map +1 -0
  106. package/dist/atomic/p-25a96534.js.map +1 -1
  107. package/dist/atomic/{p-757de797.entry.js → p-2a4e9425.entry.js} +2 -2
  108. package/dist/atomic/{p-26a51a77.entry.js → p-3213225f.entry.js} +2 -2
  109. package/dist/atomic/{p-d11b2b24.entry.js → p-383f66dc.entry.js} +2 -2
  110. package/dist/atomic/{p-e1865f9f.entry.js → p-40fcbb35.entry.js} +2 -2
  111. package/dist/atomic/{p-e8d5e852.entry.js → p-41c5d5fa.entry.js} +2 -2
  112. package/dist/atomic/{p-e23b3334.entry.js → p-441b1a7b.entry.js} +2 -2
  113. package/dist/atomic/{p-e514cdb2.entry.js → p-4a74f4a3.entry.js} +2 -2
  114. package/dist/atomic/p-6de44060.entry.js +2 -0
  115. package/dist/atomic/p-6de44060.entry.js.map +1 -0
  116. package/dist/atomic/{p-c1999888.entry.js → p-754909fe.entry.js} +2 -2
  117. package/dist/atomic/p-79a9a372.entry.js +2 -0
  118. package/dist/atomic/{p-fb7ad34b.entry.js.map → p-79a9a372.entry.js.map} +1 -1
  119. package/dist/atomic/{p-36fab158.entry.js → p-7a6468a7.entry.js} +2 -2
  120. package/dist/atomic/{p-3a2c900c.entry.js → p-7b1a3cab.entry.js} +2 -2
  121. package/dist/atomic/{p-d93adf52.entry.js → p-7d63bf7b.entry.js} +2 -2
  122. package/dist/atomic/{p-d364064c.entry.js → p-7f40e57d.entry.js} +2 -2
  123. package/dist/atomic/{p-d785121d.entry.js → p-856e858c.entry.js} +2 -2
  124. package/dist/atomic/{p-e162805d.entry.js → p-8a7a23b7.entry.js} +2 -2
  125. package/dist/atomic/{p-604c4085.entry.js → p-8df7270f.entry.js} +2 -2
  126. package/dist/atomic/{p-8256cd44.entry.js → p-9147b0db.entry.js} +2 -2
  127. package/dist/atomic/{p-37374964.entry.js → p-9727f36b.entry.js} +2 -2
  128. package/dist/atomic/p-97829295.entry.js +2 -0
  129. package/dist/atomic/{p-31aa052e.entry.js → p-97e42c43.entry.js} +2 -2
  130. package/dist/atomic/{p-9883415e.entry.js → p-9b92b4e2.entry.js} +2 -2
  131. package/dist/atomic/{p-1ef658d8.entry.js → p-9d023f0b.entry.js} +2 -2
  132. package/dist/atomic/{p-40635c2d.entry.js → p-9e771351.entry.js} +2 -2
  133. package/dist/atomic/{p-035f8dc8.entry.js → p-a3fa6695.entry.js} +2 -2
  134. package/dist/atomic/{p-470f88ed.entry.js → p-a42e3b8f.entry.js} +2 -2
  135. package/dist/atomic/{p-f0c2dfe8.entry.js → p-abb14108.entry.js} +2 -2
  136. package/dist/atomic/{p-48f57fd8.entry.js → p-b0c50194.entry.js} +2 -2
  137. package/dist/atomic/{p-b0b17e21.entry.js → p-b4c34553.entry.js} +2 -2
  138. package/dist/atomic/{p-98c5b9b8.entry.js → p-b6377fb6.entry.js} +2 -2
  139. package/dist/atomic/{p-08794435.entry.js → p-ba650801.entry.js} +2 -2
  140. package/dist/atomic/{p-ea446721.entry.js → p-bd32625e.entry.js} +2 -2
  141. package/dist/atomic/{p-939eaaac.entry.js → p-bd99fcc1.entry.js} +2 -2
  142. package/dist/atomic/{p-534b6a0a.entry.js → p-bf1dff76.entry.js} +2 -2
  143. package/dist/atomic/{p-99b8d52d.entry.js → p-bf49fed3.entry.js} +2 -2
  144. package/dist/atomic/{p-3f912e98.entry.js → p-c08f4ee6.entry.js} +2 -2
  145. package/dist/atomic/p-c2b4b401.entry.js +2 -0
  146. package/dist/atomic/{p-a53c7821.entry.js → p-c538c8ac.entry.js} +2 -2
  147. package/dist/atomic/{p-ca762513.entry.js → p-c889adbd.entry.js} +2 -2
  148. package/dist/atomic/{p-43d708cb.entry.js → p-c9fe4f77.entry.js} +2 -2
  149. package/dist/atomic/{p-031670fe.js → p-cbeeff3c.js} +2 -2
  150. package/dist/atomic/{p-00e5bb15.entry.js → p-ce41c447.entry.js} +2 -2
  151. package/dist/atomic/{p-6f988841.entry.js → p-d282e943.entry.js} +2 -2
  152. package/dist/atomic/{p-6f988841.entry.js.map → p-d282e943.entry.js.map} +1 -1
  153. package/dist/atomic/p-d4ad7336.entry.js +2 -0
  154. package/dist/atomic/p-d4ad7336.entry.js.map +1 -0
  155. package/dist/atomic/{p-627e1265.entry.js → p-d50c96c2.entry.js} +2 -2
  156. package/dist/atomic/p-dafbe2ef.js +2 -0
  157. package/dist/atomic/p-dafbe2ef.js.map +1 -0
  158. package/dist/atomic/{p-bc0d6d3d.entry.js → p-dee60597.entry.js} +2 -2
  159. package/dist/atomic/{p-b2ff1330.entry.js → p-e1c99e2e.entry.js} +2 -2
  160. package/dist/atomic/{p-6e6d686e.entry.js → p-e3af1bb4.entry.js} +2 -2
  161. package/dist/atomic/{p-bf50b64d.entry.js → p-e6a7e7b2.entry.js} +2 -2
  162. package/dist/atomic/{p-594488f2.entry.js → p-f0012580.entry.js} +2 -2
  163. package/dist/atomic/{p-fbe37f4b.entry.js → p-f8d62605.entry.js} +2 -2
  164. package/dist/atomic/{p-bdbbb47b.entry.js → p-f8ded37c.entry.js} +2 -2
  165. package/dist/atomic/{p-fea7bf3b.entry.js → p-f936f55e.entry.js} +2 -2
  166. package/dist/atomic/{p-fbfe913d.entry.js → p-fb1a1e2e.entry.js} +2 -2
  167. package/dist/atomic/{p-3af5c567.entry.js → p-fd1326ad.entry.js} +2 -2
  168. package/dist/cjs/_loader.cjs.js +1 -1
  169. package/dist/cjs/{analytics-config-e3890e2c.js → analytics-config-b87d0e8c.js} +2 -2
  170. package/dist/cjs/{analytics-config-e3890e2c.js.map → analytics-config-b87d0e8c.js.map} +1 -1
  171. package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
  172. package/dist/cjs/atomic-citation.cjs.entry.js +1 -1
  173. package/dist/cjs/atomic-color-facet.cjs.entry.js +1 -1
  174. package/dist/cjs/atomic-facet-manager.cjs.entry.js +1 -1
  175. package/dist/cjs/atomic-facet-number-input.cjs.entry.js +2 -2
  176. package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
  177. package/dist/cjs/atomic-generated-answer-feedback-modal.cjs.entry.js +1 -1
  178. package/dist/cjs/atomic-html.cjs.entry.js +1 -1
  179. package/dist/cjs/atomic-insight-edit-toggle.cjs.entry.js +1 -1
  180. package/dist/cjs/atomic-insight-facet.cjs.entry.js +2 -2
  181. package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +1 -1
  182. package/dist/cjs/atomic-insight-full-search-button.cjs.entry.js +1 -1
  183. package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js +1 -1
  184. package/dist/cjs/atomic-insight-interface.cjs.entry.js +2 -2
  185. package/dist/cjs/atomic-insight-no-results.cjs.entry.js +1 -1
  186. package/dist/cjs/atomic-insight-numeric-facet.cjs.entry.js +2 -2
  187. package/dist/cjs/atomic-insight-pager.cjs.entry.js +7 -41
  188. package/dist/cjs/atomic-insight-pager.cjs.entry.js.map +1 -1
  189. package/dist/cjs/atomic-insight-query-error.cjs.entry.js +1 -1
  190. package/dist/cjs/atomic-insight-refine-modal.cjs.entry.js +2 -2
  191. package/dist/cjs/atomic-insight-refine-toggle.cjs.entry.js +1 -1
  192. package/dist/cjs/atomic-insight-result-action.cjs.entry.js +1 -1
  193. package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js +1 -1
  194. package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js +1 -1
  195. package/dist/cjs/atomic-insight-result-children.cjs.entry.js +1 -1
  196. package/dist/cjs/atomic-insight-result-list.cjs.entry.js +1 -1
  197. package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js +1 -1
  198. package/dist/cjs/atomic-insight-result.cjs.entry.js +1 -1
  199. package/dist/cjs/atomic-insight-search-box.cjs.entry.js +2 -2
  200. package/dist/cjs/atomic-insight-smart-snippet-feedback-modal.cjs.entry.js +2 -2
  201. package/dist/cjs/atomic-insight-tabs.cjs.entry.js +1 -1
  202. package/dist/cjs/atomic-insight-timeframe-facet.cjs.entry.js +1 -1
  203. package/dist/cjs/atomic-insight-user-actions-session_2.cjs.entry.js +1 -1
  204. package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +1 -1
  205. package/dist/cjs/atomic-ipx-body.cjs.entry.js +2 -2
  206. package/dist/cjs/atomic-ipx-button.cjs.entry.js +2 -2
  207. package/dist/cjs/atomic-ipx-embedded.cjs.entry.js +1 -1
  208. package/dist/cjs/atomic-ipx-modal.cjs.entry.js +2 -2
  209. package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +1 -1
  210. package/dist/cjs/atomic-ipx-refine-modal.cjs.entry.js +1 -1
  211. package/dist/cjs/atomic-ipx-refine-toggle.cjs.entry.js +1 -1
  212. package/dist/cjs/atomic-ipx-result-link.cjs.entry.js +1 -1
  213. package/dist/cjs/atomic-ipx-tabs.cjs.entry.js +1 -1
  214. package/dist/cjs/atomic-load-more-results.cjs.entry.js +1 -1
  215. package/dist/cjs/atomic-no-results.cjs.entry.js +1 -1
  216. package/dist/cjs/atomic-numeric-facet.cjs.entry.js +2 -1
  217. package/dist/cjs/atomic-numeric-facet.cjs.entry.js.map +1 -1
  218. package/dist/cjs/atomic-pager.cjs.entry.js +121 -0
  219. package/dist/cjs/atomic-pager.cjs.entry.js.map +1 -0
  220. package/dist/cjs/atomic-query-error.cjs.entry.js +1 -1
  221. package/dist/cjs/atomic-rating-facet.cjs.entry.js +1 -1
  222. package/dist/cjs/atomic-rating-range-facet.cjs.entry.js +1 -1
  223. package/dist/cjs/atomic-recs-error.cjs.entry.js +1 -1
  224. package/dist/cjs/atomic-recs-interface.cjs.entry.js +2 -2
  225. package/dist/cjs/atomic-recs-list.cjs.entry.js +1 -1
  226. package/dist/cjs/atomic-refine-modal.cjs.entry.js +1 -1
  227. package/dist/cjs/atomic-refine-toggle.cjs.entry.js +1 -1
  228. package/dist/cjs/atomic-relevance-inspector.cjs.entry.js +2 -2
  229. package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +3 -3
  230. package/dist/cjs/atomic-search-box-instant-results.cjs.entry.js +1 -1
  231. package/dist/cjs/atomic-search-box.cjs.entry.js +15 -4
  232. package/dist/cjs/atomic-search-box.cjs.entry.js.map +1 -1
  233. package/dist/cjs/atomic-segmented-facet.cjs.entry.js +1 -1
  234. package/dist/cjs/atomic-smart-snippet-answer_2.cjs.entry.js +2 -2
  235. package/dist/cjs/atomic-smart-snippet-collapse-wrapper_2.cjs.entry.js +3 -3
  236. package/dist/cjs/atomic-stencil-facet-date-input.cjs.entry.js +3 -3
  237. package/dist/cjs/atomic-suggestion-renderer.cjs.entry.js +1 -1
  238. package/dist/cjs/atomic-tab-bar_2.cjs.entry.js +1 -1
  239. package/dist/cjs/atomic-tab-button.cjs.entry.js +1 -1
  240. package/dist/cjs/atomic-timeframe-facet.cjs.entry.js +1 -1
  241. package/dist/cjs/atomic.cjs.js +1 -1
  242. package/dist/cjs/depends-on-f0cf3617.js +68 -0
  243. package/dist/cjs/depends-on-f0cf3617.js.map +1 -0
  244. package/dist/cjs/format-common-4aa8aa88.js.map +1 -1
  245. package/dist/cjs/index-757bc886.js +8 -8
  246. package/dist/cjs/stencil-pager-navigation-c20b8a95.js +48 -0
  247. package/dist/cjs/stencil-pager-navigation-c20b8a95.js.map +1 -0
  248. package/dist/cjs/version.cjs.js +2 -2
  249. package/dist/esm/_loader.js +1 -1
  250. package/dist/esm/{analytics-config-76f4b38f.js → analytics-config-c8e57c0a.js} +2 -2
  251. package/dist/esm/{analytics-config-76f4b38f.js.map → analytics-config-c8e57c0a.js.map} +1 -1
  252. package/dist/esm/atomic-category-facet.entry.js +1 -1
  253. package/dist/esm/atomic-citation.entry.js +1 -1
  254. package/dist/esm/atomic-color-facet.entry.js +1 -1
  255. package/dist/esm/atomic-facet-manager.entry.js +1 -1
  256. package/dist/esm/atomic-facet-number-input.entry.js +2 -2
  257. package/dist/esm/atomic-facet.entry.js +1 -1
  258. package/dist/esm/atomic-generated-answer-feedback-modal.entry.js +1 -1
  259. package/dist/esm/atomic-html.entry.js +1 -1
  260. package/dist/esm/atomic-insight-edit-toggle.entry.js +1 -1
  261. package/dist/esm/atomic-insight-facet.entry.js +2 -2
  262. package/dist/esm/atomic-insight-folded-result-list.entry.js +1 -1
  263. package/dist/esm/atomic-insight-full-search-button.entry.js +1 -1
  264. package/dist/esm/atomic-insight-history-toggle.entry.js +1 -1
  265. package/dist/esm/atomic-insight-interface.entry.js +2 -2
  266. package/dist/esm/atomic-insight-no-results.entry.js +1 -1
  267. package/dist/esm/atomic-insight-numeric-facet.entry.js +2 -2
  268. package/dist/esm/atomic-insight-pager.entry.js +7 -41
  269. package/dist/esm/atomic-insight-pager.entry.js.map +1 -1
  270. package/dist/esm/atomic-insight-query-error.entry.js +1 -1
  271. package/dist/esm/atomic-insight-refine-modal.entry.js +2 -2
  272. package/dist/esm/atomic-insight-refine-toggle.entry.js +1 -1
  273. package/dist/esm/atomic-insight-result-action.entry.js +1 -1
  274. package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js +1 -1
  275. package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js +1 -1
  276. package/dist/esm/atomic-insight-result-children.entry.js +1 -1
  277. package/dist/esm/atomic-insight-result-list.entry.js +1 -1
  278. package/dist/esm/atomic-insight-result-quickview-action.entry.js +1 -1
  279. package/dist/esm/atomic-insight-result.entry.js +1 -1
  280. package/dist/esm/atomic-insight-search-box.entry.js +2 -2
  281. package/dist/esm/atomic-insight-smart-snippet-feedback-modal.entry.js +2 -2
  282. package/dist/esm/atomic-insight-tabs.entry.js +1 -1
  283. package/dist/esm/atomic-insight-timeframe-facet.entry.js +1 -1
  284. package/dist/esm/atomic-insight-user-actions-session_2.entry.js +1 -1
  285. package/dist/esm/atomic-insight-user-actions-toggle.entry.js +1 -1
  286. package/dist/esm/atomic-ipx-body.entry.js +2 -2
  287. package/dist/esm/atomic-ipx-button.entry.js +2 -2
  288. package/dist/esm/atomic-ipx-embedded.entry.js +1 -1
  289. package/dist/esm/atomic-ipx-modal.entry.js +2 -2
  290. package/dist/esm/atomic-ipx-recs-list.entry.js +1 -1
  291. package/dist/esm/atomic-ipx-refine-modal.entry.js +1 -1
  292. package/dist/esm/atomic-ipx-refine-toggle.entry.js +1 -1
  293. package/dist/esm/atomic-ipx-result-link.entry.js +1 -1
  294. package/dist/esm/atomic-ipx-tabs.entry.js +1 -1
  295. package/dist/esm/atomic-load-more-results.entry.js +1 -1
  296. package/dist/esm/atomic-no-results.entry.js +1 -1
  297. package/dist/esm/atomic-numeric-facet.entry.js +2 -1
  298. package/dist/esm/atomic-numeric-facet.entry.js.map +1 -1
  299. package/dist/esm/atomic-pager.entry.js +117 -0
  300. package/dist/esm/atomic-pager.entry.js.map +1 -0
  301. package/dist/esm/atomic-query-error.entry.js +1 -1
  302. package/dist/esm/atomic-rating-facet.entry.js +1 -1
  303. package/dist/esm/atomic-rating-range-facet.entry.js +1 -1
  304. package/dist/esm/atomic-recs-error.entry.js +1 -1
  305. package/dist/esm/atomic-recs-interface.entry.js +2 -2
  306. package/dist/esm/atomic-recs-list.entry.js +1 -1
  307. package/dist/esm/atomic-refine-modal.entry.js +1 -1
  308. package/dist/esm/atomic-refine-toggle.entry.js +1 -1
  309. package/dist/esm/atomic-relevance-inspector.entry.js +2 -2
  310. package/dist/esm/atomic-result-placeholder_8.entry.js +3 -3
  311. package/dist/esm/atomic-search-box-instant-results.entry.js +1 -1
  312. package/dist/esm/atomic-search-box.entry.js +15 -4
  313. package/dist/esm/atomic-search-box.entry.js.map +1 -1
  314. package/dist/esm/atomic-segmented-facet.entry.js +1 -1
  315. package/dist/esm/atomic-smart-snippet-answer_2.entry.js +2 -2
  316. package/dist/esm/atomic-smart-snippet-collapse-wrapper_2.entry.js +3 -3
  317. package/dist/esm/atomic-stencil-facet-date-input.entry.js +3 -3
  318. package/dist/esm/atomic-suggestion-renderer.entry.js +1 -1
  319. package/dist/esm/atomic-tab-bar_2.entry.js +1 -1
  320. package/dist/esm/atomic-tab-button.entry.js +1 -1
  321. package/dist/esm/atomic-timeframe-facet.entry.js +1 -1
  322. package/dist/esm/atomic.js +1 -1
  323. package/dist/esm/depends-on-20dabb86.js +66 -0
  324. package/dist/esm/depends-on-20dabb86.js.map +1 -0
  325. package/dist/esm/format-common-274e0f7c.js.map +1 -1
  326. package/dist/esm/index-3f35faca.js +8 -8
  327. package/dist/esm/stencil-pager-navigation-7261a834.js +42 -0
  328. package/dist/esm/stencil-pager-navigation-7261a834.js.map +1 -0
  329. package/dist/esm/version.js +2 -2
  330. package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +30 -2
  331. package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +1 -0
  332. package/dist/types/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.d.ts +1 -0
  333. package/dist/types/components/search/atomic-pager/atomic-pager.d.ts +16 -26
  334. package/dist/types/components/search/atomic-search-box/atomic-search-box.d.ts +1 -0
  335. package/dist/types/components/search/atomic-search-interface/atomic-search-interface.d.ts +46 -44
  336. package/dist/types/components/search/atomic-search-interface/interfaces.d.ts +2 -1
  337. package/dist/types/components/search/atomic-search-layout/atomic-search-layout.d.ts +3 -1
  338. package/dist/types/components/search/index.d.ts +1 -1
  339. package/dist/types/components.d.ts +67 -165
  340. package/docs/atomic-docs.json +251 -648
  341. package/package.json +4 -4
  342. package/dist/atomic/components/atomic-relevance-inspector2.js +0 -50
  343. package/dist/atomic/components/atomic-relevance-inspector2.js.map +0 -1
  344. package/dist/atomic/components/atomic-search-interface.d.ts +0 -11
  345. package/dist/atomic/components/atomic-search-interface.js +0 -552
  346. package/dist/atomic/components/atomic-search-interface.js.map +0 -1
  347. package/dist/atomic/components/components/search/atomic-pager/atomic-pager.js +0 -175
  348. package/dist/atomic/p-0f13077e.js +0 -2
  349. package/dist/atomic/p-0f13077e.js.map +0 -1
  350. package/dist/atomic/p-1992b245.entry.js +0 -2
  351. package/dist/atomic/p-43c16eeb.entry.js +0 -2
  352. package/dist/atomic/p-43c16eeb.entry.js.map +0 -1
  353. package/dist/atomic/p-593903ec.entry.js +0 -2
  354. package/dist/atomic/p-593903ec.entry.js.map +0 -1
  355. package/dist/atomic/p-d24d34a7.entry.js +0 -2
  356. package/dist/atomic/p-e2afb475.entry.js +0 -2
  357. package/dist/atomic/p-fb7ad34b.entry.js +0 -2
  358. package/dist/cjs/atomic-search-interface.cjs.entry.js +0 -511
  359. package/dist/cjs/atomic-search-interface.cjs.entry.js.map +0 -1
  360. package/dist/cjs/depends-on-0d4e4f15.js +0 -68
  361. package/dist/cjs/depends-on-0d4e4f15.js.map +0 -1
  362. package/dist/esm/atomic-search-interface.entry.js +0 -507
  363. package/dist/esm/atomic-search-interface.entry.js.map +0 -1
  364. package/dist/esm/depends-on-d73b0ce3.js +0 -66
  365. package/dist/esm/depends-on-d73b0ce3.js.map +0 -1
  366. /package/dist/atomic/{p-6329ff94.entry.js.map → p-004adbb8.entry.js.map} +0 -0
  367. /package/dist/atomic/{p-d0f47b33.entry.js.map → p-00a6ab8c.entry.js.map} +0 -0
  368. /package/dist/atomic/{p-3b20b011.entry.js.map → p-0610b3e7.entry.js.map} +0 -0
  369. /package/dist/atomic/{p-ee6771f1.entry.js.map → p-07b6424c.entry.js.map} +0 -0
  370. /package/dist/atomic/{p-2f8de0b9.entry.js.map → p-07fbb49a.entry.js.map} +0 -0
  371. /package/dist/atomic/{p-811d6dcb.entry.js.map → p-0b3f6994.entry.js.map} +0 -0
  372. /package/dist/atomic/{p-83c9244a.entry.js.map → p-0e27d4f2.entry.js.map} +0 -0
  373. /package/dist/atomic/{p-c126ee6b.entry.js.map → p-0e5dc57f.entry.js.map} +0 -0
  374. /package/dist/atomic/{p-1992b245.entry.js.map → p-0edea6f9.entry.js.map} +0 -0
  375. /package/dist/atomic/{p-20341936.entry.js.map → p-10b5e0f3.entry.js.map} +0 -0
  376. /package/dist/atomic/{p-2ca352f4.entry.js.map → p-15406648.entry.js.map} +0 -0
  377. /package/dist/atomic/{p-a3efa89e.entry.js.map → p-160553ce.entry.js.map} +0 -0
  378. /package/dist/atomic/{p-757de797.entry.js.map → p-2a4e9425.entry.js.map} +0 -0
  379. /package/dist/atomic/{p-26a51a77.entry.js.map → p-3213225f.entry.js.map} +0 -0
  380. /package/dist/atomic/{p-d11b2b24.entry.js.map → p-383f66dc.entry.js.map} +0 -0
  381. /package/dist/atomic/{p-e1865f9f.entry.js.map → p-40fcbb35.entry.js.map} +0 -0
  382. /package/dist/atomic/{p-e8d5e852.entry.js.map → p-41c5d5fa.entry.js.map} +0 -0
  383. /package/dist/atomic/{p-e23b3334.entry.js.map → p-441b1a7b.entry.js.map} +0 -0
  384. /package/dist/atomic/{p-e514cdb2.entry.js.map → p-4a74f4a3.entry.js.map} +0 -0
  385. /package/dist/atomic/{p-c1999888.entry.js.map → p-754909fe.entry.js.map} +0 -0
  386. /package/dist/atomic/{p-36fab158.entry.js.map → p-7a6468a7.entry.js.map} +0 -0
  387. /package/dist/atomic/{p-3a2c900c.entry.js.map → p-7b1a3cab.entry.js.map} +0 -0
  388. /package/dist/atomic/{p-d93adf52.entry.js.map → p-7d63bf7b.entry.js.map} +0 -0
  389. /package/dist/atomic/{p-d364064c.entry.js.map → p-7f40e57d.entry.js.map} +0 -0
  390. /package/dist/atomic/{p-d785121d.entry.js.map → p-856e858c.entry.js.map} +0 -0
  391. /package/dist/atomic/{p-e162805d.entry.js.map → p-8a7a23b7.entry.js.map} +0 -0
  392. /package/dist/atomic/{p-604c4085.entry.js.map → p-8df7270f.entry.js.map} +0 -0
  393. /package/dist/atomic/{p-8256cd44.entry.js.map → p-9147b0db.entry.js.map} +0 -0
  394. /package/dist/atomic/{p-37374964.entry.js.map → p-9727f36b.entry.js.map} +0 -0
  395. /package/dist/atomic/{p-d24d34a7.entry.js.map → p-97829295.entry.js.map} +0 -0
  396. /package/dist/atomic/{p-31aa052e.entry.js.map → p-97e42c43.entry.js.map} +0 -0
  397. /package/dist/atomic/{p-9883415e.entry.js.map → p-9b92b4e2.entry.js.map} +0 -0
  398. /package/dist/atomic/{p-1ef658d8.entry.js.map → p-9d023f0b.entry.js.map} +0 -0
  399. /package/dist/atomic/{p-40635c2d.entry.js.map → p-9e771351.entry.js.map} +0 -0
  400. /package/dist/atomic/{p-035f8dc8.entry.js.map → p-a3fa6695.entry.js.map} +0 -0
  401. /package/dist/atomic/{p-470f88ed.entry.js.map → p-a42e3b8f.entry.js.map} +0 -0
  402. /package/dist/atomic/{p-f0c2dfe8.entry.js.map → p-abb14108.entry.js.map} +0 -0
  403. /package/dist/atomic/{p-48f57fd8.entry.js.map → p-b0c50194.entry.js.map} +0 -0
  404. /package/dist/atomic/{p-b0b17e21.entry.js.map → p-b4c34553.entry.js.map} +0 -0
  405. /package/dist/atomic/{p-98c5b9b8.entry.js.map → p-b6377fb6.entry.js.map} +0 -0
  406. /package/dist/atomic/{p-08794435.entry.js.map → p-ba650801.entry.js.map} +0 -0
  407. /package/dist/atomic/{p-ea446721.entry.js.map → p-bd32625e.entry.js.map} +0 -0
  408. /package/dist/atomic/{p-939eaaac.entry.js.map → p-bd99fcc1.entry.js.map} +0 -0
  409. /package/dist/atomic/{p-534b6a0a.entry.js.map → p-bf1dff76.entry.js.map} +0 -0
  410. /package/dist/atomic/{p-99b8d52d.entry.js.map → p-bf49fed3.entry.js.map} +0 -0
  411. /package/dist/atomic/{p-3f912e98.entry.js.map → p-c08f4ee6.entry.js.map} +0 -0
  412. /package/dist/atomic/{p-e2afb475.entry.js.map → p-c2b4b401.entry.js.map} +0 -0
  413. /package/dist/atomic/{p-a53c7821.entry.js.map → p-c538c8ac.entry.js.map} +0 -0
  414. /package/dist/atomic/{p-ca762513.entry.js.map → p-c889adbd.entry.js.map} +0 -0
  415. /package/dist/atomic/{p-43d708cb.entry.js.map → p-c9fe4f77.entry.js.map} +0 -0
  416. /package/dist/atomic/{p-031670fe.js.map → p-cbeeff3c.js.map} +0 -0
  417. /package/dist/atomic/{p-00e5bb15.entry.js.map → p-ce41c447.entry.js.map} +0 -0
  418. /package/dist/atomic/{p-627e1265.entry.js.map → p-d50c96c2.entry.js.map} +0 -0
  419. /package/dist/atomic/{p-bc0d6d3d.entry.js.map → p-dee60597.entry.js.map} +0 -0
  420. /package/dist/atomic/{p-b2ff1330.entry.js.map → p-e1c99e2e.entry.js.map} +0 -0
  421. /package/dist/atomic/{p-6e6d686e.entry.js.map → p-e3af1bb4.entry.js.map} +0 -0
  422. /package/dist/atomic/{p-bf50b64d.entry.js.map → p-e6a7e7b2.entry.js.map} +0 -0
  423. /package/dist/atomic/{p-594488f2.entry.js.map → p-f0012580.entry.js.map} +0 -0
  424. /package/dist/atomic/{p-fbe37f4b.entry.js.map → p-f8d62605.entry.js.map} +0 -0
  425. /package/dist/atomic/{p-bdbbb47b.entry.js.map → p-f8ded37c.entry.js.map} +0 -0
  426. /package/dist/atomic/{p-fea7bf3b.entry.js.map → p-f936f55e.entry.js.map} +0 -0
  427. /package/dist/atomic/{p-fbfe913d.entry.js.map → p-fb1a1e2e.entry.js.map} +0 -0
  428. /package/dist/atomic/{p-3af5c567.entry.js.map → p-fd1326ad.entry.js.map} +0 -0
@@ -0,0 +1,496 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { buildSearchEngine, buildSearchStatus, buildUrlManager, EcommerceDefaultFieldsToInclude, VERSION as HEADLESS_VERSION, loadFieldActions, loadQueryActions, loadSearchConfigurationActions, } from '@coveo/headless';
8
+ import { provide } from '@lit/context';
9
+ import i18next from 'i18next';
10
+ import { css, html, LitElement } from 'lit';
11
+ import { customElement, property, state } from 'lit/decorators.js';
12
+ import { when } from 'lit/directives/when.js';
13
+ import { InterfaceController, } from "../../common/interface/interface-controller";
14
+ import { MobileBreakpointController } from "../../common/layout/mobile-breakpoint-controller";
15
+ import { bindingsContext } from "../../context/bindings-context";
16
+ import { errorSelector, firstSearchExecutedSelector, noResultsSelector, } from "../atomic-search-layout/search-layout";
17
+ import { booleanConverter } from "../../../converters/boolean-converter";
18
+ import { errorGuard } from "../../../decorators/error-guard";
19
+ import { watch } from "../../../decorators/watch";
20
+ import { withTailwindStyles } from "../../../decorators/with-tailwind-styles.js";
21
+ import { ChildrenUpdateCompleteMixin } from "../../../mixins/children-update-complete-mixin";
22
+ import { markParentAsReady } from "../../../utils/init-queue";
23
+ import { SafeStorage, StorageItems, } from "../../../utils/local-storage-utils";
24
+ import { getAnalyticsConfig } from './analytics-config';
25
+ import { createSearchStore } from './store';
26
+ // TODO - Remove once all components that use atomic-modal have been migrated.
27
+ import "../../common/atomic-modal/atomic-modal";
28
+ const FirstSearchExecutedFlag = 'firstSearchExecuted';
29
+ /**
30
+ * The `atomic-search-interface` component is the parent to all other atomic components in a search page. It handles the headless search engine and localization configurations.
31
+ *
32
+ * @slot default - The default slot where you can add child components to the interface.
33
+ */
34
+ let AtomicSearchInterface = class AtomicSearchInterface extends ChildrenUpdateCompleteMixin(LitElement) {
35
+ constructor() {
36
+ super();
37
+ this.bindings = {};
38
+ this.relevanceInspectorIsOpen = false;
39
+ this.unsubscribeUrlManager = () => { };
40
+ this.unsubscribeSearchStatus = () => { };
41
+ this.initialized = false;
42
+ this.interfaceController = new InterfaceController(this, 'CoveoAtomic', HEADLESS_VERSION);
43
+ /**
44
+ * A list of non-default fields to include in the query results.
45
+ *
46
+ * Specify the property as an array using a JSON string representation:
47
+ * ```html
48
+ * <atomic-search-interface fields-to-include='["fieldA", "fieldB"]'></atomic-search-interface>
49
+ * ```
50
+ */
51
+ this.fieldsToInclude = [];
52
+ // TODO - KIT-4994: Add disableAnalytics property that defaults to false.
53
+ // TODO - KIT-4994: Deprecate in favor of disableAnalytics property.
54
+ // TODO - (v4) KIT-4990: Remove.
55
+ /**
56
+ * Whether analytics should be enabled.
57
+ */
58
+ this.analytics = true;
59
+ /**
60
+ * The search interface language.
61
+ */
62
+ this.language = 'en';
63
+ // TODO - (v4) KIT-4823: Remove.
64
+ /**
65
+ * Whether the state should be reflected in the URL parameters.
66
+ * @deprecated - replaced by `disable-state-reflection-in-url` (this defaults to `true`, while the replacement defaults to `false`).
67
+ */
68
+ this.reflectStateInUrl = true;
69
+ /**
70
+ * Whether to disable state reflection in the URL parameters.
71
+ */
72
+ this.disableStateReflectionInUrl = false;
73
+ /**
74
+ * The CSS selector for the container where the interface will scroll back to.
75
+ */
76
+ this.scrollContainer = 'atomic-search-interface';
77
+ /**
78
+ * The language assets path. By default, this will be a relative URL pointing to `./lang`.
79
+ *
80
+ * Example: "/mypublicpath/languages"
81
+ *
82
+ */
83
+ this.languageAssetsPath = './lang';
84
+ /**
85
+ * The icon assets path. By default, this will be a relative URL pointing to `./assets`.
86
+ *
87
+ * Example: "/mypublicpath/icons"
88
+ *
89
+ */
90
+ this.iconAssetsPath = './assets';
91
+ // TODO - (v4) KIT-5004: Remove.
92
+ /**
93
+ * Whether the relevance inspector shortcut should be enabled for this interface.
94
+ *
95
+ * The relevance inspector can be opened by holding the Alt key (Option on Mac) while over the interface, and performing a double click.
96
+ *
97
+ * The relevance inspector allows to troubleshoot and debug queries.
98
+ * @deprecated - replaced by `disable-relevance-inspector` (this defaults to `true`, while the replacement defaults to `false`).
99
+ */
100
+ this.enableRelevanceInspector = true;
101
+ /**
102
+ * Whether to disable the relevance inspector shortcut for this interface.
103
+ */
104
+ this.disableRelevanceInspector = false;
105
+ this.handleInitialization = (event) => {
106
+ this.interfaceController.onComponentInitializing(event);
107
+ };
108
+ this.handleRelevanceInspectorDoubleClick = (e) => {
109
+ if (e.altKey) {
110
+ this.relevanceInspectorIsOpen = !this.relevanceInspectorIsOpen;
111
+ }
112
+ };
113
+ this.onHashChange = () => {
114
+ this.urlManager.synchronize(this.fragment);
115
+ };
116
+ this.store = createSearchStore();
117
+ new MobileBreakpointController(this, this.store);
118
+ const { promise, resolve } = Promise.withResolvers();
119
+ this.i18Initialized = promise;
120
+ this.i18n = i18next.createInstance(undefined, resolve);
121
+ }
122
+ connectedCallback() {
123
+ super.connectedCallback();
124
+ this.store.setLoadingFlag(FirstSearchExecutedFlag);
125
+ this.initRelevanceInspector();
126
+ this.addEventListener('atomic/initializeComponent', this.handleInitialization);
127
+ this.addEventListener('atomic/scrollToTop', this.scrollToTop);
128
+ this.addEventListener('atomic/relevanceInspector/close', this.closeRelevanceInspector);
129
+ }
130
+ willUpdate(changedProperties) {
131
+ super.willUpdate(changedProperties);
132
+ if (changedProperties.has('fieldsToInclude')) {
133
+ this.initFieldsToInclude();
134
+ }
135
+ }
136
+ disconnectedCallback() {
137
+ super.disconnectedCallback();
138
+ if (typeof this.unsubscribeUrlManager === 'function') {
139
+ this.unsubscribeUrlManager();
140
+ }
141
+ if (typeof this.unsubscribeSearchStatus === 'function') {
142
+ this.unsubscribeSearchStatus();
143
+ }
144
+ window.removeEventListener('hashchange', this.onHashChange);
145
+ this.removeEventListener('atomic/initializeComponent', this.handleInitialization);
146
+ this.removeEventListener('atomic/scrollToTop', this.scrollToTop);
147
+ this.removeEventListener('atomic/relevanceInspector/close', this.closeRelevanceInspector);
148
+ this.removeEventListener('dblclick', this.handleRelevanceInspectorDoubleClick);
149
+ }
150
+ // TODO - (v4) KIT-4991: Make private.
151
+ scrollToTop() {
152
+ const scrollContainerElement = document.querySelector(this.scrollContainer);
153
+ if (!scrollContainerElement) {
154
+ this.bindings.engine.logger.warn(`Could not find the scroll container with the selector "${this.scrollContainer}". This will prevent UX interactions that require a scroll from working correctly. Please review the CSS selector in the scrollContainer option`);
155
+ return;
156
+ }
157
+ scrollContainerElement.scrollIntoView({ behavior: 'smooth' });
158
+ }
159
+ closeRelevanceInspector() {
160
+ this.relevanceInspectorIsOpen = false;
161
+ }
162
+ /**
163
+ * Initializes the connection with the headless search engine using options for `accessToken` (required), `organizationId` (required), `environment` (defaults to `prod`), and `renewAccessToken`.
164
+ */
165
+ initialize(options) {
166
+ return this.internalInitialization(() => this.initEngine(options));
167
+ }
168
+ /**
169
+ * Initializes the interface using the provided [headless search engine](https://docs.coveo.com/en/headless/latest/reference/modules/Search.html, as opposed to the `initialize` method which internally builds a search engine instance.
170
+ * This bypasses the properties set on the component, such as analytics, searchHub, pipeline, language, timezone & logLevel.
171
+ */
172
+ initializeWithSearchEngine(engine) {
173
+ if (this.pipeline && this.pipeline !== engine.state.pipeline) {
174
+ console.warn('Mismatch between search interface pipeline and engine pipeline. The engine pipeline will be used.');
175
+ }
176
+ if (this.searchHub && this.searchHub !== engine.state.searchHub) {
177
+ console.warn('Mismatch between search interface search hub and engine search hub. The engine search hub will be used.');
178
+ }
179
+ return this.internalInitialization(() => {
180
+ this.engine = engine;
181
+ });
182
+ }
183
+ /**
184
+ *
185
+ * Executes the first search and logs the interface load event to analytics, after initializing connection to the headless search engine.
186
+ */
187
+ async executeFirstSearch() {
188
+ if (!this.interfaceController.engineIsCreated(this.engine)) {
189
+ return;
190
+ }
191
+ if (!this.initialized) {
192
+ console.error('You have to wait until the "initialize" promise is fulfilled before executing a search.', this);
193
+ return;
194
+ }
195
+ const safeStorage = new SafeStorage();
196
+ const standaloneSearchBoxData = safeStorage.getParsedJSON(StorageItems.STANDALONE_SEARCH_BOX_DATA, null);
197
+ if (!standaloneSearchBoxData) {
198
+ this.engine.executeFirstSearch();
199
+ return;
200
+ }
201
+ safeStorage.removeItem(StorageItems.STANDALONE_SEARCH_BOX_DATA);
202
+ const { updateQuery } = loadQueryActions(this.engine);
203
+ const { value, enableQuerySyntax, analytics } = standaloneSearchBoxData;
204
+ this.engine.dispatch(updateQuery({ q: value, enableQuerySyntax }));
205
+ this.engine.executeFirstSearchAfterStandaloneSearchBoxRedirect(analytics);
206
+ }
207
+ updateSearchConfiguration(updatedProp, newValue) {
208
+ if (!this.interfaceController.engineIsCreated(this.engine)) {
209
+ return;
210
+ }
211
+ if (this.engine.state[updatedProp] === newValue) {
212
+ return;
213
+ }
214
+ const { updateSearchConfiguration } = loadSearchConfigurationActions(this.engine);
215
+ this.engine.dispatch(updateSearchConfiguration({
216
+ [updatedProp]: newValue,
217
+ }));
218
+ }
219
+ updateSearchHub() {
220
+ this.updateSearchConfiguration('searchHub', this.searchHub ?? 'default');
221
+ }
222
+ updatePipeline() {
223
+ this.updateSearchConfiguration('pipeline', this.pipeline);
224
+ }
225
+ toggleAnalytics() {
226
+ this.interfaceController.onAnalyticsChange();
227
+ }
228
+ updateLanguage() {
229
+ if (!this.interfaceController.engineIsCreated(this.engine) ||
230
+ !this.language) {
231
+ return;
232
+ }
233
+ const { updateSearchConfiguration } = loadSearchConfigurationActions(this.engine);
234
+ this.engine.dispatch(updateSearchConfiguration({
235
+ locale: this.language,
236
+ }));
237
+ return this.interfaceController.onLanguageChange();
238
+ }
239
+ updateIconAssetsPath() {
240
+ this.store.state.iconAssetsPath = this.iconAssetsPath;
241
+ }
242
+ getBindings() {
243
+ return {
244
+ engine: this.engine,
245
+ i18n: this.i18n,
246
+ store: this.store,
247
+ interfaceElement: this,
248
+ createStyleElement: () => {
249
+ const styleTag = document.createElement('style');
250
+ return styleTag;
251
+ },
252
+ // TODO - KIT-4893: Remove once atomic-quickview-modal migration is complete.
253
+ createScriptElement: () => {
254
+ const scriptTag = document.createElement('script');
255
+ return scriptTag;
256
+ },
257
+ };
258
+ }
259
+ initFieldsToInclude() {
260
+ const fields = EcommerceDefaultFieldsToInclude.concat(this.fieldsToInclude);
261
+ this.store.addFieldsToInclude(fields);
262
+ }
263
+ registerFieldsToInclude() {
264
+ this.engine?.dispatch(loadFieldActions(this.engine).registerFieldsToInclude(this.store.state.fieldsToInclude));
265
+ }
266
+ initEngine(options) {
267
+ const searchConfig = this.getSearchConfiguration(options);
268
+ const analyticsConfig = getAnalyticsConfig(options, this.analytics, this.store);
269
+ try {
270
+ this.engine = buildSearchEngine({
271
+ configuration: {
272
+ ...options,
273
+ search: searchConfig,
274
+ analytics: analyticsConfig,
275
+ },
276
+ loggerOptions: {
277
+ level: this.logLevel,
278
+ },
279
+ });
280
+ }
281
+ catch (error) {
282
+ this.error = error;
283
+ throw error;
284
+ }
285
+ }
286
+ getSearchConfiguration(options) {
287
+ const searchConfigFromProps = {
288
+ searchHub: this.searchHub ?? 'default',
289
+ pipeline: this.pipeline,
290
+ locale: this.language,
291
+ timezone: this.timezone,
292
+ };
293
+ if (options.search) {
294
+ return {
295
+ ...searchConfigFromProps,
296
+ ...options.search,
297
+ };
298
+ }
299
+ return searchConfigFromProps;
300
+ }
301
+ get fragment() {
302
+ return window.location.hash.slice(1);
303
+ }
304
+ initUrlManager() {
305
+ if (this.disableStateReflectionInUrl) {
306
+ return;
307
+ }
308
+ if (!this.reflectStateInUrl) {
309
+ return;
310
+ }
311
+ this.urlManager = buildUrlManager(this.engine, {
312
+ initialState: { fragment: this.fragment },
313
+ });
314
+ this.unsubscribeUrlManager = this.urlManager.subscribe(() => this.updateHash());
315
+ window.addEventListener('hashchange', this.onHashChange);
316
+ }
317
+ initRelevanceInspector() {
318
+ if (this.enableRelevanceInspector && !this.disableRelevanceInspector) {
319
+ this.addEventListener('dblclick', this.handleRelevanceInspectorDoubleClick);
320
+ }
321
+ }
322
+ initSearchStatus() {
323
+ this.searchStatus = buildSearchStatus(this.engine);
324
+ this.unsubscribeSearchStatus = this.searchStatus.subscribe(() => {
325
+ const hasNoResultsAfterInitialSearch = !this.searchStatus.state.hasResults &&
326
+ this.searchStatus.state.firstSearchExecuted &&
327
+ !this.searchStatus.state.hasError;
328
+ this.classList.toggle(noResultsSelector, hasNoResultsAfterInitialSearch);
329
+ this.classList.toggle(errorSelector, this.searchStatus.state.hasError);
330
+ this.classList.toggle(firstSearchExecutedSelector, this.searchStatus.state.firstSearchExecuted);
331
+ if (this.searchStatus.state.firstSearchExecuted &&
332
+ this.store.hasLoadingFlag(FirstSearchExecutedFlag)) {
333
+ this.store.unsetLoadingFlag(FirstSearchExecutedFlag);
334
+ }
335
+ });
336
+ }
337
+ updateHash() {
338
+ const newFragment = this.urlManager.state.fragment;
339
+ if (!this.searchStatus.state.firstSearchExecuted) {
340
+ history.replaceState(null, document.title, `#${newFragment}`);
341
+ this.bindings.engine.logger.info(`History replaceState #${newFragment}`);
342
+ return;
343
+ }
344
+ history.pushState(null, document.title, `#${newFragment}`);
345
+ this.bindings.engine.logger.info(`History pushState #${newFragment}`);
346
+ }
347
+ async internalInitialization(initEngine) {
348
+ await Promise.all([
349
+ this.interfaceController.onInitialization(initEngine),
350
+ this.i18Initialized,
351
+ ]);
352
+ this.updateLanguage();
353
+ this.bindings = this.getBindings();
354
+ markParentAsReady(this);
355
+ this.pipeline = this.engine.state.pipeline;
356
+ this.searchHub = this.engine.state.searchHub;
357
+ this.initSearchStatus();
358
+ await this.getUpdateComplete();
359
+ this.initUrlManager();
360
+ this.initialized = true;
361
+ }
362
+ render() {
363
+ return html `
364
+ ${when(this.bindings?.engine &&
365
+ this.enableRelevanceInspector &&
366
+ !this.disableRelevanceInspector, () => html `<atomic-relevance-inspector
367
+ ?open=${this.relevanceInspectorIsOpen}
368
+ .bindings=${this.bindings}
369
+ ></atomic-relevance-inspector>`)}
370
+ <slot></slot>
371
+ `;
372
+ }
373
+ };
374
+ AtomicSearchInterface.styles = [
375
+ css`:host{height:inherit;width:inherit;&>slot{height:inherit}}`,
376
+ ];
377
+ __decorate([
378
+ state(),
379
+ provide({ context: bindingsContext })
380
+ ], AtomicSearchInterface.prototype, "bindings", void 0);
381
+ __decorate([
382
+ state()
383
+ ], AtomicSearchInterface.prototype, "error", void 0);
384
+ __decorate([
385
+ state()
386
+ ], AtomicSearchInterface.prototype, "relevanceInspectorIsOpen", void 0);
387
+ __decorate([
388
+ property({
389
+ type: Array,
390
+ attribute: 'fields-to-include',
391
+ converter: {
392
+ fromAttribute: (value) => {
393
+ if (!value)
394
+ return [];
395
+ try {
396
+ const parsed = JSON.parse(value);
397
+ return Array.isArray(parsed) ? parsed : [];
398
+ }
399
+ catch {
400
+ return [];
401
+ }
402
+ },
403
+ toAttribute: (value) => JSON.stringify(value),
404
+ },
405
+ })
406
+ ], AtomicSearchInterface.prototype, "fieldsToInclude", void 0);
407
+ __decorate([
408
+ property({ type: String, reflect: true })
409
+ ], AtomicSearchInterface.prototype, "pipeline", void 0);
410
+ __decorate([
411
+ property({ type: String, attribute: 'search-hub', reflect: true })
412
+ ], AtomicSearchInterface.prototype, "searchHub", void 0);
413
+ __decorate([
414
+ property({
415
+ type: Boolean,
416
+ converter: booleanConverter,
417
+ reflect: true,
418
+ })
419
+ ], AtomicSearchInterface.prototype, "analytics", void 0);
420
+ __decorate([
421
+ property({ type: String, reflect: true })
422
+ ], AtomicSearchInterface.prototype, "timezone", void 0);
423
+ __decorate([
424
+ property({ type: String, attribute: 'log-level', reflect: true })
425
+ ], AtomicSearchInterface.prototype, "logLevel", void 0);
426
+ __decorate([
427
+ property({ type: Object, attribute: false })
428
+ ], AtomicSearchInterface.prototype, "i18n", void 0);
429
+ __decorate([
430
+ property({ type: String, reflect: true })
431
+ ], AtomicSearchInterface.prototype, "language", void 0);
432
+ __decorate([
433
+ property({ type: Object, attribute: false })
434
+ ], AtomicSearchInterface.prototype, "engine", void 0);
435
+ __decorate([
436
+ property({
437
+ type: Boolean,
438
+ attribute: 'reflect-state-in-url',
439
+ reflect: true,
440
+ converter: booleanConverter,
441
+ })
442
+ ], AtomicSearchInterface.prototype, "reflectStateInUrl", void 0);
443
+ __decorate([
444
+ property({
445
+ type: Boolean,
446
+ attribute: 'disable-state-reflection-in-url',
447
+ reflect: true,
448
+ })
449
+ ], AtomicSearchInterface.prototype, "disableStateReflectionInUrl", void 0);
450
+ __decorate([
451
+ property({ type: String, attribute: 'scroll-container', reflect: true })
452
+ ], AtomicSearchInterface.prototype, "scrollContainer", void 0);
453
+ __decorate([
454
+ property({ type: String, attribute: 'language-assets-path', reflect: true })
455
+ ], AtomicSearchInterface.prototype, "languageAssetsPath", void 0);
456
+ __decorate([
457
+ property({ type: String, attribute: 'icon-assets-path', reflect: true })
458
+ ], AtomicSearchInterface.prototype, "iconAssetsPath", void 0);
459
+ __decorate([
460
+ property({
461
+ type: Boolean,
462
+ attribute: 'enable-relevance-inspector',
463
+ reflect: true,
464
+ converter: booleanConverter,
465
+ })
466
+ ], AtomicSearchInterface.prototype, "enableRelevanceInspector", void 0);
467
+ __decorate([
468
+ property({
469
+ type: Boolean,
470
+ attribute: 'disable-relevance-inspector',
471
+ reflect: true,
472
+ })
473
+ ], AtomicSearchInterface.prototype, "disableRelevanceInspector", void 0);
474
+ __decorate([
475
+ watch('searchHub')
476
+ ], AtomicSearchInterface.prototype, "updateSearchHub", null);
477
+ __decorate([
478
+ watch('pipeline')
479
+ ], AtomicSearchInterface.prototype, "updatePipeline", null);
480
+ __decorate([
481
+ watch('analytics')
482
+ ], AtomicSearchInterface.prototype, "toggleAnalytics", null);
483
+ __decorate([
484
+ watch('language')
485
+ ], AtomicSearchInterface.prototype, "updateLanguage", null);
486
+ __decorate([
487
+ watch('iconAssetsPath')
488
+ ], AtomicSearchInterface.prototype, "updateIconAssetsPath", null);
489
+ __decorate([
490
+ errorGuard()
491
+ ], AtomicSearchInterface.prototype, "render", null);
492
+ AtomicSearchInterface = __decorate([
493
+ customElement('atomic-search-interface'),
494
+ withTailwindStyles
495
+ ], AtomicSearchInterface);
496
+ export { AtomicSearchInterface };
@@ -4,12 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { LitElement, unsafeCSS } from 'lit';
7
+ import { LitElement } from 'lit';
8
8
  import { customElement, property, state } from 'lit/decorators.js';
9
+ import { LayoutStylesController } from "../../common/layout/layout-styles-controller";
10
+ import { watch } from "../../../decorators/watch";
9
11
  import { ChildrenUpdateCompleteMixin } from "../../../mixins/children-update-complete-mixin";
10
12
  import { LightDomMixin } from "../../../mixins/light-dom";
11
- import { randomID } from "../../../utils/utils";
12
- import { DEFAULT_MOBILE_BREAKPOINT } from '../../../utils/replace-breakpoint-utils';
13
+ import { DEFAULT_MOBILE_BREAKPOINT } from "../../../utils/replace-breakpoint-utils";
13
14
  import styles from './atomic-search-layout.tw.css';
14
15
  import { buildSearchLayout } from './search-layout';
15
16
  /**
@@ -27,15 +28,22 @@ let AtomicSearchLayout = class AtomicSearchLayout extends LightDomMixin(Children
27
28
  * E.g., 800px, 65rem.
28
29
  */
29
30
  this.mobileBreakpoint = DEFAULT_MOBILE_BREAKPOINT;
30
- }
31
- async addStyles() {
32
- await this.getUpdateComplete();
33
- this.injectStyles(unsafeCSS(buildSearchLayout(this, this.mobileBreakpoint)));
31
+ this.layoutStylesController = new LayoutStylesController(this, buildSearchLayout, 'atomic-search-layout-');
34
32
  }
35
33
  connectedCallback() {
36
34
  super.connectedCallback();
37
- this.id = randomID('atomic-search-layout-');
38
- this.addStyles();
35
+ this.emitBreakpointChangeEvent();
36
+ }
37
+ emitBreakpointChangeEvent() {
38
+ this.dispatchEvent(new CustomEvent('atomic-layout-breakpoint-change', {
39
+ detail: { breakpoint: this.mobileBreakpoint },
40
+ bubbles: true,
41
+ composed: true,
42
+ }));
43
+ }
44
+ onMobileBreakpointChange() {
45
+ this.layoutStylesController.updateStyles();
46
+ this.emitBreakpointChangeEvent();
39
47
  }
40
48
  };
41
49
  AtomicSearchLayout.styles = [styles];
@@ -45,6 +53,9 @@ __decorate([
45
53
  __decorate([
46
54
  property({ type: String, reflect: true, attribute: 'mobile-breakpoint' })
47
55
  ], AtomicSearchLayout.prototype, "mobileBreakpoint", void 0);
56
+ __decorate([
57
+ watch('mobileBreakpoint')
58
+ ], AtomicSearchLayout.prototype, "onMobileBreakpointChange", null);
48
59
  AtomicSearchLayout = __decorate([
49
60
  customElement('atomic-search-layout')
50
61
  ], AtomicSearchLayout);
@@ -1,5 +1,5 @@
1
1
  // Auto-generated file
2
- export { AtomicPager } from './atomic-pager/atomic-pager.js';
3
2
  export { AtomicQuerySummary } from './atomic-query-summary/atomic-query-summary.js';
4
3
  export { AtomicResultsPerPage } from './atomic-results-per-page/atomic-results-per-page.js';
4
+ export { AtomicSearchInterface } from './atomic-search-interface/atomic-search-interface.js';
5
5
  export { AtomicSearchLayout } from './atomic-search-layout/atomic-search-layout.js';
@@ -1,7 +1,7 @@
1
1
  // Auto-generated file
2
2
  export default {
3
- 'atomic-pager': async () => await import('./atomic-pager/atomic-pager.js'),
4
3
  'atomic-query-summary': async () => await import('./atomic-query-summary/atomic-query-summary.js'),
5
4
  'atomic-results-per-page': async () => await import('./atomic-results-per-page/atomic-results-per-page.js'),
5
+ 'atomic-search-interface': async () => await import('./atomic-search-interface/atomic-search-interface.js'),
6
6
  'atomic-search-layout': async () => await import('./atomic-search-layout/atomic-search-layout.js'),
7
7
  };
@@ -2,36 +2,36 @@ function parseDependsOn(dependsOn) {
2
2
  if (Object.keys(dependsOn).length > 1) {
3
3
  throw "Depending on multiple facets isn't supported";
4
4
  }
5
- return Object.entries(dependsOn).map(([parentFacetId, expectedValue]) => {
6
- return {
7
- parentFacetId,
8
- condition: (values) => {
9
- return values.some((value) => {
10
- if (isCategoryFacetValue(value)) {
11
- const selectedValue = getSelectedCategoryFacetValueRequest(value);
12
- if (!selectedValue) {
13
- return false;
14
- }
15
- if (!expectedValue) {
16
- return true;
17
- }
18
- return selectedValue.value === expectedValue;
19
- }
20
- if (isSimpleFacetValue(value)) {
21
- if (value.state !== 'selected') {
22
- return false;
23
- }
24
- if (!expectedValue) {
25
- return true;
26
- }
27
- return value.value === expectedValue;
28
- }
29
- return false;
30
- });
31
- },
32
- };
5
+ const entries = Object.entries(dependsOn);
6
+ return entries.map(([parentFacetId, expectedValue]) => ({
7
+ parentFacetId,
8
+ condition: buildDependsOnCondition(expectedValue),
9
+ }));
10
+ }
11
+ function buildDependsOnCondition(expectedValue) {
12
+ return (values) => values.some((value) => {
13
+ if (isCategoryFacetValue(value)) {
14
+ return matchesCategoryFacetValue(value, expectedValue);
15
+ }
16
+ if (isSimpleFacetValue(value)) {
17
+ return matchesSimpleFacetValue(value, expectedValue);
18
+ }
19
+ return false;
33
20
  });
34
21
  }
22
+ function matchesCategoryFacetValue(value, expectedValue) {
23
+ const selectedValue = getSelectedCategoryFacetValueRequest(value);
24
+ if (!selectedValue) {
25
+ return false;
26
+ }
27
+ return !expectedValue || selectedValue.value === expectedValue;
28
+ }
29
+ function matchesSimpleFacetValue(value, expectedValue) {
30
+ if (value.state !== 'selected') {
31
+ return false;
32
+ }
33
+ return !expectedValue || value.value === expectedValue;
34
+ }
35
35
  function isCategoryFacetValue(request) {
36
36
  const requestAsRecord = request;
37
37
  return ((requestAsRecord?.children &&
@@ -1 +1 @@
1
- {"file":"depends-on.js","mappings":"SAcgB,cAAc,CAE5B,SAAiC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,MAAM,8CAA8C,CAAC;KACtD;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC;QAClE,OAAO;YACL,aAAa;YACb,SAAS,EAAE,CAAC,MAAM;gBAChB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;oBACvB,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;wBAC/B,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;wBAClE,IAAI,CAAC,aAAa,EAAE;4BAClB,OAAO,KAAK,CAAC;yBACd;wBACD,IAAI,CAAC,aAAa,EAAE;4BAClB,OAAO,IAAI,CAAC;yBACb;wBACD,OAAO,aAAa,CAAC,KAAK,KAAK,aAAa,CAAC;qBAC9C;oBACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;wBAC7B,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;4BAC9B,OAAO,KAAK,CAAC;yBACd;wBACD,IAAI,CAAC,aAAa,EAAE;4BAClB,OAAO,IAAI,CAAC;yBACb;wBACD,OAAO,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC;qBACtC;oBACD,OAAO,KAAK,CAAC;iBACd,CAAC,CAAC;aACJ;SACF,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,MAAM,eAAe,GAAG,OAAkC,CAAC;IAC3D,QACE,CAAC,eAAe,EAAE,QAAQ;QACxB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvC,eAAe,EAAE,KAAK;QACtB,OAAO,eAAe,CAAC,KAAK,KAAK,QAAQ,MAAM,IAAI,EACrD;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAAc;IAEd,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClC,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,OAAO,aAAa,CAAC;SACtB;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,QACE,OAAO,IAAI,QAAQ;QACnB,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAClC,EAAE,UAAU,IAAI,QAAQ,CAAC,EACzB;AACJ;;;;","names":[],"sources":["src/components/common/facets/depends-on.ts"],"sourcesContent":["type GenericCondition<AnyFacetValueRequest> = {\n parentFacetId: string;\n condition(parentValues: AnyFacetValueRequest[]): boolean;\n};\n\ninterface SimpleFacetValue {\n value: string;\n state: string;\n}\n\ninterface CategoryFacetValue extends SimpleFacetValue {\n children: SimpleFacetValue[];\n}\n\nexport function parseDependsOn<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(dependsOn: Record<string, string>): GenericCondition<FacetValue>[] {\n if (Object.keys(dependsOn).length > 1) {\n throw \"Depending on multiple facets isn't supported\";\n }\n\n return Object.entries(dependsOn).map(([parentFacetId, expectedValue]) => {\n return {\n parentFacetId,\n condition: (values) => {\n return values.some((value) => {\n if (isCategoryFacetValue(value)) {\n const selectedValue = getSelectedCategoryFacetValueRequest(value);\n if (!selectedValue) {\n return false;\n }\n if (!expectedValue) {\n return true;\n }\n return selectedValue.value === expectedValue;\n }\n if (isSimpleFacetValue(value)) {\n if (value.state !== 'selected') {\n return false;\n }\n if (!expectedValue) {\n return true;\n }\n return value.value === expectedValue;\n }\n return false;\n });\n },\n };\n });\n}\n\nfunction isCategoryFacetValue(request: unknown): request is CategoryFacetValue {\n const requestAsRecord = request as Record<string, unknown>;\n return (\n (requestAsRecord?.children &&\n Array.isArray(requestAsRecord.children) &&\n requestAsRecord?.state &&\n typeof requestAsRecord.state === 'string') === true\n );\n}\n\nfunction getSelectedCategoryFacetValueRequest(\n value: unknown\n): CategoryFacetValue | null {\n if (!isCategoryFacetValue(value)) {\n return null;\n }\n if (value.state === 'selected') {\n return value;\n }\n for (const child of value.children) {\n const selectedValue = getSelectedCategoryFacetValueRequest(child);\n if (selectedValue !== null) {\n return selectedValue;\n }\n }\n return null;\n}\n\nfunction isSimpleFacetValue(value: unknown): value is SimpleFacetValue {\n const asRecord = value as Record<string, unknown>;\n return (\n 'value' in asRecord &&\n typeof asRecord.value === 'string' &&\n !('children' in asRecord)\n );\n}\n"],"version":3}
1
+ {"file":"depends-on.js","mappings":"SAcgB,cAAc,CAE5B,SAAiC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,MAAM,8CAA8C,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM;QACtD,aAAa;QACb,SAAS,EAAE,uBAAuB,CAAa,aAAa,CAAC;KAC9D,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAE9B,aAAqB;IACrB,OAAO,CAAC,MAAoB,KAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;QAChB,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,yBAAyB,CAC9B,KAA2B,EAC3B,aAAa,CACd,CAAC;SACH;QACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,uBAAuB,CAC5B,KAAyB,EACzB,aAAa,CACd,CAAC;SACH;QACD,OAAO,KAAK,CAAC;KACd,CAAC,CAAC;AACP,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAiB,EACjB,aAAqB;IAErB,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,aAAa,CAAC;AACjE,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAuB,EACvB,aAAqB;IAErB,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,MAAM,eAAe,GAAG,OAAkC,CAAC;IAC3D,QACE,CAAC,eAAe,EAAE,QAAQ;QACxB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvC,eAAe,EAAE,KAAK;QACtB,OAAO,eAAe,CAAC,KAAK,KAAK,QAAQ,MAAM,IAAI,EACrD;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAAc;IAEd,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClC,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,OAAO,aAAa,CAAC;SACtB;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,QACE,OAAO,IAAI,QAAQ;QACnB,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAClC,EAAE,UAAU,IAAI,QAAQ,CAAC,EACzB;AACJ;;;;","names":[],"sources":["src/components/common/facets/depends-on.ts"],"sourcesContent":["type GenericCondition<AnyFacetValueRequest> = {\n parentFacetId: string;\n condition(parentValues: AnyFacetValueRequest[]): boolean;\n};\n\ninterface SimpleFacetValue {\n value: string;\n state: string;\n}\n\ninterface CategoryFacetValue extends SimpleFacetValue {\n children: SimpleFacetValue[];\n}\n\nexport function parseDependsOn<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(dependsOn: Record<string, string>): GenericCondition<FacetValue>[] {\n if (Object.keys(dependsOn).length > 1) {\n throw \"Depending on multiple facets isn't supported\";\n }\n\n const entries = Object.entries(dependsOn);\n return entries.map(([parentFacetId, expectedValue]) => ({\n parentFacetId,\n condition: buildDependsOnCondition<FacetValue>(expectedValue),\n }));\n}\n\nfunction buildDependsOnCondition<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(expectedValue: string): (values: FacetValue[]) => boolean {\n return (values: FacetValue[]) =>\n values.some((value) => {\n if (isCategoryFacetValue(value)) {\n return matchesCategoryFacetValue(\n value as CategoryFacetValue,\n expectedValue\n );\n }\n if (isSimpleFacetValue(value)) {\n return matchesSimpleFacetValue(\n value as SimpleFacetValue,\n expectedValue\n );\n }\n return false;\n });\n}\n\nfunction matchesCategoryFacetValue<FacetValue extends CategoryFacetValue>(\n value: FacetValue,\n expectedValue: string\n): boolean {\n const selectedValue = getSelectedCategoryFacetValueRequest(value);\n if (!selectedValue) {\n return false;\n }\n return !expectedValue || selectedValue.value === expectedValue;\n}\n\nfunction matchesSimpleFacetValue(\n value: SimpleFacetValue,\n expectedValue: string\n): boolean {\n if (value.state !== 'selected') {\n return false;\n }\n return !expectedValue || value.value === expectedValue;\n}\n\nfunction isCategoryFacetValue(request: unknown): request is CategoryFacetValue {\n const requestAsRecord = request as Record<string, unknown>;\n return (\n (requestAsRecord?.children &&\n Array.isArray(requestAsRecord.children) &&\n requestAsRecord?.state &&\n typeof requestAsRecord.state === 'string') === true\n );\n}\n\nfunction getSelectedCategoryFacetValueRequest(\n value: unknown\n): CategoryFacetValue | null {\n if (!isCategoryFacetValue(value)) {\n return null;\n }\n if (value.state === 'selected') {\n return value;\n }\n for (const child of value.children) {\n const selectedValue = getSelectedCategoryFacetValueRequest(child);\n if (selectedValue !== null) {\n return selectedValue;\n }\n }\n return null;\n}\n\nfunction isSimpleFacetValue(value: unknown): value is SimpleFacetValue {\n const asRecord = value as Record<string, unknown>;\n return (\n 'value' in asRecord &&\n typeof asRecord.value === 'string' &&\n !('children' in asRecord)\n );\n}\n"],"version":3}