@coveo/atomic 3.34.0-pre.9353d3e7c7 → 3.34.0-pre.96ab0b80d1

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 (243) 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/components/_index.d.ts +0 -2
  4. package/dist/atomic/components/_index.js +0 -1
  5. package/dist/atomic/components/analytics-config.js +1 -1
  6. package/dist/atomic/components/atomic-insight-history-toggle.js +2 -2
  7. package/dist/atomic/components/atomic-insight-history-toggle.js.map +1 -1
  8. package/dist/atomic/components/atomic-insight-user-actions-toggle.js +2 -2
  9. package/dist/atomic/components/atomic-insight-user-actions-toggle.js.map +1 -1
  10. package/dist/{esm/sections-ae00b53a.js → atomic/components/atomic-layout-section-utils.js} +1 -1
  11. package/dist/atomic/components/atomic-layout-section-utils.js.map +1 -0
  12. package/dist/atomic/components/atomic-refine-modal2.js +2 -2
  13. package/dist/atomic/components/atomic-refine-modal2.js.map +1 -1
  14. package/dist/atomic/components/atomic-search-box.js +2 -8
  15. package/dist/atomic/components/atomic-search-box.js.map +1 -1
  16. package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
  17. package/dist/atomic/components/atomic-tab-manager.js +1 -1
  18. package/dist/atomic/components/clock.js +2 -2
  19. package/dist/atomic/components/components/commerce/atomic-product/atomic-product.js +58 -26
  20. package/dist/atomic/components/components/common/atomic-layout-section/layout.js +1 -1
  21. package/dist/atomic/components/components/common/layout/display-options.js +1 -1
  22. package/dist/atomic/components/components/common/layout/{sections.js → item-layout-sections.js} +1 -1
  23. package/dist/atomic/components/components/common/product-template/product-template-common.js +1 -1
  24. package/dist/atomic/components/components/insight/atomic-insight-layout/insight-layout.js +1 -1
  25. package/dist/atomic/components/components/search/atomic-search-box-recent-queries/atomic-search-box-recent-queries.js +137 -0
  26. package/dist/atomic/components/components/search/index.js +1 -0
  27. package/dist/atomic/components/components/search/lazy-index.js +1 -0
  28. package/dist/atomic/components/display-options.js +1 -1
  29. package/dist/atomic/components/display-options.js.map +1 -1
  30. package/dist/atomic/components/global/environment.js +1 -1
  31. package/dist/atomic/components/index.js.map +1 -1
  32. package/dist/atomic/components/insight-layout.js +1 -1
  33. package/dist/atomic/components/insight-layout.js.map +1 -1
  34. package/dist/atomic/components/{sections2.js → item-layout-sections.js} +1 -1
  35. package/dist/atomic/components/item-layout-sections.js.map +1 -0
  36. package/dist/atomic/components/result-template-common.js +1 -1
  37. package/dist/atomic/components/result-template-common.js.map +1 -1
  38. package/dist/atomic/{p-2caa1859.js → p-0e62bdd6.js} +2 -2
  39. package/dist/atomic/p-0e62bdd6.js.map +1 -0
  40. package/dist/atomic/{p-5f706e3d.entry.js → p-170c7da6.entry.js} +2 -2
  41. package/dist/atomic/{p-3857d6a3.entry.js → p-1bbaf206.entry.js} +2 -2
  42. package/dist/atomic/{p-4723ffa5.entry.js → p-20b33c18.entry.js} +2 -2
  43. package/dist/atomic/{p-7709fba4.js → p-2250f505.js} +2 -2
  44. package/dist/atomic/p-2250f505.js.map +1 -0
  45. package/dist/atomic/{p-bd3542d2.entry.js → p-36112c34.entry.js} +2 -2
  46. package/dist/atomic/p-36112c34.entry.js.map +1 -0
  47. package/dist/atomic/{p-d6e04719.entry.js → p-373448df.entry.js} +2 -2
  48. package/dist/atomic/{p-8bf425b0.entry.js → p-40c1dfcb.entry.js} +2 -2
  49. package/dist/atomic/{p-d82b85ab.entry.js → p-52d5461a.entry.js} +2 -2
  50. package/dist/atomic/{p-03615066.js → p-57e55bf7.js} +2 -2
  51. package/dist/atomic/{p-406a288c.entry.js → p-6078667f.entry.js} +2 -2
  52. package/dist/atomic/p-62e85c20.entry.js +2 -0
  53. package/dist/atomic/p-6f1bffa2.entry.js +2 -0
  54. package/dist/atomic/p-6f1bffa2.entry.js.map +1 -0
  55. package/dist/atomic/{p-93da1f4e.entry.js → p-6f34dd3a.entry.js} +2 -2
  56. package/dist/atomic/{p-0c0b8d41.entry.js → p-768b172e.entry.js} +2 -2
  57. package/dist/atomic/{p-e72b8d70.entry.js → p-7e0d63ad.entry.js} +2 -2
  58. package/dist/atomic/{p-a4d277c7.entry.js → p-7fd5b6ac.entry.js} +2 -2
  59. package/dist/atomic/{p-6289adc7.entry.js → p-9239be63.entry.js} +2 -2
  60. package/dist/atomic/{p-f71b14b2.entry.js → p-9260dd7d.entry.js} +2 -2
  61. package/dist/atomic/{p-ed8e5c4d.entry.js → p-98dd6df1.entry.js} +2 -2
  62. package/dist/atomic/{p-2c938403.entry.js → p-98ff1324.entry.js} +2 -2
  63. package/dist/atomic/{p-736f4d7e.entry.js → p-9a6ec803.entry.js} +2 -2
  64. package/dist/atomic/{p-0b5efb51.entry.js → p-a1e5f767.entry.js} +2 -2
  65. package/dist/atomic/{p-1db20a4a.entry.js → p-a5f66ecd.entry.js} +2 -2
  66. package/dist/atomic/{p-65dd9017.entry.js → p-af1b4924.entry.js} +2 -2
  67. package/dist/atomic/{p-577d34ba.entry.js → p-c4fb6426.entry.js} +2 -2
  68. package/dist/atomic/{p-9c7dbbdf.js → p-cc2b2231.js} +1 -1
  69. package/dist/atomic/p-cc2b2231.js.map +1 -0
  70. package/dist/atomic/{p-9faad55b.entry.js → p-dc128135.entry.js} +2 -2
  71. package/dist/atomic/{p-97748161.js → p-dc28ee14.js} +1 -1
  72. package/dist/{esm/sections-d787040b.js.map → atomic/p-dc28ee14.js.map} +1 -1
  73. package/dist/atomic/{p-c280cd05.js → p-e1cc5150.js} +1 -1
  74. package/dist/atomic/{p-27b8404c.js → p-e62fc40e.js} +2 -2
  75. package/dist/atomic/p-e62fc40e.js.map +1 -0
  76. package/dist/atomic/{p-d1795580.entry.js → p-e7a25b00.entry.js} +2 -2
  77. package/dist/cjs/_loader.cjs.js +1 -1
  78. package/dist/cjs/{analytics-config-e1eb424e.js → analytics-config-5c0182f7.js} +2 -2
  79. package/dist/cjs/{analytics-config-e1eb424e.js.map → analytics-config-5c0182f7.js.map} +1 -1
  80. package/dist/cjs/atomic-field-condition.cjs.entry.js +2 -2
  81. package/dist/cjs/atomic-folded-result-list.cjs.entry.js +2 -2
  82. package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +2 -2
  83. package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js +2 -2
  84. package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js.map +1 -1
  85. package/dist/cjs/atomic-insight-interface.cjs.entry.js +3 -3
  86. package/dist/cjs/atomic-insight-layout.cjs.entry.js +2 -2
  87. package/dist/cjs/atomic-insight-result-children-template.cjs.entry.js +2 -2
  88. package/dist/cjs/atomic-insight-result-list.cjs.entry.js +2 -2
  89. package/dist/cjs/atomic-insight-result-template.cjs.entry.js +2 -2
  90. package/dist/cjs/atomic-insight-result.cjs.entry.js +2 -2
  91. package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +2 -2
  92. package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js.map +1 -1
  93. package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +2 -2
  94. package/dist/cjs/{sections-4b4af2f8.js → atomic-layout-section-utils-08b4fbcd.js} +1 -1
  95. package/dist/cjs/atomic-layout-section-utils-08b4fbcd.js.map +1 -0
  96. package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
  97. package/dist/cjs/atomic-recs-list.cjs.entry.js +2 -2
  98. package/dist/cjs/atomic-recs-result-template.cjs.entry.js +2 -2
  99. package/dist/cjs/atomic-recs-result.cjs.entry.js +2 -2
  100. package/dist/cjs/atomic-refine-modal.cjs.entry.js +4 -4
  101. package/dist/cjs/atomic-refine-modal.cjs.entry.js.map +1 -1
  102. package/dist/cjs/atomic-result-children-template.cjs.entry.js +2 -2
  103. package/dist/cjs/atomic-result-list.cjs.entry.js +2 -2
  104. package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +2 -2
  105. package/dist/cjs/atomic-result-template.cjs.entry.js +2 -2
  106. package/dist/cjs/atomic-result.cjs.entry.js +2 -2
  107. package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js +76 -0
  108. package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js.map +1 -0
  109. package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
  110. package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
  111. package/dist/cjs/atomic.cjs.js +1 -1
  112. package/dist/cjs/clock-7aeb19d0.js +7 -0
  113. package/dist/cjs/clock-7aeb19d0.js.map +1 -0
  114. package/dist/cjs/{display-options-14f05862.js → display-options-69531e8d.js} +4 -4
  115. package/dist/cjs/display-options-69531e8d.js.map +1 -0
  116. package/dist/cjs/index-757bc886.js +2 -2
  117. package/dist/cjs/{insight-layout-355a94dd.js → insight-layout-b6ff92fd.js} +11 -11
  118. package/dist/cjs/insight-layout-b6ff92fd.js.map +1 -0
  119. package/dist/cjs/{sections-fbb93b53.js → item-layout-sections-b09ba4b3.js} +1 -1
  120. package/dist/cjs/item-layout-sections-b09ba4b3.js.map +1 -0
  121. package/dist/cjs/{result-template-common-88359dad.js → result-template-common-84bd4057.js} +3 -3
  122. package/dist/cjs/result-template-common-84bd4057.js.map +1 -0
  123. package/dist/cjs/version.cjs.js +1 -1
  124. package/dist/esm/_loader.js +1 -1
  125. package/dist/esm/{analytics-config-9ca0b7a9.js → analytics-config-131cb4db.js} +2 -2
  126. package/dist/esm/{analytics-config-9ca0b7a9.js.map → analytics-config-131cb4db.js.map} +1 -1
  127. package/dist/esm/atomic-field-condition.entry.js +2 -2
  128. package/dist/esm/atomic-folded-result-list.entry.js +2 -2
  129. package/dist/esm/atomic-insight-folded-result-list.entry.js +2 -2
  130. package/dist/esm/atomic-insight-history-toggle.entry.js +2 -2
  131. package/dist/esm/atomic-insight-history-toggle.entry.js.map +1 -1
  132. package/dist/esm/atomic-insight-interface.entry.js +3 -3
  133. package/dist/esm/atomic-insight-layout.entry.js +2 -2
  134. package/dist/esm/atomic-insight-result-children-template.entry.js +2 -2
  135. package/dist/esm/atomic-insight-result-list.entry.js +2 -2
  136. package/dist/esm/atomic-insight-result-template.entry.js +2 -2
  137. package/dist/esm/atomic-insight-result.entry.js +2 -2
  138. package/dist/esm/atomic-insight-user-actions-toggle.entry.js +2 -2
  139. package/dist/esm/atomic-insight-user-actions-toggle.entry.js.map +1 -1
  140. package/dist/esm/atomic-ipx-recs-list.entry.js +2 -2
  141. package/dist/{atomic/components/sections.js → esm/atomic-layout-section-utils-c8ca7445.js} +1 -1
  142. package/dist/esm/atomic-layout-section-utils-c8ca7445.js.map +1 -0
  143. package/dist/esm/atomic-recs-interface.entry.js +1 -1
  144. package/dist/esm/atomic-recs-list.entry.js +2 -2
  145. package/dist/esm/atomic-recs-result-template.entry.js +2 -2
  146. package/dist/esm/atomic-recs-result.entry.js +2 -2
  147. package/dist/esm/atomic-refine-modal.entry.js +2 -2
  148. package/dist/esm/atomic-refine-modal.entry.js.map +1 -1
  149. package/dist/esm/atomic-result-children-template.entry.js +2 -2
  150. package/dist/esm/atomic-result-list.entry.js +2 -2
  151. package/dist/esm/atomic-result-placeholder_8.entry.js +2 -2
  152. package/dist/esm/atomic-result-template.entry.js +2 -2
  153. package/dist/esm/atomic-result.entry.js +2 -2
  154. package/dist/esm/atomic-search-box-query-suggestions.entry.js +72 -0
  155. package/dist/esm/atomic-search-box-query-suggestions.entry.js.map +1 -0
  156. package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
  157. package/dist/esm/atomic-tab-manager.entry.js +1 -1
  158. package/dist/esm/atomic.js +1 -1
  159. package/dist/esm/clock-b1f5d7f7.js +5 -0
  160. package/dist/esm/clock-b1f5d7f7.js.map +1 -0
  161. package/dist/esm/{display-options-c16840c6.js → display-options-1199eed5.js} +2 -2
  162. package/dist/esm/display-options-1199eed5.js.map +1 -0
  163. package/dist/esm/index-3f35faca.js +2 -2
  164. package/dist/esm/{insight-layout-776b87f2.js → insight-layout-a1e4b795.js} +2 -2
  165. package/dist/esm/insight-layout-a1e4b795.js.map +1 -0
  166. package/dist/esm/{sections-d787040b.js → item-layout-sections-8afb5049.js} +1 -1
  167. package/dist/esm/item-layout-sections-8afb5049.js.map +1 -0
  168. package/dist/esm/{result-template-common-ac9fecab.js → result-template-common-995b94f8.js} +2 -2
  169. package/dist/esm/result-template-common-995b94f8.js.map +1 -0
  170. package/dist/esm/version.js +1 -1
  171. package/dist/types/components/commerce/atomic-product/atomic-product.d.ts +16 -5
  172. package/dist/types/components/common/atomic-layout-section/atomic-layout-section.d.ts +1 -1
  173. package/dist/types/components/search/atomic-search-box-recent-queries/atomic-search-box-recent-queries.d.ts +45 -0
  174. package/dist/types/components/search/index.d.ts +1 -0
  175. package/dist/types/components.d.ts +0 -49
  176. package/docs/atomic-docs.json +1 -98
  177. package/package.json +1 -1
  178. package/dist/atomic/components/atomic-search-box-recent-queries.d.ts +0 -11
  179. package/dist/atomic/components/atomic-search-box-recent-queries.js +0 -8
  180. package/dist/atomic/components/atomic-search-box-recent-queries.js.map +0 -1
  181. package/dist/atomic/components/atomic-search-box-recent-queries2.js +0 -183
  182. package/dist/atomic/components/atomic-search-box-recent-queries2.js.map +0 -1
  183. package/dist/atomic/components/components/common/layout/custom-render-controller.js +0 -50
  184. package/dist/atomic/components/components/common/layout/item-layout-controller.js +0 -103
  185. package/dist/atomic/components/sections.js.map +0 -1
  186. package/dist/atomic/components/sections2.js.map +0 -1
  187. package/dist/atomic/p-250f34d4.entry.js +0 -2
  188. package/dist/atomic/p-27b8404c.js.map +0 -1
  189. package/dist/atomic/p-2caa1859.js.map +0 -1
  190. package/dist/atomic/p-7709fba4.js.map +0 -1
  191. package/dist/atomic/p-97748161.js.map +0 -1
  192. package/dist/atomic/p-9c7dbbdf.js.map +0 -1
  193. package/dist/atomic/p-bd3542d2.entry.js.map +0 -1
  194. package/dist/atomic/p-ea1b81fa.entry.js +0 -2
  195. package/dist/atomic/p-ea1b81fa.entry.js.map +0 -1
  196. package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +0 -234
  197. package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js.map +0 -1
  198. package/dist/cjs/clock-f03ff827.js +0 -7
  199. package/dist/cjs/clock-f03ff827.js.map +0 -1
  200. package/dist/cjs/display-options-14f05862.js.map +0 -1
  201. package/dist/cjs/insight-layout-355a94dd.js.map +0 -1
  202. package/dist/cjs/result-template-common-88359dad.js.map +0 -1
  203. package/dist/cjs/sections-4b4af2f8.js.map +0 -1
  204. package/dist/cjs/sections-fbb93b53.js.map +0 -1
  205. package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +0 -229
  206. package/dist/esm/atomic-search-box-query-suggestions_2.entry.js.map +0 -1
  207. package/dist/esm/clock-add3e9a5.js +0 -5
  208. package/dist/esm/clock-add3e9a5.js.map +0 -1
  209. package/dist/esm/display-options-c16840c6.js.map +0 -1
  210. package/dist/esm/insight-layout-776b87f2.js.map +0 -1
  211. package/dist/esm/result-template-common-ac9fecab.js.map +0 -1
  212. package/dist/esm/sections-ae00b53a.js.map +0 -1
  213. package/dist/types/components/common/layout/custom-render-controller.d.ts +0 -30
  214. package/dist/types/components/common/layout/item-layout-controller.d.ts +0 -47
  215. package/dist/types/components/search/search-box-suggestions/atomic-search-box-recent-queries/atomic-search-box-recent-queries.d.ts +0 -37
  216. /package/dist/atomic/components/components/common/atomic-layout-section/{sections.js → atomic-layout-section-utils.js} +0 -0
  217. /package/dist/atomic/{p-5f706e3d.entry.js.map → p-170c7da6.entry.js.map} +0 -0
  218. /package/dist/atomic/{p-3857d6a3.entry.js.map → p-1bbaf206.entry.js.map} +0 -0
  219. /package/dist/atomic/{p-4723ffa5.entry.js.map → p-20b33c18.entry.js.map} +0 -0
  220. /package/dist/atomic/{p-d6e04719.entry.js.map → p-373448df.entry.js.map} +0 -0
  221. /package/dist/atomic/{p-8bf425b0.entry.js.map → p-40c1dfcb.entry.js.map} +0 -0
  222. /package/dist/atomic/{p-d82b85ab.entry.js.map → p-52d5461a.entry.js.map} +0 -0
  223. /package/dist/atomic/{p-03615066.js.map → p-57e55bf7.js.map} +0 -0
  224. /package/dist/atomic/{p-406a288c.entry.js.map → p-6078667f.entry.js.map} +0 -0
  225. /package/dist/atomic/{p-250f34d4.entry.js.map → p-62e85c20.entry.js.map} +0 -0
  226. /package/dist/atomic/{p-93da1f4e.entry.js.map → p-6f34dd3a.entry.js.map} +0 -0
  227. /package/dist/atomic/{p-0c0b8d41.entry.js.map → p-768b172e.entry.js.map} +0 -0
  228. /package/dist/atomic/{p-e72b8d70.entry.js.map → p-7e0d63ad.entry.js.map} +0 -0
  229. /package/dist/atomic/{p-a4d277c7.entry.js.map → p-7fd5b6ac.entry.js.map} +0 -0
  230. /package/dist/atomic/{p-6289adc7.entry.js.map → p-9239be63.entry.js.map} +0 -0
  231. /package/dist/atomic/{p-f71b14b2.entry.js.map → p-9260dd7d.entry.js.map} +0 -0
  232. /package/dist/atomic/{p-ed8e5c4d.entry.js.map → p-98dd6df1.entry.js.map} +0 -0
  233. /package/dist/atomic/{p-2c938403.entry.js.map → p-98ff1324.entry.js.map} +0 -0
  234. /package/dist/atomic/{p-736f4d7e.entry.js.map → p-9a6ec803.entry.js.map} +0 -0
  235. /package/dist/atomic/{p-0b5efb51.entry.js.map → p-a1e5f767.entry.js.map} +0 -0
  236. /package/dist/atomic/{p-1db20a4a.entry.js.map → p-a5f66ecd.entry.js.map} +0 -0
  237. /package/dist/atomic/{p-65dd9017.entry.js.map → p-af1b4924.entry.js.map} +0 -0
  238. /package/dist/atomic/{p-577d34ba.entry.js.map → p-c4fb6426.entry.js.map} +0 -0
  239. /package/dist/atomic/{p-9faad55b.entry.js.map → p-dc128135.entry.js.map} +0 -0
  240. /package/dist/atomic/{p-c280cd05.js.map → p-e1cc5150.js.map} +0 -0
  241. /package/dist/atomic/{p-d1795580.entry.js.map → p-e7a25b00.entry.js.map} +0 -0
  242. /package/dist/types/components/common/atomic-layout-section/{sections.d.ts → atomic-layout-section-utils.d.ts} +0 -0
  243. /package/dist/types/components/common/layout/{sections.d.ts → item-layout-sections.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["RefineModalBody","_","children","h","part","slot","class","RefineModalFiltersSection","i18n","withAutomaticFacets","withFacets","Fragment","t","name","RefineModalFiltersClearButton","onClick","Button","style","text","RefineModalSortSection","onSelect","onChange","icon","SortIcon","atomicRefineModalCss","AtomicRefineModalStyle0","AtomicRefineModal","this","isOpen","collapseFacetsAfter","watchEnabled","host","querySelector","append","createFacetSlot","initialize","breadcrumbManager","buildBreadcrumbManager","bindings","engine","sort","buildSort","querySummary","buildQuerySummary","searchStatus","buildSearchStatus","facetManager","buildFacetManager","tabManager","buildTabManager","divSlot","document","createElement","setAttribute","addFacetColumnStyling","facets","store","getFacetElements","boundInterfaces","getBoundInterfaces","sortByDocumentPosition","facetsSection","horizontalFacetsSection","boundInterface","facetSection","findSection","push","horizontalFacetSection","triagedFacets","triageFacetsByParents","triagedFacet","values","sortedFacets","i","length","get","visibleFacets","invisibleFacets","sortFacetVisibility","getAllFacets","visibleFacetsClone","cloneFacets","invisibleFacetsClone","generator","makeAutomaticFacetGenerator","updateCollapseFacetsDependingOnFacetsVisibility","mainInterface","closest","Error","boundExternalInterfaces","Array","from","querySelectorAll","filter","atomicExternal","map","facet","classList","remove","popoverClass","isRefineModalFacet","clone","cloneNode","isCollapsed","state","automaticFacetSet","desiredCount","el","display","flexDirection","gap","options","sortOptions","select","e","composedPath","option","find","expression","value","sortBy","criteria","buildOption","label","tabs","shouldDisplayOnCurrentTab","included","excluded","tabManagerState","activeTab","selected","isSortedBy","renderSort","renderFilters","hasFacetElements","hasAutomaticFacets","set","undefined","breadcrumbManagerState","hasBreadcrumbs","deselectAll","render","RefineModal","key","onClose","title","numberOfItems","querySummaryState","total","openButton","componentDidLoad","__decorate","InitializeBindings","BindStateToController"],"sources":["src/components/common/refine-modal/stencil-body.tsx","src/components/common/refine-modal/stencil-filters.tsx","src/components/common/refine-modal/stencil-sort.tsx","src/components/search/atomic-refine-modal/atomic-refine-modal.pcss?tag=atomic-refine-modal&encapsulation=shadow","src/components/search/atomic-refine-modal/atomic-refine-modal.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\n\nexport const RefineModalBody: FunctionalComponent = (_, children) => {\n return (\n <aside\n part=\"content\"\n slot=\"body\"\n class=\"flex flex-col w-full\"\n >\n {children}\n </aside>\n );\n};\n","import {FunctionalComponent, Fragment, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {Button} from '../stencil-button';\n\ninterface RefineModalFiltersSectionProps {\n i18n: i18n;\n withFacets: boolean;\n withAutomaticFacets: boolean;\n}\nexport const RefineModalFiltersSection: FunctionalComponent<\n RefineModalFiltersSectionProps\n> = ({i18n, withAutomaticFacets, withFacets}, children) => {\n return (\n <Fragment>\n <div part=\"filter-section\" class=\"mt-8 mb-3 flex w-full justify-between\">\n <h1\n part=\"section-title section-filters-title\"\n class=\"truncate text-2xl font-bold\"\n >\n {i18n.t('filters')}\n </h1>\n {children}\n </div>\n {withFacets && <slot name=\"facets\"></slot>}\n {withAutomaticFacets && <slot name=\"automatic-facets\"></slot>}\n </Fragment>\n );\n};\n\ninterface RefineModalFiltersClearButtonProps {\n i18n: i18n;\n onClick: () => void;\n}\nexport const RefineModalFiltersClearButton: FunctionalComponent<\n RefineModalFiltersClearButtonProps\n> = ({i18n, onClick}) => {\n return (\n <Button\n onClick={onClick}\n style=\"text-primary\"\n text={i18n.t('clear')}\n class=\"px-2 py-1\"\n part=\"filter-clear-all\"\n ></Button>\n );\n};\n","import {Fragment, FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport SortIcon from '../../../images/sort.svg';\n\ninterface RefineModalSortSectionProps {\n i18n: i18n;\n onSelect: (e: Event) => void;\n}\nexport const RefineModalSortSection: FunctionalComponent<\n RefineModalSortSectionProps\n> = ({i18n, onSelect}, children) => {\n return (\n <Fragment>\n <h1\n part=\"section-title section-sort-title\"\n class=\"mb-3 truncate text-2xl font-bold\"\n >\n {i18n.t('sort')}\n </h1>\n <div part=\"select-wrapper\" class=\"relative\">\n <select\n class=\"btn-outline-neutral w-full grow cursor-pointer appearance-none rounded-lg px-6 py-5 text-lg font-bold\"\n part=\"select\"\n aria-label={i18n.t('sort-by')}\n onChange={onSelect}\n >\n {children}\n </select>\n <div\n part=\"select-icon-wrapper\"\n class=\"pointer-events-none absolute top-0 right-0 bottom-0 flex items-center justify-center pr-6\"\n >\n <atomic-icon\n part=\"select-icon\"\n icon={SortIcon}\n class=\"h-6 w-6\"\n ></atomic-icon>\n </div>\n </div>\n </Fragment>\n );\n};\n","@import '../../../global/global.pcss';\n\n/* This stylesheet can be removed once atomic-refine-modal is migrated to lit.\n\nThe remaining styles can also be removed as they have been moved to the refine-modal/sort.ts functional component*/\n\n/**\n * @prop --atomic-refine-modal-facet-margin: The spacing between the modal's facets.\n */\nselect:hover + div,\nselect:focus-visible + div {\n @apply text-primary-light;\n}\n","import {\n BreadcrumbManager,\n buildBreadcrumbManager,\n BreadcrumbManagerState,\n QuerySummary,\n QuerySummaryState,\n FacetManagerState,\n Sort,\n buildSort,\n SortState,\n buildQuerySummary,\n buildSearchStatus,\n SearchStatus,\n FacetManager,\n buildFacetManager,\n TabManager,\n TabManagerState,\n buildTabManager,\n} from '@coveo/headless';\nimport {Component, h, State, Prop, Element, Watch} from '@stencil/core';\nimport {\n AtomicInterface,\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {shouldDisplayOnCurrentTab} from '../../../utils/tab-utils';\nimport {sortByDocumentPosition} from '../../../utils/utils';\nimport {findSection} from '../../common/atomic-layout-section/sections';\nimport {popoverClass} from '../../common/facets/popover/popover-type';\nimport {\n BaseFacetElement,\n sortFacetVisibility,\n triageFacetsByParents,\n collapseFacetsAfter,\n} from '../../common/facets/stencil-facet-common';\nimport {isRefineModalFacet} from '../../common/interface/store';\nimport {RefineModalBody} from '../../common/refine-modal/stencil-body';\nimport {\n RefineModalFiltersClearButton,\n RefineModalFiltersSection,\n} from '../../common/refine-modal/stencil-filters';\nimport {RefineModal} from '../../common/refine-modal/stencil-modal';\nimport {RefineModalSortSection} from '../../common/refine-modal/stencil-sort';\nimport {Bindings} from '../atomic-search-interface/atomic-search-interface';\nimport {SortDropdownOption} from '../atomic-search-interface/store';\n\n/**\n * The `atomic-refine-modal` is automatically created as a child of the `atomic-search-interface` when the `atomic-refine-toggle` is initialized.\n *\n * When the modal is opened, the class `atomic-modal-opened` is added to the interface element and the body, allowing further customization.\n *\n * @part container - The modal's outermost container.\n * @part header-wrapper - The wrapper around the header.\n * @part header - The header of the modal, containing the title.\n * @part title - The title of the modal.\n * @part close-button - The button in the header that closes the modal.\n * @part close-icon - The icon of the close button.\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 content - The wrapper around the content inside the body of the modal.\n * @part section-title - The title for each section.\n * @part section-sort-title - The title for the sort section.\n * @part section-filters-title - The title for the filters section.\n * @part select-wrapper - The wrapper around the select element, used to position the icon.\n * @part select - The `<select>` element of the dropdown list.\n * @part select-icon-wrapper - The wrapper around the sort icon that's used to align it.\n * @part select-icon - The select dropdown's sort icon.\n * @part filter-section - The section containing facets and the \"filters\" title.\n * @part filter-clear-all - The button that resets all actively selected facet values.\n * @part footer-wrapper - The wrapper with a shadow or background color around the footer.\n * @part footer - The footer of the modal.\n * @part footer-content - The wrapper around the content inside the footer of the modal, containing the button to view results.\n * @part footer-button - The button in the footer that closes the modal.\n * @part footer-button-text - The text inside the button in the footer that closes the modal.\n * @part footer-button-count - The count inside the button in the footer that closes the modal.\n */\n@Component({\n tag: 'atomic-refine-modal',\n styleUrl: 'atomic-refine-modal.pcss',\n shadow: true,\n})\nexport class AtomicRefineModal implements InitializableComponent {\n private sort!: Sort;\n private breadcrumbManager!: BreadcrumbManager;\n public querySummary!: QuerySummary;\n public searchStatus!: SearchStatus;\n public facetManager!: FacetManager;\n @InitializeBindings() public bindings!: Bindings;\n @Element() public host!: HTMLElement;\n\n @BindStateToController('querySummary')\n @State()\n public querySummaryState!: QuerySummaryState;\n @BindStateToController('breadcrumbManager')\n @State()\n private breadcrumbManagerState!: BreadcrumbManagerState;\n @BindStateToController('facetManager')\n @State()\n public facetManagerState!: FacetManagerState;\n @State() @BindStateToController('sort') public sortState!: SortState;\n public tabManager!: TabManager;\n @BindStateToController('tabManager')\n @State()\n public tabManagerState!: TabManagerState;\n @State() public error!: Error;\n\n @Prop({mutable: true}) openButton?: HTMLElement;\n\n @Prop({reflect: true, mutable: true}) isOpen = false;\n\n /**\n * The number of expanded facets inside the refine modal.\n * Remaining facets are automatically collapsed.\n *\n * Using the value `0` collapses all facets.\n */\n @Prop({reflect: true}) public collapseFacetsAfter = 0;\n\n @Watch('isOpen')\n watchEnabled(isOpen: boolean) {\n if (isOpen) {\n if (this.host.querySelector('div[slot=\"facets\"]')) {\n return;\n }\n\n this.host.append(this.createFacetSlot());\n }\n }\n\n public initialize() {\n this.breadcrumbManager = buildBreadcrumbManager(this.bindings.engine);\n this.sort = buildSort(this.bindings.engine);\n this.querySummary = buildQuerySummary(this.bindings.engine);\n this.searchStatus = buildSearchStatus(this.bindings.engine);\n this.facetManager = buildFacetManager(this.bindings.engine);\n this.tabManager = buildTabManager(this.bindings.engine);\n this.watchEnabled(this.isOpen);\n }\n\n private createFacetSlot(): HTMLDivElement {\n const divSlot = document.createElement('div');\n divSlot.setAttribute('slot', 'facets');\n this.addFacetColumnStyling(divSlot);\n\n const facets = this.bindings.store.getFacetElements() as BaseFacetElement[];\n const boundInterfaces = this.getBoundInterfaces().sort(\n sortByDocumentPosition\n );\n const facetsSection = [];\n const horizontalFacetsSection = [];\n for (const boundInterface of boundInterfaces) {\n const facetSection = findSection(boundInterface, 'facets');\n if (facetSection) {\n facetsSection.push(facetSection);\n }\n const horizontalFacetSection = findSection(\n boundInterface,\n 'horizontal-facets'\n );\n if (horizontalFacetSection) {\n horizontalFacetsSection.push(horizontalFacetSection);\n }\n }\n const triagedFacets = triageFacetsByParents(\n facets,\n ...horizontalFacetsSection,\n ...facetsSection\n );\n for (const triagedFacet of triagedFacets.values()) {\n triagedFacet.sort(sortByDocumentPosition);\n }\n\n const sortedFacets = [];\n for (let i = 0; i < boundInterfaces.length; i++) {\n sortedFacets.push(...(triagedFacets.get(facetsSection[i]) || []));\n sortedFacets.push(\n ...(triagedFacets.get(horizontalFacetsSection[i]) || [])\n );\n }\n sortedFacets.push(...(triagedFacets.get(null) || []));\n\n const {visibleFacets, invisibleFacets} = sortFacetVisibility(\n sortedFacets,\n this.bindings.store.getAllFacets()\n );\n\n const visibleFacetsClone = this.cloneFacets(visibleFacets);\n const invisibleFacetsClone = this.cloneFacets(invisibleFacets);\n\n collapseFacetsAfter(visibleFacetsClone, this.collapseFacetsAfter);\n\n divSlot.append(...visibleFacetsClone);\n divSlot.append(...invisibleFacetsClone);\n\n const generator = this.makeAutomaticFacetGenerator();\n if (generator) {\n generator.updateCollapseFacetsDependingOnFacetsVisibility(\n this.collapseFacetsAfter,\n visibleFacets.length\n );\n divSlot.append(generator);\n }\n\n return divSlot;\n }\n\n private getBoundInterfaces(): AtomicInterface[] {\n const mainInterface: AtomicInterface | null =\n this.host.closest('atomic-search-interface') ??\n this.host.closest('atomic-external')?.boundInterface ??\n null;\n if (!mainInterface) {\n throw new Error('Cannot find bound interface');\n }\n const boundExternalInterfaces = Array.from(\n document.querySelectorAll('atomic-external')\n ).filter(\n (atomicExternal) => atomicExternal.boundInterface === mainInterface\n );\n return [...boundExternalInterfaces, mainInterface];\n }\n\n private cloneFacets(facets: BaseFacetElement[]): BaseFacetElement[] {\n return facets.map((facet, i) => {\n facet.classList.remove(popoverClass);\n facet.setAttribute(isRefineModalFacet, '');\n const clone = facet.cloneNode(true) as BaseFacetElement;\n clone.isCollapsed =\n this.collapseFacetsAfter === -1\n ? false\n : i + 1 > this.collapseFacetsAfter;\n return clone;\n });\n }\n\n private makeAutomaticFacetGenerator() {\n if (!this.bindings.engine.state.automaticFacetSet?.desiredCount) {\n return;\n }\n const generator = document.createElement(\n 'atomic-automatic-facet-generator'\n );\n\n generator.setAttribute(\n 'desired-count',\n `${this.bindings.engine.state.automaticFacetSet?.desiredCount}`\n );\n this.addFacetColumnStyling(generator);\n\n return generator;\n }\n\n private addFacetColumnStyling(el: HTMLElement) {\n el.style.display = 'flex';\n el.style.flexDirection = 'column';\n el.style.gap = 'var(--atomic-refine-modal-facet-margin, 20px)';\n }\n\n private get options() {\n return this.bindings.store.state.sortOptions;\n }\n\n private select(e: Event) {\n const select = e.composedPath()[0] as HTMLSelectElement;\n const option = this.options.find(\n (option) => option.expression === select.value\n );\n option && this.sort.sortBy(option.criteria);\n }\n\n private buildOption({expression, criteria, label, tabs}: SortDropdownOption) {\n if (\n !shouldDisplayOnCurrentTab(\n [...tabs.included],\n [...tabs.excluded],\n this.tabManagerState?.activeTab\n )\n ) {\n return;\n }\n return (\n <option value={expression} selected={this.sort.isSortedBy(criteria)}>\n {this.bindings.i18n.t(label)}\n </option>\n );\n }\n\n private renderSort() {\n if (!this.options.length) {\n return;\n }\n\n return (\n <RefineModalSortSection\n i18n={this.bindings.i18n}\n onSelect={(option) => this.select(option)}\n >\n {this.options.map((option) => this.buildOption(option))}\n </RefineModalSortSection>\n );\n }\n\n private renderFilters() {\n const hasFacetElements = this.bindings.store.getFacetElements().length > 0;\n const hasAutomaticFacets =\n this.bindings.engine.state.automaticFacetSet?.set !== undefined;\n\n if (!hasFacetElements && !hasAutomaticFacets) {\n return;\n }\n\n const {i18n} = this.bindings;\n\n return (\n <RefineModalFiltersSection\n i18n={i18n}\n withFacets={hasFacetElements}\n withAutomaticFacets={hasAutomaticFacets}\n >\n {this.breadcrumbManagerState.hasBreadcrumbs && (\n <RefineModalFiltersClearButton\n i18n={i18n}\n onClick={() => this.breadcrumbManager.deselectAll()}\n />\n )}\n </RefineModalFiltersSection>\n );\n }\n\n public render() {\n return (\n <RefineModal\n i18n={this.bindings.i18n}\n host={this.host}\n isOpen={this.isOpen}\n onClose={() => (this.isOpen = false)}\n title={this.bindings.i18n.t('sort-and-filter')}\n numberOfItems={this.querySummaryState.total}\n openButton={this.openButton}\n >\n <RefineModalBody>\n {this.renderSort()}\n {this.renderFilters()}\n </RefineModalBody>\n </RefineModal>\n );\n }\n\n public componentDidLoad() {\n this.host.style.display = '';\n }\n}\n"],"mappings":"uwBAEO,MAAMA,EAAuC,CAACC,EAAGC,IAEpDC,EAAA,SACEC,KAAK,UACLC,KAAK,OACLC,MAAM,wBAELJ,GCAA,MAAMK,EAET,EAAEC,OAAMC,sBAAqBC,cAAaR,IAE1CC,EAACQ,EAAQ,KACPR,EAAA,OAAKC,KAAK,iBAAiBE,MAAM,yCAC/BH,EAAA,MACEC,KAAK,sCACLE,MAAM,+BAELE,EAAKI,EAAE,YAETV,GAEFQ,GAAcP,EAAA,QAAMU,KAAK,WACzBJ,GAAuBN,EAAA,QAAMU,KAAK,sBASlC,MAAMC,EAET,EAAEN,OAAMO,aAERZ,EAACa,EAAM,CACLD,QAASA,EACTE,MAAM,eACNC,KAAMV,EAAKI,EAAE,SACbN,MAAM,YACNF,KAAK,qB,wfClCJ,MAAMe,EAET,EAAEX,OAAMY,YAAWlB,IAEnBC,EAACQ,EAAQ,KACPR,EAAA,MACEC,KAAK,mCACLE,MAAM,oCAELE,EAAKI,EAAE,SAEVT,EAAA,OAAKC,KAAK,iBAAiBE,MAAM,YAC/BH,EAAA,UACEG,MAAM,wGACNF,KAAK,SAAQ,aACDI,EAAKI,EAAE,WACnBS,SAAUD,GAETlB,GAEHC,EAAA,OACEC,KAAK,sBACLE,MAAM,6FAENH,EAAA,eACEC,KAAK,cACLkB,KAAMC,EACNjB,MAAM,eCnClB,MAAMkB,EAAuB,4ijEAC7B,MAAAC,EAAeD,E,iXCkFFE,EAAiB,M,yBA2BUC,KAAAC,OAAS,MAQjBD,KAAAE,oBAAsB,E,2NARL,M,yBAQK,C,CAGpD,YAAAC,CAAaF,GACX,GAAIA,EAAQ,CACV,GAAID,KAAKI,KAAKC,cAAc,sBAAuB,CACjD,M,CAGFL,KAAKI,KAAKE,OAAON,KAAKO,kB,EAInB,UAAAC,GACLR,KAAKS,kBAAoBC,EAAuBV,KAAKW,SAASC,QAC9DZ,KAAKa,KAAOC,EAAUd,KAAKW,SAASC,QACpCZ,KAAKe,aAAeC,EAAkBhB,KAAKW,SAASC,QACpDZ,KAAKiB,aAAeC,EAAkBlB,KAAKW,SAASC,QACpDZ,KAAKmB,aAAeC,EAAkBpB,KAAKW,SAASC,QACpDZ,KAAKqB,WAAaC,EAAgBtB,KAAKW,SAASC,QAChDZ,KAAKG,aAAaH,KAAKC,O,CAGjB,eAAAM,GACN,MAAMgB,EAAUC,SAASC,cAAc,OACvCF,EAAQG,aAAa,OAAQ,UAC7B1B,KAAK2B,sBAAsBJ,GAE3B,MAAMK,EAAS5B,KAAKW,SAASkB,MAAMC,mBACnC,MAAMC,EAAkB/B,KAAKgC,qBAAqBnB,KAChDoB,GAEF,MAAMC,EAAgB,GACtB,MAAMC,EAA0B,GAChC,IAAK,MAAMC,KAAkBL,EAAiB,CAC5C,MAAMM,EAAeC,EAAYF,EAAgB,UACjD,GAAIC,EAAc,CAChBH,EAAcK,KAAKF,E,CAErB,MAAMG,EAAyBF,EAC7BF,EACA,qBAEF,GAAII,EAAwB,CAC1BL,EAAwBI,KAAKC,E,EAGjC,MAAMC,EAAgBC,EACpBd,KACGO,KACAD,GAEL,IAAK,MAAMS,KAAgBF,EAAcG,SAAU,CACjDD,EAAa9B,KAAKoB,E,CAGpB,MAAMY,EAAe,GACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIf,EAAgBgB,OAAQD,IAAK,CAC/CD,EAAaN,QAASE,EAAcO,IAAId,EAAcY,KAAO,IAC7DD,EAAaN,QACPE,EAAcO,IAAIb,EAAwBW,KAAO,G,CAGzDD,EAAaN,QAASE,EAAcO,IAAI,OAAS,IAEjD,MAAMC,cAACA,EAAaC,gBAAEA,GAAmBC,EACvCN,EACA7C,KAAKW,SAASkB,MAAMuB,gBAGtB,MAAMC,EAAqBrD,KAAKsD,YAAYL,GAC5C,MAAMM,EAAuBvD,KAAKsD,YAAYJ,GAE9ChD,EAAoBmD,EAAoBrD,KAAKE,qBAE7CqB,EAAQjB,UAAU+C,GAClB9B,EAAQjB,UAAUiD,GAElB,MAAMC,EAAYxD,KAAKyD,8BACvB,GAAID,EAAW,CACbA,EAAUE,gDACR1D,KAAKE,oBACL+C,EAAcF,QAEhBxB,EAAQjB,OAAOkD,E,CAGjB,OAAOjC,C,CAGD,kBAAAS,GACN,MAAM2B,EACJ3D,KAAKI,KAAKwD,QAAQ,4BAClB5D,KAAKI,KAAKwD,QAAQ,oBAAoBxB,gBACtC,KACF,IAAKuB,EAAe,CAClB,MAAM,IAAIE,MAAM,8B,CAElB,MAAMC,EAA0BC,MAAMC,KACpCxC,SAASyC,iBAAiB,oBAC1BC,QACCC,GAAmBA,EAAe/B,iBAAmBuB,IAExD,MAAO,IAAIG,EAAyBH,E,CAG9B,WAAAL,CAAY1B,GAClB,OAAOA,EAAOwC,KAAI,CAACC,EAAOvB,KACxBuB,EAAMC,UAAUC,OAAOC,GACvBH,EAAM3C,aAAa+C,EAAoB,IACvC,MAAMC,EAAQL,EAAMM,UAAU,MAC9BD,EAAME,YACJ5E,KAAKE,uBAAyB,EAC1B,MACA4C,EAAI,EAAI9C,KAAKE,oBACnB,OAAOwE,CAAK,G,CAIR,2BAAAjB,GACN,IAAKzD,KAAKW,SAASC,OAAOiE,MAAMC,mBAAmBC,aAAc,CAC/D,M,CAEF,MAAMvB,EAAYhC,SAASC,cACzB,oCAGF+B,EAAU9B,aACR,gBACA,GAAG1B,KAAKW,SAASC,OAAOiE,MAAMC,mBAAmBC,gBAEnD/E,KAAK2B,sBAAsB6B,GAE3B,OAAOA,C,CAGD,qBAAA7B,CAAsBqD,GAC5BA,EAAG1F,MAAM2F,QAAU,OACnBD,EAAG1F,MAAM4F,cAAgB,SACzBF,EAAG1F,MAAM6F,IAAM,+C,CAGjB,WAAYC,GACV,OAAOpF,KAAKW,SAASkB,MAAMgD,MAAMQ,W,CAG3B,MAAAC,CAAOC,GACb,MAAMD,EAASC,EAAEC,eAAe,GAChC,MAAMC,EAASzF,KAAKoF,QAAQM,MACzBD,GAAWA,EAAOE,aAAeL,EAAOM,QAE3CH,GAAUzF,KAAKa,KAAKgF,OAAOJ,EAAOK,S,CAG5B,WAAAC,EAAYJ,WAACA,EAAUG,SAAEA,EAAQE,MAAEA,EAAKC,KAAEA,IAChD,IACGC,EACC,IAAID,EAAKE,UACT,IAAIF,EAAKG,UACTpG,KAAKqG,iBAAiBC,WAExB,CACA,M,CAEF,OACE9H,EAAA,UAAQoH,MAAOD,EAAYY,SAAUvG,KAAKa,KAAK2F,WAAWV,IACvD9F,KAAKW,SAAS9B,KAAKI,EAAE+G,G,CAKpB,UAAAS,GACN,IAAKzG,KAAKoF,QAAQrC,OAAQ,CACxB,M,CAGF,OACEvE,EAACgB,EAAsB,CACrBX,KAAMmB,KAAKW,SAAS9B,KACpBY,SAAWgG,GAAWzF,KAAKsF,OAAOG,IAEjCzF,KAAKoF,QAAQhB,KAAKqB,GAAWzF,KAAK+F,YAAYN,K,CAK7C,aAAAiB,GACN,MAAMC,EAAmB3G,KAAKW,SAASkB,MAAMC,mBAAmBiB,OAAS,EACzE,MAAM6D,EACJ5G,KAAKW,SAASC,OAAOiE,MAAMC,mBAAmB+B,MAAQC,UAExD,IAAKH,IAAqBC,EAAoB,CAC5C,M,CAGF,MAAM/H,KAACA,GAAQmB,KAAKW,SAEpB,OACEnC,EAACI,EAAyB,CACxBC,KAAMA,EACNE,WAAY4H,EACZ7H,oBAAqB8H,GAEpB5G,KAAK+G,uBAAuBC,gBAC3BxI,EAACW,EAA6B,CAC5BN,KAAMA,EACNO,QAAS,IAAMY,KAAKS,kBAAkBwG,gB,CAOzC,MAAAC,GACL,OACE1I,EAAC2I,EAAW,CAAAC,IAAA,2CACVvI,KAAMmB,KAAKW,SAAS9B,KACpBuB,KAAMJ,KAAKI,KACXH,OAAQD,KAAKC,OACboH,QAAS,IAAOrH,KAAKC,OAAS,MAC9BqH,MAAOtH,KAAKW,SAAS9B,KAAKI,EAAE,mBAC5BsI,cAAevH,KAAKwH,kBAAkBC,MACtCC,WAAY1H,KAAK0H,YAEjBlJ,EAACH,EAAe,CAAA+I,IAAA,4CACbpH,KAAKyG,aACLzG,KAAK0G,iB,CAMP,gBAAAiB,GACL3H,KAAKI,KAAKd,MAAM2F,QAAU,E,mFAtQC2C,EAAA,CAA5BC,K,+BAKMD,EAAA,CAFNE,EAAsB,iB,wCAKfF,EAAA,CAFPE,EAAsB,sB,6CAKhBF,EAAA,CAFNE,EAAsB,iB,wCAGwBF,EAAA,CAArCE,EAAsB,S,gCAIzBF,EAAA,CAFNE,EAAsB,e","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,g as s}from"./p-dc3df5ce.js";import{loadQuerySuggestActions as r,HighlightUtils as i,buildRecentQueriesList as n}from"@coveo/headless";import{S as a}from"./p-cfb3c589.js";import{g as c,Q as o,a as h,b as l}from"./p-af93b44c.js";import{d as u}from"./p-4b7a19db.js";import{C as p}from"./p-c280cd05.js";import{S as m,a as d}from"./p-946fe85f.js";import{o as f}from"./p-a12e1c59.js";import{e as y}from"./p-8f5830b4.js";import"./p-c9074946.js";import"./p-1580513b.js";import"./p-f284897c.js";import"./p-0462f723.js";const g=class{constructor(e){t(this,e);this.error=undefined;this.icon=undefined;this.maxWithQuery=undefined;this.maxWithoutQuery=undefined}componentWillLoad(){try{u((t=>{this.bindings=t;return this.initialize()}),this.host,["atomic-search-box"])}catch(t){this.error=t}}initialize(){const t=this.bindings.engine;const{registerQuerySuggest:e,fetchQuerySuggestions:s}=r(t);t.dispatch(e({id:this.bindings.id,count:this.bindings.numberOfQueries}));return{position:Array.from(this.host.parentNode.children).indexOf(this.host),onInput:()=>t.dispatch(s({id:this.bindings.id})),renderItems:()=>this.renderItems()}}renderItems(){const t=this.bindings.searchBoxController.state.value!=="";const e=t?this.maxWithQuery:this.maxWithoutQuery;return this.bindings.searchBoxController.state.suggestions.slice(0,e).map((t=>this.renderItem(t)))}renderItem(t){const s=this.bindings.searchBoxController.state.value!=="";const r=c(t,this.bindings.i18n);return{...r,content:e(l,null,e(h,{icon:this.icon||a,hasSuggestion:this.bindings.getSuggestions().length>1}),e(o,{suggestion:t,hasQuery:s})),onSelect:()=>{this.bindings.searchBoxController.selectSuggestion(t.rawValue)}}}render(){if(this.error){return e("atomic-component-error",{key:"c5e8f0a3254a31cdae54c36868f70432c1673888",element:this.host,error:this.error})}}get host(){return s(this)}};const b=(t,e)=>({part:"recent-query-item",query:t,key:`recent-${y(t)}`,ariaLabel:e.t("recent-query-suggestion-label",{query:t,interpolation:{escapeValue:false}})});const q=t=>({key:"recent-query-clear",ariaLabel:t.t("clear-recent-searches",{interpolation:{escapeValue:false}}),part:"recent-query-title-item suggestion-divider",hideIfLast:true});const j=(t,s)=>e("div",{part:"recent-query-content",class:"flex items-center text-left break-all"},s);const x=({icon:t})=>e("atomic-icon",{part:"recent-query-icon",icon:t,class:"mr-2 h-4 w-4 shrink-0"});const S=({query:t,value:s})=>{if(t===""){return e("span",{part:"recent-query-text",class:"line-clamp-2 break-all"},s)}return e("span",{part:"recent-query-text",class:"line-clamp-2 break-all",innerHTML:i.highlightString({content:s,openingDelimiter:'<span part="recent-query-text-highlight" class="font-bold">',closingDelimiter:"</span>",highlights:[{offset:t.length,length:s.length-t.length}]})})};const I=({i18n:t})=>e("div",{part:"recent-query-title-content",class:"flex w-full justify-between"},e("span",{class:"font-bold",part:"recent-query-title"},t.t("recent-searches")),e("span",{part:"recent-query-clear"},t.t("clear")));const L=class{constructor(e){t(this,e);this.maxWithQuery=3;this.warnUser=f((()=>this.bindings.engine.logger.warn("Because analytics are disabled, the recent queries feature is deactivated.")));this.error=undefined;this.icon=undefined;this.maxWithQuery=3;this.maxWithoutQuery=undefined}componentWillLoad(){try{u((t=>{this.bindings=t;return this.initialize()}),this.host,["atomic-search-box"])}catch(t){this.error=t}}renderIcon(){return this.icon||p}initialize(){this.storage=new m;this.recentQueriesList=n(this.bindings.engine,{initialState:{queries:this.retrieveLocalStorage()},options:{maxLength:1e3,clearFilters:this.bindings.clearFilters}});this.recentQueriesList.subscribe((()=>this.updateLocalStorage()));return{position:Array.from(this.host.parentNode.children).indexOf(this.host),renderItems:()=>this.renderItems()}}retrieveLocalStorage(){return this.storage.getParsedJSON(d.RECENT_QUERIES,[])}updateLocalStorage(){if(!this.recentQueriesList.state.analyticsEnabled){return this.disableFeature()}return this.storage.setJSON(d.RECENT_QUERIES,this.recentQueriesList.state.queries)}disableFeature(){this.warnUser();this.storage.removeItem(d.RECENT_QUERIES)}renderItems(){if(!this.recentQueriesList.state.analyticsEnabled){return[]}const t=this.bindings.searchBoxController.state.value;const e=t!=="";const s=e?this.maxWithQuery:this.maxWithoutQuery;const r=this.recentQueriesList.state.queries.filter((e=>e.toLowerCase().startsWith(t.toLowerCase()))).slice(0,s);const i=r.map((t=>this.renderItem(t)));if(i.length){i.unshift(this.renderClear())}return i}renderClear(){const t=q(this.bindings.i18n);return{...t,content:e(I,{i18n:this.bindings.i18n}),onSelect:()=>{this.recentQueriesList.clear();this.bindings.triggerSuggestions()}}}renderItem(t){const s=this.bindings.searchBoxController.state.value;const r=b(t,this.bindings.i18n);return{...r,content:e(j,null,e(x,{icon:this.renderIcon()}),e(S,{query:s,value:t})),onSelect:()=>{if(this.bindings.isStandalone){this.bindings.searchBoxController.updateText(t);this.bindings.searchBoxController.submit();return}this.recentQueriesList.executeRecentQuery(this.recentQueriesList.state.queries.indexOf(t))}}}render(){if(this.error){return e("atomic-component-error",{key:"a428e82c6ce29e81704777cbbf3bea98937b906a",element:this.host,error:this.error})}}get host(){return s(this)}};export{g as atomic_search_box_query_suggestions,L as atomic_search_box_recent_queries};
2
- //# sourceMappingURL=p-ea1b81fa.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["AtomicSearchBoxQuerySuggestions","componentWillLoad","dispatchSearchBoxSuggestionsEvent","bindings","this","initialize","host","error","engine","registerQuerySuggest","fetchQuerySuggestions","loadQuerySuggestActions","dispatch","id","count","numberOfQueries","position","Array","from","parentNode","children","indexOf","onInput","renderItems","hasQuery","searchBoxController","state","value","max","maxWithQuery","maxWithoutQuery","suggestions","slice","map","suggestion","renderItem","partialItem","getPartialSearchBoxSuggestionElement","i18n","content","h","QuerySuggestionContainer","QuerySuggestionIcon","icon","SearchIcon","hasSuggestion","getSuggestions","length","QuerySuggestionText","onSelect","selectSuggestion","rawValue","render","key","element","getPartialRecentQueryElement","part","query","encodeForDomAttribute","ariaLabel","t","interpolation","escapeValue","getPartialRecentQueryClearElement","hideIfLast","RecentQueriesContainer","_","class","RecentQueryIcon","RecentQueryText","innerHTML","HighlightUtils","highlightString","openingDelimiter","closingDelimiter","highlights","offset","RecentQueryClear","AtomicSearchBoxRecentQueries","warnUser","once","logger","warn","renderIcon","Clock","storage","SafeStorage","recentQueriesList","buildRecentQueriesList","initialState","queries","retrieveLocalStorage","options","maxLength","clearFilters","subscribe","updateLocalStorage","getParsedJSON","StorageItems","RECENT_QUERIES","analyticsEnabled","disableFeature","setJSON","removeItem","filteredQueries","filter","recentQuery","toLowerCase","startsWith","suggestionElements","unshift","renderClear","clear","triggerSuggestions","isStandalone","updateText","submit","executeRecentQuery"],"sources":["src/components/search/search-box-suggestions/atomic-search-box-query-suggestions/atomic-search-box-query-suggestions.tsx","src/components/common/suggestions/stencil-recent-queries.tsx","src/components/search/search-box-suggestions/atomic-search-box-recent-queries/atomic-search-box-recent-queries.tsx"],"sourcesContent":["import {\n loadQuerySuggestActions,\n SearchBox,\n SearchEngine,\n Suggestion,\n} from '@coveo/headless';\nimport {Component, Element, Prop, State, h} from '@stencil/core';\nimport SearchIcon from '../../../../images/search.svg';\nimport {\n getPartialSearchBoxSuggestionElement,\n QuerySuggestionContainer,\n QuerySuggestionIcon,\n QuerySuggestionText,\n} from '../../../common/suggestions/stencil-query-suggestions';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n} from '../../../common/suggestions/suggestions-events';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-types';\n\n/**\n * The `atomic-search-box-query-suggestions` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of query suggestion behavior.\n */\n@Component({\n tag: 'atomic-search-box-query-suggestions',\n shadow: true,\n})\nexport class AtomicSearchBoxQuerySuggestions {\n private bindings!: SearchBoxSuggestionsBindings<SearchBox>;\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The SVG icon to display.\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() public icon?: string;\n\n /**\n * The maximum number of suggestions that will be displayed if the user has typed something into the input field.\n */\n @Prop({reflect: true}) public maxWithQuery?: number;\n /**\n * The maximum number of suggestions that will be displayed initially when the input field is empty.\n */\n @Prop({reflect: true}) public maxWithoutQuery?: number;\n\n componentWillLoad() {\n try {\n dispatchSearchBoxSuggestionsEvent<SearchBox>(\n (bindings) => {\n this.bindings = bindings;\n return this.initialize();\n },\n this.host,\n ['atomic-search-box']\n );\n } catch (error) {\n this.error = error as Error;\n }\n }\n\n private initialize(): SearchBoxSuggestions {\n const engine = this.bindings.engine as SearchEngine<{\n querySet: string;\n querySuggest: string;\n }>;\n const {registerQuerySuggest, fetchQuerySuggestions} =\n loadQuerySuggestActions(engine);\n\n engine.dispatch(\n registerQuerySuggest({\n id: this.bindings.id,\n count: this.bindings.numberOfQueries,\n })\n );\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n onInput: () =>\n engine.dispatch(\n fetchQuerySuggestions({\n id: this.bindings.id,\n })\n ),\n renderItems: () => this.renderItems(),\n };\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n const hasQuery = this.bindings.searchBoxController.state.value !== '';\n const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;\n return this.bindings.searchBoxController.state.suggestions\n .slice(0, max)\n .map((suggestion) => this.renderItem(suggestion));\n }\n\n private renderItem(suggestion: Suggestion) {\n const hasQuery = this.bindings.searchBoxController.state.value !== '';\n const partialItem = getPartialSearchBoxSuggestionElement(\n suggestion,\n this.bindings.i18n\n );\n\n return {\n ...partialItem,\n content: (\n <QuerySuggestionContainer>\n <QuerySuggestionIcon\n icon={this.icon || SearchIcon}\n hasSuggestion={this.bindings.getSuggestions().length > 1}\n />\n\n <QuerySuggestionText suggestion={suggestion} hasQuery={hasQuery} />\n </QuerySuggestionContainer>\n ),\n onSelect: () => {\n this.bindings.searchBoxController.selectSuggestion(suggestion.rawValue);\n },\n };\n }\n\n public render() {\n if (this.error) {\n return (\n <atomic-component-error\n element={this.host}\n error={this.error}\n ></atomic-component-error>\n );\n }\n }\n}\n","import {HighlightUtils} from '@coveo/headless';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {encodeForDomAttribute} from '../../../utils/string-utils';\nimport {SearchBoxSuggestionElement} from './suggestions-types';\n\nexport const getPartialRecentQueryElement = (\n value: string,\n i18n: i18n\n): Pick<SearchBoxSuggestionElement, 'ariaLabel' | 'key' | 'query' | 'part'> => {\n return {\n part: 'recent-query-item',\n query: value,\n key: `recent-${encodeForDomAttribute(value)}`,\n ariaLabel: i18n.t('recent-query-suggestion-label', {\n query: value,\n interpolation: {escapeValue: false},\n }),\n };\n};\n\nexport const getPartialRecentQueryClearElement = (\n i18n: i18n\n): Pick<\n SearchBoxSuggestionElement,\n 'ariaLabel' | 'key' | 'part' | 'hideIfLast'\n> => {\n return {\n key: 'recent-query-clear',\n ariaLabel: i18n.t('clear-recent-searches', {\n interpolation: {escapeValue: false},\n }),\n part: 'recent-query-title-item suggestion-divider',\n hideIfLast: true,\n };\n};\n\nexport const RecentQueriesContainer: FunctionalComponent = (_, children) => {\n return (\n <div\n part=\"recent-query-content\"\n class=\"flex items-center text-left break-all\"\n >\n {children}\n </div>\n );\n};\n\ninterface RecentQueryIconProps {\n icon: string;\n}\n\nexport const RecentQueryIcon: FunctionalComponent<RecentQueryIconProps> = ({\n icon,\n}) => {\n return (\n <atomic-icon\n part=\"recent-query-icon\"\n icon={icon}\n class=\"mr-2 h-4 w-4 shrink-0\"\n ></atomic-icon>\n );\n};\n\ninterface RecentQueryTextProps {\n query: string;\n value: string;\n}\n\nexport const RecentQueryText: FunctionalComponent<RecentQueryTextProps> = ({\n query,\n value,\n}) => {\n if (query === '') {\n return (\n <span part=\"recent-query-text\" class=\"line-clamp-2 break-all\">\n {value}\n </span>\n );\n }\n return (\n <span\n part=\"recent-query-text\"\n class=\"line-clamp-2 break-all\"\n innerHTML={HighlightUtils.highlightString({\n content: value,\n openingDelimiter:\n '<span part=\"recent-query-text-highlight\" class=\"font-bold\">',\n closingDelimiter: '</span>',\n highlights: [\n {\n offset: query.length,\n length: value.length - query.length,\n },\n ],\n })}\n ></span>\n );\n};\n\ninterface RecentQueryClearProps {\n i18n: i18n;\n}\n\nexport const RecentQueryClear: FunctionalComponent<RecentQueryClearProps> = ({\n i18n,\n}) => {\n return (\n <div part=\"recent-query-title-content\" class=\"flex w-full justify-between\">\n <span class=\"font-bold\" part=\"recent-query-title\">\n {i18n.t('recent-searches')}\n </span>\n <span part=\"recent-query-clear\">{i18n.t('clear')}</span>\n </div>\n );\n};\n","import {\n buildRecentQueriesList,\n RecentQueriesList,\n SearchBox,\n} from '@coveo/headless';\nimport {Component, Element, Prop, State, h} from '@stencil/core';\nimport Clock from '../../../../images/clock.svg';\nimport {SafeStorage, StorageItems} from '../../../../utils/local-storage-utils';\nimport {once} from '../../../../utils/utils';\nimport {\n getPartialRecentQueryClearElement,\n getPartialRecentQueryElement,\n RecentQueriesContainer,\n RecentQueryClear,\n RecentQueryIcon,\n RecentQueryText,\n} from '../../../common/suggestions/stencil-recent-queries';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n} from '../../../common/suggestions/suggestions-events';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-types';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-search-box-recent-queries` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of recent query suggestions.\n */\n@Component({\n tag: 'atomic-search-box-recent-queries',\n shadow: true,\n})\nexport class AtomicSearchBoxRecentQueries {\n private bindings!: SearchBoxSuggestionsBindings<SearchBox, Bindings>;\n private recentQueriesList!: RecentQueriesList;\n private storage!: SafeStorage;\n\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The SVG icon to display.\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() public icon?: string;\n\n /**\n * The maximum number of suggestions that will be displayed if the user has typed something into the input field.\n */\n @Prop({reflect: true}) public maxWithQuery = 3;\n /**\n * The maximum number of suggestions that will be displayed initially when the input field is empty.\n */\n @Prop({reflect: true}) public maxWithoutQuery?: number;\n\n componentWillLoad() {\n try {\n dispatchSearchBoxSuggestionsEvent<SearchBox, Bindings>(\n (bindings) => {\n this.bindings = bindings;\n return this.initialize();\n },\n this.host,\n ['atomic-search-box']\n );\n } catch (error) {\n this.error = error as Error;\n }\n }\n\n private renderIcon() {\n return this.icon || Clock;\n }\n\n private initialize(): SearchBoxSuggestions {\n this.storage = new SafeStorage();\n this.recentQueriesList = buildRecentQueriesList(this.bindings.engine, {\n initialState: {queries: this.retrieveLocalStorage()},\n options: {maxLength: 1000, clearFilters: this.bindings.clearFilters},\n });\n\n this.recentQueriesList.subscribe(() => this.updateLocalStorage());\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n renderItems: () => this.renderItems(),\n };\n }\n\n private retrieveLocalStorage() {\n return this.storage.getParsedJSON(StorageItems.RECENT_QUERIES, []);\n }\n\n private updateLocalStorage() {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return this.disableFeature();\n }\n\n return this.storage.setJSON(\n StorageItems.RECENT_QUERIES,\n this.recentQueriesList.state.queries\n );\n }\n\n private warnUser = once(() =>\n this.bindings.engine.logger.warn(\n 'Because analytics are disabled, the recent queries feature is deactivated.'\n )\n );\n\n private disableFeature() {\n this.warnUser();\n this.storage.removeItem(StorageItems.RECENT_QUERIES);\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return [];\n }\n\n const query = this.bindings.searchBoxController.state.value;\n const hasQuery = query !== '';\n const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;\n const filteredQueries = this.recentQueriesList.state.queries\n .filter((recentQuery) =>\n recentQuery.toLowerCase().startsWith(query.toLowerCase())\n )\n .slice(0, max);\n\n const suggestionElements: SearchBoxSuggestionElement[] =\n filteredQueries.map((value) => this.renderItem(value));\n if (suggestionElements.length) {\n suggestionElements.unshift(this.renderClear());\n }\n\n return suggestionElements;\n }\n\n private renderClear(): SearchBoxSuggestionElement {\n const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);\n\n return {\n ...partialItem,\n content: <RecentQueryClear i18n={this.bindings.i18n} />,\n onSelect: () => {\n this.recentQueriesList.clear();\n this.bindings.triggerSuggestions();\n },\n };\n }\n\n private renderItem(value: string): SearchBoxSuggestionElement {\n const query = this.bindings.searchBoxController.state.value;\n const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);\n return {\n ...partialItem,\n content: (\n <RecentQueriesContainer>\n <RecentQueryIcon icon={this.renderIcon()} />\n <RecentQueryText query={query} value={value} />\n </RecentQueriesContainer>\n ),\n\n onSelect: () => {\n if (this.bindings.isStandalone) {\n this.bindings.searchBoxController.updateText(value);\n this.bindings.searchBoxController.submit();\n return;\n }\n\n this.recentQueriesList.executeRecentQuery(\n this.recentQueriesList.state.queries.indexOf(value)\n );\n },\n };\n }\n\n public render() {\n if (this.error) {\n return (\n <atomic-component-error\n element={this.host}\n error={this.error}\n ></atomic-component-error>\n );\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,234 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const index = require('./index-757bc886.js');
6
- const headless = require('@coveo/headless');
7
- const search = require('./search-a4774f02.js');
8
- const stencilQuerySuggestions = require('./stencil-query-suggestions-03268ecc.js');
9
- const suggestionsEvents = require('./suggestions-events-63dd0640.js');
10
- const clock = require('./clock-f03ff827.js');
11
- const localStorageUtils = require('./local-storage-utils-380ce22b.js');
12
- const utils = require('./utils-7153ae6b.js');
13
- const stringUtils = require('./string-utils-bdf08f8c.js');
14
- require('./dom-utils-d4790328.js');
15
- require('./event-utils-9bfcf3c5.js');
16
- require('./purify-85b542e2.js');
17
- require('./_commonjsHelpers-b3309d7b.js');
18
-
19
- const AtomicSearchBoxQuerySuggestions = class {
20
- constructor(hostRef) {
21
- index.registerInstance(this, hostRef);
22
- this.error = undefined;
23
- this.icon = undefined;
24
- this.maxWithQuery = undefined;
25
- this.maxWithoutQuery = undefined;
26
- }
27
- componentWillLoad() {
28
- try {
29
- suggestionsEvents.dispatchSearchBoxSuggestionsEvent((bindings) => {
30
- this.bindings = bindings;
31
- return this.initialize();
32
- }, this.host, ['atomic-search-box']);
33
- }
34
- catch (error) {
35
- this.error = error;
36
- }
37
- }
38
- initialize() {
39
- const engine = this.bindings.engine;
40
- const { registerQuerySuggest, fetchQuerySuggestions } = headless.loadQuerySuggestActions(engine);
41
- engine.dispatch(registerQuerySuggest({
42
- id: this.bindings.id,
43
- count: this.bindings.numberOfQueries,
44
- }));
45
- return {
46
- position: Array.from(this.host.parentNode.children).indexOf(this.host),
47
- onInput: () => engine.dispatch(fetchQuerySuggestions({
48
- id: this.bindings.id,
49
- })),
50
- renderItems: () => this.renderItems(),
51
- };
52
- }
53
- renderItems() {
54
- const hasQuery = this.bindings.searchBoxController.state.value !== '';
55
- const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;
56
- return this.bindings.searchBoxController.state.suggestions
57
- .slice(0, max)
58
- .map((suggestion) => this.renderItem(suggestion));
59
- }
60
- renderItem(suggestion) {
61
- const hasQuery = this.bindings.searchBoxController.state.value !== '';
62
- const partialItem = stencilQuerySuggestions.getPartialSearchBoxSuggestionElement(suggestion, this.bindings.i18n);
63
- return {
64
- ...partialItem,
65
- content: (index.h(stencilQuerySuggestions.QuerySuggestionContainer, null, index.h(stencilQuerySuggestions.QuerySuggestionIcon, { icon: this.icon || search.SearchIcon, hasSuggestion: this.bindings.getSuggestions().length > 1 }), index.h(stencilQuerySuggestions.QuerySuggestionText, { suggestion: suggestion, hasQuery: hasQuery }))),
66
- onSelect: () => {
67
- this.bindings.searchBoxController.selectSuggestion(suggestion.rawValue);
68
- },
69
- };
70
- }
71
- render() {
72
- if (this.error) {
73
- return (index.h("atomic-component-error", { key: 'c5e8f0a3254a31cdae54c36868f70432c1673888', element: this.host, error: this.error }));
74
- }
75
- }
76
- get host() { return index.getElement(this); }
77
- };
78
-
79
- const getPartialRecentQueryElement = (value, i18n) => {
80
- return {
81
- part: 'recent-query-item',
82
- query: value,
83
- key: `recent-${stringUtils.encodeForDomAttribute(value)}`,
84
- ariaLabel: i18n.t('recent-query-suggestion-label', {
85
- query: value,
86
- interpolation: { escapeValue: false },
87
- }),
88
- };
89
- };
90
- const getPartialRecentQueryClearElement = (i18n) => {
91
- return {
92
- key: 'recent-query-clear',
93
- ariaLabel: i18n.t('clear-recent-searches', {
94
- interpolation: { escapeValue: false },
95
- }),
96
- part: 'recent-query-title-item suggestion-divider',
97
- hideIfLast: true,
98
- };
99
- };
100
- const RecentQueriesContainer = (_, children) => {
101
- return (index.h("div", { part: "recent-query-content", class: "flex items-center text-left break-all" }, children));
102
- };
103
- const RecentQueryIcon = ({ icon, }) => {
104
- return (index.h("atomic-icon", { part: "recent-query-icon", icon: icon, class: "mr-2 h-4 w-4 shrink-0" }));
105
- };
106
- const RecentQueryText = ({ query, value, }) => {
107
- if (query === '') {
108
- return (index.h("span", { part: "recent-query-text", class: "line-clamp-2 break-all" }, value));
109
- }
110
- return (index.h("span", { part: "recent-query-text", class: "line-clamp-2 break-all", innerHTML: headless.HighlightUtils.highlightString({
111
- content: value,
112
- openingDelimiter: '<span part="recent-query-text-highlight" class="font-bold">',
113
- closingDelimiter: '</span>',
114
- highlights: [
115
- {
116
- offset: query.length,
117
- length: value.length - query.length,
118
- },
119
- ],
120
- }) }));
121
- };
122
- const RecentQueryClear = ({ i18n, }) => {
123
- return (index.h("div", { part: "recent-query-title-content", class: "flex w-full justify-between" },
124
- index.h("span", { class: "font-bold", part: "recent-query-title" }, i18n.t('recent-searches')),
125
- index.h("span", { part: "recent-query-clear" }, i18n.t('clear'))));
126
- };
127
-
128
- const AtomicSearchBoxRecentQueries = class {
129
- constructor(hostRef) {
130
- index.registerInstance(this, hostRef);
131
- /**
132
- * The maximum number of suggestions that will be displayed if the user has typed something into the input field.
133
- */
134
- this.maxWithQuery = 3;
135
- this.warnUser = utils.once(() => this.bindings.engine.logger.warn('Because analytics are disabled, the recent queries feature is deactivated.'));
136
- this.error = undefined;
137
- this.icon = undefined;
138
- this.maxWithQuery = 3;
139
- this.maxWithoutQuery = undefined;
140
- }
141
- componentWillLoad() {
142
- try {
143
- suggestionsEvents.dispatchSearchBoxSuggestionsEvent((bindings) => {
144
- this.bindings = bindings;
145
- return this.initialize();
146
- }, this.host, ['atomic-search-box']);
147
- }
148
- catch (error) {
149
- this.error = error;
150
- }
151
- }
152
- renderIcon() {
153
- return this.icon || clock.Clock;
154
- }
155
- initialize() {
156
- this.storage = new localStorageUtils.SafeStorage();
157
- this.recentQueriesList = headless.buildRecentQueriesList(this.bindings.engine, {
158
- initialState: { queries: this.retrieveLocalStorage() },
159
- options: { maxLength: 1000, clearFilters: this.bindings.clearFilters },
160
- });
161
- this.recentQueriesList.subscribe(() => this.updateLocalStorage());
162
- return {
163
- position: Array.from(this.host.parentNode.children).indexOf(this.host),
164
- renderItems: () => this.renderItems(),
165
- };
166
- }
167
- retrieveLocalStorage() {
168
- return this.storage.getParsedJSON(localStorageUtils.StorageItems.RECENT_QUERIES, []);
169
- }
170
- updateLocalStorage() {
171
- if (!this.recentQueriesList.state.analyticsEnabled) {
172
- return this.disableFeature();
173
- }
174
- return this.storage.setJSON(localStorageUtils.StorageItems.RECENT_QUERIES, this.recentQueriesList.state.queries);
175
- }
176
- disableFeature() {
177
- this.warnUser();
178
- this.storage.removeItem(localStorageUtils.StorageItems.RECENT_QUERIES);
179
- }
180
- renderItems() {
181
- if (!this.recentQueriesList.state.analyticsEnabled) {
182
- return [];
183
- }
184
- const query = this.bindings.searchBoxController.state.value;
185
- const hasQuery = query !== '';
186
- const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;
187
- const filteredQueries = this.recentQueriesList.state.queries
188
- .filter((recentQuery) => recentQuery.toLowerCase().startsWith(query.toLowerCase()))
189
- .slice(0, max);
190
- const suggestionElements = filteredQueries.map((value) => this.renderItem(value));
191
- if (suggestionElements.length) {
192
- suggestionElements.unshift(this.renderClear());
193
- }
194
- return suggestionElements;
195
- }
196
- renderClear() {
197
- const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);
198
- return {
199
- ...partialItem,
200
- content: index.h(RecentQueryClear, { i18n: this.bindings.i18n }),
201
- onSelect: () => {
202
- this.recentQueriesList.clear();
203
- this.bindings.triggerSuggestions();
204
- },
205
- };
206
- }
207
- renderItem(value) {
208
- const query = this.bindings.searchBoxController.state.value;
209
- const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);
210
- return {
211
- ...partialItem,
212
- content: (index.h(RecentQueriesContainer, null, index.h(RecentQueryIcon, { icon: this.renderIcon() }), index.h(RecentQueryText, { query: query, value: value }))),
213
- onSelect: () => {
214
- if (this.bindings.isStandalone) {
215
- this.bindings.searchBoxController.updateText(value);
216
- this.bindings.searchBoxController.submit();
217
- return;
218
- }
219
- this.recentQueriesList.executeRecentQuery(this.recentQueriesList.state.queries.indexOf(value));
220
- },
221
- };
222
- }
223
- render() {
224
- if (this.error) {
225
- return (index.h("atomic-component-error", { key: 'a428e82c6ce29e81704777cbbf3bea98937b906a', element: this.host, error: this.error }));
226
- }
227
- }
228
- get host() { return index.getElement(this); }
229
- };
230
-
231
- exports.atomic_search_box_query_suggestions = AtomicSearchBoxQuerySuggestions;
232
- exports.atomic_search_box_recent_queries = AtomicSearchBoxRecentQueries;
233
-
234
- //# sourceMappingURL=atomic-search-box-query-suggestions_2.cjs.entry.js.map
@@ -1 +0,0 @@
1
- {"file":"atomic-search-box-query-suggestions.atomic-search-box-recent-queries.entry.cjs.js","mappings":";;;;;;;;;;;;;;;;;;MA8Ba,+BAA+B;;;;;;;;IAwB1C,iBAAiB;QACf,IAAI;YACFA,mDAAiC,CAC/B,CAAC,QAAQ;gBACP,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;aAC1B,EACD,IAAI,CAAC,IAAI,EACT,CAAC,mBAAmB,CAAC,CACtB,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,GAAG,KAAc,CAAC;SAC7B;KACF;IAEO,UAAU;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAG3B,CAAC;QACH,MAAM,EAAC,oBAAoB,EAAE,qBAAqB,EAAC,GACjDC,gCAAuB,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,QAAQ,CACb,oBAAoB,CAAC;YACnB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;SACrC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,OAAO,EAAE,MACP,MAAM,CAAC,QAAQ,CACb,qBAAqB,CAAC;gBACpB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;aACrB,CAAC,CACH;YACH,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;SACtC,CAAC;KACH;IAEO,WAAW;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW;aACvD,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACb,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD;IAEO,UAAU,CAAC,UAAsB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACtE,MAAM,WAAW,GAAGC,4DAAoC,CACtD,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CACnB,CAAC;QAEF,OAAO;YACL,GAAG,WAAW;YACd,OAAO,GACLC,QAACC,gDAAwB,QACvBD,QAACE,2CAAmB,IAClB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAIC,iBAAU,EAC7B,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,GACxD,EAEFH,QAACI,2CAAmB,IAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAC1C,CAC5B;YACD,QAAQ,EAAE;gBACR,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACzE;SACF,CAAC;KACH;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,QACEJ,qFACE,OAAO,EAAE,IAAI,CAAC,IAAI,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACO,EAC1B;SACH;KACF;;;;ACpII,MAAM,4BAA4B,GAAG,CAC1C,KAAa,EACb,IAAU;IAEV,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE,UAAUK,iCAAqB,CAAC,KAAK,CAAC,EAAE;QAC7C,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,+BAA+B,EAAE;YACjD,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;SACpC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,iCAAiC,GAAG,CAC/C,IAAU;IAKV,OAAO;QACL,GAAG,EAAE,oBAAoB;QACzB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE;YACzC,aAAa,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;SACpC,CAAC;QACF,IAAI,EAAE,4CAA4C;QAClD,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAwB,CAAC,CAAC,EAAE,QAAQ;IACrE,QACEL,iBACE,IAAI,EAAC,sBAAsB,EAC3B,KAAK,EAAC,uCAAuC,IAE5C,QAAQ,CACL,EACN;AACJ,CAAC,CAAC;AAMK,MAAM,eAAe,GAA8C,CAAC,EACzE,IAAI,GACL;IACC,QACEA,yBACE,IAAI,EAAC,mBAAmB,EACxB,IAAI,EAAE,IAAI,EACV,KAAK,EAAC,uBAAuB,GAChB,EACf;AACJ,CAAC,CAAC;AAOK,MAAM,eAAe,GAA8C,CAAC,EACzE,KAAK,EACL,KAAK,GACN;IACC,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,QACEA,kBAAM,IAAI,EAAC,mBAAmB,EAAC,KAAK,EAAC,wBAAwB,IAC1D,KAAK,CACD,EACP;KACH;IACD,QACEA,kBACE,IAAI,EAAC,mBAAmB,EACxB,KAAK,EAAC,wBAAwB,EAC9B,SAAS,EAAEM,uBAAc,CAAC,eAAe,CAAC;YACxC,OAAO,EAAE,KAAK;YACd,gBAAgB,EACd,6DAA6D;YAC/D,gBAAgB,EAAE,SAAS;YAC3B,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;iBACpC;aACF;SACF,CAAC,GACI,EACR;AACJ,CAAC,CAAC;AAMK,MAAM,gBAAgB,GAA+C,CAAC,EAC3E,IAAI,GACL;IACC,QACEN,iBAAK,IAAI,EAAC,4BAA4B,EAAC,KAAK,EAAC,6BAA6B;QACxEA,kBAAM,KAAK,EAAC,WAAW,EAAC,IAAI,EAAC,oBAAoB,IAC9C,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CACrB;QACPA,kBAAM,IAAI,EAAC,oBAAoB,IAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,CACpD,EACN;AACJ,CAAC;;MCjFY,4BAA4B;;;;;;QAqBT,iBAAY,GAAG,CAAC,CAAC;QAuDvC,aAAQ,GAAGO,UAAI,CAAC,MACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC9B,4EAA4E,CAC7E,CACF,CAAC;;;4BA3D2C,CAAC;;;IAM9C,iBAAiB;QACf,IAAI;YACFV,mDAAiC,CAC/B,CAAC,QAAQ;gBACP,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;aAC1B,EACD,IAAI,CAAC,IAAI,EACT,CAAC,mBAAmB,CAAC,CACtB,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,GAAG,KAAc,CAAC;SAC7B;KACF;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,IAAI,IAAIW,WAAK,CAAC;KAC3B;IAEO,UAAU;QAChB,IAAI,CAAC,OAAO,GAAG,IAAIC,6BAAW,EAAE,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAGC,+BAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpE,YAAY,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAC;YACpD,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAC;SACrE,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAElE,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;SACtC,CAAC;KACH;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAACC,8BAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;KACpE;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAClD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CACzBA,8BAAY,CAAC,cAAc,EAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CACrC,CAAC;KACH;IAQO,cAAc;QACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,CAAC,UAAU,CAACA,8BAAY,CAAC,cAAc,CAAC,CAAC;KACtD;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAClD,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5D,MAAM,QAAQ,GAAG,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO;aACzD,MAAM,CAAC,CAAC,WAAW,KAClB,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAC1D;aACA,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjB,MAAM,kBAAkB,GACtB,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,kBAAkB,CAAC,MAAM,EAAE;YAC7B,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAChD;QAED,OAAO,kBAAkB,CAAC;KAC3B;IAEO,WAAW;QACjB,MAAM,WAAW,GAAG,iCAAiC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE1E,OAAO;YACL,GAAG,WAAW;YACd,OAAO,EAAEX,QAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAI;YACvD,QAAQ,EAAE;gBACR,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;aACpC;SACF,CAAC;KACH;IAEO,UAAU,CAAC,KAAa;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5D,MAAM,WAAW,GAAG,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO;YACL,GAAG,WAAW;YACd,OAAO,GACLA,QAAC,sBAAsB,QACrBA,QAAC,eAAe,IAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,GAAI,EAC5CA,QAAC,eAAe,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CACxB,CAC1B;YAED,QAAQ,EAAE;gBACR,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;oBAC9B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;oBAC3C,OAAO;iBACR;gBAED,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CACvC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CACpD,CAAC;aACH;SACF,CAAC;KACH;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,QACEA,qFACE,OAAO,EAAE,IAAI,CAAC,IAAI,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACO,EAC1B;SACH;KACF;;;;;;;","names":["dispatchSearchBoxSuggestionsEvent","loadQuerySuggestActions","getPartialSearchBoxSuggestionElement","h","QuerySuggestionContainer","QuerySuggestionIcon","SearchIcon","QuerySuggestionText","encodeForDomAttribute","HighlightUtils","once","Clock","SafeStorage","buildRecentQueriesList","StorageItems"],"sources":["src/components/search/search-box-suggestions/atomic-search-box-query-suggestions/atomic-search-box-query-suggestions.tsx","src/components/common/suggestions/stencil-recent-queries.tsx","src/components/search/search-box-suggestions/atomic-search-box-recent-queries/atomic-search-box-recent-queries.tsx"],"sourcesContent":["import {\n loadQuerySuggestActions,\n SearchBox,\n SearchEngine,\n Suggestion,\n} from '@coveo/headless';\nimport {Component, Element, Prop, State, h} from '@stencil/core';\nimport SearchIcon from '../../../../images/search.svg';\nimport {\n getPartialSearchBoxSuggestionElement,\n QuerySuggestionContainer,\n QuerySuggestionIcon,\n QuerySuggestionText,\n} from '../../../common/suggestions/stencil-query-suggestions';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n} from '../../../common/suggestions/suggestions-events';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-types';\n\n/**\n * The `atomic-search-box-query-suggestions` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of query suggestion behavior.\n */\n@Component({\n tag: 'atomic-search-box-query-suggestions',\n shadow: true,\n})\nexport class AtomicSearchBoxQuerySuggestions {\n private bindings!: SearchBoxSuggestionsBindings<SearchBox>;\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The SVG icon to display.\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() public icon?: string;\n\n /**\n * The maximum number of suggestions that will be displayed if the user has typed something into the input field.\n */\n @Prop({reflect: true}) public maxWithQuery?: number;\n /**\n * The maximum number of suggestions that will be displayed initially when the input field is empty.\n */\n @Prop({reflect: true}) public maxWithoutQuery?: number;\n\n componentWillLoad() {\n try {\n dispatchSearchBoxSuggestionsEvent<SearchBox>(\n (bindings) => {\n this.bindings = bindings;\n return this.initialize();\n },\n this.host,\n ['atomic-search-box']\n );\n } catch (error) {\n this.error = error as Error;\n }\n }\n\n private initialize(): SearchBoxSuggestions {\n const engine = this.bindings.engine as SearchEngine<{\n querySet: string;\n querySuggest: string;\n }>;\n const {registerQuerySuggest, fetchQuerySuggestions} =\n loadQuerySuggestActions(engine);\n\n engine.dispatch(\n registerQuerySuggest({\n id: this.bindings.id,\n count: this.bindings.numberOfQueries,\n })\n );\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n onInput: () =>\n engine.dispatch(\n fetchQuerySuggestions({\n id: this.bindings.id,\n })\n ),\n renderItems: () => this.renderItems(),\n };\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n const hasQuery = this.bindings.searchBoxController.state.value !== '';\n const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;\n return this.bindings.searchBoxController.state.suggestions\n .slice(0, max)\n .map((suggestion) => this.renderItem(suggestion));\n }\n\n private renderItem(suggestion: Suggestion) {\n const hasQuery = this.bindings.searchBoxController.state.value !== '';\n const partialItem = getPartialSearchBoxSuggestionElement(\n suggestion,\n this.bindings.i18n\n );\n\n return {\n ...partialItem,\n content: (\n <QuerySuggestionContainer>\n <QuerySuggestionIcon\n icon={this.icon || SearchIcon}\n hasSuggestion={this.bindings.getSuggestions().length > 1}\n />\n\n <QuerySuggestionText suggestion={suggestion} hasQuery={hasQuery} />\n </QuerySuggestionContainer>\n ),\n onSelect: () => {\n this.bindings.searchBoxController.selectSuggestion(suggestion.rawValue);\n },\n };\n }\n\n public render() {\n if (this.error) {\n return (\n <atomic-component-error\n element={this.host}\n error={this.error}\n ></atomic-component-error>\n );\n }\n }\n}\n","import {HighlightUtils} from '@coveo/headless';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {encodeForDomAttribute} from '../../../utils/string-utils';\nimport {SearchBoxSuggestionElement} from './suggestions-types';\n\nexport const getPartialRecentQueryElement = (\n value: string,\n i18n: i18n\n): Pick<SearchBoxSuggestionElement, 'ariaLabel' | 'key' | 'query' | 'part'> => {\n return {\n part: 'recent-query-item',\n query: value,\n key: `recent-${encodeForDomAttribute(value)}`,\n ariaLabel: i18n.t('recent-query-suggestion-label', {\n query: value,\n interpolation: {escapeValue: false},\n }),\n };\n};\n\nexport const getPartialRecentQueryClearElement = (\n i18n: i18n\n): Pick<\n SearchBoxSuggestionElement,\n 'ariaLabel' | 'key' | 'part' | 'hideIfLast'\n> => {\n return {\n key: 'recent-query-clear',\n ariaLabel: i18n.t('clear-recent-searches', {\n interpolation: {escapeValue: false},\n }),\n part: 'recent-query-title-item suggestion-divider',\n hideIfLast: true,\n };\n};\n\nexport const RecentQueriesContainer: FunctionalComponent = (_, children) => {\n return (\n <div\n part=\"recent-query-content\"\n class=\"flex items-center text-left break-all\"\n >\n {children}\n </div>\n );\n};\n\ninterface RecentQueryIconProps {\n icon: string;\n}\n\nexport const RecentQueryIcon: FunctionalComponent<RecentQueryIconProps> = ({\n icon,\n}) => {\n return (\n <atomic-icon\n part=\"recent-query-icon\"\n icon={icon}\n class=\"mr-2 h-4 w-4 shrink-0\"\n ></atomic-icon>\n );\n};\n\ninterface RecentQueryTextProps {\n query: string;\n value: string;\n}\n\nexport const RecentQueryText: FunctionalComponent<RecentQueryTextProps> = ({\n query,\n value,\n}) => {\n if (query === '') {\n return (\n <span part=\"recent-query-text\" class=\"line-clamp-2 break-all\">\n {value}\n </span>\n );\n }\n return (\n <span\n part=\"recent-query-text\"\n class=\"line-clamp-2 break-all\"\n innerHTML={HighlightUtils.highlightString({\n content: value,\n openingDelimiter:\n '<span part=\"recent-query-text-highlight\" class=\"font-bold\">',\n closingDelimiter: '</span>',\n highlights: [\n {\n offset: query.length,\n length: value.length - query.length,\n },\n ],\n })}\n ></span>\n );\n};\n\ninterface RecentQueryClearProps {\n i18n: i18n;\n}\n\nexport const RecentQueryClear: FunctionalComponent<RecentQueryClearProps> = ({\n i18n,\n}) => {\n return (\n <div part=\"recent-query-title-content\" class=\"flex w-full justify-between\">\n <span class=\"font-bold\" part=\"recent-query-title\">\n {i18n.t('recent-searches')}\n </span>\n <span part=\"recent-query-clear\">{i18n.t('clear')}</span>\n </div>\n );\n};\n","import {\n buildRecentQueriesList,\n RecentQueriesList,\n SearchBox,\n} from '@coveo/headless';\nimport {Component, Element, Prop, State, h} from '@stencil/core';\nimport Clock from '../../../../images/clock.svg';\nimport {SafeStorage, StorageItems} from '../../../../utils/local-storage-utils';\nimport {once} from '../../../../utils/utils';\nimport {\n getPartialRecentQueryClearElement,\n getPartialRecentQueryElement,\n RecentQueriesContainer,\n RecentQueryClear,\n RecentQueryIcon,\n RecentQueryText,\n} from '../../../common/suggestions/stencil-recent-queries';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n} from '../../../common/suggestions/suggestions-events';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-types';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-search-box-recent-queries` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of recent query suggestions.\n */\n@Component({\n tag: 'atomic-search-box-recent-queries',\n shadow: true,\n})\nexport class AtomicSearchBoxRecentQueries {\n private bindings!: SearchBoxSuggestionsBindings<SearchBox, Bindings>;\n private recentQueriesList!: RecentQueriesList;\n private storage!: SafeStorage;\n\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The SVG icon to display.\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() public icon?: string;\n\n /**\n * The maximum number of suggestions that will be displayed if the user has typed something into the input field.\n */\n @Prop({reflect: true}) public maxWithQuery = 3;\n /**\n * The maximum number of suggestions that will be displayed initially when the input field is empty.\n */\n @Prop({reflect: true}) public maxWithoutQuery?: number;\n\n componentWillLoad() {\n try {\n dispatchSearchBoxSuggestionsEvent<SearchBox, Bindings>(\n (bindings) => {\n this.bindings = bindings;\n return this.initialize();\n },\n this.host,\n ['atomic-search-box']\n );\n } catch (error) {\n this.error = error as Error;\n }\n }\n\n private renderIcon() {\n return this.icon || Clock;\n }\n\n private initialize(): SearchBoxSuggestions {\n this.storage = new SafeStorage();\n this.recentQueriesList = buildRecentQueriesList(this.bindings.engine, {\n initialState: {queries: this.retrieveLocalStorage()},\n options: {maxLength: 1000, clearFilters: this.bindings.clearFilters},\n });\n\n this.recentQueriesList.subscribe(() => this.updateLocalStorage());\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n renderItems: () => this.renderItems(),\n };\n }\n\n private retrieveLocalStorage() {\n return this.storage.getParsedJSON(StorageItems.RECENT_QUERIES, []);\n }\n\n private updateLocalStorage() {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return this.disableFeature();\n }\n\n return this.storage.setJSON(\n StorageItems.RECENT_QUERIES,\n this.recentQueriesList.state.queries\n );\n }\n\n private warnUser = once(() =>\n this.bindings.engine.logger.warn(\n 'Because analytics are disabled, the recent queries feature is deactivated.'\n )\n );\n\n private disableFeature() {\n this.warnUser();\n this.storage.removeItem(StorageItems.RECENT_QUERIES);\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return [];\n }\n\n const query = this.bindings.searchBoxController.state.value;\n const hasQuery = query !== '';\n const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;\n const filteredQueries = this.recentQueriesList.state.queries\n .filter((recentQuery) =>\n recentQuery.toLowerCase().startsWith(query.toLowerCase())\n )\n .slice(0, max);\n\n const suggestionElements: SearchBoxSuggestionElement[] =\n filteredQueries.map((value) => this.renderItem(value));\n if (suggestionElements.length) {\n suggestionElements.unshift(this.renderClear());\n }\n\n return suggestionElements;\n }\n\n private renderClear(): SearchBoxSuggestionElement {\n const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);\n\n return {\n ...partialItem,\n content: <RecentQueryClear i18n={this.bindings.i18n} />,\n onSelect: () => {\n this.recentQueriesList.clear();\n this.bindings.triggerSuggestions();\n },\n };\n }\n\n private renderItem(value: string): SearchBoxSuggestionElement {\n const query = this.bindings.searchBoxController.state.value;\n const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);\n return {\n ...partialItem,\n content: (\n <RecentQueriesContainer>\n <RecentQueryIcon icon={this.renderIcon()} />\n <RecentQueryText query={query} value={value} />\n </RecentQueriesContainer>\n ),\n\n onSelect: () => {\n if (this.bindings.isStandalone) {\n this.bindings.searchBoxController.updateText(value);\n this.bindings.searchBoxController.submit();\n return;\n }\n\n this.recentQueriesList.executeRecentQuery(\n this.recentQueriesList.state.queries.indexOf(value)\n );\n },\n };\n }\n\n public render() {\n if (this.error) {\n return (\n <atomic-component-error\n element={this.host}\n error={this.error}\n ></atomic-component-error>\n );\n }\n }\n}\n"],"version":3}
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- const Clock = `<svg fill="none" stroke="currentColor" stroke-linejoin="round" stroke-linecap="round" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><circle cx="8" cy="8" r="7.5"/><path d="m8.5 4.5v4"/><path d="m10.3066 10.1387-1.80932-1.5768"/></svg>`;
4
-
5
- exports.Clock = Clock;
6
-
7
- //# sourceMappingURL=clock-f03ff827.js.map
@@ -1 +0,0 @@
1
- {"file":"clock-f03ff827.js","mappings":";;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"display-options-14f05862.js","mappings":";;;;AAQA,SAAS,eAAe,CAAC,OAA0B;IACjD,QAAQ,OAAO;QACb,KAAK,MAAM;YACT,OAAO,cAAc,CAAC;QACxB,KAAK,OAAO;YACV,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,cAAc,CAAC;KACzB;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAA2B;IAClD,QAAQ,OAAO;QACb,KAAK,aAAa;YAChB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,iBAAiB,CAAC;QAC3B;YACE,OAAO,gBAAgB,CAAC;KAC3B;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAA2B;IAChD,QAAQ,KAAK;QACX,KAAK,OAAO;YACV,OAAO,aAAa,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,YAAY,CAAC;KACvB;AACH,CAAC;SAEe,yBAAyB,CACvC,OAA0B,EAC1B,OAA2B,EAC3B,KAA2B,EAC3B,SAAkB,EAClB,YAAqB;IAErB,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/D,IAAI,SAAS,EAAE;QACb,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzB;IAED,IAAI,YAAY,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7B;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;SAEe,qBAAqB,CACnC,OAA0B,EAC1B,OAA2B,EAC3B,KAA2B;IAE3B,MAAM,OAAO,GAAG;QACd,eAAe,CAAC,OAAO,CAAC;QACxB,eAAe,CAAC,OAAO,CAAC;QACxB,aAAa,CAAC,KAAK,CAAC;KACrB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;MAEY,UAAU;IAMrB,YACE,QAAwB,EACxB,OAA0B,EAC1B,OAA2B,EAC3B,SAA+B;QAE/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;IAEO,wBAAwB;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAC/B,8BAA8B,CAC/B,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,SAAiC,CAAC;KAC1C;IAEO,UAAU,CAAC,OAA2B;QAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CACvD,CAAC;KACH;IAEM,UAAU,CAAC,WAAoB;QACpC,MAAM,OAAO,GAAG,qBAAqB,CACnC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,wBAAwB,EAAE,IAAI,IAAI,CAAC,SAAS,CAClD,CAAC;QACF,IACE,WAAW;cACPA,yBAAgB,CAAC,WAAW,CAAC;cAC7BA,yBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EACnC;YACA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC/B;QACD,OAAO,OAAO,CAAC;KAChB;;;;;;;","names":["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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"insight-layout-355a94dd.js","mappings":";;;;AAKA,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAC3C,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AAC1D,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AACtD,MAAM,eAAe,GAAG;IACtB,8BAA8B;IAC9B,4BAA4B;IAC5B,+BAA+B;CAChC,CAAC;AACF,MAAM,qBAAqB,GAAG;IAC5B,0CAA0C;IAC1C,8BAA8B;CAC/B,CAAC;AACF,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;SAElD,gBAAgB,CAAC,gBAAwB;IACvD,OAAO,+BAA+B,gBAAgB,GAAG,CAAC;AAC5D,CAAC;SAEe,kBAAkB,CAAC,OAAoB,EAAE,MAAe;IACtE,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACtB,MAAM,cAAc,GAAG,yBAAyB,EAAE,EAAE,CAAC;IAErD,MAAM,OAAO,GAAG,OAAO,CACrBA,oBAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAC5D,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM;UACzB;IACF,cAAc;;;;;;IAMd,cAAc,IAAI,mBAAmB;;IAErC;UACE,EAAE,CAAC;IAEP,MAAM,MAAM,GAAG,GAAGC,wBAAe,CAAC,QAAQ,CAAC;;;;;;;;;;;QAWrC,CAAC,OAAO,GAAG,yBAAyB,GAAG,EAAE;;;MAG3CA,wBAAe,CAAC,QAAQ,CAAC,IAAI,iBAAiB;;;;;MAK9C,eAAe,CAAC,GAAG,CACnB,CAAC,cAAc,KAAK,GAAGA,wBAAe,CAAC,QAAQ,CAAC,IAAI,cAAc;;MAElE,CACD;;MAECA,wBAAe,CAAC,QAAQ,CAAC,IAAI,YAAY;;;KAG1C,CAAC;IAEJ,MAAM,MAAM,GAAG,GAAGA,wBAAe,CAAC,QAAQ,CAAC;;;KAGxC,CAAC;IAEJ,MAAM,OAAO,GAAG;MACZA,wBAAe,CAAC,SAAS,CAAC;;;;MAI1BA,wBAAe,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;;;;MAI7DA,wBAAe,CAAC,SAAS,CAAC,IAAI,uBAAuB;;;;KAItD,CAAC;IAEJ,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;SAC7C,MAAM,CAAC,CAAC,WAAW,KAAK,WAAW,KAAK,EAAE,CAAC;SAC3C,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB;;;;;","names":["findSection","sectionSelector"],"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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"result-template-common-88359dad.js","mappings":"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","names":["isResultSectionNode","isVisualNode","isElementNode","tableElementTagName","aggregate","h","ResultTemplatesHelpers"],"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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"sections-4b4af2f8.js","mappings":";;SAYgB,WAAW,CAAC,OAAoB,EAAE,OAAgB;IAChE,OAAO,OAAO,CAAC,aAAa,CAC1B,eAAe,CAAC,OAAO,CAAC,CACK,CAAC;AAClC,CAAC;SAEe,eAAe,CAAC,OAAgB;IAC9C,OAAO,kCAAkC,OAAO,IAAI,CAAC;AACvD;;;;;","names":[],"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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"sections-fbb93b53.js","mappings":";;;;AAEA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,8BAA8B;IAC9B,8BAA8B;IAC9B,+BAA+B;IAC/B,6BAA6B;IAC7B,sCAAsC;IACtC,kCAAkC;IAClC,+BAA+B;IAC/B,uCAAuC;IACvC,gCAAgC;CACxB,CAAC,CAAC;AAEZ,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,+BAA+B;IAC/B,+BAA+B;IAC/B,gCAAgC;IAChC,6BAA6B;IAC7B,iCAAiC;IACjC,mCAAmC;IACnC,oCAAoC;IACpC,wCAAwC;IACxC,iCAAiC;CACzB,CAAC,CAAC;AAEZ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC;SAMvD,mBAAmB,CAAC,OAAa;IAC/C,IAAI,CAACA,mBAAa,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,KAAK,CAAC;KACd;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAwB,CAAC,CAAC;AAC1E,CAAC;SAEe,gBAAgB,CAAC,OAA2C;IAC1E,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1E;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE;;;;;","names":["isElementNode"],"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"],"version":3}