@coveo/atomic 3.27.5-pre.fc6b95219b → 3.28.0-pre.1b995035ea

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 (655) 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 -8
  4. package/dist/atomic/components/_index.js +0 -4
  5. package/dist/atomic/components/atomic-aria-live2.js +1 -1
  6. package/dist/atomic/components/atomic-category-facet.js +1 -1
  7. package/dist/atomic/components/atomic-citation.js +1 -1
  8. package/dist/atomic/components/atomic-commerce-category-facet2.js +1 -1
  9. package/dist/atomic/components/atomic-commerce-numeric-facet2.js +2 -2
  10. package/dist/atomic/components/atomic-commerce-query-error.js +1 -1
  11. package/dist/atomic/components/atomic-commerce-query-error.js.map +1 -1
  12. package/dist/atomic/components/atomic-commerce-recommendation-interface.js +1 -1
  13. package/dist/atomic/components/atomic-commerce-refine-modal2.js +1 -1
  14. package/dist/atomic/components/atomic-commerce-refine-toggle.js +1 -1
  15. package/dist/atomic/components/atomic-commerce-timeframe-facet2.js +1 -1
  16. package/dist/atomic/components/atomic-facet-manager.js +1 -1
  17. package/dist/atomic/components/atomic-facet.js +1 -1
  18. package/dist/atomic/components/atomic-format-currency.js +1 -1
  19. package/dist/atomic/components/atomic-format-number.js +1 -1
  20. package/dist/atomic/components/atomic-format-unit.js +1 -1
  21. package/dist/atomic/components/atomic-generated-answer-feedback-modal.js +1 -1
  22. package/dist/atomic/components/atomic-generated-answer.js +14 -0
  23. package/dist/atomic/components/atomic-generated-answer.js.map +1 -1
  24. package/dist/atomic/components/atomic-html2.js +1 -1
  25. package/dist/atomic/components/atomic-insight-edit-toggle.js +1 -1
  26. package/dist/atomic/components/atomic-insight-facet.js +1 -1
  27. package/dist/atomic/components/atomic-insight-folded-result-list.js +1 -1
  28. package/dist/atomic/components/atomic-insight-full-search-button.js +1 -1
  29. package/dist/atomic/components/atomic-insight-generated-answer.js +14 -0
  30. package/dist/atomic/components/atomic-insight-generated-answer.js.map +1 -1
  31. package/dist/atomic/components/atomic-insight-history-toggle.js +1 -1
  32. package/dist/atomic/components/atomic-insight-no-results.js +1 -1
  33. package/dist/atomic/components/atomic-insight-numeric-facet.js +1 -1
  34. package/dist/atomic/components/atomic-insight-pager.js +3 -3
  35. package/dist/atomic/components/atomic-insight-query-error.js +1 -1
  36. package/dist/atomic/components/atomic-insight-query-error.js.map +1 -1
  37. package/dist/atomic/components/atomic-insight-refine-modal2.js +2 -2
  38. package/dist/atomic/components/atomic-insight-refine-toggle.js +1 -1
  39. package/dist/atomic/components/atomic-insight-result-attach-to-case-indicator.js +1 -1
  40. package/dist/atomic/components/atomic-insight-result-children.js +1 -1
  41. package/dist/atomic/components/atomic-insight-result-list.js +1 -1
  42. package/dist/atomic/components/atomic-insight-result-quickview-action.js +1 -1
  43. package/dist/atomic/components/atomic-insight-result2.js +1 -1
  44. package/dist/atomic/components/atomic-insight-search-box.js +2 -2
  45. package/dist/atomic/components/atomic-insight-smart-snippet-feedback-modal2.js +2 -2
  46. package/dist/atomic/components/atomic-insight-tabs.js +1 -1
  47. package/dist/atomic/components/atomic-insight-user-actions-session2.js +1 -1
  48. package/dist/atomic/components/atomic-insight-user-actions-toggle.js +1 -1
  49. package/dist/atomic/components/atomic-ipx-body2.js +2 -2
  50. package/dist/atomic/components/atomic-ipx-button.js +2 -2
  51. package/dist/atomic/components/atomic-ipx-embedded.js +1 -1
  52. package/dist/atomic/components/atomic-ipx-modal.js +2 -2
  53. package/dist/atomic/components/atomic-ipx-recs-list.js +1 -1
  54. package/dist/atomic/components/atomic-ipx-refine-modal2.js +1 -1
  55. package/dist/atomic/components/atomic-ipx-refine-toggle.js +1 -1
  56. package/dist/atomic/components/atomic-ipx-result-link.js +1 -1
  57. package/dist/atomic/components/atomic-ipx-tabs.js +1 -1
  58. package/dist/atomic/components/atomic-load-more-results.js +1 -1
  59. package/dist/atomic/components/atomic-modal2.js +2 -2
  60. package/dist/atomic/components/atomic-no-results.js +1 -1
  61. package/dist/atomic/components/atomic-numeric-facet.js +1 -1
  62. package/dist/atomic/components/atomic-pager.js +3 -3
  63. package/dist/atomic/components/atomic-product-children.js +1 -7
  64. package/dist/atomic/components/atomic-product-children.js.map +1 -1
  65. package/dist/atomic/components/atomic-product-description.js +2 -14
  66. package/dist/atomic/components/atomic-product-description.js.map +1 -1
  67. package/dist/atomic/components/atomic-product-excerpt.js +2 -14
  68. package/dist/atomic/components/atomic-product-excerpt.js.map +1 -1
  69. package/dist/atomic/components/atomic-product-link.js +1 -13
  70. package/dist/atomic/components/atomic-product-link.js.map +1 -1
  71. package/dist/atomic/components/atomic-product-price.js +1 -1
  72. package/dist/atomic/components/atomic-query-error.js +1 -1
  73. package/dist/atomic/components/atomic-query-error.js.map +1 -1
  74. package/dist/atomic/components/atomic-query-summary.js +1 -1
  75. package/dist/atomic/components/atomic-quickview-modal2.js +1 -1
  76. package/dist/atomic/components/atomic-quickview.js +1 -1
  77. package/dist/atomic/components/atomic-recs-error.js +1 -1
  78. package/dist/atomic/components/atomic-recs-error.js.map +1 -1
  79. package/dist/atomic/components/atomic-recs-list.js +1 -1
  80. package/dist/atomic/components/atomic-refine-modal2.js +1 -1
  81. package/dist/atomic/components/atomic-refine-toggle.js +1 -1
  82. package/dist/atomic/components/atomic-relevance-inspector2.js +2 -2
  83. package/dist/atomic/components/atomic-result-children.js +1 -1
  84. package/dist/atomic/components/atomic-result-fields-list.js +1 -1
  85. package/dist/atomic/components/atomic-result-link.js +1 -1
  86. package/dist/atomic/components/atomic-result-list.js +1 -1
  87. package/dist/atomic/components/atomic-result-placeholder2.js +2 -2
  88. package/dist/atomic/components/atomic-result-table-placeholder2.js +1 -1
  89. package/dist/atomic/components/atomic-result-text2.js +45 -2
  90. package/dist/atomic/components/atomic-result-text2.js.map +1 -1
  91. package/dist/atomic/components/atomic-results-per-page.js +68 -3
  92. package/dist/atomic/components/atomic-results-per-page.js.map +1 -1
  93. package/dist/atomic/components/atomic-search-box-query-suggestions2.js +1 -1
  94. package/dist/atomic/components/atomic-search-box-recent-queries2.js +1 -1
  95. package/dist/atomic/components/atomic-search-box.js +4 -4
  96. package/dist/atomic/components/atomic-smart-snippet-answer2.js +1 -1
  97. package/dist/atomic/components/atomic-smart-snippet-collapse-wrapper2.js +2 -2
  98. package/dist/atomic/components/atomic-smart-snippet-expandable-answer2.js +1 -1
  99. package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
  100. package/dist/atomic/components/atomic-smart-snippet-source2.js +1 -1
  101. package/dist/atomic/components/atomic-sort-dropdown.js +2 -2
  102. package/dist/atomic/components/atomic-sort-expression.js +1 -1
  103. package/dist/atomic/components/atomic-suggestion-renderer2.js +1 -1
  104. package/dist/atomic/components/atomic-tab-manager.js +1 -1
  105. package/dist/atomic/components/components/commerce/atomic-commerce-products-per-page/atomic-commerce-products-per-page.js +126 -0
  106. package/dist/atomic/components/components/commerce/atomic-commerce-text/atomic-commerce-text.js +54 -0
  107. package/dist/atomic/components/components/commerce/atomic-product-template/atomic-product-template.js +2 -0
  108. package/dist/atomic/components/components/commerce/atomic-product-text/atomic-product-text.js +135 -0
  109. package/dist/atomic/components/components/commerce/index.js +3 -0
  110. package/dist/atomic/components/components/commerce/lazy-index.js +3 -0
  111. package/dist/atomic/components/components/commerce/product-template-component-utils/error.js +6 -0
  112. package/dist/atomic/components/components/commerce/product-template-component-utils/product-utils.js +35 -0
  113. package/dist/atomic/components/components/common/atomic-layout-section/atomic-layout-section.js +31 -0
  114. package/dist/atomic/components/components/common/fieldset-group.js +5 -0
  115. package/dist/atomic/components/components/common/index.js +1 -0
  116. package/dist/atomic/components/components/common/item-text/field-warning.js +6 -0
  117. package/dist/atomic/components/components/common/item-text/item-text-fallback.js +15 -0
  118. package/dist/atomic/components/components/common/item-text/item-text-highlighted.js +17 -0
  119. package/dist/atomic/components/components/common/item-text/render-highlights.js +13 -0
  120. package/dist/atomic/components/components/common/items-per-page/choices.js +47 -0
  121. package/dist/atomic/components/components/common/items-per-page/error.js +18 -0
  122. package/dist/atomic/components/components/common/items-per-page/label.js +10 -0
  123. package/dist/atomic/components/components/common/items-per-page/validate.js +19 -0
  124. package/dist/atomic/components/components/common/lazy-index.js +1 -0
  125. package/dist/atomic/components/facet-date-input.js +3 -3
  126. package/dist/atomic/components/facet-number-input.js +2 -2
  127. package/dist/atomic/components/global/environment.js +1 -1
  128. package/dist/atomic/components/index.js.map +1 -1
  129. package/dist/atomic/components/interface-common-stencil.js +1 -1
  130. package/dist/atomic/components/product-utils.js +1 -8
  131. package/dist/atomic/components/product-utils.js.map +1 -1
  132. package/dist/atomic/components/sections.js.map +1 -1
  133. package/dist/atomic/components/{expandable-text.js → stencil-expandable-text.js} +1 -1
  134. package/dist/atomic/components/stencil-expandable-text.js.map +1 -0
  135. package/dist/atomic/components/stencil-link.js.map +1 -1
  136. package/dist/atomic/components/tab-button.js +1 -1
  137. package/dist/atomic/components/tab-popover.js +1 -1
  138. package/dist/atomic/components/utils/object-utils.js +13 -0
  139. package/dist/atomic/{p-a535a268.entry.js → p-0267a585.entry.js} +2 -2
  140. package/dist/atomic/{p-9a161d8f.entry.js → p-0a7b0daa.entry.js} +2 -2
  141. package/dist/atomic/{p-f7eab69a.entry.js → p-0b0ea7d3.entry.js} +2 -2
  142. package/dist/atomic/{p-07cd7e4a.entry.js → p-135be5aa.entry.js} +2 -2
  143. package/dist/atomic/{p-e739825f.entry.js → p-1cc97adc.entry.js} +2 -2
  144. package/dist/atomic/{p-de00bdd6.js → p-1d02a670.js} +1 -1
  145. package/dist/atomic/p-1d02a670.js.map +1 -0
  146. package/dist/atomic/{p-005d34a4.entry.js → p-29d27418.entry.js} +2 -2
  147. package/dist/atomic/{p-5250f36d.js → p-2dbdd073.js} +2 -2
  148. package/dist/atomic/{p-4dbb3798.entry.js → p-2f0cb73c.entry.js} +2 -2
  149. package/dist/atomic/{p-bad08ec3.entry.js → p-2ff906b9.entry.js} +2 -2
  150. package/dist/atomic/{p-908fa9c8.entry.js → p-306c83ea.entry.js} +2 -2
  151. package/dist/atomic/{p-f5ea03f0.entry.js → p-32b26cd0.entry.js} +2 -2
  152. package/dist/atomic/{p-dc463f0b.entry.js → p-32c90fe9.entry.js} +2 -2
  153. package/dist/atomic/{p-4e1f7c89.entry.js → p-36225d4f.entry.js} +2 -2
  154. package/dist/atomic/{p-84b36ec2.entry.js → p-3ec18de9.entry.js} +2 -2
  155. package/dist/atomic/{p-8a337769.entry.js → p-3f42a2db.entry.js} +2 -2
  156. package/dist/atomic/{p-c74c1b41.entry.js → p-45b26cc7.entry.js} +2 -2
  157. package/dist/atomic/{p-1c06ca0c.entry.js → p-46522ee4.entry.js} +2 -2
  158. package/dist/atomic/{p-cfec0988.entry.js → p-47ee9d37.entry.js} +2 -2
  159. package/dist/atomic/{p-4af746a9.entry.js → p-50b9a5d2.entry.js} +2 -2
  160. package/dist/atomic/{p-756462de.entry.js → p-51c5acfc.entry.js} +2 -2
  161. package/dist/atomic/{p-1202d6cc.entry.js → p-543e811e.entry.js} +2 -2
  162. package/dist/atomic/{p-1243448d.entry.js → p-545f7fb1.entry.js} +2 -2
  163. package/dist/atomic/{p-dc9313c5.entry.js → p-60527741.entry.js} +2 -2
  164. package/dist/atomic/{p-d4ab4985.entry.js → p-60a9e718.entry.js} +2 -2
  165. package/dist/atomic/{p-1c5502a8.entry.js → p-66683abd.entry.js} +2 -2
  166. package/dist/atomic/{p-3024c394.entry.js → p-67315415.entry.js} +2 -2
  167. package/dist/atomic/{p-baa3b8ee.entry.js → p-689e063d.entry.js} +2 -2
  168. package/dist/atomic/p-690b5853.entry.js +2 -0
  169. package/dist/atomic/{p-447f0772.entry.js → p-70ab347b.entry.js} +2 -2
  170. package/dist/atomic/{p-dc051fee.entry.js → p-76122df5.entry.js} +2 -2
  171. package/dist/atomic/{p-4d8ec431.entry.js → p-7d1f8d9c.entry.js} +2 -2
  172. package/dist/atomic/{p-d7c44977.entry.js → p-80dc3bab.entry.js} +2 -2
  173. package/dist/atomic/{p-c265c67d.entry.js → p-8392e900.entry.js} +2 -2
  174. package/dist/atomic/{p-58c8065c.entry.js → p-8d7f57d9.entry.js} +2 -2
  175. package/dist/atomic/{p-bb5c19a7.entry.js → p-8e09f796.entry.js} +2 -2
  176. package/dist/atomic/{p-1bddfac7.js → p-94e22484.js} +2 -2
  177. package/dist/atomic/{p-79e1bcc1.entry.js → p-95942ba2.entry.js} +2 -2
  178. package/dist/atomic/{p-00ba0b42.entry.js → p-99604083.entry.js} +2 -2
  179. package/dist/atomic/p-99604083.entry.js.map +1 -0
  180. package/dist/atomic/{p-a896c7b8.entry.js → p-9a08dad7.entry.js} +2 -2
  181. package/dist/atomic/{p-d5c709cd.entry.js → p-9ae88402.entry.js} +2 -2
  182. package/dist/atomic/p-9c7dbbdf.js.map +1 -1
  183. package/dist/atomic/{p-04c726de.entry.js → p-9d2230db.entry.js} +2 -2
  184. package/dist/atomic/p-9d2230db.entry.js.map +1 -0
  185. package/dist/atomic/{p-52abba32.entry.js → p-9eb108c9.entry.js} +2 -2
  186. package/dist/atomic/{p-558f3bd6.entry.js → p-a046cf06.entry.js} +2 -2
  187. package/dist/atomic/p-a1c4ac09.js +2 -0
  188. package/dist/atomic/p-a1c4ac09.js.map +1 -0
  189. package/dist/atomic/{p-9fb18d3e.entry.js → p-a3169f59.entry.js} +2 -2
  190. package/dist/atomic/{p-d1e606f2.entry.js → p-a4983d49.entry.js} +2 -2
  191. package/dist/atomic/{p-891f0c50.entry.js → p-a772b365.entry.js} +2 -2
  192. package/dist/atomic/{p-ccff6c87.entry.js → p-a8281e9b.entry.js} +2 -2
  193. package/dist/atomic/{p-c4dd47ca.entry.js → p-ab5eec3d.entry.js} +2 -2
  194. package/dist/atomic/{p-d72e52b2.entry.js → p-ab6e303e.entry.js} +2 -2
  195. package/dist/atomic/p-ab6e303e.entry.js.map +1 -0
  196. package/dist/atomic/{p-2b11517f.entry.js → p-b19a8cbb.entry.js} +2 -2
  197. package/dist/atomic/{p-4b20cdb3.entry.js → p-b4d47ca9.entry.js} +2 -2
  198. package/dist/atomic/{p-0ea5cbb8.entry.js → p-b4dfe5b2.entry.js} +2 -2
  199. package/dist/atomic/p-b747e4a9.entry.js +2 -0
  200. package/dist/atomic/{p-af8999b1.entry.js → p-b7824e0e.entry.js} +2 -2
  201. package/dist/atomic/{p-1cb6a01c.entry.js → p-ba6a30a7.entry.js} +2 -2
  202. package/dist/atomic/p-ba6a30a7.entry.js.map +1 -0
  203. package/dist/atomic/{p-b3604b54.entry.js → p-bd32ca3c.entry.js} +2 -2
  204. package/dist/atomic/p-bd32ca3c.entry.js.map +1 -0
  205. package/dist/atomic/{p-e7b8ee60.entry.js → p-be13ed5c.entry.js} +2 -2
  206. package/dist/atomic/p-befca41f.entry.js +2 -0
  207. package/dist/atomic/{p-6d264c97.entry.js → p-bfeefcaa.entry.js} +2 -2
  208. package/dist/atomic/{p-34cff6c8.entry.js → p-c0d7b26d.entry.js} +2 -2
  209. package/dist/atomic/{p-7d1ca26f.entry.js → p-c13d4039.entry.js} +2 -2
  210. package/dist/atomic/{p-6d083c4e.entry.js → p-c4f042ae.entry.js} +2 -2
  211. package/dist/atomic/{p-f96655f4.entry.js → p-c83f9cff.entry.js} +2 -2
  212. package/dist/atomic/{p-4e3518c2.entry.js → p-cd87574b.entry.js} +2 -2
  213. package/dist/atomic/{p-e260c799.entry.js → p-ce4e939b.entry.js} +2 -2
  214. package/dist/atomic/p-ce4e939b.entry.js.map +1 -0
  215. package/dist/atomic/{p-fc81ef98.entry.js → p-d1efd50f.entry.js} +2 -2
  216. package/dist/atomic/p-d1efd50f.entry.js.map +1 -0
  217. package/dist/atomic/{p-963a3e18.entry.js → p-d30057a0.entry.js} +2 -2
  218. package/dist/atomic/{p-d5c308fc.entry.js → p-d4aba9f9.entry.js} +2 -2
  219. package/dist/atomic/{p-037fbb27.entry.js → p-d62469e0.entry.js} +2 -2
  220. package/dist/atomic/{p-dd6e18bb.entry.js → p-d69756ae.entry.js} +2 -2
  221. package/dist/atomic/p-d76c5232.entry.js +2 -0
  222. package/dist/atomic/{p-68bf4184.entry.js → p-d827c148.entry.js} +2 -2
  223. package/dist/atomic/{p-cbe083d3.entry.js → p-dd8c6bdd.entry.js} +2 -2
  224. package/dist/atomic/{p-26ec2d6d.entry.js → p-ddd52850.entry.js} +2 -2
  225. package/dist/atomic/{p-c751940f.entry.js → p-e44155cc.entry.js} +2 -2
  226. package/dist/atomic/{p-5e7f50a5.entry.js → p-e4754fd0.entry.js} +2 -2
  227. package/dist/atomic/{p-bd109981.entry.js → p-e604fd29.entry.js} +2 -2
  228. package/dist/atomic/{p-22a0d1b9.entry.js → p-ea5d2736.entry.js} +2 -2
  229. package/dist/atomic/{p-75d11764.entry.js → p-eab28672.entry.js} +2 -2
  230. package/dist/atomic/p-ec0161b7.entry.js +2 -0
  231. package/dist/atomic/p-ec0161b7.entry.js.map +1 -0
  232. package/dist/atomic/{p-6c5524dc.entry.js → p-ec6bc15b.entry.js} +2 -2
  233. package/dist/atomic/p-eebb168b.entry.js +2 -0
  234. package/dist/atomic/p-f1bbe060.entry.js +2 -0
  235. package/dist/atomic/p-f1bbe060.entry.js.map +1 -0
  236. package/dist/atomic/{p-e36f1951.entry.js → p-f3182312.entry.js} +2 -2
  237. package/dist/atomic/p-f3182312.entry.js.map +1 -0
  238. package/dist/atomic/{p-6083c281.js → p-f45d8b3e.js} +1 -1
  239. package/dist/atomic/p-f45d8b3e.js.map +1 -0
  240. package/dist/atomic/{p-1de6a3e2.entry.js → p-f4a1bfe3.entry.js} +2 -2
  241. package/dist/atomic/{p-d1434df4.entry.js → p-f4b98113.entry.js} +2 -2
  242. package/dist/atomic/{p-a15f6b8c.entry.js → p-f6283657.entry.js} +2 -2
  243. package/dist/atomic/{p-e961a0cc.entry.js → p-f7f8096a.entry.js} +2 -2
  244. package/dist/atomic/{p-f8fb398c.entry.js → p-fb0bdcdb.entry.js} +2 -2
  245. package/dist/atomic/p-fbbbc454.entry.js +2 -0
  246. package/dist/atomic/{p-dea13af7.entry.js → p-fd9d1c3f.entry.js} +2 -2
  247. package/dist/cjs/_loader.cjs.js +1 -1
  248. package/dist/cjs/{analytics-config-4caf672d.js → analytics-config-54e62aa5.js} +2 -2
  249. package/dist/cjs/{analytics-config-4caf672d.js.map → analytics-config-54e62aa5.js.map} +1 -1
  250. package/dist/cjs/atomic-aria-live.cjs.entry.js +1 -1
  251. package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
  252. package/dist/cjs/atomic-citation.cjs.entry.js +1 -1
  253. package/dist/cjs/atomic-commerce-category-facet_5.cjs.entry.js +4 -4
  254. package/dist/cjs/atomic-commerce-facet-number-input_2.cjs.entry.js +3 -3
  255. package/dist/cjs/atomic-commerce-query-error.cjs.entry.js +2 -2
  256. package/dist/cjs/atomic-commerce-query-error.cjs.entry.js.map +1 -1
  257. package/dist/cjs/atomic-commerce-recommendation-interface.cjs.entry.js +2 -2
  258. package/dist/cjs/atomic-commerce-refine-modal.cjs.entry.js +1 -1
  259. package/dist/cjs/atomic-commerce-refine-toggle.cjs.entry.js +1 -1
  260. package/dist/cjs/atomic-facet-manager.cjs.entry.js +1 -1
  261. package/dist/cjs/atomic-facet-number-input.cjs.entry.js +2 -2
  262. package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
  263. package/dist/cjs/atomic-focus-trap_2.cjs.entry.js +2 -2
  264. package/dist/cjs/atomic-format-currency.cjs.entry.js +1 -1
  265. package/dist/cjs/atomic-format-number.cjs.entry.js +1 -1
  266. package/dist/cjs/atomic-format-unit.cjs.entry.js +1 -1
  267. package/dist/cjs/atomic-generated-answer-feedback-modal.cjs.entry.js +1 -1
  268. package/dist/cjs/atomic-generated-answer.cjs.entry.js +13 -0
  269. package/dist/cjs/atomic-generated-answer.cjs.entry.js.map +1 -1
  270. package/dist/cjs/atomic-html.cjs.entry.js +1 -1
  271. package/dist/cjs/atomic-insight-edit-toggle.cjs.entry.js +1 -1
  272. package/dist/cjs/atomic-insight-facet.cjs.entry.js +1 -1
  273. package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +1 -1
  274. package/dist/cjs/atomic-insight-full-search-button.cjs.entry.js +1 -1
  275. package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +13 -0
  276. package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js.map +1 -1
  277. package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js +1 -1
  278. package/dist/cjs/atomic-insight-interface.cjs.entry.js +2 -2
  279. package/dist/cjs/atomic-insight-no-results.cjs.entry.js +1 -1
  280. package/dist/cjs/atomic-insight-numeric-facet.cjs.entry.js +1 -1
  281. package/dist/cjs/atomic-insight-pager.cjs.entry.js +3 -3
  282. package/dist/cjs/atomic-insight-query-error.cjs.entry.js +2 -2
  283. package/dist/cjs/atomic-insight-query-error.cjs.entry.js.map +1 -1
  284. package/dist/cjs/atomic-insight-refine-modal.cjs.entry.js +2 -2
  285. package/dist/cjs/atomic-insight-refine-toggle.cjs.entry.js +1 -1
  286. package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js +1 -1
  287. package/dist/cjs/atomic-insight-result-children.cjs.entry.js +1 -1
  288. package/dist/cjs/atomic-insight-result-list.cjs.entry.js +1 -1
  289. package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js +1 -1
  290. package/dist/cjs/atomic-insight-result.cjs.entry.js +1 -1
  291. package/dist/cjs/atomic-insight-search-box.cjs.entry.js +2 -2
  292. package/dist/cjs/atomic-insight-smart-snippet-feedback-modal.cjs.entry.js +2 -2
  293. package/dist/cjs/atomic-insight-tabs.cjs.entry.js +1 -1
  294. package/dist/cjs/atomic-insight-user-actions-session_2.cjs.entry.js +1 -1
  295. package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +1 -1
  296. package/dist/cjs/atomic-ipx-body.cjs.entry.js +2 -2
  297. package/dist/cjs/atomic-ipx-button.cjs.entry.js +2 -2
  298. package/dist/cjs/atomic-ipx-embedded.cjs.entry.js +1 -1
  299. package/dist/cjs/atomic-ipx-modal.cjs.entry.js +2 -2
  300. package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +1 -1
  301. package/dist/cjs/atomic-ipx-refine-modal.cjs.entry.js +1 -1
  302. package/dist/cjs/atomic-ipx-refine-toggle.cjs.entry.js +1 -1
  303. package/dist/cjs/atomic-ipx-result-link.cjs.entry.js +1 -1
  304. package/dist/cjs/atomic-ipx-tabs.cjs.entry.js +1 -1
  305. package/dist/cjs/atomic-load-more-results.cjs.entry.js +1 -1
  306. package/dist/cjs/atomic-no-results.cjs.entry.js +1 -1
  307. package/dist/cjs/atomic-numeric-facet.cjs.entry.js +1 -1
  308. package/dist/cjs/atomic-pager.cjs.entry.js +3 -3
  309. package/dist/cjs/atomic-product-description.cjs.entry.js +2 -2
  310. package/dist/cjs/atomic-product-description.cjs.entry.js.map +1 -1
  311. package/dist/cjs/atomic-product-excerpt.cjs.entry.js +2 -2
  312. package/dist/cjs/atomic-product-excerpt.cjs.entry.js.map +1 -1
  313. package/dist/cjs/atomic-product-link.cjs.entry.js +1 -1
  314. package/dist/cjs/atomic-product-numeric-field-value.cjs.entry.js +1 -1
  315. package/dist/cjs/atomic-product-price.cjs.entry.js +2 -2
  316. package/dist/cjs/atomic-query-error.cjs.entry.js +2 -2
  317. package/dist/cjs/atomic-query-error.cjs.entry.js.map +1 -1
  318. package/dist/cjs/atomic-query-summary.cjs.entry.js +1 -1
  319. package/dist/cjs/atomic-quickview-modal.cjs.entry.js +1 -1
  320. package/dist/cjs/atomic-quickview.cjs.entry.js +1 -1
  321. package/dist/cjs/atomic-recs-error.cjs.entry.js +2 -2
  322. package/dist/cjs/atomic-recs-error.cjs.entry.js.map +1 -1
  323. package/dist/cjs/atomic-recs-interface.cjs.entry.js +2 -2
  324. package/dist/cjs/atomic-recs-list.cjs.entry.js +1 -1
  325. package/dist/cjs/atomic-refine-modal.cjs.entry.js +1 -1
  326. package/dist/cjs/atomic-refine-toggle.cjs.entry.js +1 -1
  327. package/dist/cjs/atomic-relevance-inspector.cjs.entry.js +2 -2
  328. package/dist/cjs/atomic-result-children.cjs.entry.js +1 -1
  329. package/dist/cjs/atomic-result-fields-list.cjs.entry.js +1 -1
  330. package/dist/cjs/atomic-result-link.cjs.entry.js +1 -1
  331. package/dist/cjs/atomic-result-list.cjs.entry.js +1 -1
  332. package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +3 -3
  333. package/dist/cjs/atomic-result-text_2.cjs.entry.js +46 -4
  334. package/dist/cjs/atomic-result-text_2.cjs.entry.js.map +1 -1
  335. package/dist/cjs/atomic-results-per-page.cjs.entry.js +71 -7
  336. package/dist/cjs/atomic-results-per-page.cjs.entry.js.map +1 -1
  337. package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +2 -2
  338. package/dist/cjs/atomic-search-box.cjs.entry.js +4 -4
  339. package/dist/cjs/atomic-search-interface.cjs.entry.js +2 -2
  340. package/dist/cjs/atomic-smart-snippet-answer_2.cjs.entry.js +2 -2
  341. package/dist/cjs/atomic-smart-snippet-collapse-wrapper_2.cjs.entry.js +3 -3
  342. package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
  343. package/dist/cjs/atomic-sort-dropdown.cjs.entry.js +2 -2
  344. package/dist/cjs/atomic-sort-expression.cjs.entry.js +1 -1
  345. package/dist/cjs/atomic-suggestion-renderer.cjs.entry.js +1 -1
  346. package/dist/cjs/atomic-tab-bar_2.cjs.entry.js +1 -1
  347. package/dist/cjs/atomic-tab-button.cjs.entry.js +1 -1
  348. package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
  349. package/dist/cjs/atomic.cjs.js +1 -1
  350. package/dist/cjs/index-757bc886.js +0 -12
  351. package/dist/cjs/{interface-common-stencil-61108e17.js → interface-common-stencil-d4086225.js} +2 -2
  352. package/dist/cjs/{interface-common-stencil-61108e17.js.map → interface-common-stencil-d4086225.js.map} +1 -1
  353. package/dist/cjs/{product-utils-9507462c.js → product-utils-f6c780e3.js} +1 -9
  354. package/dist/cjs/product-utils-f6c780e3.js.map +1 -0
  355. package/dist/cjs/sections-4b4af2f8.js.map +1 -1
  356. package/dist/cjs/{expandable-text-36fe9f8d.js → stencil-expandable-text-80915f74.js} +1 -1
  357. package/dist/cjs/stencil-expandable-text-80915f74.js.map +1 -0
  358. package/dist/cjs/{stencil-link-c6b12034.js → stencil-link-fbb2ab5c.js} +1 -1
  359. package/dist/cjs/stencil-link-fbb2ab5c.js.map +1 -0
  360. package/dist/cjs/version.cjs.js +2 -2
  361. package/dist/esm/_loader.js +1 -1
  362. package/dist/esm/{analytics-config-359b43de.js → analytics-config-6b5c6ac0.js} +2 -2
  363. package/dist/esm/{analytics-config-359b43de.js.map → analytics-config-6b5c6ac0.js.map} +1 -1
  364. package/dist/esm/atomic-aria-live.entry.js +1 -1
  365. package/dist/esm/atomic-category-facet.entry.js +1 -1
  366. package/dist/esm/atomic-citation.entry.js +1 -1
  367. package/dist/esm/atomic-commerce-category-facet_5.entry.js +4 -4
  368. package/dist/esm/atomic-commerce-facet-number-input_2.entry.js +3 -3
  369. package/dist/esm/atomic-commerce-query-error.entry.js +2 -2
  370. package/dist/esm/atomic-commerce-query-error.entry.js.map +1 -1
  371. package/dist/esm/atomic-commerce-recommendation-interface.entry.js +2 -2
  372. package/dist/esm/atomic-commerce-refine-modal.entry.js +1 -1
  373. package/dist/esm/atomic-commerce-refine-toggle.entry.js +1 -1
  374. package/dist/esm/atomic-facet-manager.entry.js +1 -1
  375. package/dist/esm/atomic-facet-number-input.entry.js +2 -2
  376. package/dist/esm/atomic-facet.entry.js +1 -1
  377. package/dist/esm/atomic-focus-trap_2.entry.js +2 -2
  378. package/dist/esm/atomic-format-currency.entry.js +1 -1
  379. package/dist/esm/atomic-format-number.entry.js +1 -1
  380. package/dist/esm/atomic-format-unit.entry.js +1 -1
  381. package/dist/esm/atomic-generated-answer-feedback-modal.entry.js +1 -1
  382. package/dist/esm/atomic-generated-answer.entry.js +13 -0
  383. package/dist/esm/atomic-generated-answer.entry.js.map +1 -1
  384. package/dist/esm/atomic-html.entry.js +1 -1
  385. package/dist/esm/atomic-insight-edit-toggle.entry.js +1 -1
  386. package/dist/esm/atomic-insight-facet.entry.js +1 -1
  387. package/dist/esm/atomic-insight-folded-result-list.entry.js +1 -1
  388. package/dist/esm/atomic-insight-full-search-button.entry.js +1 -1
  389. package/dist/esm/atomic-insight-generated-answer.entry.js +13 -0
  390. package/dist/esm/atomic-insight-generated-answer.entry.js.map +1 -1
  391. package/dist/esm/atomic-insight-history-toggle.entry.js +1 -1
  392. package/dist/esm/atomic-insight-interface.entry.js +2 -2
  393. package/dist/esm/atomic-insight-no-results.entry.js +1 -1
  394. package/dist/esm/atomic-insight-numeric-facet.entry.js +1 -1
  395. package/dist/esm/atomic-insight-pager.entry.js +3 -3
  396. package/dist/esm/atomic-insight-query-error.entry.js +2 -2
  397. package/dist/esm/atomic-insight-query-error.entry.js.map +1 -1
  398. package/dist/esm/atomic-insight-refine-modal.entry.js +2 -2
  399. package/dist/esm/atomic-insight-refine-toggle.entry.js +1 -1
  400. package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js +1 -1
  401. package/dist/esm/atomic-insight-result-children.entry.js +1 -1
  402. package/dist/esm/atomic-insight-result-list.entry.js +1 -1
  403. package/dist/esm/atomic-insight-result-quickview-action.entry.js +1 -1
  404. package/dist/esm/atomic-insight-result.entry.js +1 -1
  405. package/dist/esm/atomic-insight-search-box.entry.js +2 -2
  406. package/dist/esm/atomic-insight-smart-snippet-feedback-modal.entry.js +2 -2
  407. package/dist/esm/atomic-insight-tabs.entry.js +1 -1
  408. package/dist/esm/atomic-insight-user-actions-session_2.entry.js +1 -1
  409. package/dist/esm/atomic-insight-user-actions-toggle.entry.js +1 -1
  410. package/dist/esm/atomic-ipx-body.entry.js +2 -2
  411. package/dist/esm/atomic-ipx-button.entry.js +2 -2
  412. package/dist/esm/atomic-ipx-embedded.entry.js +1 -1
  413. package/dist/esm/atomic-ipx-modal.entry.js +2 -2
  414. package/dist/esm/atomic-ipx-recs-list.entry.js +1 -1
  415. package/dist/esm/atomic-ipx-refine-modal.entry.js +1 -1
  416. package/dist/esm/atomic-ipx-refine-toggle.entry.js +1 -1
  417. package/dist/esm/atomic-ipx-result-link.entry.js +1 -1
  418. package/dist/esm/atomic-ipx-tabs.entry.js +1 -1
  419. package/dist/esm/atomic-load-more-results.entry.js +1 -1
  420. package/dist/esm/atomic-no-results.entry.js +1 -1
  421. package/dist/esm/atomic-numeric-facet.entry.js +1 -1
  422. package/dist/esm/atomic-pager.entry.js +3 -3
  423. package/dist/esm/atomic-product-description.entry.js +1 -1
  424. package/dist/esm/atomic-product-description.entry.js.map +1 -1
  425. package/dist/esm/atomic-product-excerpt.entry.js +1 -1
  426. package/dist/esm/atomic-product-excerpt.entry.js.map +1 -1
  427. package/dist/esm/atomic-product-link.entry.js +1 -1
  428. package/dist/esm/atomic-product-numeric-field-value.entry.js +1 -1
  429. package/dist/esm/atomic-product-price.entry.js +2 -2
  430. package/dist/esm/atomic-query-error.entry.js +2 -2
  431. package/dist/esm/atomic-query-error.entry.js.map +1 -1
  432. package/dist/esm/atomic-query-summary.entry.js +1 -1
  433. package/dist/esm/atomic-quickview-modal.entry.js +1 -1
  434. package/dist/esm/atomic-quickview.entry.js +1 -1
  435. package/dist/esm/atomic-recs-error.entry.js +2 -2
  436. package/dist/esm/atomic-recs-error.entry.js.map +1 -1
  437. package/dist/esm/atomic-recs-interface.entry.js +2 -2
  438. package/dist/esm/atomic-recs-list.entry.js +1 -1
  439. package/dist/esm/atomic-refine-modal.entry.js +1 -1
  440. package/dist/esm/atomic-refine-toggle.entry.js +1 -1
  441. package/dist/esm/atomic-relevance-inspector.entry.js +2 -2
  442. package/dist/esm/atomic-result-children.entry.js +1 -1
  443. package/dist/esm/atomic-result-fields-list.entry.js +1 -1
  444. package/dist/esm/atomic-result-link.entry.js +1 -1
  445. package/dist/esm/atomic-result-list.entry.js +1 -1
  446. package/dist/esm/atomic-result-placeholder_8.entry.js +3 -3
  447. package/dist/esm/atomic-result-text_2.entry.js +45 -3
  448. package/dist/esm/atomic-result-text_2.entry.js.map +1 -1
  449. package/dist/esm/atomic-results-per-page.entry.js +68 -4
  450. package/dist/esm/atomic-results-per-page.entry.js.map +1 -1
  451. package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +2 -2
  452. package/dist/esm/atomic-search-box.entry.js +4 -4
  453. package/dist/esm/atomic-search-interface.entry.js +2 -2
  454. package/dist/esm/atomic-smart-snippet-answer_2.entry.js +2 -2
  455. package/dist/esm/atomic-smart-snippet-collapse-wrapper_2.entry.js +3 -3
  456. package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
  457. package/dist/esm/atomic-sort-dropdown.entry.js +2 -2
  458. package/dist/esm/atomic-sort-expression.entry.js +1 -1
  459. package/dist/esm/atomic-suggestion-renderer.entry.js +1 -1
  460. package/dist/esm/atomic-tab-bar_2.entry.js +1 -1
  461. package/dist/esm/atomic-tab-button.entry.js +1 -1
  462. package/dist/esm/atomic-tab-manager.entry.js +1 -1
  463. package/dist/esm/atomic.js +1 -1
  464. package/dist/esm/index-3f35faca.js +0 -12
  465. package/dist/esm/{interface-common-stencil-623d4314.js → interface-common-stencil-fc6f80e8.js} +2 -2
  466. package/dist/esm/{interface-common-stencil-623d4314.js.map → interface-common-stencil-fc6f80e8.js.map} +1 -1
  467. package/dist/esm/{product-utils-8348689f.js → product-utils-85109d2e.js} +2 -9
  468. package/dist/esm/product-utils-85109d2e.js.map +1 -0
  469. package/dist/esm/sections-ae00b53a.js.map +1 -1
  470. package/dist/esm/{expandable-text-4eebe177.js → stencil-expandable-text-957d599c.js} +1 -1
  471. package/dist/esm/stencil-expandable-text-957d599c.js.map +1 -0
  472. package/dist/esm/{stencil-link-637c1ac5.js → stencil-link-32a27dfb.js} +1 -1
  473. package/dist/esm/stencil-link-32a27dfb.js.map +1 -0
  474. package/dist/esm/version.js +2 -2
  475. package/dist/types/components/commerce/atomic-commerce-products-per-page/atomic-commerce-products-per-page.d.ts +13 -7
  476. package/dist/types/components/commerce/atomic-commerce-text/atomic-commerce-text.d.ts +13 -5
  477. package/dist/types/components/commerce/atomic-product-description/atomic-product-description.d.ts +1 -1
  478. package/dist/types/components/commerce/atomic-product-excerpt/atomic-product-excerpt.d.ts +1 -1
  479. package/dist/types/components/commerce/atomic-product-template/atomic-product-template.d.ts +2 -0
  480. package/dist/types/components/commerce/atomic-product-text/atomic-product-text.d.ts +29 -15
  481. package/dist/types/components/commerce/index.d.ts +3 -0
  482. package/dist/types/components/common/atomic-layout-section/atomic-layout-section.d.ts +11 -2
  483. package/dist/types/components/common/atomic-layout-section/sections.d.ts +2 -1
  484. package/dist/types/components/common/expandable-text/expandable-text.d.ts +4 -4
  485. package/dist/types/components/common/expandable-text/stencil-expandable-text.d.ts +13 -0
  486. package/dist/types/components/common/index.d.ts +1 -0
  487. package/dist/types/components/common/items-per-page/choices.d.ts +1 -1
  488. package/dist/types/components/common/items-per-page/error.d.ts +3 -0
  489. package/dist/types/components/common/query-error/show-more.d.ts +4 -4
  490. package/dist/types/components/common/query-error/stencil-show-more.d.ts +10 -0
  491. package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.d.ts +6 -0
  492. package/dist/types/components/search/atomic-generated-answer/atomic-generated-answer.d.ts +6 -0
  493. package/dist/types/components.d.ts +18 -208
  494. package/docs/atomic-docs.json +37 -492
  495. package/package.json +3 -3
  496. package/dist/atomic/components/atomic-commerce-products-per-page.d.ts +0 -11
  497. package/dist/atomic/components/atomic-commerce-products-per-page.js +0 -107
  498. package/dist/atomic/components/atomic-commerce-products-per-page.js.map +0 -1
  499. package/dist/atomic/components/atomic-commerce-text.d.ts +0 -11
  500. package/dist/atomic/components/atomic-commerce-text.js +0 -8
  501. package/dist/atomic/components/atomic-commerce-text.js.map +0 -1
  502. package/dist/atomic/components/atomic-commerce-text2.js +0 -60
  503. package/dist/atomic/components/atomic-commerce-text2.js.map +0 -1
  504. package/dist/atomic/components/atomic-layout-section.d.ts +0 -11
  505. package/dist/atomic/components/atomic-layout-section.js +0 -35
  506. package/dist/atomic/components/atomic-layout-section.js.map +0 -1
  507. package/dist/atomic/components/atomic-product-text.d.ts +0 -11
  508. package/dist/atomic/components/atomic-product-text.js +0 -8
  509. package/dist/atomic/components/atomic-product-text.js.map +0 -1
  510. package/dist/atomic/components/atomic-product-text2.js +0 -83
  511. package/dist/atomic/components/atomic-product-text2.js.map +0 -1
  512. package/dist/atomic/components/expandable-text.js.map +0 -1
  513. package/dist/atomic/components/stencil-item-text-highlighted.js +0 -49
  514. package/dist/atomic/components/stencil-item-text-highlighted.js.map +0 -1
  515. package/dist/atomic/components/validate.js +0 -62
  516. package/dist/atomic/components/validate.js.map +0 -1
  517. package/dist/atomic/p-00ba0b42.entry.js.map +0 -1
  518. package/dist/atomic/p-03109525.entry.js +0 -2
  519. package/dist/atomic/p-03109525.entry.js.map +0 -1
  520. package/dist/atomic/p-04c726de.entry.js.map +0 -1
  521. package/dist/atomic/p-162da819.entry.js +0 -2
  522. package/dist/atomic/p-1cb6a01c.entry.js.map +0 -1
  523. package/dist/atomic/p-39223a2a.entry.js +0 -2
  524. package/dist/atomic/p-39223a2a.entry.js.map +0 -1
  525. package/dist/atomic/p-5cf5bb98.entry.js +0 -2
  526. package/dist/atomic/p-6083c281.js.map +0 -1
  527. package/dist/atomic/p-67ef14ac.entry.js +0 -2
  528. package/dist/atomic/p-67ef14ac.entry.js.map +0 -1
  529. package/dist/atomic/p-733252f1.entry.js +0 -2
  530. package/dist/atomic/p-733252f1.entry.js.map +0 -1
  531. package/dist/atomic/p-81874146.entry.js +0 -2
  532. package/dist/atomic/p-98c16767.entry.js +0 -2
  533. package/dist/atomic/p-b0be7782.entry.js +0 -2
  534. package/dist/atomic/p-b1a7d837.js +0 -2
  535. package/dist/atomic/p-b1a7d837.js.map +0 -1
  536. package/dist/atomic/p-b3604b54.entry.js.map +0 -1
  537. package/dist/atomic/p-b90ea7e9.entry.js +0 -2
  538. package/dist/atomic/p-ba5a125f.entry.js +0 -2
  539. package/dist/atomic/p-ba5a125f.entry.js.map +0 -1
  540. package/dist/atomic/p-bb081d4e.js +0 -2
  541. package/dist/atomic/p-bb081d4e.js.map +0 -1
  542. package/dist/atomic/p-c408a774.js +0 -2
  543. package/dist/atomic/p-c408a774.js.map +0 -1
  544. package/dist/atomic/p-d72e52b2.entry.js.map +0 -1
  545. package/dist/atomic/p-de00bdd6.js.map +0 -1
  546. package/dist/atomic/p-e260c799.entry.js.map +0 -1
  547. package/dist/atomic/p-e36f1951.entry.js.map +0 -1
  548. package/dist/atomic/p-fc81ef98.entry.js.map +0 -1
  549. package/dist/cjs/atomic-commerce-products-per-page.cjs.entry.js +0 -95
  550. package/dist/cjs/atomic-commerce-products-per-page.cjs.entry.js.map +0 -1
  551. package/dist/cjs/atomic-commerce-text_2.cjs.entry.js +0 -106
  552. package/dist/cjs/atomic-commerce-text_2.cjs.entry.js.map +0 -1
  553. package/dist/cjs/atomic-layout-section.cjs.entry.js +0 -18
  554. package/dist/cjs/atomic-layout-section.cjs.entry.js.map +0 -1
  555. package/dist/cjs/expandable-text-36fe9f8d.js.map +0 -1
  556. package/dist/cjs/product-utils-9507462c.js.map +0 -1
  557. package/dist/cjs/stencil-item-text-highlighted-91fd0fe8.js +0 -52
  558. package/dist/cjs/stencil-item-text-highlighted-91fd0fe8.js.map +0 -1
  559. package/dist/cjs/stencil-link-c6b12034.js.map +0 -1
  560. package/dist/cjs/validate-232b3138.js +0 -69
  561. package/dist/cjs/validate-232b3138.js.map +0 -1
  562. package/dist/esm/atomic-commerce-products-per-page.entry.js +0 -91
  563. package/dist/esm/atomic-commerce-products-per-page.entry.js.map +0 -1
  564. package/dist/esm/atomic-commerce-text_2.entry.js +0 -101
  565. package/dist/esm/atomic-commerce-text_2.entry.js.map +0 -1
  566. package/dist/esm/atomic-layout-section.entry.js +0 -14
  567. package/dist/esm/atomic-layout-section.entry.js.map +0 -1
  568. package/dist/esm/expandable-text-4eebe177.js.map +0 -1
  569. package/dist/esm/product-utils-8348689f.js.map +0 -1
  570. package/dist/esm/stencil-item-text-highlighted-0e1c6c08.js +0 -49
  571. package/dist/esm/stencil-item-text-highlighted-0e1c6c08.js.map +0 -1
  572. package/dist/esm/stencil-link-637c1ac5.js.map +0 -1
  573. package/dist/esm/validate-8b800378.js +0 -62
  574. package/dist/esm/validate-8b800378.js.map +0 -1
  575. /package/dist/atomic/{p-a535a268.entry.js.map → p-0267a585.entry.js.map} +0 -0
  576. /package/dist/atomic/{p-9a161d8f.entry.js.map → p-0a7b0daa.entry.js.map} +0 -0
  577. /package/dist/atomic/{p-f7eab69a.entry.js.map → p-0b0ea7d3.entry.js.map} +0 -0
  578. /package/dist/atomic/{p-07cd7e4a.entry.js.map → p-135be5aa.entry.js.map} +0 -0
  579. /package/dist/atomic/{p-e739825f.entry.js.map → p-1cc97adc.entry.js.map} +0 -0
  580. /package/dist/atomic/{p-005d34a4.entry.js.map → p-29d27418.entry.js.map} +0 -0
  581. /package/dist/atomic/{p-5250f36d.js.map → p-2dbdd073.js.map} +0 -0
  582. /package/dist/atomic/{p-4dbb3798.entry.js.map → p-2f0cb73c.entry.js.map} +0 -0
  583. /package/dist/atomic/{p-bad08ec3.entry.js.map → p-2ff906b9.entry.js.map} +0 -0
  584. /package/dist/atomic/{p-908fa9c8.entry.js.map → p-306c83ea.entry.js.map} +0 -0
  585. /package/dist/atomic/{p-f5ea03f0.entry.js.map → p-32b26cd0.entry.js.map} +0 -0
  586. /package/dist/atomic/{p-dc463f0b.entry.js.map → p-32c90fe9.entry.js.map} +0 -0
  587. /package/dist/atomic/{p-4e1f7c89.entry.js.map → p-36225d4f.entry.js.map} +0 -0
  588. /package/dist/atomic/{p-84b36ec2.entry.js.map → p-3ec18de9.entry.js.map} +0 -0
  589. /package/dist/atomic/{p-8a337769.entry.js.map → p-3f42a2db.entry.js.map} +0 -0
  590. /package/dist/atomic/{p-c74c1b41.entry.js.map → p-45b26cc7.entry.js.map} +0 -0
  591. /package/dist/atomic/{p-1c06ca0c.entry.js.map → p-46522ee4.entry.js.map} +0 -0
  592. /package/dist/atomic/{p-cfec0988.entry.js.map → p-47ee9d37.entry.js.map} +0 -0
  593. /package/dist/atomic/{p-4af746a9.entry.js.map → p-50b9a5d2.entry.js.map} +0 -0
  594. /package/dist/atomic/{p-756462de.entry.js.map → p-51c5acfc.entry.js.map} +0 -0
  595. /package/dist/atomic/{p-1202d6cc.entry.js.map → p-543e811e.entry.js.map} +0 -0
  596. /package/dist/atomic/{p-1243448d.entry.js.map → p-545f7fb1.entry.js.map} +0 -0
  597. /package/dist/atomic/{p-dc9313c5.entry.js.map → p-60527741.entry.js.map} +0 -0
  598. /package/dist/atomic/{p-d4ab4985.entry.js.map → p-60a9e718.entry.js.map} +0 -0
  599. /package/dist/atomic/{p-1c5502a8.entry.js.map → p-66683abd.entry.js.map} +0 -0
  600. /package/dist/atomic/{p-3024c394.entry.js.map → p-67315415.entry.js.map} +0 -0
  601. /package/dist/atomic/{p-baa3b8ee.entry.js.map → p-689e063d.entry.js.map} +0 -0
  602. /package/dist/atomic/{p-b0be7782.entry.js.map → p-690b5853.entry.js.map} +0 -0
  603. /package/dist/atomic/{p-447f0772.entry.js.map → p-70ab347b.entry.js.map} +0 -0
  604. /package/dist/atomic/{p-dc051fee.entry.js.map → p-76122df5.entry.js.map} +0 -0
  605. /package/dist/atomic/{p-4d8ec431.entry.js.map → p-7d1f8d9c.entry.js.map} +0 -0
  606. /package/dist/atomic/{p-d7c44977.entry.js.map → p-80dc3bab.entry.js.map} +0 -0
  607. /package/dist/atomic/{p-c265c67d.entry.js.map → p-8392e900.entry.js.map} +0 -0
  608. /package/dist/atomic/{p-58c8065c.entry.js.map → p-8d7f57d9.entry.js.map} +0 -0
  609. /package/dist/atomic/{p-bb5c19a7.entry.js.map → p-8e09f796.entry.js.map} +0 -0
  610. /package/dist/atomic/{p-1bddfac7.js.map → p-94e22484.js.map} +0 -0
  611. /package/dist/atomic/{p-79e1bcc1.entry.js.map → p-95942ba2.entry.js.map} +0 -0
  612. /package/dist/atomic/{p-a896c7b8.entry.js.map → p-9a08dad7.entry.js.map} +0 -0
  613. /package/dist/atomic/{p-d5c709cd.entry.js.map → p-9ae88402.entry.js.map} +0 -0
  614. /package/dist/atomic/{p-52abba32.entry.js.map → p-9eb108c9.entry.js.map} +0 -0
  615. /package/dist/atomic/{p-558f3bd6.entry.js.map → p-a046cf06.entry.js.map} +0 -0
  616. /package/dist/atomic/{p-9fb18d3e.entry.js.map → p-a3169f59.entry.js.map} +0 -0
  617. /package/dist/atomic/{p-d1e606f2.entry.js.map → p-a4983d49.entry.js.map} +0 -0
  618. /package/dist/atomic/{p-891f0c50.entry.js.map → p-a772b365.entry.js.map} +0 -0
  619. /package/dist/atomic/{p-ccff6c87.entry.js.map → p-a8281e9b.entry.js.map} +0 -0
  620. /package/dist/atomic/{p-c4dd47ca.entry.js.map → p-ab5eec3d.entry.js.map} +0 -0
  621. /package/dist/atomic/{p-2b11517f.entry.js.map → p-b19a8cbb.entry.js.map} +0 -0
  622. /package/dist/atomic/{p-4b20cdb3.entry.js.map → p-b4d47ca9.entry.js.map} +0 -0
  623. /package/dist/atomic/{p-0ea5cbb8.entry.js.map → p-b4dfe5b2.entry.js.map} +0 -0
  624. /package/dist/atomic/{p-81874146.entry.js.map → p-b747e4a9.entry.js.map} +0 -0
  625. /package/dist/atomic/{p-af8999b1.entry.js.map → p-b7824e0e.entry.js.map} +0 -0
  626. /package/dist/atomic/{p-e7b8ee60.entry.js.map → p-be13ed5c.entry.js.map} +0 -0
  627. /package/dist/atomic/{p-b90ea7e9.entry.js.map → p-befca41f.entry.js.map} +0 -0
  628. /package/dist/atomic/{p-6d264c97.entry.js.map → p-bfeefcaa.entry.js.map} +0 -0
  629. /package/dist/atomic/{p-34cff6c8.entry.js.map → p-c0d7b26d.entry.js.map} +0 -0
  630. /package/dist/atomic/{p-7d1ca26f.entry.js.map → p-c13d4039.entry.js.map} +0 -0
  631. /package/dist/atomic/{p-6d083c4e.entry.js.map → p-c4f042ae.entry.js.map} +0 -0
  632. /package/dist/atomic/{p-f96655f4.entry.js.map → p-c83f9cff.entry.js.map} +0 -0
  633. /package/dist/atomic/{p-4e3518c2.entry.js.map → p-cd87574b.entry.js.map} +0 -0
  634. /package/dist/atomic/{p-963a3e18.entry.js.map → p-d30057a0.entry.js.map} +0 -0
  635. /package/dist/atomic/{p-d5c308fc.entry.js.map → p-d4aba9f9.entry.js.map} +0 -0
  636. /package/dist/atomic/{p-037fbb27.entry.js.map → p-d62469e0.entry.js.map} +0 -0
  637. /package/dist/atomic/{p-dd6e18bb.entry.js.map → p-d69756ae.entry.js.map} +0 -0
  638. /package/dist/atomic/{p-5cf5bb98.entry.js.map → p-d76c5232.entry.js.map} +0 -0
  639. /package/dist/atomic/{p-68bf4184.entry.js.map → p-d827c148.entry.js.map} +0 -0
  640. /package/dist/atomic/{p-cbe083d3.entry.js.map → p-dd8c6bdd.entry.js.map} +0 -0
  641. /package/dist/atomic/{p-26ec2d6d.entry.js.map → p-ddd52850.entry.js.map} +0 -0
  642. /package/dist/atomic/{p-c751940f.entry.js.map → p-e44155cc.entry.js.map} +0 -0
  643. /package/dist/atomic/{p-5e7f50a5.entry.js.map → p-e4754fd0.entry.js.map} +0 -0
  644. /package/dist/atomic/{p-bd109981.entry.js.map → p-e604fd29.entry.js.map} +0 -0
  645. /package/dist/atomic/{p-22a0d1b9.entry.js.map → p-ea5d2736.entry.js.map} +0 -0
  646. /package/dist/atomic/{p-75d11764.entry.js.map → p-eab28672.entry.js.map} +0 -0
  647. /package/dist/atomic/{p-6c5524dc.entry.js.map → p-ec6bc15b.entry.js.map} +0 -0
  648. /package/dist/atomic/{p-98c16767.entry.js.map → p-eebb168b.entry.js.map} +0 -0
  649. /package/dist/atomic/{p-1de6a3e2.entry.js.map → p-f4a1bfe3.entry.js.map} +0 -0
  650. /package/dist/atomic/{p-d1434df4.entry.js.map → p-f4b98113.entry.js.map} +0 -0
  651. /package/dist/atomic/{p-a15f6b8c.entry.js.map → p-f6283657.entry.js.map} +0 -0
  652. /package/dist/atomic/{p-e961a0cc.entry.js.map → p-f7f8096a.entry.js.map} +0 -0
  653. /package/dist/atomic/{p-f8fb398c.entry.js.map → p-fb0bdcdb.entry.js.map} +0 -0
  654. /package/dist/atomic/{p-162da819.entry.js.map → p-fbbbc454.entry.js.map} +0 -0
  655. /package/dist/atomic/{p-dea13af7.entry.js.map → p-fd9d1c3f.entry.js.map} +0 -0
@@ -0,0 +1,54 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { bindingGuard } from "../../../decorators/binding-guard";
8
+ import { bindings } from "../../../decorators/bindings";
9
+ import { errorGuard } from "../../../decorators/error-guard";
10
+ import { InitializeBindingsMixin } from "../../../mixins/bindings-mixin";
11
+ import { LitElement, html } from 'lit';
12
+ import { customElement, property, state } from 'lit/decorators.js';
13
+ /**
14
+ * @alpha
15
+ * The `atomic-commerce-text` component leverages the I18n translation module through the atomic-commerce-interface.
16
+ */
17
+ let AtomicCommerceText = class AtomicCommerceText extends InitializeBindingsMixin(LitElement) {
18
+ get strings() {
19
+ return {
20
+ value: () => this.bindings.i18n.t(this.value, {
21
+ count: this.count,
22
+ }),
23
+ };
24
+ }
25
+ initialize() {
26
+ if (!this.value) {
27
+ this.error = new Error('The "value" attribute must be defined.');
28
+ }
29
+ }
30
+ render() {
31
+ return html `${this.strings.value()}`;
32
+ }
33
+ };
34
+ __decorate([
35
+ state()
36
+ ], AtomicCommerceText.prototype, "bindings", void 0);
37
+ __decorate([
38
+ state()
39
+ ], AtomicCommerceText.prototype, "error", void 0);
40
+ __decorate([
41
+ property({ type: String, reflect: true })
42
+ ], AtomicCommerceText.prototype, "value", void 0);
43
+ __decorate([
44
+ property({ type: Number, reflect: true })
45
+ ], AtomicCommerceText.prototype, "count", void 0);
46
+ __decorate([
47
+ bindingGuard(),
48
+ errorGuard()
49
+ ], AtomicCommerceText.prototype, "render", null);
50
+ AtomicCommerceText = __decorate([
51
+ customElement('atomic-commerce-text'),
52
+ bindings()
53
+ ], AtomicCommerceText);
54
+ export { AtomicCommerceText };
@@ -10,6 +10,8 @@ import { html, LitElement, nothing } from 'lit';
10
10
  import { property, customElement, state } from 'lit/decorators.js';
11
11
  import { makeMatchConditions } from '../../common/product-template/product-template-common';
12
12
  import { ProductTemplateController } from '../../common/product-template/product-template-controller';
13
+ import '../atomic-commerce-text/atomic-commerce-text';
14
+ import '../atomic-product-text/atomic-product-text';
13
15
  import '../atomic-product/atomic-product';
14
16
  /**
15
17
  * @alpha
@@ -0,0 +1,135 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { booleanConverter } from "../../../converters/boolean-converter";
8
+ import { bindingGuard } from "../../../decorators/binding-guard";
9
+ import { bindings } from "../../../decorators/bindings";
10
+ import { createProductContextController } from "../../../decorators/commerce/product-template-decorators.js";
11
+ import { errorGuard } from "../../../decorators/error-guard";
12
+ import { InitializeBindingsMixin } from "../../../mixins/bindings-mixin";
13
+ import { ProductTemplatesHelpers, HighlightUtils, } from '@coveo/headless/commerce';
14
+ import { LitElement, html, nothing } from 'lit';
15
+ import { customElement, property, state } from 'lit/decorators.js';
16
+ import { when } from 'lit/directives/when.js';
17
+ import { getFieldValueCaption } from '../../../utils/field-utils';
18
+ import { renderItemTextFallback } from '../../common/item-text/item-text-fallback.js';
19
+ import { renderItemTextHighlighted } from '../../common/item-text/item-text-highlighted.js';
20
+ import '../atomic-commerce-text/atomic-commerce-text';
21
+ import { getStringValueFromProductOrNull } from '../product-template-component-utils/product-utils.js';
22
+ /**
23
+ * The `atomic-product-text` component renders the value of a string field for a given product.
24
+ */
25
+ let AtomicProductText = class AtomicProductText extends InitializeBindingsMixin(LitElement) {
26
+ constructor() {
27
+ super(...arguments);
28
+ /**
29
+ * Whether to highlight the string field value.
30
+ *
31
+ * Only works if the `field` property is set to `excerpt` or `ec_name`.
32
+ */
33
+ this.shouldHighlight = true;
34
+ this.productController = createProductContextController(this);
35
+ }
36
+ initialize() {
37
+ if (!this.product && this.productController.item) {
38
+ this.product = this.productController.item;
39
+ }
40
+ }
41
+ get shouldRenderHighlights() {
42
+ return this.shouldHighlight && this.isFieldSupportedForHighlighting();
43
+ }
44
+ isFieldSupportedForHighlighting() {
45
+ return ['ec_name', 'excerpt'].includes(this.field);
46
+ }
47
+ get highlightKeywords() {
48
+ if (!this.shouldRenderHighlights) {
49
+ return null;
50
+ }
51
+ return ProductTemplatesHelpers.getProductProperty(this.product, this.field === 'ec_name' ? 'nameHighlights' : 'excerptHighlights');
52
+ }
53
+ renderFallback() {
54
+ if (!this.default) {
55
+ return nothing;
56
+ }
57
+ return renderItemTextFallback({
58
+ props: {
59
+ field: this.field,
60
+ host: this,
61
+ logger: this.bindings.engine.logger,
62
+ defaultValue: this.default,
63
+ item: this.product,
64
+ getProperty: (result, property) => ProductTemplatesHelpers.getProductProperty(result, property),
65
+ },
66
+ })(html `
67
+ <atomic-commerce-text
68
+ .value=${getFieldValueCaption(this.field, this.default, this.bindings.i18n)}
69
+ ></atomic-commerce-text>
70
+ `);
71
+ }
72
+ renderProductText(textValue) {
73
+ const highlightKeywords = this.highlightKeywords;
74
+ return this.shouldRenderHighlights &&
75
+ highlightKeywords &&
76
+ highlightKeywords.length > 0
77
+ ? renderItemTextHighlighted({
78
+ props: {
79
+ textValue,
80
+ highlightKeywords,
81
+ highlightString: HighlightUtils.highlightString,
82
+ onError: (error) => (this.error = error),
83
+ },
84
+ })
85
+ : html `
86
+ <atomic-commerce-text
87
+ .value=${getFieldValueCaption(this.field, textValue, this.bindings.i18n)}
88
+ ></atomic-commerce-text>
89
+ `;
90
+ }
91
+ renderProductTextValue() {
92
+ const productValueAsString = getStringValueFromProductOrNull(this.product, this.field);
93
+ if (productValueAsString === null) {
94
+ return this.renderFallback();
95
+ }
96
+ return this.renderProductText(`${productValueAsString}`);
97
+ }
98
+ render() {
99
+ return html `
100
+ ${when(this.product && this.field, () => this.renderProductTextValue(), () => nothing)}
101
+ `;
102
+ }
103
+ };
104
+ __decorate([
105
+ property({ type: String, reflect: true })
106
+ ], AtomicProductText.prototype, "field", void 0);
107
+ __decorate([
108
+ property({
109
+ type: Boolean,
110
+ attribute: 'should-highlight',
111
+ reflect: true,
112
+ converter: booleanConverter,
113
+ })
114
+ ], AtomicProductText.prototype, "shouldHighlight", void 0);
115
+ __decorate([
116
+ property({ type: String, reflect: true })
117
+ ], AtomicProductText.prototype, "default", void 0);
118
+ __decorate([
119
+ state()
120
+ ], AtomicProductText.prototype, "product", void 0);
121
+ __decorate([
122
+ state()
123
+ ], AtomicProductText.prototype, "bindings", void 0);
124
+ __decorate([
125
+ state()
126
+ ], AtomicProductText.prototype, "error", void 0);
127
+ __decorate([
128
+ bindingGuard(),
129
+ errorGuard()
130
+ ], AtomicProductText.prototype, "render", null);
131
+ AtomicProductText = __decorate([
132
+ bindings(),
133
+ customElement('atomic-product-text')
134
+ ], AtomicProductText);
135
+ export { AtomicProductText };
@@ -5,6 +5,7 @@ export { AtomicCommerceInterface } from './atomic-commerce-interface/atomic-comm
5
5
  export { AtomicCommerceLayout } from './atomic-commerce-layout/atomic-commerce-layout.js';
6
6
  export { AtomicCommercePager } from './atomic-commerce-pager/atomic-commerce-pager.js';
7
7
  export { AtomicCommerceProductList } from './atomic-commerce-product-list/atomic-commerce-product-list.js';
8
+ export { AtomicCommerceProductsPerPage } from './atomic-commerce-products-per-page/atomic-commerce-products-per-page.js';
8
9
  export { AtomicCommerceQuerySummary } from './atomic-commerce-query-summary/atomic-commerce-query-summary.js';
9
10
  export { AtomicCommerceRecommendationList } from './atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.js';
10
11
  export { AtomicCommerceSearchBox } from './atomic-commerce-search-box/atomic-commerce-search-box.js';
@@ -12,5 +13,7 @@ export { AtomicCommerceSearchBoxInstantProducts } from './atomic-commerce-search
12
13
  export { AtomicCommerceSearchBoxQuerySuggestions } from './atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.js';
13
14
  export { AtomicCommerceSearchBoxRecentQueries } from './atomic-commerce-search-box-recent-queries/atomic-commerce-search-box-recent-queries.js';
14
15
  export { AtomicCommerceSortDropdown } from './atomic-commerce-sort-dropdown/atomic-commerce-sort-dropdown.js';
16
+ export { AtomicCommerceText } from './atomic-commerce-text/atomic-commerce-text.js';
15
17
  export { AtomicProduct } from './atomic-product/atomic-product.js';
16
18
  export { AtomicProductTemplate } from './atomic-product-template/atomic-product-template.js';
19
+ export { AtomicProductText } from './atomic-product-text/atomic-product-text.js';
@@ -6,6 +6,7 @@ export default {
6
6
  'atomic-commerce-layout': async () => await import('./atomic-commerce-layout/atomic-commerce-layout.js'),
7
7
  'atomic-commerce-pager': async () => await import('./atomic-commerce-pager/atomic-commerce-pager.js'),
8
8
  'atomic-commerce-product-list': async () => await import('./atomic-commerce-product-list/atomic-commerce-product-list.js'),
9
+ 'atomic-commerce-products-per-page': async () => await import('./atomic-commerce-products-per-page/atomic-commerce-products-per-page.js'),
9
10
  'atomic-commerce-query-summary': async () => await import('./atomic-commerce-query-summary/atomic-commerce-query-summary.js'),
10
11
  'atomic-commerce-recommendation-list': async () => await import('./atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.js'),
11
12
  'atomic-commerce-search-box': async () => await import('./atomic-commerce-search-box/atomic-commerce-search-box.js'),
@@ -13,6 +14,8 @@ export default {
13
14
  'atomic-commerce-search-box-query-suggestions': async () => await import('./atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.js'),
14
15
  'atomic-commerce-search-box-recent-queries': async () => await import('./atomic-commerce-search-box-recent-queries/atomic-commerce-search-box-recent-queries.js'),
15
16
  'atomic-commerce-sort-dropdown': async () => await import('./atomic-commerce-sort-dropdown/atomic-commerce-sort-dropdown.js'),
17
+ 'atomic-commerce-text': async () => await import('./atomic-commerce-text/atomic-commerce-text.js'),
16
18
  'atomic-product': async () => await import('./atomic-product/atomic-product.js'),
17
19
  'atomic-product-template': async () => await import('./atomic-product-template/atomic-product-template.js'),
20
+ 'atomic-product-text': async () => await import('./atomic-product-text/atomic-product-text.js'),
18
21
  };
@@ -0,0 +1,6 @@
1
+ export class FieldValueIsNaNError extends Error {
2
+ constructor(field, value) {
3
+ super(`Could not parse "${value}" from field "${field}" as a number.`);
4
+ this.name = 'FieldValueIsNaNError';
5
+ }
6
+ }
@@ -0,0 +1,35 @@
1
+ import { readFromObject } from "../../../utils/object-utils";
2
+ import { ProductTemplatesHelpers } from '@coveo/headless/commerce';
3
+ import { FieldValueIsNaNError } from './error';
4
+ export function parseValue(product, field) {
5
+ const value = ProductTemplatesHelpers.getProductProperty(product, field);
6
+ if (value === null) {
7
+ return null;
8
+ }
9
+ const valueAsNumber = parseFloat(`${value}`);
10
+ if (Number.isNaN(valueAsNumber)) {
11
+ throw new FieldValueIsNaNError(field, value);
12
+ }
13
+ return valueAsNumber;
14
+ }
15
+ export function getStringValueFromProductOrNull(product, field) {
16
+ const value = ProductTemplatesHelpers.getProductProperty(product, field);
17
+ if (typeof value !== 'string' || value.trim() === '') {
18
+ return null;
19
+ }
20
+ return value;
21
+ }
22
+ export function buildStringTemplateFromProduct(template, product, bindings) {
23
+ return template.replace(/\${(.*?)}/g, (value) => {
24
+ const key = value.substring(2, value.length - 1);
25
+ let newValue = readFromObject(product, key);
26
+ if (!newValue && typeof window !== 'undefined') {
27
+ newValue = readFromObject(window, key);
28
+ }
29
+ if (!newValue) {
30
+ bindings.engine.logger.warn(`${key} used in the href template is undefined for this product: ${product.permanentid} and could not be found in the window object.`);
31
+ return '';
32
+ }
33
+ return newValue;
34
+ });
35
+ }
@@ -0,0 +1,31 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement } from 'lit';
8
+ import { customElement, property } from 'lit/decorators.js';
9
+ /**
10
+ * The `atomic-layout-section` lets you identify various sections for the related `atomic-search-layout` or `atomic-commerce-layout` component.
11
+ *
12
+ * @slot default - The default slot where you can add child components to the section.
13
+ */
14
+ let AtomicLayoutSection = class AtomicLayoutSection extends LitElement {
15
+ createRenderRoot() {
16
+ return this;
17
+ }
18
+ };
19
+ __decorate([
20
+ property({ type: String, reflect: true })
21
+ ], AtomicLayoutSection.prototype, "section", void 0);
22
+ __decorate([
23
+ property({ type: String, reflect: true, attribute: 'min-width' })
24
+ ], AtomicLayoutSection.prototype, "minWidth", void 0);
25
+ __decorate([
26
+ property({ type: String, reflect: true, attribute: 'max-width' })
27
+ ], AtomicLayoutSection.prototype, "maxWidth", void 0);
28
+ AtomicLayoutSection = __decorate([
29
+ customElement('atomic-layout-section')
30
+ ], AtomicLayoutSection);
31
+ export { AtomicLayoutSection };
@@ -0,0 +1,5 @@
1
+ import { html } from 'lit';
2
+ export const renderFieldsetGroup = ({ props: { label } }) => (children) => html `<fieldset class="contents">
3
+ <legend class="sr-only">${label}</legend>
4
+ ${children}
5
+ </fieldset>`;
@@ -1,3 +1,4 @@
1
1
  // Auto-generated file
2
2
  export { AtomicComponentError } from './atomic-component-error/atomic-component-error.js';
3
3
  export { AtomicIcon } from './atomic-icon/atomic-icon.js';
4
+ export { AtomicLayoutSection } from './atomic-layout-section/atomic-layout-section.js';
@@ -0,0 +1,6 @@
1
+ import { isArray } from '@coveo/bueno';
2
+ export function possiblyWarnOnBadFieldType(field, itemValueRaw, host, logger) {
3
+ if (isArray(itemValueRaw)) {
4
+ logger.error(`${host.nodeName.toLowerCase()} cannot be used with multi value field "${field}" with values "${itemValueRaw}".`, host);
5
+ }
6
+ }
@@ -0,0 +1,15 @@
1
+ import { isUndefined } from '@coveo/bueno';
2
+ import { html, nothing } from 'lit';
3
+ import { possiblyWarnOnBadFieldType } from './field-warning.js';
4
+ export const renderItemTextFallback = ({ props }) => (children) => {
5
+ const { getProperty, item, field, host, logger, defaultValue } = props;
6
+ const raw = getProperty(item, field);
7
+ possiblyWarnOnBadFieldType(field, raw, host, logger);
8
+ if (isUndefined(defaultValue)) {
9
+ host.remove();
10
+ return nothing;
11
+ }
12
+ else {
13
+ return html `${children}`;
14
+ }
15
+ };
@@ -0,0 +1,17 @@
1
+ import { html, nothing } from 'lit';
2
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
3
+ import { renderWithHighlights, } from './render-highlights.js';
4
+ /**
5
+ * The renderItemTextHighlighted functional component renders text with highlighted keywords.
6
+ */
7
+ export const renderItemTextHighlighted = ({ props }) => {
8
+ const { textValue, highlightKeywords, highlightString, onError = (error) => console.error(error), } = props;
9
+ try {
10
+ const highlightedValue = renderWithHighlights(textValue, highlightKeywords, highlightString);
11
+ return html `${unsafeHTML(highlightedValue)}`;
12
+ }
13
+ catch (error) {
14
+ onError(error);
15
+ return nothing;
16
+ }
17
+ };
@@ -0,0 +1,13 @@
1
+ export function renderWithHighlights(value, highlights, highlightString) {
2
+ const openingDelimiter = '_openingDelimiter_';
3
+ const closingDelimiter = '_closingDelimiter_';
4
+ const highlightedValue = highlightString({
5
+ content: value,
6
+ openingDelimiter,
7
+ closingDelimiter,
8
+ highlights,
9
+ });
10
+ return highlightedValue
11
+ .replace(new RegExp(openingDelimiter, 'g'), '<b>')
12
+ .replace(new RegExp(closingDelimiter, 'g'), '</b>');
13
+ }
@@ -0,0 +1,47 @@
1
+ import { html } from 'lit';
2
+ import { renderRadioButton } from '../radio-button';
3
+ export const renderChoices = ({ props }) => {
4
+ const { label, groupName, pageSize, choices, lang, scrollToTopEvent, setItemSize, focusOnFirstResultAfterNextSearch, focusOnNextNewResult, } = props;
5
+ const focusOnProperResultDependingOnChoice = (choice) => {
6
+ if (choice < pageSize) {
7
+ focusOnFirstResultAfterNextSearch()?.then(() => scrollToTopEvent());
8
+ }
9
+ else if (choice > pageSize) {
10
+ focusOnNextNewResult();
11
+ }
12
+ };
13
+ return html `
14
+ <div
15
+ part="buttons"
16
+ role="radiogroup"
17
+ aria-label=${label}
18
+ class="flex flex-wrap gap-2"
19
+ >
20
+ ${choices.map((choice) => {
21
+ const isSelected = pageSize === choice;
22
+ const parts = ['button'];
23
+ if (isSelected) {
24
+ parts.push('active-button');
25
+ }
26
+ const text = choice.toLocaleString(lang);
27
+ return renderRadioButton({
28
+ props: {
29
+ key: 'choice',
30
+ groupName,
31
+ style: 'outline-neutral',
32
+ checked: isSelected,
33
+ ariaLabel: text,
34
+ onChecked: () => {
35
+ focusOnProperResultDependingOnChoice(choice);
36
+ setItemSize(choice);
37
+ },
38
+ class: 'btn-page focus-visible:bg-neutral-light',
39
+ part: parts.join(' '),
40
+ text,
41
+ selectWhenFocused: false,
42
+ },
43
+ });
44
+ })}
45
+ </div>
46
+ `;
47
+ };
@@ -0,0 +1,18 @@
1
+ export class ChoiceIsNaNError extends Error {
2
+ constructor(choice) {
3
+ super(`The choice value "${choice}" from the "choicesDisplayed" option is not a number.`);
4
+ this.name = 'ChoiceIsNaNError';
5
+ }
6
+ }
7
+ export class InitialChoiceNotInChoicesError extends Error {
8
+ constructor(initialChoice, choices) {
9
+ super(`The initial choice value "${initialChoice}" is not included in the choices ${choices}.`);
10
+ this.name = 'InitialChoiceNotInChoicesError';
11
+ }
12
+ }
13
+ export class ChoiceIsNonPositiveError extends Error {
14
+ constructor(choice) {
15
+ super(`The choice value "${choice}" from the "choicesDisplayed" option is not positive (<= 0).`);
16
+ this.name = 'ChoiceIsNonPositiveError';
17
+ }
18
+ }
@@ -0,0 +1,10 @@
1
+ import { html } from 'lit';
2
+ export const renderLabel = () => (children) => html `
3
+ <span
4
+ part="label"
5
+ class="text-on-background mr-3 self-start text-lg leading-10"
6
+ aria-hidden="true"
7
+ >
8
+ ${children}
9
+ </span>
10
+ `;
@@ -0,0 +1,19 @@
1
+ import { ChoiceIsNaNError, ChoiceIsNonPositiveError, InitialChoiceNotInChoicesError, } from './error';
2
+ export function convertChoicesToNumbers(choices) {
3
+ return choices.split(',').map((choice) => {
4
+ const parsedChoice = parseInt(choice);
5
+ if (isNaN(parsedChoice)) {
6
+ throw new ChoiceIsNaNError(choice);
7
+ }
8
+ if (parsedChoice <= 0) {
9
+ throw new ChoiceIsNonPositiveError(parsedChoice);
10
+ }
11
+ return parsedChoice;
12
+ });
13
+ }
14
+ export function validateInitialChoice(initialChoice, choices) {
15
+ if (!choices.includes(initialChoice)) {
16
+ throw new InitialChoiceNotInChoicesError(initialChoice, choices);
17
+ }
18
+ return initialChoice;
19
+ }
@@ -2,4 +2,5 @@
2
2
  export default {
3
3
  'atomic-component-error': async () => await import('./atomic-component-error/atomic-component-error.js'),
4
4
  'atomic-icon': async () => await import('./atomic-icon/atomic-icon.js'),
5
+ 'atomic-layout-section': async () => await import('./atomic-layout-section/atomic-layout-section.js'),
5
6
  };
@@ -65,13 +65,13 @@ const FacetDateInput = /*@__PURE__*/ proxyCustomElement(class FacetDateInput ext
65
65
  // Fallback for Safari < 14.1, date with format yyyy-mm-dd over 1400 (API limit)
66
66
  const pattern = '^(1[4-9]\\d{2}|2\\d{3})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$';
67
67
  const range = this.rangeGetter();
68
- return (h("form", { key: 'd8db4385e4295f182fc9b9db2ade10ff62b59615', class: "mt-4 grid grid-cols-[min-content_1fr] gap-2 px-2", onSubmit: (e) => {
68
+ return (h("form", { key: '5b9dcc787bc6df5e367c5f42399870887c47d1ac', class: "mt-4 grid grid-cols-[min-content_1fr] gap-2 px-2", onSubmit: (e) => {
69
69
  e.preventDefault();
70
70
  this.apply();
71
71
  return false;
72
- } }, h("label", { key: 'bef5b47105d800c423b61c42cc50b6329cc624c1', part: "input-label", class: labelClasses, htmlFor: `${this.facetId}_start` }, startLabel, ":"), h("input", { key: '6dc2ddab55046089ceb8d57883420e6a1935b866', id: `${this.facetId}_start`, part: "input-start", type: "date", ref: (ref) => (this.startRef = ref), class: inputClasses, "aria-label": startAria, placeholder: placeholder, pattern: pattern, required: true,
72
+ } }, h("label", { key: '402453cff10dc0145067c4915c37f4664062b483', part: "input-label", class: labelClasses, htmlFor: `${this.facetId}_start` }, startLabel, ":"), h("input", { key: '9b29df3dc13bfa9f8a75c7bc4528ed81c75b26a4', id: `${this.facetId}_start`, part: "input-start", type: "date", ref: (ref) => (this.startRef = ref), class: inputClasses, "aria-label": startAria, placeholder: placeholder, pattern: pattern, required: true,
73
73
  // API/Index minimum supported date
74
- min: this.min || this.formattedDateValue('1401-01-01'), max: this.end ? this.formattedDateValue(this.end) : this.max, value: this.formattedDateValue(range?.start), onInput: (e) => (this.start = parseDate(e.target.value).toDate()) }), h("label", { key: '10aaa6a1477be4f377c05b81025c8f5bcf042e96', part: "input-label", class: labelClasses, htmlFor: `${this.facetId}_end` }, endLabel, ":"), h("input", { key: '3fccac3931ef503413bb9e830f8cc7ec2f31a52d', id: `${this.facetId}_end`, part: "input-end", type: "date", ref: (ref) => (this.endRef = ref), class: inputClasses, "aria-label": endAria, placeholder: placeholder, pattern: pattern, required: true, min: this.formattedDateValue(this.start) || this.min, max: this.max, value: this.formattedDateValue(range?.end), onInput: (e) => (this.end = parseDate(e.target.value).toDate()) }), h(Button, { key: '8bb6165a256975cd26cdb92c2af1b8489b890c72', style: "outline-primary", type: "submit", part: "input-apply-button", class: "col-span-2 truncate p-2.5", ariaLabel: applyAria, text: apply })));
74
+ min: this.min || this.formattedDateValue('1401-01-01'), max: this.end ? this.formattedDateValue(this.end) : this.max, value: this.formattedDateValue(range?.start), onInput: (e) => (this.start = parseDate(e.target.value).toDate()) }), h("label", { key: 'be0174d19a814f5119ef504f56a60f1d00e690ed', part: "input-label", class: labelClasses, htmlFor: `${this.facetId}_end` }, endLabel, ":"), h("input", { key: '1786cc6d87fe13282dc0c7a4e56c5a979ad10d39', id: `${this.facetId}_end`, part: "input-end", type: "date", ref: (ref) => (this.endRef = ref), class: inputClasses, "aria-label": endAria, placeholder: placeholder, pattern: pattern, required: true, min: this.formattedDateValue(this.start) || this.min, max: this.max, value: this.formattedDateValue(range?.end), onInput: (e) => (this.end = parseDate(e.target.value).toDate()) }), h(Button, { key: '4d15da7ba14e0349e0caa0b576c392ad331c29f9', style: "outline-primary", type: "submit", part: "input-apply-button", class: "col-span-2 truncate p-2.5", ariaLabel: applyAria, text: apply })));
75
75
  }
76
76
  }, [0, "atomic-facet-date-input", {
77
77
  "bindings": [16],
@@ -42,11 +42,11 @@ const FacetNumberInput = /*@__PURE__*/ proxyCustomElement(class FacetNumberInput
42
42
  const inputClasses = 'p-2.5 input-primary placeholder-neutral-dark min-w-0 mr-1';
43
43
  const labelClasses = 'text-neutral-dark text-sm';
44
44
  const step = this.type === 'integer' ? '1' : 'any';
45
- return (h("form", { key: '805e001012201b280e5820a7674a41f7f20b79ed', class: "mt-4 gap-y-0.5 px-2", part: "input-form", onSubmit: (e) => {
45
+ return (h("form", { key: 'aeec1e4f98899d1653df921fc0a9c53ca3fcbf3b', class: "mt-4 gap-y-0.5 px-2", part: "input-form", onSubmit: (e) => {
46
46
  e.preventDefault();
47
47
  this.apply();
48
48
  return false;
49
- } }, h("label", { key: '6285713ae74850a682225a3805d4b0dfb4312351', part: "label-start", class: labelClasses, htmlFor: `${this.filterState.facetId}_start` }, minText), h("input", { key: '234b78c7576407d5a976e2f1dae6fba679539593', part: "input-start", id: `${this.filterState.facetId}_start`, type: "number", step: step, ref: (ref) => (this.startRef = ref), class: inputClasses, "aria-label": minAria, required: true, min: Number.MIN_SAFE_INTEGER, max: this.end, value: this.filterState.range?.start, onInput: (e) => (this.start = e.target.valueAsNumber) }), h("label", { key: '70161503018f6216d48de99f47671edee1fce28b', part: "label-end", class: labelClasses, htmlFor: `${this.filterState.facetId}_end` }, maxText), h("input", { key: '1a1311e051daf2bac1771cb500a79859aaa0a795', part: "input-end", id: `${this.filterState.facetId}_end`, type: "number", step: step, ref: (ref) => (this.endRef = ref), class: inputClasses, "aria-label": maxAria, required: true, min: this.start, max: Number.MAX_SAFE_INTEGER, value: this.filterState.range?.end, onInput: (e) => (this.end = e.target.valueAsNumber) }), h(Button, { key: '267ee8fa7e6bb2dc8dc248a1c49b0ac757b4efe3', style: "outline-primary", type: "submit", part: "input-apply-button", class: "flex-none truncate p-2.5", ariaLabel: applyAria, text: apply })));
49
+ } }, h("label", { key: 'edfa0efd988534f6c8228215489220f79504e166', part: "label-start", class: labelClasses, htmlFor: `${this.filterState.facetId}_start` }, minText), h("input", { key: 'c032ead904ce549843de5ca3f124d8502a3e4d14', part: "input-start", id: `${this.filterState.facetId}_start`, type: "number", step: step, ref: (ref) => (this.startRef = ref), class: inputClasses, "aria-label": minAria, required: true, min: Number.MIN_SAFE_INTEGER, max: this.end, value: this.filterState.range?.start, onInput: (e) => (this.start = e.target.valueAsNumber) }), h("label", { key: '5e6950b85237aaf46b09d00487f882044402eec1', part: "label-end", class: labelClasses, htmlFor: `${this.filterState.facetId}_end` }, maxText), h("input", { key: 'c07d8787a0bcdc8f267f3d753752feb14c1e14f2', part: "input-end", id: `${this.filterState.facetId}_end`, type: "number", step: step, ref: (ref) => (this.endRef = ref), class: inputClasses, "aria-label": maxAria, required: true, min: this.start, max: Number.MAX_SAFE_INTEGER, value: this.filterState.range?.end, onInput: (e) => (this.end = e.target.valueAsNumber) }), h(Button, { key: '97b81fcf3f99a3a250b1f4e538dd720893be20fe', style: "outline-primary", type: "submit", part: "input-apply-button", class: "flex-none truncate p-2.5", ariaLabel: applyAria, text: apply })));
50
50
  }
51
51
  static get style() { return AtomicFacetNumberInputStyle0; }
52
52
  }, [0, "atomic-facet-number-input", {
@@ -4,7 +4,7 @@ function getWindow() {
4
4
  }
5
5
  export function getAtomicEnvironment() {
6
6
  return {
7
- version: "3.27.5-pre.fc6b95219b".VERSION,
7
+ version: "3.28.0-pre.1b995035ea".VERSION,
8
8
  headlessVersion: VERSION,
9
9
  };
10
10
  }
@@ -1 +1 @@
1
- {"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAca,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,WAAmB,EAAE,UAAkB;QACjD,KAAK,CACH,QAAQ,WAAW,sCAAsC,UAAU,YAAY,CAChF,CAAC;KACH;;;ACfH,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;SAIpC,gBAAgB,CAAI,OAAgB,EAAE,UAAkB;IACtE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM;QACpC,MAAM,KAAK,GAAG,gBAAgB,CAC5B,oBAAoB,EACpB,CAAC,IAAO;YACN,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB,CACF,CAAC;QACF,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;YACjC,MAAM,CACJ,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CACnE,CAAC;SACH;KACF,CAAC,CAAC;AACL;;ACkDA;;;;;;;;;;SAUgB,mBAAmB,CAAoB,OAAgB;IACrE,OAAO,gBAAgB,CAAI,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxD;;;;","names":[],"sources":["src/components/common/item-list/context/item-context-controller.ts","src/components/common/item-list/fetch-item-context.ts","src/decorators/commerce/product-template-decorators.ts"],"sourcesContent":["import {InitializableComponent} from '@/src/decorators/types.js';\nimport {buildCustomEvent} from '@/src/utils/event-utils';\nimport {LitElement, ReactiveController, ReactiveControllerHost} from 'lit';\n\ntype LitElementWithError = Omit<\n Pick<InitializableComponent, 'error'>,\n 'error'\n> &\n LitElement & {\n error: Error | null;\n };\n\nconst itemContextEventName = 'atomic/resolveResult';\n\nexport class MissingParentError extends Error {\n constructor(elementName: string, parentName: string) {\n super(\n `The \"${elementName}\" element must be the child of an \"${parentName}\" element.`\n );\n }\n}\n\nfunction extractFolded<T = Record<string, unknown>>(\n item: Record<string, unknown>,\n returnFolded: boolean\n): T {\n if (returnFolded) {\n if ('children' in item) {\n return item as T;\n } else {\n return {children: [], result: item} as T;\n }\n }\n\n if ('children' in item && 'result' in item) {\n return item.result as T;\n }\n return item as T;\n}\n\n/**\n * A reactive controller that manages item context data from parent components.\n * Handles fetching item data via custom events and manages error states.\n */\nexport class ItemContextController<T = Record<string, unknown>>\n implements ReactiveController\n{\n private host: ReactiveControllerHost & LitElementWithError;\n private parentName: string;\n private folded: boolean;\n private _item: T | null = null;\n private _error: MissingParentError | null = null;\n\n constructor(\n host: ReactiveControllerHost & LitElementWithError,\n options: {parentName?: string; folded?: boolean} = {}\n ) {\n this.host = host;\n this.parentName = options.parentName ?? 'atomic-result';\n this.folded = options.folded ?? false;\n host.addController(this);\n }\n\n get item(): T | null {\n return this._error ? null : this._item;\n }\n\n get error(): MissingParentError | null {\n return this._error;\n }\n\n get hasError(): boolean {\n return this._error !== null;\n }\n\n hostConnected(): void {\n this._resolveItemContext();\n }\n\n private _resolveItemContext(): void {\n const event = buildCustomEvent(\n itemContextEventName,\n (item: Record<string, unknown>) => {\n this._item = extractFolded<T>(item, this.folded);\n this._error = null;\n this.host.error = null;\n this.host.requestUpdate();\n }\n );\n\n const canceled = this.host.dispatchEvent(event);\n if (canceled) {\n const elementName = (this.host as Element).nodeName.toLowerCase();\n this._error = new MissingParentError(elementName, this.parentName);\n this._item = null;\n this.host.error = this._error;\n this.host.requestUpdate();\n }\n }\n}\n\ntype ItemContextEventHandler<T> = (item: T) => void;\nexport type ItemContextEvent<T> = CustomEvent<ItemContextEventHandler<T>>;\n","import {closest} from '../../../utils/dom-utils.js';\nimport {buildCustomEvent} from '../../../utils/event-utils.js';\nimport {MissingParentError} from './context/item-context-controller.js';\n\nconst itemContextEventName = 'atomic/resolveResult';\n\ntype ItemContextEventHandler<T> = (item: T) => void;\n\nexport function fetchItemContext<T>(element: Element, parentName: string) {\n return new Promise<T>((resolve, reject) => {\n const event = buildCustomEvent<ItemContextEventHandler<T>>(\n itemContextEventName,\n (item: T) => {\n return resolve(item);\n }\n );\n element.dispatchEvent(event);\n\n if (!closest(element, parentName)) {\n reject(\n new MissingParentError(element.nodeName.toLowerCase(), parentName)\n );\n }\n });\n}\n","import {InteractiveItemContextController} from '@/src/components/common/item-list/context/interactive-item-context-controller';\nimport {InteractiveItemContextEvent} from '@/src/components/common/item-list/context/interactive-item-context-controller';\nimport {\n ItemContextController,\n ItemContextEvent,\n} from '@/src/components/common/item-list/context/item-context-controller';\nimport {fetchItemContext} from '@/src/components/common/item-list/fetch-item-context';\nimport {InteractiveProduct, Product} from '@coveo/headless/commerce';\nimport {LitElement} from 'lit';\n\n/**\n * Creates a [Lit reactive controller](https://lit.dev/docs/composition/controllers/) for managing product context in product template components.\n *\n * @param host - The Lit component instance\n * @param options - Configuration options\n * @returns ItemContextController instance configured for atomic-product\n *\n * @example\n * ```typescript\n * @customElement('my-product-component')\n * export class MyProductComponent extends LitElement {\n * private productController = createProductContextController(this);\n *\n * @state() product!: Product;\n *\n * render() {\n * this.product = this.productController.item;\n * return html`<div>${this.product?.ec_name}</div>`;\n * }\n * }\n * ```\n */\nexport function createProductContextController(\n host: LitElement & {error: Error | null},\n options: {folded?: boolean} = {}\n): ItemContextController<Product> {\n return new ItemContextController<Product>(host, {\n parentName: 'atomic-product',\n folded: options.folded ?? false,\n });\n}\n\n/**\n * Creates a [Lit reactive controller](https://lit.dev/docs/composition/controllers/) for managing interactive product context in product template components.\n *\n * @param host - The Lit component instance\n * @returns InteractiveItemContextController instance\n *\n * @example\n * ```typescript\n * @customElement('my-interactive-product-component')\n * export class MyInteractiveProductComponent extends LitElement {\n * private interactiveProductController = createInteractiveProductContextController(this);\n *\n * @state() product!: Product;\n *\n * render() {\n * this.product = this.interactiveProductController.interactiveItem;\n * return html`<div>${this.product?.ec_name}</div>`;\n * }\n * }\n * ```\n */\nexport function createInteractiveProductContextController(\n host: LitElement & {error: Error}\n): InteractiveItemContextController<InteractiveProduct> {\n return new InteractiveItemContextController<InteractiveProduct>(host);\n}\n\nexport type ProductContextEvent<T = Product> = ItemContextEvent<T>;\nexport type InteractiveProductContextEvent<\n T extends InteractiveProduct = InteractiveProduct,\n> = InteractiveItemContextEvent<T>;\n\n/**\n * Retrieves `Product` on a rendered `atomic-product`.\n *\n * This utility function is useful for building custom product template elements, see [Create a Product List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-product-template-component-example) for more information.\n *\n * You should use the utility function in the [`connectedCallback` lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).\n *\n * @param element - The element that the event is dispatched to, which must be the child of a rendered `atomic-product`.\n * @returns A promise that resolves on initialization of the parent `atomic-product` element, or rejects when there is no parent `atomic-product` element.\n */\nexport function fetchProductContext<T extends Product>(element: Element) {\n return fetchItemContext<T>(element, 'atomic-product');\n}\n"],"version":3}
1
+ {"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAca,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,WAAmB,EAAE,UAAkB;QACjD,KAAK,CACH,QAAQ,WAAW,sCAAsC,UAAU,YAAY,CAChF,CAAC;KACH;;;ACfH,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;SAIpC,gBAAgB,CAAI,OAAgB,EAAE,UAAkB;IACtE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM;QACpC,MAAM,KAAK,GAAG,gBAAgB,CAC5B,oBAAoB,EACpB,CAAC,IAAO;YACN,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB,CACF,CAAC;QACF,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;YACjC,MAAM,CACJ,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CACnE,CAAC;SACH;KACF,CAAC,CAAC;AACL;;ACkDA;;;;;;;;;;SAUgB,mBAAmB,CAAoB,OAAgB;IACrE,OAAO,gBAAgB,CAAI,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxD;;;;","names":[],"sources":["src/components/common/item-list/context/item-context-controller.ts","src/components/common/item-list/fetch-item-context.ts","src/decorators/commerce/product-template-decorators.ts"],"sourcesContent":["import {InitializableComponent} from '@/src/decorators/types.js';\nimport {buildCustomEvent} from '@/src/utils/event-utils';\nimport {LitElement, ReactiveController, ReactiveControllerHost} from 'lit';\n\ntype LitElementWithError = Omit<\n Pick<InitializableComponent, 'error'>,\n 'error'\n> &\n LitElement & {\n error: Error | null;\n };\n\nconst itemContextEventName = 'atomic/resolveResult';\n\nexport class MissingParentError extends Error {\n constructor(elementName: string, parentName: string) {\n super(\n `The \"${elementName}\" element must be the child of an \"${parentName}\" element.`\n );\n }\n}\n\nfunction extractFolded<T = Record<string, unknown>>(\n item: Record<string, unknown>,\n returnFolded: boolean\n): T {\n if (returnFolded) {\n if ('children' in item) {\n return item as T;\n } else {\n return {children: [], result: item} as T;\n }\n }\n\n if ('children' in item && 'result' in item) {\n return item.result as T;\n }\n return item as T;\n}\n\n/**\n * A reactive controller that manages item context data from parent components.\n * Handles fetching item data via custom events and manages error states.\n */\nexport class ItemContextController<T = Record<string, unknown>>\n implements ReactiveController\n{\n private host: ReactiveControllerHost & LitElementWithError;\n private parentName: string;\n private folded: boolean;\n private _item: T | null = null;\n private _error: MissingParentError | null = null;\n\n constructor(\n host: ReactiveControllerHost & LitElementWithError,\n options: {parentName?: string; folded?: boolean} = {}\n ) {\n this.host = host;\n this.parentName = options.parentName ?? 'atomic-result';\n this.folded = options.folded ?? false;\n host.addController(this);\n }\n\n get item(): T | null {\n return this._error ? null : this._item;\n }\n\n get error(): MissingParentError | null {\n return this._error;\n }\n\n get hasError(): boolean {\n return this._error !== null;\n }\n\n hostConnected(): void {\n this._resolveItemContext();\n }\n\n private _resolveItemContext(): void {\n const event = buildCustomEvent(\n itemContextEventName,\n (item: Record<string, unknown>) => {\n this._item = extractFolded<T>(item, this.folded);\n this._error = null;\n this.host.error = null;\n this.host.requestUpdate();\n }\n );\n\n const canceled = this.host.dispatchEvent(event);\n if (canceled) {\n const elementName = (this.host as Element).nodeName.toLowerCase();\n this._error = new MissingParentError(elementName, this.parentName);\n this._item = null;\n this.host.error = this._error;\n this.host.requestUpdate();\n }\n }\n}\n\ntype ItemContextEventHandler<T> = (item: T) => void;\nexport type ItemContextEvent<T> = CustomEvent<ItemContextEventHandler<T>>;\n","import {closest} from '../../../utils/dom-utils.js';\nimport {buildCustomEvent} from '../../../utils/event-utils.js';\nimport {MissingParentError} from './context/item-context-controller.js';\n\nconst itemContextEventName = 'atomic/resolveResult';\n\ntype ItemContextEventHandler<T> = (item: T) => void;\n\nexport function fetchItemContext<T>(element: Element, parentName: string) {\n return new Promise<T>((resolve, reject) => {\n const event = buildCustomEvent<ItemContextEventHandler<T>>(\n itemContextEventName,\n (item: T) => {\n return resolve(item);\n }\n );\n element.dispatchEvent(event);\n\n if (!closest(element, parentName)) {\n reject(\n new MissingParentError(element.nodeName.toLowerCase(), parentName)\n );\n }\n });\n}\n","import {InteractiveItemContextController} from '@/src/components/common/item-list/context/interactive-item-context-controller';\nimport {InteractiveItemContextEvent} from '@/src/components/common/item-list/context/interactive-item-context-controller';\nimport {\n ItemContextController,\n ItemContextEvent,\n} from '@/src/components/common/item-list/context/item-context-controller';\nimport {fetchItemContext} from '@/src/components/common/item-list/fetch-item-context';\nimport {InteractiveProduct, Product} from '@coveo/headless/commerce';\nimport {LitElement} from 'lit';\n\n/**\n * Creates a [Lit reactive controller](https://lit.dev/docs/composition/controllers/) for managing product context in product template components.\n *\n * @param host - The Lit component instance\n * @param options - Configuration options\n * @returns ItemContextController instance configured for atomic-product\n *\n * @example\n * ```typescript\n * @customElement('my-product-component')\n * export class MyProductComponent extends LitElement {\n * private productController = createProductContextController(this);\n *\n * @state() product!: Product;\n *\n * render() {\n * this.product = this.productController.item;\n * return html`<div>${this.product?.ec_name}</div>`;\n * }\n * }\n * ```\n */\nexport function createProductContextController(\n host: LitElement & {error: Error | null},\n options: {folded?: boolean} = {}\n): ItemContextController<Product> {\n return new ItemContextController<Product>(host, {\n parentName: 'atomic-product',\n folded: options.folded ?? false,\n });\n}\n\n/**\n * Creates a [Lit reactive controller](https://lit.dev/docs/composition/controllers/) for managing interactive product context in product template components.\n *\n * @param host - The Lit component instance\n * @returns InteractiveItemContextController instance\n *\n * @example\n * ```typescript\n * @customElement('my-interactive-product-component')\n * export class MyInteractiveProductComponent extends LitElement {\n * private interactiveProductController = createInteractiveProductContextController(this);\n *\n * @state() product!: Product;\n *\n * render() {\n * this.product = this.interactiveProductController.interactiveItem;\n * return html`<div>${this.product?.ec_name}</div>`;\n * }\n * }\n * ```\n */\nexport function createInteractiveProductContextController(\n host: LitElement & {error: Error}\n): InteractiveItemContextController<InteractiveProduct> {\n return new InteractiveItemContextController<InteractiveProduct>(host);\n}\n\nexport type ProductContextEvent<T = Product> = ItemContextEvent<T>;\nexport type InteractiveProductContextEvent<\n T extends InteractiveProduct = InteractiveProduct,\n> = InteractiveItemContextEvent<T>;\n\n/**\n * Retrieves `Product` on a rendered `atomic-product`.\n *\n * This utility function is useful for building custom product template elements, see [Create a Product List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-product-template-component-example) for more information.\n *\n * You should use the utility function in the [`connectedCallback` lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).\n *\n * @param element - The element that the event is dispatched to, which must be the child of a rendered `atomic-product`.\n * @returns A promise that resolves on initialization of the parent `atomic-product` element, or rejects when there is no parent `atomic-product` element.\n */\nexport function fetchProductContext<T extends Product>(element: Element) {\n return fetchItemContext<T>(element, 'atomic-product');\n}\n"],"version":3}
@@ -2220,7 +2220,7 @@ function getWindow() {
2220
2220
  }
2221
2221
  function getAtomicEnvironment() {
2222
2222
  return {
2223
- version: "3.27.5-pre.fc6b95219b",
2223
+ version: "3.28.0-pre.1b995035ea",
2224
2224
  headlessVersion: VERSION,
2225
2225
  };
2226
2226
  }
@@ -13,13 +13,6 @@ function parseValue(product, field) {
13
13
  }
14
14
  return valueAsNumber;
15
15
  }
16
- function getStringValueFromProductOrNull(product, field) {
17
- const value = ProductTemplatesHelpers.getProductProperty(product, field);
18
- if (typeof value !== 'string' || value.trim() === '') {
19
- return null;
20
- }
21
- return value;
22
- }
23
16
  function buildStringTemplateFromProduct(template, product, bindings) {
24
17
  return template.replace(/\${(.*?)}/g, (value) => {
25
18
  const key = value.substring(2, value.length - 1);
@@ -35,6 +28,6 @@ function buildStringTemplateFromProduct(template, product, bindings) {
35
28
  });
36
29
  }
37
30
 
38
- export { buildStringTemplateFromProduct as b, getStringValueFromProductOrNull as g, parseValue as p };
31
+ export { buildStringTemplateFromProduct as b, parseValue as p };
39
32
 
40
33
  //# sourceMappingURL=product-utils.js.map