@searchcraft/javascript-sdk 0.5.2 → 0.6.0

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 (314) hide show
  1. package/dist/cjs/{index-b76bece0.js → index-b3b77ea2.js} +2 -1
  2. package/dist/cjs/index-b3b77ea2.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +4 -4
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/searchcraft-base-search-result.cjs.entry.js +3 -3
  6. package/dist/cjs/searchcraft-base-search-result.cjs.entry.js.map +1 -1
  7. package/dist/cjs/searchcraft-base-search-results.cjs.entry.js +13 -12
  8. package/dist/cjs/searchcraft-base-search-results.cjs.entry.js.map +1 -1
  9. package/dist/cjs/searchcraft-button_3.cjs.entry.js +63 -0
  10. package/dist/cjs/searchcraft-button_3.cjs.entry.js.map +1 -0
  11. package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js +140 -14
  12. package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js.map +1 -1
  13. package/dist/cjs/searchcraft-filter-panel.cjs.entry.js +7 -7
  14. package/dist/cjs/searchcraft-filter-panel.cjs.entry.js.map +1 -1
  15. package/dist/cjs/searchcraft-input-form_2.cjs.entry.js +227 -0
  16. package/dist/cjs/searchcraft-input-form_2.cjs.entry.js.map +1 -0
  17. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +2 -2
  18. package/dist/cjs/searchcraft-popover-button.cjs.entry.js +26 -0
  19. package/dist/cjs/searchcraft-popover-button.cjs.entry.js.map +1 -0
  20. package/dist/cjs/searchcraft-popover-form.cjs.entry.js +197 -3
  21. package/dist/cjs/searchcraft-popover-form.cjs.entry.js.map +1 -1
  22. package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js +32 -0
  23. package/dist/cjs/searchcraft-popover-list-item.cjs.entry.js.map +1 -0
  24. package/dist/cjs/searchcraft-results-info.cjs.entry.js +5 -5
  25. package/dist/cjs/searchcraft-results-info.cjs.entry.js.map +1 -1
  26. package/dist/cjs/{store-943576b0.js → store-d7ebcf7a.js} +280 -267
  27. package/dist/cjs/store-d7ebcf7a.js.map +1 -0
  28. package/dist/cjs/styles-7b2d06f2.js +28 -0
  29. package/dist/cjs/styles-7b2d06f2.js.map +1 -0
  30. package/dist/cjs/units-fe4d8083.js +88 -0
  31. package/dist/cjs/units-fe4d8083.js.map +1 -0
  32. package/dist/collection/collection-manifest.json +2 -1
  33. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js +21 -16
  34. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js.map +1 -1
  35. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.module.css +54 -4
  36. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +45 -13
  37. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
  38. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.module.css +52 -2
  39. package/dist/collection/components/searchcraft-button/searchcraft-button.js +11 -6
  40. package/dist/collection/components/searchcraft-button/searchcraft-button.js.map +1 -1
  41. package/dist/collection/components/searchcraft-button/searchcraft-button.module.css +52 -2
  42. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js +11 -2
  43. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js.map +1 -1
  44. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.module.css +52 -2
  45. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js +23 -4
  46. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js.map +1 -1
  47. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.module.css +52 -2
  48. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js +13 -4
  49. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js.map +1 -1
  50. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.module.css +52 -2
  51. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js +66 -49
  52. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.js.map +1 -1
  53. package/dist/collection/components/searchcraft-input-form/searchcraft-input-form.module.css +56 -6
  54. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js +12 -6
  55. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js.map +1 -1
  56. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.module.css +52 -2
  57. package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.js +25 -0
  58. package/dist/collection/components/searchcraft-popover-button/searchcraft-popover-button.js.map +1 -0
  59. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js +278 -5
  60. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.js.map +1 -1
  61. package/dist/collection/components/searchcraft-popover-form/searchcraft-popover-form.module.css +322 -0
  62. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js +139 -0
  63. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.js.map +1 -0
  64. package/dist/collection/components/searchcraft-popover-list-item/searchcraft-popover-list-item.module.css +209 -0
  65. package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js +47 -6
  66. package/dist/collection/components/searchcraft-popover-list-view/searchcraft-popover-list-view.js.map +1 -1
  67. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js +11 -1
  68. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js.map +1 -1
  69. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.module.css +53 -3
  70. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js +13 -8
  71. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js.map +1 -1
  72. package/dist/collection/components/searchcraft-slider/searchcraft-slider.module.css +52 -2
  73. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js +9 -5
  74. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js.map +1 -1
  75. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.module.css +52 -2
  76. package/dist/collection/index.js +1 -1
  77. package/dist/collection/index.js.map +1 -1
  78. package/dist/collection/provider/store.js +14 -15
  79. package/dist/collection/provider/store.js.map +1 -1
  80. package/dist/collection/types/_shared.types.js +2 -0
  81. package/dist/collection/types/_shared.types.js.map +1 -0
  82. package/dist/collection/types/index.js +1 -0
  83. package/dist/collection/types/index.js.map +1 -1
  84. package/dist/collection/types/searchcraft-base-search-results.types.js.map +1 -1
  85. package/dist/collection/types/searchcraft-popover-form.types.js.map +1 -1
  86. package/dist/collection/utils/{utils.js → facets.js} +7 -105
  87. package/dist/collection/utils/facets.js.map +1 -0
  88. package/dist/collection/utils/index.js +4 -0
  89. package/dist/collection/utils/index.js.map +1 -0
  90. package/dist/collection/utils/styles.js +22 -0
  91. package/dist/collection/utils/styles.js.map +1 -0
  92. package/dist/collection/utils/units.js +83 -0
  93. package/dist/collection/utils/units.js.map +1 -0
  94. package/dist/components/index.js +6 -4
  95. package/dist/components/index.js.map +1 -1
  96. package/dist/components/p-02a16e53.js +240 -0
  97. package/dist/components/p-02a16e53.js.map +1 -0
  98. package/dist/components/{p-cbdcf6df.js → p-04c46179.js} +3 -3
  99. package/dist/components/p-04c46179.js.map +1 -0
  100. package/dist/components/p-0e38a723.js +99 -0
  101. package/dist/components/p-0e38a723.js.map +1 -0
  102. package/dist/components/p-4c45ef80.js +67 -0
  103. package/dist/components/p-4c45ef80.js.map +1 -0
  104. package/dist/components/p-755f491b.js +84 -0
  105. package/dist/components/p-755f491b.js.map +1 -0
  106. package/dist/components/p-85765b81.js +56 -0
  107. package/dist/components/p-85765b81.js.map +1 -0
  108. package/dist/components/p-953f4238.js +35 -0
  109. package/dist/components/p-953f4238.js.map +1 -0
  110. package/dist/components/p-a248ad69.js +276 -0
  111. package/dist/components/p-a248ad69.js.map +1 -0
  112. package/dist/components/p-a9bd1872.js +38 -0
  113. package/dist/components/p-a9bd1872.js.map +1 -0
  114. package/dist/components/p-cf4ced92.js +49 -0
  115. package/dist/components/p-cf4ced92.js.map +1 -0
  116. package/dist/components/{p-ad4ebde0.js → p-d6a88eed.js} +280 -267
  117. package/dist/components/p-d6a88eed.js.map +1 -0
  118. package/dist/components/p-d9551738.js +25 -0
  119. package/dist/components/p-d9551738.js.map +1 -0
  120. package/dist/components/p-f9d778b3.js +48 -0
  121. package/dist/components/p-f9d778b3.js.map +1 -0
  122. package/dist/components/searchcraft-base-search-result.js +1 -1
  123. package/dist/components/searchcraft-base-search-results.js +6 -5
  124. package/dist/components/searchcraft-base-search-results.js.map +1 -1
  125. package/dist/components/searchcraft-button.js +1 -1
  126. package/dist/components/searchcraft-error-message.js +1 -1
  127. package/dist/components/searchcraft-facet-list.js +1 -1
  128. package/dist/components/searchcraft-filter-panel.js +8 -8
  129. package/dist/components/searchcraft-filter-panel.js.map +1 -1
  130. package/dist/components/searchcraft-input-form.js +1 -241
  131. package/dist/components/searchcraft-input-form.js.map +1 -1
  132. package/dist/components/searchcraft-input-label.js +1 -1
  133. package/dist/components/searchcraft-popover-button.d.ts +11 -0
  134. package/dist/components/searchcraft-popover-button.js +39 -0
  135. package/dist/components/searchcraft-popover-button.js.map +1 -0
  136. package/dist/components/searchcraft-popover-form.js +245 -5
  137. package/dist/components/searchcraft-popover-form.js.map +1 -1
  138. package/dist/components/searchcraft-popover-list-item.d.ts +11 -0
  139. package/dist/components/searchcraft-popover-list-item.js +8 -0
  140. package/dist/components/searchcraft-popover-list-item.js.map +1 -0
  141. package/dist/components/searchcraft-popover-list-view.js +1 -1
  142. package/dist/components/searchcraft-results-info.js +3 -3
  143. package/dist/components/searchcraft-results-info.js.map +1 -1
  144. package/dist/components/searchcraft-slider.js +1 -1
  145. package/dist/components/searchcraft-toggle-button.js +1 -1
  146. package/dist/esm/{index-be042742.js → index-11551663.js} +2 -2
  147. package/dist/esm/index-11551663.js.map +1 -0
  148. package/dist/esm/index.js +2 -2
  149. package/dist/esm/loader.js +3 -3
  150. package/dist/esm/searchcraft-base-search-result.entry.js +3 -3
  151. package/dist/esm/searchcraft-base-search-result.entry.js.map +1 -1
  152. package/dist/esm/searchcraft-base-search-results.entry.js +5 -4
  153. package/dist/esm/searchcraft-base-search-results.entry.js.map +1 -1
  154. package/dist/esm/searchcraft-button_3.entry.js +57 -0
  155. package/dist/esm/searchcraft-button_3.entry.js.map +1 -0
  156. package/dist/esm/searchcraft-facet-list_3.entry.js +137 -11
  157. package/dist/esm/searchcraft-facet-list_3.entry.js.map +1 -1
  158. package/dist/esm/searchcraft-filter-panel.entry.js +6 -6
  159. package/dist/esm/searchcraft-filter-panel.entry.js.map +1 -1
  160. package/dist/esm/searchcraft-input-form_2.entry.js +222 -0
  161. package/dist/esm/searchcraft-input-form_2.entry.js.map +1 -0
  162. package/dist/esm/searchcraft-javascript-sdk.js +3 -3
  163. package/dist/esm/searchcraft-popover-button.entry.js +22 -0
  164. package/dist/esm/searchcraft-popover-button.entry.js.map +1 -0
  165. package/dist/esm/searchcraft-popover-form.entry.js +197 -3
  166. package/dist/esm/searchcraft-popover-form.entry.js.map +1 -1
  167. package/dist/esm/searchcraft-popover-list-item.entry.js +28 -0
  168. package/dist/esm/searchcraft-popover-list-item.entry.js.map +1 -0
  169. package/dist/esm/searchcraft-results-info.entry.js +4 -4
  170. package/dist/esm/searchcraft-results-info.entry.js.map +1 -1
  171. package/dist/esm/{store-eb4269d6.js → store-1058f7b0.js} +280 -267
  172. package/dist/esm/store-1058f7b0.js.map +1 -0
  173. package/dist/esm/styles-961644ef.js +25 -0
  174. package/dist/esm/styles-961644ef.js.map +1 -0
  175. package/dist/esm/units-b6eba560.js +84 -0
  176. package/dist/esm/units-b6eba560.js.map +1 -0
  177. package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
  178. package/dist/searchcraft-javascript-sdk/p-4580e8a4.entry.js +2 -0
  179. package/dist/searchcraft-javascript-sdk/p-4580e8a4.entry.js.map +1 -0
  180. package/dist/searchcraft-javascript-sdk/p-7049b93d.entry.js +2 -0
  181. package/dist/searchcraft-javascript-sdk/p-7049b93d.entry.js.map +1 -0
  182. package/dist/searchcraft-javascript-sdk/p-755f491b.js +2 -0
  183. package/dist/searchcraft-javascript-sdk/p-755f491b.js.map +1 -0
  184. package/dist/searchcraft-javascript-sdk/p-8e539d62.entry.js +2 -0
  185. package/dist/searchcraft-javascript-sdk/p-8e539d62.entry.js.map +1 -0
  186. package/dist/searchcraft-javascript-sdk/p-98640a6a.entry.js +2 -0
  187. package/dist/searchcraft-javascript-sdk/p-98640a6a.entry.js.map +1 -0
  188. package/dist/searchcraft-javascript-sdk/p-9d0f5c89.entry.js +2 -0
  189. package/dist/searchcraft-javascript-sdk/p-9d0f5c89.entry.js.map +1 -0
  190. package/dist/searchcraft-javascript-sdk/p-b8bd53ce.entry.js +2 -0
  191. package/dist/searchcraft-javascript-sdk/p-b8bd53ce.entry.js.map +1 -0
  192. package/dist/searchcraft-javascript-sdk/p-c27a3673.entry.js +2 -0
  193. package/dist/searchcraft-javascript-sdk/p-c27a3673.entry.js.map +1 -0
  194. package/dist/searchcraft-javascript-sdk/p-cd852b84.entry.js +2 -0
  195. package/dist/searchcraft-javascript-sdk/p-cd852b84.entry.js.map +1 -0
  196. package/dist/searchcraft-javascript-sdk/p-d6a88eed.js +11 -0
  197. package/dist/searchcraft-javascript-sdk/p-d6a88eed.js.map +1 -0
  198. package/dist/searchcraft-javascript-sdk/p-d9551738.js +2 -0
  199. package/dist/searchcraft-javascript-sdk/p-d9551738.js.map +1 -0
  200. package/dist/searchcraft-javascript-sdk/p-e042deb9.entry.js +2 -0
  201. package/dist/searchcraft-javascript-sdk/p-e042deb9.entry.js.map +1 -0
  202. package/dist/searchcraft-javascript-sdk/{p-d7d0b88c.js → p-e0be53df.js} +2 -2
  203. package/dist/searchcraft-javascript-sdk/{p-d7d0b88c.js.map → p-e0be53df.js.map} +1 -1
  204. package/dist/searchcraft-javascript-sdk/p-efab9f3c.entry.js +2 -0
  205. package/dist/searchcraft-javascript-sdk/p-efab9f3c.entry.js.map +1 -0
  206. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
  207. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
  208. package/dist/types/components/searchcraft-base-search-result/searchcraft-base-search-result.d.ts +53 -0
  209. package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +68 -0
  210. package/dist/types/components/searchcraft-button/searchcraft-button.d.ts +20 -0
  211. package/dist/types/components/searchcraft-error-message/searchcraft-error-message.d.ts +12 -0
  212. package/dist/types/components/searchcraft-facet-list/searchcraft-facet-list.d.ts +25 -0
  213. package/dist/types/components/searchcraft-filter-panel/searchcraft-filter-panel.d.ts +12 -0
  214. package/dist/types/components/searchcraft-input-form/searchcraft-input-form.d.ts +37 -13
  215. package/dist/types/components/searchcraft-input-label/searchcraft-input-label.d.ts +13 -1
  216. package/dist/types/components/searchcraft-popover-button/searchcraft-popover-button.d.ts +7 -0
  217. package/dist/types/components/searchcraft-popover-form/searchcraft-popover-form.d.ts +97 -1
  218. package/dist/types/components/searchcraft-popover-list-item/searchcraft-popover-list-item.d.ts +22 -0
  219. package/dist/types/components/searchcraft-popover-list-view/searchcraft-popover-list-view.d.ts +19 -3
  220. package/dist/types/components/searchcraft-results-info/searchcraft-results-info.d.ts +10 -0
  221. package/dist/types/components/searchcraft-slider/searchcraft-slider.d.ts +18 -0
  222. package/dist/types/components/searchcraft-toggle-button/searchcraft-toggle-button.d.ts +11 -3
  223. package/dist/types/components.d.ts +1023 -30
  224. package/dist/types/index.d.ts +1 -1
  225. package/dist/types/provider/store.d.ts +4 -2
  226. package/dist/types/types/_shared.types.d.ts +45 -0
  227. package/dist/types/types/index.d.ts +1 -0
  228. package/dist/types/types/searchcraft-base-search-results.types.d.ts +1 -8
  229. package/dist/types/types/searchcraft-popover-form.types.d.ts +2 -1
  230. package/dist/types/utils/facets.d.ts +6 -0
  231. package/dist/types/utils/index.d.ts +3 -0
  232. package/dist/types/utils/styles.d.ts +2 -0
  233. package/dist/types/utils/{utils.d.ts → units.d.ts} +12 -19
  234. package/package.json +11 -8
  235. package/dist/cjs/index-b76bece0.js.map +0 -1
  236. package/dist/cjs/searchcraft-button_2.cjs.entry.js +0 -51
  237. package/dist/cjs/searchcraft-button_2.cjs.entry.js.map +0 -1
  238. package/dist/cjs/searchcraft-error-message.cjs.entry.js +0 -23
  239. package/dist/cjs/searchcraft-error-message.cjs.entry.js.map +0 -1
  240. package/dist/cjs/searchcraft-input-form.cjs.entry.js +0 -202
  241. package/dist/cjs/searchcraft-input-form.cjs.entry.js.map +0 -1
  242. package/dist/cjs/searchcraft-popover-list-view.cjs.entry.js +0 -26
  243. package/dist/cjs/searchcraft-popover-list-view.cjs.entry.js.map +0 -1
  244. package/dist/cjs/searchcraft-popover-result.cjs.entry.js +0 -25
  245. package/dist/cjs/searchcraft-popover-result.cjs.entry.js.map +0 -1
  246. package/dist/cjs/store-943576b0.js.map +0 -1
  247. package/dist/cjs/utils-a17279a2.js +0 -226
  248. package/dist/cjs/utils-a17279a2.js.map +0 -1
  249. package/dist/collection/components/searchcraft-popover-result/searchcraft-popover-result.js +0 -21
  250. package/dist/collection/components/searchcraft-popover-result/searchcraft-popover-result.js.map +0 -1
  251. package/dist/collection/utils/utils.js.map +0 -1
  252. package/dist/components/p-16983367.js +0 -35
  253. package/dist/components/p-16983367.js.map +0 -1
  254. package/dist/components/p-42bfef5f.js +0 -151
  255. package/dist/components/p-42bfef5f.js.map +0 -1
  256. package/dist/components/p-5380505b.js +0 -99
  257. package/dist/components/p-5380505b.js.map +0 -1
  258. package/dist/components/p-672354c0.js +0 -38
  259. package/dist/components/p-672354c0.js.map +0 -1
  260. package/dist/components/p-9cb3d38b.js +0 -48
  261. package/dist/components/p-9cb3d38b.js.map +0 -1
  262. package/dist/components/p-a23d2994.js +0 -67
  263. package/dist/components/p-a23d2994.js.map +0 -1
  264. package/dist/components/p-ad4ebde0.js.map +0 -1
  265. package/dist/components/p-bd5fede3.js +0 -41
  266. package/dist/components/p-bd5fede3.js.map +0 -1
  267. package/dist/components/p-cbdcf6df.js.map +0 -1
  268. package/dist/components/p-f308d05d.js +0 -218
  269. package/dist/components/p-f308d05d.js.map +0 -1
  270. package/dist/components/searchcraft-popover-result.d.ts +0 -11
  271. package/dist/components/searchcraft-popover-result.js +0 -38
  272. package/dist/components/searchcraft-popover-result.js.map +0 -1
  273. package/dist/esm/index-be042742.js.map +0 -1
  274. package/dist/esm/searchcraft-button_2.entry.js +0 -46
  275. package/dist/esm/searchcraft-button_2.entry.js.map +0 -1
  276. package/dist/esm/searchcraft-error-message.entry.js +0 -19
  277. package/dist/esm/searchcraft-error-message.entry.js.map +0 -1
  278. package/dist/esm/searchcraft-input-form.entry.js +0 -198
  279. package/dist/esm/searchcraft-input-form.entry.js.map +0 -1
  280. package/dist/esm/searchcraft-popover-list-view.entry.js +0 -22
  281. package/dist/esm/searchcraft-popover-list-view.entry.js.map +0 -1
  282. package/dist/esm/searchcraft-popover-result.entry.js +0 -21
  283. package/dist/esm/searchcraft-popover-result.entry.js.map +0 -1
  284. package/dist/esm/store-eb4269d6.js.map +0 -1
  285. package/dist/esm/utils-c2ce411f.js +0 -218
  286. package/dist/esm/utils-c2ce411f.js.map +0 -1
  287. package/dist/searchcraft-javascript-sdk/p-04300412.entry.js +0 -2
  288. package/dist/searchcraft-javascript-sdk/p-04300412.entry.js.map +0 -1
  289. package/dist/searchcraft-javascript-sdk/p-09c7fbef.entry.js +0 -2
  290. package/dist/searchcraft-javascript-sdk/p-09c7fbef.entry.js.map +0 -1
  291. package/dist/searchcraft-javascript-sdk/p-3e4a28e7.entry.js +0 -2
  292. package/dist/searchcraft-javascript-sdk/p-3e4a28e7.entry.js.map +0 -1
  293. package/dist/searchcraft-javascript-sdk/p-4d3682a8.entry.js +0 -2
  294. package/dist/searchcraft-javascript-sdk/p-4d3682a8.entry.js.map +0 -1
  295. package/dist/searchcraft-javascript-sdk/p-61cf9d6c.entry.js +0 -2
  296. package/dist/searchcraft-javascript-sdk/p-61cf9d6c.entry.js.map +0 -1
  297. package/dist/searchcraft-javascript-sdk/p-93b92b65.entry.js +0 -2
  298. package/dist/searchcraft-javascript-sdk/p-93b92b65.entry.js.map +0 -1
  299. package/dist/searchcraft-javascript-sdk/p-a7a7b4e0.entry.js +0 -2
  300. package/dist/searchcraft-javascript-sdk/p-a7a7b4e0.entry.js.map +0 -1
  301. package/dist/searchcraft-javascript-sdk/p-a810aeae.entry.js +0 -2
  302. package/dist/searchcraft-javascript-sdk/p-a810aeae.entry.js.map +0 -1
  303. package/dist/searchcraft-javascript-sdk/p-aa155194.entry.js +0 -2
  304. package/dist/searchcraft-javascript-sdk/p-aa155194.entry.js.map +0 -1
  305. package/dist/searchcraft-javascript-sdk/p-ad4ebde0.js +0 -11
  306. package/dist/searchcraft-javascript-sdk/p-ad4ebde0.js.map +0 -1
  307. package/dist/searchcraft-javascript-sdk/p-adadf38a.entry.js +0 -2
  308. package/dist/searchcraft-javascript-sdk/p-adadf38a.entry.js.map +0 -1
  309. package/dist/searchcraft-javascript-sdk/p-d57eba31.entry.js +0 -2
  310. package/dist/searchcraft-javascript-sdk/p-d57eba31.entry.js.map +0 -1
  311. package/dist/searchcraft-javascript-sdk/p-f308d05d.js +0 -2
  312. package/dist/searchcraft-javascript-sdk/p-f308d05d.js.map +0 -1
  313. package/dist/types/components/searchcraft-popover-result/searchcraft-popover-result.d.ts +0 -6
  314. /package/dist/collection/components/{searchcraft-popover-result/searchcraft-popover-result.module.css → searchcraft-popover-button/searchcraft-popover-button.module.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["searchcraftPopoverFormModuleCss","SearchcraftPopoverFormStyle0","SearchcraftPopoverForm","this","handleDocumentClick","event","hostElement","contains","target","isFocused","handleDocumentKeyDown","key","hotkey","handleHotkeyPressed","document","activeElement","preventDefault","focusOnNextListItem","useSearchcraftStore","getState","setPopoverVisibility","handleInputInit","input","querySelector","focus","componentDidLoad","computedStyle","getComputedStyle","documentElement","breakpointSm","Number","parseFloat","getPropertyValue","trim","breakpointMd","breakpointLg","isPopoverVisibleInState","isPopoverVisible","addEventListener","unsubscribe","subscribe","state","handlePopoverVisibilityChange","searchResults","Object","assign","searchTerm","query","disconnectedCallback","_a","call","removeEventListener","isVisible","body","style","overflow","handleInputFocus","type","window","visualViewport","width","modalElement","createElement","config","popoverResultMappings","setAttribute","appendChild","handleModalBackdropClick","_event","ctrlKey","hotkeyModifier","altKey","metaKey","hostElementInput","handleCancelButtonClick","direction","listItems","Array","from","querySelectorAll","filter","el","hasAttribute","offsetParent","currentIndex","indexOf","length","_b","requestAnimationFrame","selectionEnd","value","selectionStart","hasResultsToShow","_e","_d","_c","data","hits","renderInlinePopover","documents","isListViewVisible","popoverFormClassNames","classNames","h","class","onInputFocus","bind","renderModalPopover","onClick","onInputInit","renderFullscreenPopover","render","map","_index","doc","result"],"sources":["src/components/searchcraft-popover-form/searchcraft-popover-form.module.scss?tag=searchcraft-popover-form","src/components/searchcraft-popover-form/searchcraft-popover-form.tsx"],"sourcesContent":["/**\n * Styles applied to all popover form variants.\n */\n.searchcraft-popover-form {\n display: flex;\n flex-direction: column;\n flex: 1;\n\n & .searchcraft-popover-form-input-wrapper {\n padding: 12px;\n background-color: var(--sc-surface-neutral-secondary);\n display: flex;\n flex-direction: row;\n gap: 4px;\n }\n\n & .searchcraft-popover-form-input-wrapper > searchcraft-input-form {\n flex: 1;\n }\n\n & .searchcraft-popover-form-cancel-button {\n @include body();\n border: 0;\n outline: 0;\n padding: 0;\n flex-shrink: 0;\n background: none;\n cursor: pointer;\n padding-left: 12px;\n padding-right: 12px;\n border-radius: calc(var(--sc-popover-form-border-radius) * 0.8);\n\n &:hover {\n background-color: var(--sc-surface-brand-secondary-hover);\n }\n\n &:focus {\n background-color: var(--sc-surface-brand-secondary-active);\n }\n }\n}\n\n/**\n * Styles applied to `inline` popover forms.\n */\n.searchcraft-popover-form-inline {\n & .searchcraft-input {\n border-top-left-radius: var(--sc-popover-form-border-radius);\n border-top-right-radius: var(--sc-popover-form-border-radius);\n border-bottom-left-radius: var(--sc-popover-form-border-radius);\n border-bottom-right-radius: var(--sc-popover-form-border-radius);\n border: none;\n outline: none;\n }\n\n &.searchcraft-popover-form-active .searchcraft-input {\n border-top-left-radius: var(--sc-popover-form-border-radius);\n border-top-right-radius: var(--sc-popover-form-border-radius);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n & .searchcraft-popover-inline-wrapper-outer {\n position: relative;\n }\n\n & .searchcraft-popover-inline-wrapper-inner {\n position: absolute;\n height: var(--sc-popover-list-view-height);\n z-index: 1000;\n width: 100%;\n }\n\n & .searchcraft-popover-list-view {\n display: flex;\n flex-direction: column;\n overflow: auto;\n background-color: var(--sc-surface-neutral-secondary);\n border-bottom-left-radius: var(--sc-popover-form-border-radius);\n border-bottom-right-radius: var(--sc-popover-form-border-radius);\n max-height: var(--sc-popover-list-view-height)\n }\n}\n\n/**\n * Styles applied to `modal` popover forms.\n */\n.searchcraft-popover-form-modal {\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding: 0;\n background-color: var(--sc-surface-neutral-secondary);\n\n @media (min-width: $breakpoint-sm) {\n padding: 16px;\n background-color: transparent;\n }\n\n & .searchcraft-input {\n border-radius: calc(var(--sc-popover-form-border-radius) * 0.8);\n outline-width: 1px;\n outline-color: var(--sc-border-neutral);\n }\n\n & .searchcraft-popover-form-modal-backdrop {\n position: absolute;\n inset: 0;\n background-color: rgba(0,0,0, 0.5);\n display: none;\n\n @media (min-width: $breakpoint-sm) {\n display: block;\n }\n }\n\n & .searchcraft-popover-form-modal-inner {\n position: absolute;\n inset: 0;\n z-index: 1002;\n margin-top: 0px;\n display: flex;\n border-radius: var(--sc-popover-form-border-radius);\n overflow: hidden;\n\n @media (min-width: $breakpoint-sm) {\n inset: auto;\n position: relative;\n width: 100%;\n margin-top: 100px;\n max-width: var(--sc-popover-modal-max-width);\n }\n }\n\n & .searchcraft-popover-list-view {\n display: flex;\n flex-direction: column;\n overflow: auto;\n background-color: var(--sc-surface-neutral-secondary);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n @media (min-width: $breakpoint-sm) {\n max-height: var(--sc-popover-list-view-height)\n }\n }\n\n & searchcraft-popover-list-view {\n overflow: scroll;\n\n @media (min-width: $breakpoint-sm) {\n overflow: auto;\n }\n }\n}\n\n/**\n * Styles applied to `fullscreen` popover forms.\n */\n.searchcraft-popover-form-fullscreen {\n position: fixed;\n inset: 0;\n z-index: 1000;\n background-color: var(--sc-surface-neutral-secondary);\n\n & .searchcraft-popover-form {\n position: absolute;\n inset: 0;\n }\n\n & .searchcraft-input {\n border-radius: calc(var(--sc-popover-form-border-radius) * 0.8);\n outline-width: 1px;\n outline-color: var(--sc-border-neutral);\n }\n\n & searchcraft-popover-list-view {\n overflow: scroll;\n }\n}\n","import { Component, Element, Prop, State, h } from '@stencil/core';\nimport classNames from 'classnames';\nimport type { SearchcraftConfig, SearchcraftResponse } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\nimport type { PopoverResultMappings } from 'types';\n\n/**\n * This web component is designed to display search results in a popover container that dynamically appears when the user interacts with a search input field.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-popover-form type=\"fullscreen\" />\n * ```\n *\n * ```js\n * // index.js\n * const popoverForm = document.querySelector('searchcraft-popover-form');\n *\n * popoverForm.config = {\n * index: [index_name_from_vektron],\n * readKey: 'read_key_from_vektron',\n * endpointUrl: 'enpoint_url_from_vektron',\n * };\n *\n * popoverForm.popoverResultMappings = {\n * containerHref: {\n * fieldNames: [\n * {\n * fieldName: 'canonical_link',\n * dataType: 'text',\n * },\n * ],\n * };\n * ```\n */\n@Component({\n tag: 'searchcraft-popover-form',\n styleUrl: 'searchcraft-popover-form.module.scss',\n shadow: false,\n})\nexport class SearchcraftPopoverForm {\n /**\n * The Searchcraft config object.\n */\n @Prop() config: SearchcraftConfig | undefined;\n /**\n * The type of popover form to render.\n *\n * - `inline` - Renders inline with the rest of the content on the page. The search results pop over the page content.\n * - `fullscreen` - Renders in fullscreen view. Used together with the `searchcraft-popover-button` component.\n * - `modal` - Renders in a modal view. Used together with the `searchcraft-popover-button` component.\n */\n @Prop() type: 'inline' | 'fullscreen' | 'modal' = 'inline';\n /**\n * Formats the content rendered for each result.\n */\n @Prop() popoverResultMappings: PopoverResultMappings | undefined;\n /**\n * The hotkey that activates the popover.\n */\n @Prop() hotkey = 'k';\n /**\n * The hotkey modifier that activates the popover. Used together with the `hotkey` prop.\n */\n @Prop() hotkeyModifier: 'ctrl' | 'meta' | 'alt' | 'option' = 'meta';\n\n @State() isPopoverVisibleInState = false;\n @State() unsubscribe: (() => void) | undefined;\n @State() searchResults: SearchcraftResponse | undefined;\n @State() searchTerm: string | undefined;\n @State() isFocused = false;\n @State() breakpointSm = 576;\n @State() breakpointMd = 768;\n @State() breakpointLg = 992;\n\n @State() modalElement;\n\n @Element() hostElement!: HTMLElement;\n\n componentDidLoad() {\n // Loads the breakpoint values into state\n const computedStyle = getComputedStyle(document.documentElement);\n this.breakpointSm = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-sm').trim(),\n );\n this.breakpointMd = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-md').trim(),\n );\n this.breakpointLg = Number.parseFloat(\n computedStyle.getPropertyValue('--sc-breakpoint-lg').trim(),\n );\n // Set popover visiblity in state\n this.isPopoverVisibleInState =\n useSearchcraftStore.getState().isPopoverVisible;\n\n // Add event listeners\n document.addEventListener('click', this.handleDocumentClick);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n\n // Subscribe to state events\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (this.isPopoverVisibleInState !== state.isPopoverVisible) {\n this.handlePopoverVisibilityChange(state.isPopoverVisible);\n }\n\n this.searchResults = { ...state.searchResults };\n this.searchTerm = state.query;\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n document.removeEventListener('click', this.handleDocumentClick);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleDocumentClick = (event: MouseEvent) => {\n if (!this.hostElement.contains(event.target as Node)) {\n this.isFocused = false;\n }\n };\n\n /**\n * Handles when popover visibility is changed in state\n */\n handlePopoverVisibilityChange(isVisible: boolean) {\n this.isPopoverVisibleInState = isVisible;\n document.body.style.overflow = isVisible ? 'hidden' : 'auto';\n }\n\n /**\n * Actions to perform when various keys are pressed within the popover form.\n */\n handleDocumentKeyDown = (event: KeyboardEvent) => {\n // Document-scoped actions\n if (event.key === this.hotkey) {\n this.handleHotkeyPressed(event);\n }\n\n // Document-scoped -> Popover-scoped keyboard event boundary\n if (!this.hostElement.contains(document.activeElement)) {\n return;\n }\n\n // Popover-scoped actions\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault();\n this.focusOnNextListItem(event.key);\n break;\n case 'Escape':\n useSearchcraftStore.getState().setPopoverVisibility(false);\n break;\n default:\n return;\n }\n };\n\n handleInputInit = () => {\n const input = this.hostElement.querySelector('.searchcraft-input') as\n | HTMLInputElement\n | undefined;\n input?.focus();\n };\n\n /**\n * When popover is `inline` and the viewport is at the smallest breakpoint,\n * focusing on the input will open a modal version of the popover form.\n */\n handleInputFocus() {\n this.isFocused = true;\n\n if (\n this.type === 'inline' &&\n window.visualViewport.width < this.breakpointSm\n ) {\n useSearchcraftStore.getState().setPopoverVisibility(true);\n\n // Appends a popover form of type=`modal` to the body\n if (!this.modalElement) {\n this.modalElement = document.createElement('searchcraft-popover-form');\n this.modalElement.config = this.config;\n this.modalElement.popoverResultMappings = this.popoverResultMappings;\n this.modalElement.setAttribute('type', 'fullscreen');\n document.body.appendChild(this.modalElement);\n }\n }\n }\n\n handleModalBackdropClick(_event: MouseEvent) {\n useSearchcraftStore.getState().setPopoverVisibility(false);\n }\n\n /**\n * When a hotkey is pressed, tests if the modifiers also match.\n * If modifiers match, toggles visibility of the popover modal.\n */\n handleHotkeyPressed(event: KeyboardEvent) {\n if (\n (event.ctrlKey && this.hotkeyModifier === 'ctrl') ||\n (event.altKey && this.hotkeyModifier === 'alt') ||\n (event.metaKey && this.hotkeyModifier === 'meta')\n ) {\n event.preventDefault();\n if (this.type === 'inline' && !this.isPopoverVisibleInState) {\n const hostElementInput = this.hostElement.querySelector(\n '.searchcraft-input',\n ) as HTMLInputElement | undefined;\n hostElementInput?.focus();\n } else {\n useSearchcraftStore\n .getState()\n .setPopoverVisibility(!this.isPopoverVisibleInState);\n }\n }\n }\n\n handleCancelButtonClick() {\n useSearchcraftStore.getState().setPopoverVisibility(false);\n }\n\n /**\n * Moves focus to the next/previous list item in the list view. If you are at the top\n * of the list view, it moves focus back to the input.\n *\n * @param direction\n */\n focusOnNextListItem(direction: 'ArrowDown' | 'ArrowUp') {\n const listItems = Array.from(\n document.querySelectorAll<HTMLAnchorElement>(\n 'a.searchcraft-popover-list-item',\n ),\n ).filter((el) => !el.hasAttribute('disabled') && el.offsetParent !== null);\n\n const currentIndex = listItems.indexOf(\n document.activeElement as HTMLAnchorElement,\n );\n\n if (direction === 'ArrowDown') {\n listItems[(currentIndex + 1) % listItems.length]?.focus();\n } else if (direction === 'ArrowUp') {\n if (currentIndex >= 1) {\n listItems[currentIndex - 1]?.focus();\n } else {\n const input = document.querySelector('.searchcraft-input') as\n | HTMLInputElement\n | undefined;\n\n if (input) {\n input.focus();\n requestAnimationFrame(() => {\n input.selectionEnd = input.value.length;\n input.selectionStart = input.value.length;\n });\n }\n }\n }\n }\n\n get hasResultsToShow() {\n return (\n this.searchTerm?.trim()?.length > 0 &&\n this.searchResults?.data?.hits?.length > 0\n );\n }\n\n renderInlinePopover(documents: Record<string, unknown>[]) {\n const isListViewVisible = this.hasResultsToShow && this.isFocused;\n\n const popoverFormClassNames = classNames(\n 'searchcraft-popover-form searchcraft-popover-form-inline',\n {\n 'searchcraft-popover-form-active': isListViewVisible,\n },\n );\n\n return (\n <div class={popoverFormClassNames}>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n />\n {isListViewVisible && (\n <div class='searchcraft-popover-inline-wrapper-outer'>\n <div class='searchcraft-popover-inline-wrapper-inner'>\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n documents={documents}\n />\n </div>\n </div>\n )}\n </div>\n );\n }\n\n renderModalPopover(documents: Record<string, unknown>[]) {\n if (this.isPopoverVisibleInState) {\n const popoverFormClassNames = classNames('searchcraft-popover-form', {\n 'searchcraft-popover-form-active': this.hasResultsToShow,\n });\n\n return (\n <div class='searchcraft-popover-form-modal'>\n {/* biome-ignore lint/a11y/useKeyWithClickEvents: <explanation> */}\n <div\n class='searchcraft-popover-form-modal-backdrop'\n onClick={this.handleModalBackdropClick}\n />\n <div class='searchcraft-popover-form-modal-inner'>\n <div class={popoverFormClassNames}>\n <div class='searchcraft-popover-form-input-wrapper'>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n onInputInit={this.handleInputInit.bind(this)}\n />\n <button\n type='button'\n class='searchcraft-popover-form-cancel-button'\n onClick={this.handleCancelButtonClick.bind(this)}\n >\n Cancel\n </button>\n </div>\n {this.hasResultsToShow && (\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n documents={documents}\n />\n )}\n </div>\n </div>\n </div>\n );\n }\n }\n\n renderFullscreenPopover(documents: Record<string, unknown>[]) {\n if (this.isPopoverVisibleInState) {\n return (\n <div class='searchcraft-popover-form-fullscreen'>\n <div class='searchcraft-popover-form'>\n <div class='searchcraft-popover-form-input-wrapper'>\n <searchcraft-input-form\n config={this.config}\n onInputFocus={this.handleInputFocus.bind(this)}\n onInputInit={this.handleInputInit.bind(this)}\n />\n <button\n type='button'\n class='searchcraft-popover-form-cancel-button'\n onClick={this.handleCancelButtonClick.bind(this)}\n >\n Cancel\n </button>\n </div>\n {this.hasResultsToShow && (\n <searchcraft-popover-list-view\n popoverResultMappings={this.popoverResultMappings}\n documents={documents}\n />\n )}\n </div>\n </div>\n );\n }\n }\n\n render() {\n const documents: Record<string, unknown>[] =\n this.searchResults?.data?.hits?.map((data, _index) => {\n const { doc: result } = data;\n return result;\n });\n\n switch (this.type) {\n case 'inline':\n return this.renderInlinePopover(documents);\n case 'modal':\n return this.renderModalPopover(documents);\n case 'fullscreen':\n return this.renderFullscreenPopover(documents);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ function t(t,n){if(t&&n){return n.fieldNames.map((n=>{let e=t[n.fieldName];if(e){switch(n.dataType){case"date":{e=r(e);break}case"number":{e=Intl.NumberFormat(n.numberFormatLocale,n.numberFormatOptions).format(e*(n.numberScale||1));break}}}return e})).filter((t=>!!t)).join(n.delimiter||" ")}}function n(t){const n=60*60*1e3;const e=24*n;const r=30*e;const a=365*e;switch(t){case"hour":return n;case"day":return e;case"month":return r;case"year":return a;default:return 36e5}}function e(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function r(t){const n=new Date;const e=new Date(t);const r=Math.floor((n.getTime()-e.getTime())/1e3);const a=Math.floor(r/60);const c=Math.floor(a/60);const o=Math.floor(c/24);const s=Math.floor(o/365);if(a<60){return`${a}m ago`}if(c<24){return`${c}h ago`}if(o<365){return`${o}d ago`}return`${s}y ago`}export{n as a,e as f,t as g};
2
+ //# sourceMappingURL=p-755f491b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getDocumentValueFromSearchResultMapping","document","mapping","fieldNames","map","fieldNameDetails","valueFound","fieldName","dataType","getFormattedTimeFromNow","Intl","NumberFormat","numberFormatLocale","numberFormatOptions","format","numberScale","filter","value","join","delimiter","getMillis","unit","millisInHour","millisInDay","millisInMonth","millisInYear","formatNumberWithCommas","number","toString","replace","timestamp","now","Date","inputTime","diffInSeconds","Math","floor","getTime","minutes","hours","days","years"],"sources":["src/utils/units.ts"],"sourcesContent":["import type { SearchResultMapping } from 'types';\n\n/**\n * Given a document and a SearchResultMapping, return a mapped value from the document.\n *\n * Applies formatting based on the values specified in the `SearchResultFieldName` values.\n *\n * @param document\n * @param {SearchResultMapping} mapping\n * @returns {string | undefined}\n */\nexport function getDocumentValueFromSearchResultMapping(\n document: Record<string, unknown> | undefined,\n mapping: SearchResultMapping | undefined,\n): string | undefined {\n if (document && mapping) {\n return mapping.fieldNames\n .map((fieldNameDetails) => {\n let valueFound = document[fieldNameDetails.fieldName];\n\n if (valueFound) {\n switch (fieldNameDetails.dataType) {\n case 'date': {\n // TODO: Use fieldNameDetails.DateFormatOptions to format the date\n valueFound = getFormattedTimeFromNow(valueFound as string);\n break;\n }\n case 'number': {\n valueFound = Intl.NumberFormat(\n fieldNameDetails.numberFormatLocale,\n fieldNameDetails.numberFormatOptions,\n ).format(\n (valueFound as number) * (fieldNameDetails.numberScale || 1),\n );\n break;\n }\n default:\n break;\n }\n }\n\n return valueFound;\n })\n .filter((value) => !!value)\n .join(mapping.delimiter || ' ');\n }\n}\n\nexport function getMillis(unit: 'year' | 'month' | 'day' | 'hour'): number {\n const millisInHour = 60 * 60 * 1000;\n const millisInDay = 24 * millisInHour;\n const millisInMonth = 30 * millisInDay;\n const millisInYear = 365 * millisInDay;\n\n switch (unit) {\n case 'hour':\n return millisInHour;\n case 'day':\n return millisInDay;\n case 'month':\n return millisInMonth;\n case 'year':\n return millisInYear;\n default:\n return 3600000;\n }\n}\n\nexport function formatNumberWithCommas(number) {\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n\n/**\n * Given a timestamp value, returns a formatted time string for the time\n * since now.\n *\n * @param timestamp\n * @returns {string} Formatted string value\n */\nexport function getFormattedTimeFromNow(timestamp: string): string {\n const now = new Date();\n const inputTime = new Date(timestamp);\n const diffInSeconds = Math.floor(\n (now.getTime() - inputTime.getTime()) / 1000,\n );\n\n const minutes = Math.floor(diffInSeconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const years = Math.floor(days / 365);\n\n if (minutes < 60) {\n return `${minutes}m ago`;\n }\n if (hours < 24) {\n return `${hours}h ago`;\n }\n if (days < 365) {\n return `${days}d ago`;\n }\n return `${years}y ago`;\n}\n"],"mappings":"SAWgBA,EACdC,EACAC,GAEA,GAAID,GAAYC,EAAS,CACvB,OAAOA,EAAQC,WACZC,KAAKC,IACJ,IAAIC,EAAaL,EAASI,EAAiBE,WAE3C,GAAID,EAAY,CACd,OAAQD,EAAiBG,UACvB,IAAK,OAAQ,CAEXF,EAAaG,EAAwBH,GACrC,K,CAEF,IAAK,SAAU,CACbA,EAAaI,KAAKC,aAChBN,EAAiBO,mBACjBP,EAAiBQ,qBACjBC,OACCR,GAAyBD,EAAiBU,aAAe,IAE5D,K,GAON,OAAOT,CAAU,IAElBU,QAAQC,KAAYA,IACpBC,KAAKhB,EAAQiB,WAAa,I,CAEjC,C,SAEgBC,EAAUC,GACxB,MAAMC,EAAe,GAAK,GAAK,IAC/B,MAAMC,EAAc,GAAKD,EACzB,MAAME,EAAgB,GAAKD,EAC3B,MAAME,EAAe,IAAMF,EAE3B,OAAQF,GACN,IAAK,OACH,OAAOC,EACT,IAAK,MACH,OAAOC,EACT,IAAK,QACH,OAAOC,EACT,IAAK,OACH,OAAOC,EACT,QACE,OAAO,KAEb,C,SAEgBC,EAAuBC,GACrC,OAAOA,EAAOC,WAAWC,QAAQ,wBAAyB,IAC5D,C,SASgBpB,EAAwBqB,GACtC,MAAMC,EAAM,IAAIC,KAChB,MAAMC,EAAY,IAAID,KAAKF,GAC3B,MAAMI,EAAgBC,KAAKC,OACxBL,EAAIM,UAAYJ,EAAUI,WAAa,KAG1C,MAAMC,EAAUH,KAAKC,MAAMF,EAAgB,IAC3C,MAAMK,EAAQJ,KAAKC,MAAME,EAAU,IACnC,MAAME,EAAOL,KAAKC,MAAMG,EAAQ,IAChC,MAAME,EAAQN,KAAKC,MAAMI,EAAO,KAEhC,GAAIF,EAAU,GAAI,CAChB,MAAO,GAAGA,Q,CAEZ,GAAIC,EAAQ,GAAI,CACd,MAAO,GAAGA,Q,CAEZ,GAAIC,EAAO,IAAK,CACd,MAAO,GAAGA,Q,CAEZ,MAAO,GAAGC,QACZ,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as s,h as e,F as t}from"./p-e0be53df.js";import{u as r}from"./p-d6a88eed.js";const a=":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-search-result-container{all:unset;align-items:flex-start;border-radius:16px;display:flex;flex-direction:column;gap:16px;padding:8px;color:inherit;background-color:var(--sc-surface-neutral-primary)}@media (min-width: 768px){.searchcraft-search-result-container{flex-direction:row}}a.searchcraft-search-result-container{cursor:pointer;transition:background-color 100ms}.searchcraft-base-search-result-content-container{flex:1;display:flex;flex-direction:column;gap:8px}.searchcraft-search-result-image{border-radius:var(--sc-image-border-radius);width:100%}@media (min-width: 768px){.searchcraft-search-result-image{width:200px}}.searchcraft-base-search-result-title{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-bold-font-size);font-weight:var(--sc-body-bold-font-weight);line-height:var(--sc-body-bold-line-height);margin:0;color:var(--sc-content-neutral-primary)}.searchcraft-base-search-result-subtitle{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-body-small-font-weight);line-height:var(--sc-body-small-line-height);margin:0;color:var(--sc-content-disabled)}.searchcraft-base-search-result-body-content{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-body-font-weight);line-height:var(--sc-body-line-height);margin:0;color:var(--sc-content-neutral-secondary)}.searchcraft-base-search-result-footer-content{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-body-font-weight);line-height:var(--sc-body-line-height);margin:0;color:var(--sc-content-disabled)}";const c=a;const i=class{constructor(e){s(this,e);this.searchcraftStore=r.getState();this.recordMeasureEvent=()=>{var s,e,t;const r=this.searchcraftStore.getSearchcraftInstance();if(r){const a=this.documentPosition;const c=this.searchcraftStore.query;const i=((t=(e=(s=this.searchcraftStore.searchResults)===null||s===void 0?void 0:s.data)===null||e===void 0?void 0:e.hits)===null||t===void 0?void 0:t.length)||0;r.sendMeasureEvent("document_clicked",{document_position:a,number_of_documents:i,search_term:c})}};this.parseStyles=()=>{if(this.customStyles){try{return JSON.parse(this.customStyles)}catch(s){console.error("Error parsing custom styles:",s);return{}}}return{}};this.titleContent=undefined;this.subtitleContent=undefined;this.bodyContent=undefined;this.footerContent=undefined;this.buttonLabel=undefined;this.buttonHref=undefined;this.buttonTarget="_blank";this.buttonRel=undefined;this.containerHref=undefined;this.containerTarget="_blank";this.containerRel=undefined;this.imageSrc=undefined;this.imageAlt=undefined;this.imagePlacement=undefined;this.customStyles=undefined;this.documentPosition=0}render(){const s=this.parseStyles();const r=this.imageSrc&&e("img",{alt:this.imageAlt,class:"searchcraft-search-result-image",src:this.imageSrc,style:s.image||{}});const a=e(t,null,this.imageSrc&&this.imagePlacement==="left"&&r,e("div",{class:"searchcraft-base-search-result-content-container"},this.titleContent&&e("h2",{class:"searchcraft-base-search-result-title",style:s.title||{}},this.titleContent),this.subtitleContent&&e("h3",{class:"searchcraft-base-search-result-subtitle",style:s.subtitle||{}},this.subtitleContent),this.bodyContent&&e("p",{class:"searchcraft-base-search-result-body-content",style:s.primaryContent||{}},this.bodyContent),this.footerContent&&e("p",{class:"searchcraft-base-search-result-footer-content",style:s.secondaryContent||{}},this.footerContent),this.buttonHref&&!this.containerHref&&this.buttonLabel&&e("a",{class:"searchcraft-search-result-button",href:this.buttonHref,style:s.button||{},target:this.buttonTarget,rel:this.buttonRel},this.buttonLabel)),this.imageSrc&&this.imagePlacement==="right"&&r);if(this.containerHref){return e("a",{class:"searchcraft-search-result-container",onClick:this.recordMeasureEvent,href:this.containerHref,rel:this.containerRel,style:s.container||{},tabindex:"0",target:this.containerTarget},a)}return e("div",{class:"searchcraft-search-result-container",style:s.container||{}},a)}};i.style=c;export{i as searchcraft_base_search_result};
2
+ //# sourceMappingURL=p-8e539d62.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["searchcraftBaseSearchResultModuleCss","SearchcraftBaseSearchResultStyle0","SearchcraftBaseSearchResult","this","searchcraftStore","useSearchcraftStore","getState","recordMeasureEvent","searchcraft","getSearchcraftInstance","document_position","documentPosition","search_term","query","number_of_documents","_c","_b","_a","searchResults","data","hits","length","sendMeasureEvent","parseStyles","customStyles","JSON","parse","error","console","render","styles","imageContainer","imageSrc","h","alt","imageAlt","class","src","style","image","contentContainer","Fragment","imagePlacement","titleContent","title","subtitleContent","subtitle","bodyContent","primaryContent","footerContent","secondaryContent","buttonHref","containerHref","buttonLabel","href","button","target","buttonTarget","rel","buttonRel","onClick","containerRel","container","tabindex","containerTarget"],"sources":["src/components/searchcraft-base-search-result/searchcraft-base-search-result.module.scss?tag=searchcraft-base-search-result","src/components/searchcraft-base-search-result/searchcraft-base-search-result.tsx"],"sourcesContent":["\n.searchcraft-search-result-container {\n all: unset;\n align-items: flex-start;\n border-radius: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 8px;\n color: inherit;\n\n background-color: var(--sc-surface-neutral-primary);\n\n @media (min-width: $breakpoint-md) {\n flex-direction: row;\n }\n}\n\na.searchcraft-search-result-container {\n cursor: pointer;\n transition: background-color 100ms;\n}\n\n.searchcraft-base-search-result-content-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.searchcraft-search-result-image {\n border-radius: var(--sc-image-border-radius);\n width: 100%;\n\n @media (min-width: $breakpoint-md) {\n width: 200px;\n }\n}\n\n.searchcraft-base-search-result-title {\n @include body-bold();\n margin: 0;\n color: var(--sc-content-neutral-primary);\n}\n\n.searchcraft-base-search-result-subtitle {\n @include body-small();\n margin: 0;\n color: var(--sc-content-disabled);\n}\n\n.searchcraft-base-search-result-body-content {\n @include body();\n margin: 0;\n color: var(--sc-content-neutral-secondary);\n}\n\n.searchcraft-base-search-result-footer-content {\n @include body();\n margin: 0;\n color: var(--sc-content-disabled);\n}\n","import { useSearchcraftStore } from '@provider/store';\nimport { Component, Fragment, h, Prop } from '@stencil/core';\n\n/**\n * This web component is designed to display detailed information for a single search result.\n * Once a query is submitted, the component formats and presents the result.\n * It is consumed within the `searchcraft-base-search-results` component.\n */\n@Component({\n tag: 'searchcraft-base-search-result',\n styleUrl: 'searchcraft-base-search-result.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResult {\n /**\n * The title content.\n */\n @Prop() titleContent: string | undefined;\n /**\n * The subtitle content.\n */\n @Prop() subtitleContent: string | undefined;\n /**\n * The body content.\n */\n @Prop() bodyContent: string | undefined;\n /**\n * The footer content.\n */\n @Prop() footerContent: string | undefined;\n /**\n * The label for the button rendered when containerHref is not present.\n */\n @Prop() buttonLabel: string | undefined;\n /**\n * The link for the button rendered when containerHref is not present.\n */\n @Prop() buttonHref: string | undefined;\n /**\n * Where to open the link for the button rendered when containerHref is not present.\n */\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the button rendered when containerHref is not present.\n */\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n /**\n * The link for the containing element.\n */\n @Prop() containerHref: string | undefined;\n /**\n * Where to open the link for the containing element.\n */\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the containing element.\n */\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n /**\n * The image source.\n */\n @Prop() imageSrc: string | undefined;\n /**\n * The image alternative text.\n */\n @Prop() imageAlt: string | undefined;\n /**\n * The placement of the image.\n */\n @Prop() imagePlacement: 'left' | 'right';\n /**\n * A custom styles object.\n */\n @Prop() customStyles: string | undefined;\n /**\n * The position in the document. Used with the \"document_clicked\" measure event.\n */\n @Prop() documentPosition = 0;\n\n private searchcraftStore = useSearchcraftStore.getState();\n\n private recordMeasureEvent = () => {\n const searchcraft = this.searchcraftStore.getSearchcraftInstance();\n\n if (searchcraft) {\n const document_position = this.documentPosition;\n const search_term = this.searchcraftStore.query;\n const number_of_documents =\n this.searchcraftStore.searchResults?.data?.hits?.length || 0;\n\n searchcraft.sendMeasureEvent('document_clicked', {\n document_position,\n number_of_documents,\n search_term,\n });\n }\n };\n\n private parseStyles = (): Record<string, { [key: string]: string }> => {\n if (this.customStyles) {\n try {\n return JSON.parse(this.customStyles);\n } catch (error) {\n console.error('Error parsing custom styles:', error);\n return {};\n }\n }\n return {};\n };\n\n render() {\n const styles = this.parseStyles();\n const imageContainer = this.imageSrc && (\n <img\n alt={this.imageAlt}\n class='searchcraft-search-result-image'\n src={this.imageSrc}\n style={styles.image || {}}\n />\n );\n\n const contentContainer = (\n <Fragment>\n {this.imageSrc && this.imagePlacement === 'left' && imageContainer}\n <div class='searchcraft-base-search-result-content-container'>\n {this.titleContent && (\n <h2\n class='searchcraft-base-search-result-title'\n style={styles.title || {}}\n >\n {this.titleContent}\n </h2>\n )}\n {this.subtitleContent && (\n <h3\n class='searchcraft-base-search-result-subtitle'\n style={styles.subtitle || {}}\n >\n {this.subtitleContent}\n </h3>\n )}\n {this.bodyContent && (\n <p\n class='searchcraft-base-search-result-body-content'\n style={styles.primaryContent || {}}\n >\n {this.bodyContent}\n </p>\n )}\n\n {this.footerContent && (\n <p\n class='searchcraft-base-search-result-footer-content'\n style={styles.secondaryContent || {}}\n >\n {this.footerContent}\n </p>\n )}\n {this.buttonHref && !this.containerHref && this.buttonLabel && (\n <a\n class='searchcraft-search-result-button'\n href={this.buttonHref}\n style={styles.button || {}}\n target={this.buttonTarget}\n rel={this.buttonRel}\n >\n {this.buttonLabel}\n </a>\n )}\n </div>\n {this.imageSrc && this.imagePlacement === 'right' && imageContainer}\n </Fragment>\n );\n\n /** Render as an anchor tag if the containerHref prop is present. */\n if (this.containerHref) {\n return (\n <a\n class='searchcraft-search-result-container'\n onClick={this.recordMeasureEvent}\n href={this.containerHref}\n rel={this.containerRel}\n style={styles.container || {}}\n tabindex='0'\n target={this.containerTarget}\n >\n {contentContainer}\n </a>\n );\n }\n\n /** Render as a div if no href prop. */\n return (\n <div\n class='searchcraft-search-result-container'\n style={styles.container || {}}\n >\n {contentContainer}\n </div>\n );\n }\n}\n"],"mappings":"sFAAA,MAAMA,EAAuC,8hKAC7C,MAAAC,EAAeD,E,MCYFE,EAA2B,M,yBAkE9BC,KAAAC,iBAAmBC,EAAoBC,WAEvCH,KAAAI,mBAAqB,K,UAC3B,MAAMC,EAAcL,KAAKC,iBAAiBK,yBAE1C,GAAID,EAAa,CACf,MAAME,EAAoBP,KAAKQ,iBAC/B,MAAMC,EAAcT,KAAKC,iBAAiBS,MAC1C,MAAMC,IACJC,GAAAC,GAAAC,EAAAd,KAAKC,iBAAiBc,iBAAa,MAAAD,SAAA,SAAAA,EAAEE,QAAI,MAAAH,SAAA,SAAAA,EAAEI,QAAI,MAAAL,SAAA,SAAAA,EAAEM,SAAU,EAE7Db,EAAYc,iBAAiB,mBAAoB,CAC/CZ,oBACAI,sBACAF,e,GAKET,KAAAoB,YAAc,KACpB,GAAIpB,KAAKqB,aAAc,CACrB,IACE,OAAOC,KAAKC,MAAMvB,KAAKqB,a,CACvB,MAAOG,GACPC,QAAQD,MAAM,+BAAgCA,GAC9C,MAAO,E,EAGX,MAAO,EAAE,E,0LAlEqD,S,2EAYG,S,4JAwBxC,C,CAiC3B,MAAAE,GACE,MAAMC,EAAS3B,KAAKoB,cACpB,MAAMQ,EAAiB5B,KAAK6B,UAC1BC,EAAA,OACEC,IAAK/B,KAAKgC,SACVC,MAAM,kCACNC,IAAKlC,KAAK6B,SACVM,MAAOR,EAAOS,OAAS,KAI3B,MAAMC,EACJP,EAACQ,EAAQ,KACNtC,KAAK6B,UAAY7B,KAAKuC,iBAAmB,QAAUX,EACpDE,EAAA,OAAKG,MAAM,oDACRjC,KAAKwC,cACJV,EAAA,MACEG,MAAM,uCACNE,MAAOR,EAAOc,OAAS,IAEtBzC,KAAKwC,cAGTxC,KAAK0C,iBACJZ,EAAA,MACEG,MAAM,0CACNE,MAAOR,EAAOgB,UAAY,IAEzB3C,KAAK0C,iBAGT1C,KAAK4C,aACJd,EAAA,KACEG,MAAM,8CACNE,MAAOR,EAAOkB,gBAAkB,IAE/B7C,KAAK4C,aAIT5C,KAAK8C,eACJhB,EAAA,KACEG,MAAM,gDACNE,MAAOR,EAAOoB,kBAAoB,IAEjC/C,KAAK8C,eAGT9C,KAAKgD,aAAehD,KAAKiD,eAAiBjD,KAAKkD,aAC9CpB,EAAA,KACEG,MAAM,mCACNkB,KAAMnD,KAAKgD,WACXb,MAAOR,EAAOyB,QAAU,GACxBC,OAAQrD,KAAKsD,aACbC,IAAKvD,KAAKwD,WAETxD,KAAKkD,cAIXlD,KAAK6B,UAAY7B,KAAKuC,iBAAmB,SAAWX,GAKzD,GAAI5B,KAAKiD,cAAe,CACtB,OACEnB,EAAA,KACEG,MAAM,sCACNwB,QAASzD,KAAKI,mBACd+C,KAAMnD,KAAKiD,cACXM,IAAKvD,KAAK0D,aACVvB,MAAOR,EAAOgC,WAAa,GAC3BC,SAAS,IACTP,OAAQrD,KAAK6D,iBAEZxB,E,CAMP,OACEP,EAAA,OACEG,MAAM,sCACNE,MAAOR,EAAOgC,WAAa,IAE1BtB,E","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,h as s}from"./p-e0be53df.js";const c=":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-popover-list-item{all:unset;display:flex;flex-direction:row;cursor:pointer;gap:8px;padding-right:var(--sc-popover-list-item-padding-horizontal);padding-left:var(--sc-popover-list-item-padding-horizontal);padding-top:var(--sc-popover-list-item-padding-vertical);padding-bottom:var(--sc-popover-list-item-padding-vertical)}.searchcraft-popover-list-item:focus{background-color:var(--sc-surface-neutral-secondary-active);color:var(--sc-content-neutral-secondary)}.searchcraft-popover-list-item:hover{background-color:var(--sc-surface-neutral-secondary-hover);color:var(--sc-content-neutral-secondary)}.searchcraft-popover-list-item-title{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-body-font-weight);line-height:var(--sc-body-line-height);margin:0;color:inherit}.searchcraft-popover-list-item-subtitle{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-body-small-font-weight);line-height:var(--sc-body-small-line-height);margin:0;color:inherit}.searchcraft-popover-list-item-image-wrapper{width:var(--sc-popover-list-item-image-size);height:var(--sc-popover-list-item-image-size);display:flex;align-items:center;justify-content:center;flex-shrink:0}.searchcraft-popover-list-item-image{max-width:var(--sc-popover-list-item-image-size);max-height:var(--sc-popover-list-item-image-size)}.searchcraft-popover-list-item-info-wrapper{display:flex;flex-direction:column;gap:8px;justify-content:center}";const a=c;const r=class{constructor(s){e(this,s);this.titleContent=undefined;this.subtitleContent=undefined;this.imageSrc=undefined;this.imageAlt=undefined;this.href=undefined;this.documentPosition=undefined}componentDidLoad(){}connectedCallback(){}disconnectedCallback(){}handleButtonClick(){}render(){return s("a",{key:"b7a590e92994869477825dd17545e8d4e05d1d07",class:"searchcraft-popover-list-item",href:this.href},this.imageSrc&&s("div",{key:"129525e50ec17dce052f503af318b56e06c900ef",class:"searchcraft-popover-list-item-image-wrapper"},s("img",{key:"4ba701f35cbf7e167e7edd63ba19e3576e620c26",alt:this.imageAlt,src:this.imageSrc,class:"searchcraft-popover-list-item-image"})),s("div",{key:"6a6ab09451f5d9d4e554dc1f1fcd57ec13adf2f2",class:"searchcraft-popover-list-item-info-wrapper"},s("p",{key:"476fdefff6cb35167fb00f24cdf03b9f8d826ba5",class:"searchcraft-popover-list-item-title"},this.titleContent),s("p",{key:"b43fd584bfcc8efc7d50d7220b649fafc8bba244",class:"searchcraft-popover-list-item-subtitle"},this.subtitleContent)))}};r.style=a;export{r as searchcraft_popover_list_item};
2
+ //# sourceMappingURL=p-98640a6a.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["searchcraftPopoverListItemModuleCss","SearchcraftPopoverListItemStyle0","SearchcraftPopoverListItem","componentDidLoad","connectedCallback","disconnectedCallback","handleButtonClick","render","h","key","class","href","this","imageSrc","alt","imageAlt","src","titleContent","subtitleContent"],"sources":["src/components/searchcraft-popover-list-item/searchcraft-popover-list-item.module.scss?tag=searchcraft-popover-list-item","src/components/searchcraft-popover-list-item/searchcraft-popover-list-item.tsx"],"sourcesContent":[".searchcraft-popover-list-item {\n all: unset;\n display: flex;\n flex-direction: row;\n cursor: pointer;\n gap: 8px;\n padding-right: var(--sc-popover-list-item-padding-horizontal);\n padding-left: var(--sc-popover-list-item-padding-horizontal);\n padding-top: var(--sc-popover-list-item-padding-vertical);\n padding-bottom: var(--sc-popover-list-item-padding-vertical);\n\n &:focus {\n background-color: var(--sc-surface-neutral-secondary-active);\n color: var(--sc-content-neutral-secondary);\n }\n\n &:hover {\n background-color: var(--sc-surface-neutral-secondary-hover);\n color: var(--sc-content-neutral-secondary);\n }\n}\n\n.searchcraft-popover-list-item-title {\n @include body();\n margin: 0;\n color: inherit;\n}\n\n.searchcraft-popover-list-item-subtitle {\n @include body-small();\n margin: 0;\n color: inherit;\n}\n\n.searchcraft-popover-list-item-image-wrapper {\n width: var(--sc-popover-list-item-image-size);\n height: var(--sc-popover-list-item-image-size);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.searchcraft-popover-list-item-image {\n max-width: var(--sc-popover-list-item-image-size);\n max-height: var(--sc-popover-list-item-image-size);\n}\n\n.searchcraft-popover-list-item-info-wrapper {\n display: flex;\n flex-direction: column;\n gap: 8px;\n justify-content: center;\n}","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * A single list item rendered in a searchcraft-popover-list-view.\n */\n@Component({\n tag: 'searchcraft-popover-list-item',\n styleUrl: 'searchcraft-popover-list-item.module.scss',\n shadow: false,\n})\nexport class SearchcraftPopoverListItem {\n /** The result title */\n @Prop() titleContent: string | undefined;\n /** The result subtitle */\n @Prop() subtitleContent: string | undefined;\n /** The source of the image. If not included, no item will be rendered. */\n @Prop() imageSrc: string | undefined;\n /** The image alt tag. */\n @Prop() imageAlt: string | undefined;\n /** The link href */\n @Prop() href: string | undefined;\n /** The document position relative to the search results (For Measure) */\n @Prop() documentPosition: number;\n\n componentDidLoad() {}\n\n connectedCallback() {}\n\n disconnectedCallback() {}\n\n handleButtonClick() {}\n\n render() {\n return (\n <a class='searchcraft-popover-list-item' href={this.href}>\n {this.imageSrc && (\n <div class='searchcraft-popover-list-item-image-wrapper'>\n <img\n alt={this.imageAlt}\n src={this.imageSrc}\n class='searchcraft-popover-list-item-image'\n />\n </div>\n )}\n <div class='searchcraft-popover-list-item-info-wrapper'>\n <p class='searchcraft-popover-list-item-title'>{this.titleContent}</p>\n <p class='searchcraft-popover-list-item-subtitle'>\n {this.subtitleContent}\n </p>\n </div>\n </a>\n );\n }\n}\n"],"mappings":"2CAAA,MAAMA,EAAsC,i2JAC5C,MAAAC,EAAeD,E,MCSFE,EAA0B,M,wLAcrC,gBAAAC,GAAgB,CAEhB,iBAAAC,GAAiB,CAEjB,oBAAAC,GAAoB,CAEpB,iBAAAC,GAAiB,CAEjB,MAAAC,GACE,OACEC,EAAA,KAAAC,IAAA,2CAAGC,MAAM,gCAAgCC,KAAMC,KAAKD,MACjDC,KAAKC,UACJL,EAAA,OAAAC,IAAA,2CAAKC,MAAM,+CACTF,EAAA,OAAAC,IAAA,2CACEK,IAAKF,KAAKG,SACVC,IAAKJ,KAAKC,SACVH,MAAM,yCAIZF,EAAA,OAAAC,IAAA,2CAAKC,MAAM,8CACTF,EAAA,KAAAC,IAAA,2CAAGC,MAAM,uCAAuCE,KAAKK,cACrDT,EAAA,KAAAC,IAAA,2CAAGC,MAAM,0CACNE,KAAKM,kB","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,c as s,h as c,F as t}from"./p-e0be53df.js";import{c as a}from"./p-5cdc6210.js";import{u as r}from"./p-d6a88eed.js";import{a as i}from"./p-755f491b.js";function n(e,s){const c=Object.assign({},e);for(const t in s){if(s.hasOwnProperty(t)){if(s[t]instanceof Object&&e[t]instanceof Object){c[t]=n(e[t],s[t])}else{c[t]=s[t]}}}return c}function o(e){return e.filter(((e,s,c)=>!c.some(((c,t)=>t!==s&&c.includes(e)))))}function d(e){const s={};const c=e=>{var t;s[e.path]={count:e.count,path:e.path};(t=e.children)===null||t===void 0?void 0:t.forEach((e=>{c(e)}))};c(e);return s}function h(e){const s={count:0,path:"/",children:{}};Object.keys(e).forEach((c=>{const t=e[c];if(t.path==="/"){return}const a=t.path.substring(1).split("/");let r=s;let i="";a.forEach(((e,s)=>{const c=`${i}/${e}`;if(!r.children[c]){r.children[c]={count:0,path:c,children:{}}}if(s===a.length-1){r.children[c].count=t.count}i=c;r=r.children[c]}))}));return s}function l(e){const s={count:e.count,path:e.path,children:[]};if(Object.keys(e.children).length>0){s.children=Object.values(e.children).map((e=>l(e)))}return s}function f(e,s){const c=Object.keys(e);const t=Object.keys(s);const a=new Set(t.filter((e=>e.split("/").length>2)).map((e=>e.substring(0,e.lastIndexOf("/")))));const r=Object.fromEntries(c.filter((e=>!a.has(e.substring(0,e.lastIndexOf("/"))))).map((s=>[s,e[s]])));return r}function p(e,s,c){const t=s[e];const a=c[e];const r={count:0,path:"/",children:t};const i={count:0,path:"/",children:a};const o=d(r);const p=d(i);const u=f(o,p);const b=n(u,p);const g=h(b);const y=l(g);return{[e]:y.children}}const u=":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.filtersListContainer{width:100%}.filterCheckboxLabel{align-items:center;color:var(--sc-content-primary);display:flex;font-family:var(--sc-font-family);font-size:14px;font-weight:600;gap:14px;position:relative;-webkit-font-smoothing:antialiased}.filterCheckboxLabel input[type=checkbox]{align-items:center;appearance:none;background-color:var(--sc-surface-brand-secondary-hover);border:1px solid var(--sc-surface-disabled);border-radius:8px;cursor:pointer;display:flex;height:24px;justify-content:center;width:24px}.filterCheckboxLabel input[type=checkbox]:focus{outline:2px solid var(--sc-surface-brand-primary)}.filterCheckboxLabel input[type=checkbox]:checked{background-color:var(--sc-surface-brand-primary);position:relative}.filterCheckboxLabel input[type=checkbox]:checked+.checkContainer{display:block}.filterCheckboxLabel input[type=checkbox]:checked+.dashContainer{display:block}.childFilterCheckboxLabel{align-items:center;color:var(--sc-content-primary);display:flex;font-family:var(--sc-font-family);font-size:14px;font-weight:600;gap:12px;margin-left:24px;position:relative}.childFilterCheckboxLabel input[type=checkbox]{align-items:center;appearance:none;background-color:var(--sc-surface-brand-secondary-hover);border:1px solid var(--sc-surface-disabled);border-radius:8px;cursor:pointer;display:flex;height:24px;justify-content:center;position:relative;width:24px;-webkit-font-smoothing:antialiased}.childFilterCheckboxLabel input[type=checkbox]:focus{outline:2px solid var(--sc-surface-brand-primary)}.childFilterCheckboxLabel input[type=checkbox]:checked{background-color:var(--sc-surface-brand-primary);position:relative}.childFilterCheckboxLabel input[type=checkbox]:checked+.checkContainer{display:block}.childFilterCheckboxLabel input[type=checkbox]:checked+.dashContainer{display:block}.checkContainer{display:none;height:16px;width:16px;position:absolute;top:9px;left:8px}.dashContainer{display:none;height:3px;width:14px;position:absolute;top:3px;left:9px}.searchcraft-facet-message{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-body-small-font-weight);line-height:var(--sc-body-small-line-height);color:var(--sc-content-disabled);text-align:center}";const b=u;const g=class{constructor(c){e(this,c);this.facetSelectionUpdated=s(this,"facetSelectionUpdated",7);this.searchStore=r.getState();this.formatLabel=e=>{const s=e.path.replace(/^\//,"");const c=e.count;return`${s.replace(/-/g," ").replace(/\b\w/g,(e=>e.toUpperCase()))} (${c})`};this.formatSubLabel=(e,s)=>{const c=e.path.substring(s.path.length);const t=c.replace(/^\//,"");const a=e.count;return`${t.replace(/-/g," ").replace(/\b\w/g,(e=>e.toUpperCase()))} (${a})`};this.fieldName=undefined;this.baseFacetRoot=undefined;this.facetRoot=undefined;this.selectedPaths={};this.lastTimeTaken=undefined;this.hasNewSearchTerm=false;this.lastQuery=undefined;this.lastSearchMode=undefined;this.lastSortType=undefined;this.unsubscribe=undefined}handleStateUpdate(e){var s,c;const t=(s=e.searchResults)===null||s===void 0?void 0:s.data.facets;const a=(c=e.searchResults)===null||c===void 0?void 0:c.data.time_taken;if(e.query!==this.lastQuery||e.searchMode!==this.lastSearchMode||e.sortType!==this.lastSortType){this.selectedPaths={};this.hasNewSearchTerm=true}if(a!==this.lastTimeTaken&&t){this.facetRoot=undefined;const e=t.find((e=>this.fieldName===Object.keys(e)[0]));if(this.hasNewSearchTerm){this.baseFacetRoot=e;this.facetRoot=e;this.hasNewSearchTerm=false}else if(this.baseFacetRoot){this.facetRoot=p(this.fieldName,this.baseFacetRoot,e)}}this.lastQuery=e.query;this.lastSearchMode=e.searchMode;this.lastSortType=e.sortType;this.lastTimeTaken=a}connectedCallback(){this.handleStateUpdate(this.searchStore);this.unsubscribe=r.subscribe((e=>{this.handleStateUpdate(e)}))}disconnectedCallback(){var e;(e=this.unsubscribe)===null||e===void 0?void 0:e.call(this)}handleCheckboxChange(e){const s=!this.selectedPaths[e];if(s){this.selectedPaths=Object.assign(Object.assign({},this.selectedPaths),{[e]:true})}else{const s=Object.keys(this.selectedPaths).filter((s=>!s.includes(e)));this.selectedPaths=s.reduce(((e,s)=>{e[s]=true;return e}),{})}const c=Object.keys(this.selectedPaths).filter((e=>this.selectedPaths[e]));const t=o(c);this.facetSelectionUpdated.emit({paths:t})}render(){var e;const s=(e=this.facetRoot)===null||e===void 0?void 0:e[this.fieldName];return c("div",{key:"709834d9f86b75257ae0c67e9340c0fea4131035",class:a("filtersListContainer","searchcraft-filters-list-container")},!s&&c("p",{key:"a6e2ced40fcc0762ae8ea835c9d6c573aceeb1f1",class:"searchcraft-facet-message"},"Enter a search to view facets."),s===null||s===void 0?void 0:s.map((e=>{var s;const r=e.children?(s=e.children)===null||s===void 0?void 0:s.some((e=>this.selectedPaths[e.path])):false;return c("div",{key:e.path,class:a("searchcraft-filters-list-item")},c("label",{class:a("filterCheckboxLabel","searchcraft-filters-list-checkbox-label")},c("input",{checked:this.selectedPaths[e.path],onChange:s=>this.handleCheckboxChange(e.path),type:"checkbox"}),r?c("div",{class:a("dashContainer","searchcraft-filter-list-dash-container")},c("searchcraft-dash-icon",null)):c("div",{class:a("checkContainer","searchcraft-filter-list-check-container")},c("searchcraft-check-icon",null)),this.formatLabel(e)),e.children&&e.children.length>0&&c(t,null,e.children.map((s=>c("label",{key:s.path,class:a("childFilterCheckboxLabel","searchcraft-child-filter-checkbox-label"),style:{display:this.selectedPaths[e.path]?"flex":"none"}},c("input",{checked:this.selectedPaths[s.path],onChange:e=>{this.handleCheckboxChange(s.path)},type:"checkbox"}),c("div",{class:a("checkContainer","searchcraft-filter-list-check-container")},c("searchcraft-check-icon",null)),this.formatSubLabel(s,e))))))})))}};g.style=b;const y=':root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-slider-container{align-items:center;display:flex;flex-direction:column;gap:10px;width:100%}.searchcraft-slider-range-container{align-items:center;background-color:var(--sc-surface-disabled);border-radius:999px;display:flex;position:relative;height:4px;width:100%}.searchcraft-slider-range-container::-webkit-slider-runnable-track{pointer-events:none}.searchcraft-slider-range-container .searchcraft-slider-active-range{background-color:var(--sc-surface-brand-primary);border-radius:2px;height:4px;position:absolute;top:50%;transform:translateY(-50%);z-index:0}.searchcraft-slider-range-container .searchcraft-slider-active-range::-webkit-slider-runnable-track{pointer-events:none}.searchcraft-slider-range-container .searchcraft-slider-active-range::-moz-range-track{pointer-events:none}.searchcraft-slider-range-container .searchcraft-slider-input{appearance:none;background:transparent;border-radius:2px;height:4px;margin:0;outline:none;pointer-events:none;position:absolute;width:100%;-webkit-appearance:none}.searchcraft-slider-range-container .searchcraft-slider-input::-webkit-slider-thumb{background-color:var(--sc-surface-neutral-light);border-radius:50%;border:2px solid var(--sc-border-neutral);cursor:pointer;height:20px;pointer-events:all;width:20px;-webkit-appearance:none}.searchcraft-slider-range-container .searchcraft-slider-input::-moz-range-thumb{background-color:var(--sc-surface-neutral-light);border-radius:50%;border:2px solid var(--sc-border-neutral);cursor:pointer;height:20px;pointer-events:all;width:20px}.searchcraft-slider-label-container{color:var(--sc-content-primary);display:flex;font-family:"Source Sans Pro", sans-serif;font-size:15px;font-weight:600;justify-content:space-between;margin-top:10px;width:100%}.searchcraft-slider-label{min-width:30px;text-align:center}';const x=y;const F=class{constructor(c){e(this,c);this.rangeChanged=s(this,"rangeChanged",7);this.emitUpdate=async()=>{this.rangeChanged.emit({startValue:this.startValue,endValue:this.endValue})};this.handleStartValueChange=e=>{const s=e.target;const c=Number.parseInt(s.value,10);this.lastFocusedHandle="min";if(c<=this.endValue){this.startValue=c;this.emitUpdate()}else{this.startValue=this.endValue;s.value=`${this.endValue}`}};this.handleEndValueChange=e=>{const s=e.target;const c=Number.parseInt(s.value,10);this.lastFocusedHandle="max";if(c>=this.startValue){this.endValue=c;this.emitUpdate()}else{this.endValue=this.startValue;s.value=`${this.startValue}`}};this.max=100;this.min=0;this.granularity=i("month");this.dataType="number";this.endValue=this.max;this.startValue=this.min;this.lastFocusedHandle="max"}componentDidLoad(){this.startValue=this.min;this.endValue=this.max}render(){const e=this.min;const s=this.max;const t=(this.startValue-e)/(s-e)*100;const r=(this.endValue-e)/(s-e)*100;const i=this.dataType==="number"?this.startValue:new Date(this.startValue).getFullYear();const n=this.dataType==="number"?this.endValue:new Date(this.endValue).getFullYear();return c("div",{key:"d03f03307d560048eff499afabb4171421c9b5cd",class:"searchcraft-slider-container"},c("div",{key:"986b2fb47def38024b256cb093546ee7db9ccf5c",class:"searchcraft-slider-range-container"},c("div",{key:"4c4f71c218f65acbfa25ec220cdeb581ef0e6c0d",class:"searchcraft-slider-active-range",style:{left:`${t}%`,width:`${r-t}%`}}),c("input",{key:"8968b1925f83480561a460b5f7da64499ec220c0",class:a("searchcraft-slider-input","searchcraft-slider-input-min-handle"),max:this.max,min:this.min,onInput:this.handleStartValueChange.bind(this),step:this.granularity,style:{zIndex:this.lastFocusedHandle==="min"?"2":"1"},type:"range",value:this.startValue}),c("input",{key:"1ec4b397eb5ca6834719b0c09811d2b11e70c6d0",class:a("searchcraft-slider-input","searchcraft-slider-input-max-handle"),max:this.max,min:this.min,onInput:this.handleEndValueChange.bind(this),step:this.granularity,style:{zIndex:this.lastFocusedHandle==="max"?"2":"1"},type:"range",value:this.endValue})),c("div",{key:"abc788f7398c68aefcd12468280ef07fcf2ae673",class:"searchcraft-slider-label-container"},c("span",{key:"f09f772f95c21fc4dfcd58d6eed7ff6901d329b8",class:"searchcraft-slider-label"},i),c("span",{key:"251cecce58bb785d9478e80edfe429a1e18ef274",class:"searchcraft-slider-label"},n)))}};F.style=x;const m=":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-toggle-button-container{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.searchcraft-toggle-button-label{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-body-font-weight);line-height:var(--sc-body-line-height);margin:0;color:var(--sc-content-neutral-primary)}.searchcraft-toggle-button-sub-label{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-body-small-font-weight);line-height:var(--sc-body-small-line-height);margin:0;color:var(--sc-content-neutral-secondary)}.searchcraft-toggle-button-background{transition:background-color 0.2s;background:var(--sc-surface-disabled);border:none;border-radius:16px;cursor:pointer;height:26px;position:relative;width:44px;flex-shrink:0}.searchcraft-toggle-button-background.active{background:var(--sc-surface-brand-primary);box-shadow:0px 0px 0px 1px rgba(0, 0, 0, 0.05)}.searchcraft-toggle-button-handle{background:var(--sc-surface-neutral-light);border-radius:50%;height:18px;left:4px;position:absolute;top:calc(50% - 9px);transition:transform 0.3s ease;width:18px}.searchcraft-toggle-button-handle.active{transform:translateX(16px)}";const v=m;const k=class{constructor(c){e(this,c);this.toggleUpdated=s(this,"toggleUpdated",7);this.handleToggle=async()=>{this.isActive=!this.isActive;this.toggleUpdated.emit(this.isActive)};this.label="Toggle";this.subLabel=undefined;this.isActive=false;this.unsubscribe=undefined;this.lastQuery=undefined}connectedCallback(){this.unsubscribe=r.subscribe((e=>{if(e.query!==this.lastQuery&&e.query.trim().length===0){this.isActive=false}this.lastQuery=e.query}))}disconnectedCallback(){var e;(e=this.unsubscribe)===null||e===void 0?void 0:e.call(this)}render(){return c("div",{key:"607bbc1adc109ec918effb25c6b91052227a2f7b",class:"searchcraft-toggle-button-container"},c("div",{key:"b452e1690c617020866f6bf3e591f62cc3fce111"},c("p",{key:"1bd8fa345516e412ea57bdbeac37dc8e26f2feaa",class:"searchcraft-toggle-button-label"},this.label),this.subLabel&&c("p",{key:"fce324a14721bab5f6173838f677ecb290200c8f",class:"searchcraft-toggle-button-sub-label"},this.subLabel)),c("button",{key:"7b293a3ef64da88f463e5e6e303dabcbc63589bd",class:a("searchcraft-toggle-button-background",{active:this.isActive}),onClick:this.handleToggle,type:"button"},c("div",{key:"6afd68afeea5bb15ce1bde486ac59f7a958f6752",class:a("searchcraft-toggle-button-handle",{active:this.isActive})})))}};k.style=v;export{g as searchcraft_facet_list,F as searchcraft_slider,k as searchcraft_toggle_button};
2
+ //# sourceMappingURL=p-9d0f5c89.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["deepMergeWithSpread","obj1","obj2","result","Object","assign","key","hasOwnProperty","removeSubstringMatches","arr","filter","entry","index","array","some","otherEntry","otherIndex","includes","facetToRecord","facet","records","traverseAndAddToFragments","facetChild","path","count","_a","children","forEach","child","recordToObject","record","root","keys","fragment","pathParts","substring","split","currentRoot","currentPath","part","nextPath","length","objectToFacet","childObject","transformed","values","map","subChildObject","filterRecordByParentPaths","record1","record2","paths1","paths2","parentPaths","Set","lastIndexOf","filteredRecord","fromEntries","has","mergeFacetRoots","fieldName","incomingRoot","currentArray","incomingArray","currentRootFacetChild","incomingRootFacetChild","currentRecord","incomingRecord","filteredCurrentRecord","mergedRecord","mergedObject","mergedFacetChild","searchcraftFacetListModuleCss","SearchcraftFacetListStyle0","SearchcraftFacetList","this","searchStore","useSearchcraftStore","getState","formatLabel","label","replace","char","toUpperCase","formatSubLabel","facetChildAncestor","facetChildPath","handleStateUpdate","state","facetPrime","searchResults","data","facets","timeTaken","_b","time_taken","query","lastQuery","searchMode","lastSearchMode","sortType","lastSortType","selectedPaths","hasNewSearchTerm","lastTimeTaken","facetRoot","undefined","incomingFacetRoot","find","baseFacetRoot","connectedCallback","unsubscribe","subscribe","disconnectedCallback","call","handleCheckboxChange","isCheckboxChecked","updatedPaths","testPath","reduce","acc","str","paths","pathsWithParentPathsRemoved","facetSelectionUpdated","emit","render","firstFacet","h","class","classNames","isChildSelected","checked","onChange","_event","type","Fragment","grandchild","style","display","searchcraftSliderModuleCss","SearchcraftSliderStyle0","SearchcraftSlider","emitUpdate","async","rangeChanged","startValue","endValue","handleStartValueChange","event","inputElement","target","value","Number","parseInt","lastFocusedHandle","handleEndValueChange","getMillis","max","min","componentDidLoad","rangeMin","rangeMax","startPercent","endPercent","startLabel","dataType","Date","getFullYear","endLabel","left","width","onInput","bind","step","granularity","zIndex","searchcraftToggleButtonModuleCss","SearchcraftToggleButtonStyle0","SearchcraftToggleButton","handleToggle","isActive","toggleUpdated","trim","subLabel","active","onClick"],"sources":["src/utils/facets.ts","src/components/searchcraft-facet-list/searchcraft-facet-list.module.scss?tag=searchcraft-facet-list","src/components/searchcraft-facet-list/searchcraft-facet-list.tsx","src/components/searchcraft-slider/searchcraft-slider.module.scss?tag=searchcraft-slider","src/components/searchcraft-slider/searchcraft-slider.tsx","src/components/searchcraft-toggle-button/searchcraft-toggle-button.module.scss?tag=searchcraft-toggle-button","src/components/searchcraft-toggle-button/searchcraft-toggle-button.tsx"],"sourcesContent":["import type {\n FacetChild,\n FacetChildObject,\n FacetRoot,\n} from '@searchcraft/core';\n\nfunction deepMergeWithSpread(obj1, obj2) {\n const result = { ...obj1 };\n\n for (const key in obj2) {\n // biome-ignore lint/suspicious/noPrototypeBuiltins: <explanation>\n if (obj2.hasOwnProperty(key)) {\n if (obj2[key] instanceof Object && obj1[key] instanceof Object) {\n result[key] = deepMergeWithSpread(obj1[key], obj2[key]);\n } else {\n result[key] = obj2[key];\n }\n }\n }\n\n return result;\n}\n\n/**\n * Given an array of facet paths, removes parent facet paths.\n */\nexport function removeSubstringMatches(arr: string[]): string[] {\n return arr.filter(\n (entry, index, array) =>\n !array.some(\n (otherEntry, otherIndex) =>\n otherIndex !== index && otherEntry.includes(entry),\n ),\n );\n}\n\ntype FacetChildFragment = {\n count: number;\n path: string;\n};\n\nfunction facetToRecord(facet: FacetChild): Record<string, FacetChildFragment> {\n const records: Record<string, FacetChildFragment> = {};\n\n const traverseAndAddToFragments = (facetChild: FacetChild) => {\n records[facetChild.path] = {\n count: facetChild.count,\n path: facetChild.path,\n };\n\n facetChild.children?.forEach((child) => {\n traverseAndAddToFragments(child);\n });\n };\n\n traverseAndAddToFragments(facet);\n\n return records;\n}\n\nfunction recordToObject(\n record: Record<string, FacetChildFragment>,\n): FacetChildObject {\n const root: FacetChildObject = {\n count: 0,\n path: '/',\n children: {},\n };\n\n Object.keys(record).forEach((key) => {\n const fragment = record[key];\n if (fragment.path === '/') {\n return;\n }\n const pathParts = fragment.path.substring(1).split('/');\n let currentRoot = root;\n let currentPath = '';\n\n pathParts.forEach((part, index) => {\n const nextPath = `${currentPath}/${part}`;\n if (!currentRoot.children[nextPath]) {\n currentRoot.children[nextPath] = {\n count: 0,\n path: nextPath,\n children: {},\n };\n }\n\n if (index === pathParts.length - 1) {\n currentRoot.children[nextPath].count = fragment.count;\n }\n\n currentPath = nextPath;\n currentRoot = currentRoot.children[nextPath];\n });\n });\n\n return root;\n}\n\nfunction objectToFacet(childObject: FacetChildObject): FacetChild {\n const transformed: FacetChild = {\n count: childObject.count,\n path: childObject.path,\n children: [],\n };\n\n if (Object.keys(childObject.children).length > 0) {\n transformed.children = Object.values(childObject.children).map(\n (subChildObject) => objectToFacet(subChildObject),\n );\n }\n\n return transformed;\n}\n\n/**\n * Filters records with the parent paths from record2 OUT of record1\n */\nfunction filterRecordByParentPaths(\n record1: Record<string, FacetChild>,\n record2: Record<string, FacetChild>,\n): Record<string, FacetChild> {\n // Extract all paths (keys) both records\n const paths1 = Object.keys(record1);\n const paths2 = Object.keys(record2);\n\n // Find all parent paths in record2\n const parentPaths = new Set(\n paths2\n .filter((path) => path.split('/').length > 2) // Only consider paths with more than one level\n .map((path) => path.substring(0, path.lastIndexOf('/'))),\n );\n\n // Filter out keys in record1 that share a parent path with any of the identified parent paths\n const filteredRecord = Object.fromEntries(\n paths1\n .filter(\n (path) => !parentPaths.has(path.substring(0, path.lastIndexOf('/'))),\n )\n .map((path) => [path, record1[path]]), // Reconstruct the key-value pairs\n );\n\n return filteredRecord;\n}\n\nexport function mergeFacetRoots(\n fieldName: string,\n currentRoot: FacetRoot,\n incomingRoot: FacetRoot,\n): FacetRoot {\n const currentArray = currentRoot[fieldName];\n const incomingArray = incomingRoot[fieldName];\n\n const currentRootFacetChild: FacetChild = {\n count: 0,\n path: '/',\n children: currentArray,\n };\n\n const incomingRootFacetChild: FacetChild = {\n count: 0,\n path: '/',\n children: incomingArray,\n };\n\n // Flatten them into records\n const currentRecord: Record<string, FacetChildFragment> = facetToRecord(\n currentRootFacetChild,\n );\n\n const incomingRecord: Record<string, FacetChildFragment> = facetToRecord(\n incomingRootFacetChild,\n );\n\n // Filter out the records from record1 (the current set of records)\n // that share a parent path with record2 (the incoming records)\n const filteredCurrentRecord = filterRecordByParentPaths(\n currentRecord,\n incomingRecord,\n );\n\n // Deep merge the records together\n const mergedRecord: Record<string, FacetChildFragment> = deepMergeWithSpread(\n filteredCurrentRecord,\n incomingRecord,\n );\n\n // Convert into a heirarchical object\n const mergedObject: FacetChildObject = recordToObject(mergedRecord);\n\n // Convert the heirarchical object back to the Facet child structure\n const mergedFacetChild = objectToFacet(mergedObject);\n\n return {\n [fieldName]: mergedFacetChild.children,\n };\n}\n",".filtersListContainer {\n width: 100%;\n}\n\n.filterCheckboxLabel {\n align-items: center;\n color: var(--sc-content-primary);\n display: flex;\n font-family: var(--sc-font-family);\n font-size: 14px;\n font-weight: 600;\n gap: 14px;\n position: relative;\n -webkit-font-smoothing: antialiased;\n}\n\n.filterCheckboxLabel input[type=\"checkbox\"] {\n align-items: center;\n appearance: none;\n background-color: var(--sc-surface-brand-secondary-hover);\n border: 1px solid var(--sc-surface-disabled);\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n height: 24px;\n justify-content: center;\n width: 24px;\n}\n\n.filterCheckboxLabel input[type=\"checkbox\"]:focus {\n outline: 2px solid var(--sc-surface-brand-primary);\n}\n\n.filterCheckboxLabel input[type=\"checkbox\"]:checked {\n background-color: var(--sc-surface-brand-primary);\n position: relative;\n}\n\n.filterCheckboxLabel input[type=\"checkbox\"]:checked + .checkContainer {\n display: block;\n}\n\n.filterCheckboxLabel input[type=\"checkbox\"]:checked + .dashContainer {\n display: block;\n}\n\n.childFilterCheckboxLabel {\n align-items: center;\n color: var(--sc-content-primary);\n display: flex;\n font-family: var(--sc-font-family);\n font-size: 14px;\n font-weight: 600;\n gap: 12px;\n margin-left: 24px;\n position: relative;\n}\n\n.childFilterCheckboxLabel input[type=\"checkbox\"] {\n align-items: center;\n appearance: none;\n background-color: var(--sc-surface-brand-secondary-hover);\n border: 1px solid var(--sc-surface-disabled);\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n height: 24px;\n justify-content: center;\n position: relative;\n width: 24px;\n -webkit-font-smoothing: antialiased;\n}\n\n.childFilterCheckboxLabel input[type=\"checkbox\"]:focus {\n outline: 2px solid var(--sc-surface-brand-primary);\n}\n\n.childFilterCheckboxLabel input[type=\"checkbox\"]:checked {\n background-color: var(--sc-surface-brand-primary);\n position: relative;\n}\n\n.childFilterCheckboxLabel input[type=\"checkbox\"]:checked + .checkContainer {\n display: block;\n}\n\n.childFilterCheckboxLabel input[type=\"checkbox\"]:checked + .dashContainer {\n display: block;\n}\n\n.checkContainer {\n display: none;\n height: 16px;\n width: 16px;\n position: absolute;\n top: 9px;\n left: 8px;\n}\n\n.dashContainer {\n display: none;\n height: 3px;\n width: 14px;\n position: absolute;\n top: 3px;\n left: 9px;\n}\n\n.searchcraft-facet-message {\n @include body-small();\n color: var(--sc-content-disabled);\n text-align: center;\n}","import {\n Component,\n h,\n State,\n Prop,\n Event,\n type EventEmitter,\n Fragment,\n} from '@stencil/core';\nimport classNames from 'classnames';\n\nimport type { FacetChild, FacetRoot } from '@searchcraft/core';\n\nimport { useSearchcraftStore, type SearchcraftState } from '@provider/store';\nimport { mergeFacetRoots, removeSubstringMatches } from '@utils';\n\n/**\n * This web component is designed to display facets in a search interface, allowing users to refine their search results by applying filters based on various attributes.\n * It is consumed within the `searchcraft-filter-panel`.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-facet-list field-name=\"title\" />\n * ```\n *\n * ```js\n * // index.js\n * const facetList = document.querySelector('searchcraft-facet-list');\n *\n * facetList.addEventListener('facetSelectionUpdated', () => {\n * console.log('Facet selection updated');\n * });\n * ```\n */\n@Component({\n tag: 'searchcraft-facet-list',\n styleUrl: 'searchcraft-facet-list.module.scss',\n shadow: false,\n})\nexport class SearchcraftFacetList {\n /**\n * The name of the field where facets are applied.\n */\n @Prop() fieldName: string;\n\n /**\n * When the facets are updated.\n */\n @Event() facetSelectionUpdated: EventEmitter<{ paths: string[] }>;\n\n @State() baseFacetRoot: FacetRoot | undefined;\n @State() facetRoot: FacetRoot | undefined;\n @State() selectedPaths: Record<string, boolean> = {};\n @State() lastTimeTaken: number | undefined;\n @State() hasNewSearchTerm = false;\n\n @State() lastQuery: string | undefined;\n @State() lastSearchMode: string | undefined;\n @State() lastSortType: string | undefined;\n\n @State() unsubscribe: (() => void) | undefined;\n\n private searchStore = useSearchcraftStore.getState();\n\n handleStateUpdate(state: SearchcraftState) {\n const facetPrime = state.searchResults?.data.facets;\n const timeTaken = state.searchResults?.data.time_taken;\n\n /** Things to do when the state's search term has changed, but before the response received */\n if (\n state.query !== this.lastQuery ||\n state.searchMode !== this.lastSearchMode ||\n state.sortType !== this.lastSortType\n ) {\n this.selectedPaths = {};\n this.hasNewSearchTerm = true;\n }\n\n /** Things to do when a new response with a new facet prime has been received */\n if (timeTaken !== this.lastTimeTaken && facetPrime) {\n this.facetRoot = undefined;\n const incomingFacetRoot: FacetRoot = facetPrime.find(\n (facet) => this.fieldName === Object.keys(facet)[0],\n );\n\n /** Data is from a new search term: completely override our facets */\n if (this.hasNewSearchTerm) {\n this.baseFacetRoot = incomingFacetRoot;\n this.facetRoot = incomingFacetRoot;\n this.hasNewSearchTerm = false;\n } else if (this.baseFacetRoot) {\n /** Data is from an existing search term, merge the facets together */\n this.facetRoot = mergeFacetRoots(\n this.fieldName,\n this.baseFacetRoot,\n incomingFacetRoot,\n );\n }\n }\n\n this.lastQuery = state.query;\n this.lastSearchMode = state.searchMode;\n this.lastSortType = state.sortType;\n this.lastTimeTaken = timeTaken;\n }\n\n connectedCallback() {\n this.handleStateUpdate(this.searchStore);\n\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n this.handleStateUpdate(state);\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n handleCheckboxChange(path: string) {\n const isCheckboxChecked = !this.selectedPaths[path];\n\n if (isCheckboxChecked) {\n /**\n * Checkbox Checked: Add to the selectedPaths record\n * Uses spread operator here so UI updates.\n */\n this.selectedPaths = {\n ...this.selectedPaths,\n [path]: true,\n };\n } else {\n /**\n * Checkbox Uncheck: Remove any paths and sub-paths\n */\n const updatedPaths = Object.keys(this.selectedPaths).filter(\n (testPath) => !testPath.includes(path),\n );\n\n this.selectedPaths = updatedPaths.reduce(\n (acc, str) => {\n acc[str] = true;\n return acc;\n },\n {} as Record<string, boolean>,\n );\n }\n\n /**\n * Emit the paths array, with parent paths removed.\n */\n const paths = Object.keys(this.selectedPaths).filter(\n (path) => this.selectedPaths[path],\n );\n const pathsWithParentPathsRemoved = removeSubstringMatches(paths);\n\n this.facetSelectionUpdated.emit({ paths: pathsWithParentPathsRemoved });\n }\n\n formatLabel = (facetChild: FacetChild): string => {\n const label = facetChild.path.replace(/^\\//, '');\n const count = facetChild.count;\n return `${label.replace(/-/g, ' ').replace(/\\b\\w/g, (char) => char.toUpperCase())} (${count})`;\n };\n\n formatSubLabel = (\n facetChild: FacetChild,\n facetChildAncestor: FacetChild,\n ): string => {\n const facetChildPath = facetChild.path.substring(\n facetChildAncestor.path.length,\n );\n const label = facetChildPath.replace(/^\\//, '');\n const count = facetChild.count;\n return `${label.replace(/-/g, ' ').replace(/\\b\\w/g, (char) => char.toUpperCase())} (${count})`;\n };\n\n render() {\n const firstFacet = this.facetRoot?.[this.fieldName];\n\n return (\n <div\n class={classNames(\n 'filtersListContainer',\n 'searchcraft-filters-list-container',\n )}\n >\n {!firstFacet && (\n <p class='searchcraft-facet-message'>\n Enter a search to view facets.\n </p>\n )}\n {firstFacet?.map((facetChild: FacetChild) => {\n const isChildSelected = facetChild.children\n ? facetChild.children?.some(\n (child) => this.selectedPaths[child.path],\n )\n : false;\n\n return (\n <div\n key={facetChild.path}\n class={classNames('searchcraft-filters-list-item')}\n >\n <label\n class={classNames(\n 'filterCheckboxLabel',\n 'searchcraft-filters-list-checkbox-label',\n )}\n >\n <input\n checked={this.selectedPaths[facetChild.path]}\n onChange={(_event: Event) =>\n this.handleCheckboxChange(facetChild.path)\n }\n type='checkbox'\n />\n {isChildSelected ? (\n <div\n class={classNames(\n 'dashContainer',\n 'searchcraft-filter-list-dash-container',\n )}\n >\n <searchcraft-dash-icon />\n </div>\n ) : (\n <div\n class={classNames(\n 'checkContainer',\n 'searchcraft-filter-list-check-container',\n )}\n >\n <searchcraft-check-icon />\n </div>\n )}\n {this.formatLabel(facetChild)}\n </label>\n {facetChild.children && facetChild.children.length > 0 && (\n <Fragment>\n {facetChild.children.map((grandchild) => (\n <label\n key={grandchild.path}\n class={classNames(\n 'childFilterCheckboxLabel',\n 'searchcraft-child-filter-checkbox-label',\n )}\n style={{\n display: this.selectedPaths[facetChild.path]\n ? 'flex'\n : 'none',\n }}\n >\n <input\n checked={this.selectedPaths[grandchild.path]}\n onChange={(_event: Event) => {\n this.handleCheckboxChange(grandchild.path);\n }}\n type='checkbox'\n />\n <div\n class={classNames(\n 'checkContainer',\n 'searchcraft-filter-list-check-container',\n )}\n >\n <searchcraft-check-icon />\n </div>\n {this.formatSubLabel(grandchild, facetChild)}\n </label>\n ))}\n </Fragment>\n )}\n </div>\n );\n })}\n </div>\n );\n }\n}\n",".searchcraft-slider-container {\n align-items: center;\n display: flex;\n flex-direction: column;\n gap: 10px;\n width: 100%;\n}\n\n.searchcraft-slider-range-container {\n align-items: center;\n background-color: var(--sc-surface-disabled);\n border-radius: 999px;\n display: flex;\n position: relative;\n height: 4px;\n width: 100%;\n\n &::-webkit-slider-runnable-track {\n pointer-events: none;\n }\n\n .searchcraft-slider-active-range {\n background-color: var(--sc-surface-brand-primary);\n border-radius: 2px;\n height: 4px;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 0;\n\n &::-webkit-slider-runnable-track {\n pointer-events: none;\n }\n\n &::-moz-range-track {\n pointer-events: none;\n }\n }\n\n .searchcraft-slider-input {\n appearance: none;\n background: transparent;\n border-radius: 2px;\n height: 4px;\n margin: 0;\n outline: none;\n pointer-events: none;\n position: absolute;\n width: 100%;\n -webkit-appearance: none;\n\n &::-webkit-slider-thumb {\n background-color: var(--sc-surface-neutral-light);\n border-radius: 50%;\n border: 2px solid var(--sc-border-neutral);\n cursor: pointer;\n height: 20px;\n pointer-events: all;\n width: 20px;\n -webkit-appearance: none;\n }\n\n &::-moz-range-thumb {\n background-color: var(--sc-surface-neutral-light);\n border-radius: 50%;\n border: 2px solid var(--sc-border-neutral);\n cursor: pointer;\n height: 20px;\n pointer-events: all;\n width: 20px;\n }\n }\n}\n\n.searchcraft-slider-label-container {\n color: var(--sc-content-primary);\n display: flex;\n font-family: 'Source Sans Pro', sans-serif;\n font-size: 15px;\n font-weight: 600;\n justify-content: space-between;\n margin-top: 10px;\n width: 100%;\n}\n\n.searchcraft-slider-label {\n min-width: 30px;\n text-align: center;\n}","import {\n Component,\n Event,\n type EventEmitter,\n h,\n State,\n Prop,\n} from '@stencil/core';\nimport { getMillis } from '@utils';\nimport classNames from 'classnames';\n\n/**\n * This web component is designed to allow users to select a value from a range defined by a minimum and maximum value.\n * The component renders a slider interface, which can be used to visually choose a value between two boundaries.\n * It is consumed by the `searchcraft-filter-panel` component.\n */\n@Component({\n tag: 'searchcraft-slider',\n styleUrl: 'searchcraft-slider.module.scss',\n shadow: false,\n})\nexport class SearchcraftSlider {\n /**\n * The maximum value allowed.\n */\n @Prop() max = 100;\n /**\n * The minimum value allowed.\n */\n @Prop() min = 0;\n /**\n * The granularity that the value must adhere to.\n */\n @Prop() granularity: number = getMillis('month');\n /** The type of data allowed. */\n @Prop() dataType: 'number' | 'date' = 'number';\n\n @State() endValue = this.max;\n @State() startValue = this.min;\n @State() lastFocusedHandle: 'min' | 'max' = 'max';\n\n /**\n * When the range has changed.\n * */\n @Event() rangeChanged: EventEmitter<{ startValue: number; endValue: number }>;\n\n componentDidLoad() {\n this.startValue = this.min;\n this.endValue = this.max;\n }\n\n private emitUpdate = async () => {\n this.rangeChanged.emit({\n startValue: this.startValue,\n endValue: this.endValue,\n });\n };\n\n private handleStartValueChange = (event: InputEvent) => {\n const inputElement = event.target as HTMLInputElement;\n const value = Number.parseInt(inputElement.value, 10);\n this.lastFocusedHandle = 'min';\n if (value <= this.endValue) {\n this.startValue = value;\n this.emitUpdate();\n } else {\n this.startValue = this.endValue;\n inputElement.value = `${this.endValue}`;\n }\n };\n\n private handleEndValueChange = (event: InputEvent) => {\n const inputElement = event.target as HTMLInputElement;\n const value = Number.parseInt(inputElement.value, 10);\n this.lastFocusedHandle = 'max';\n if (value >= this.startValue) {\n this.endValue = value;\n this.emitUpdate();\n } else {\n this.endValue = this.startValue;\n inputElement.value = `${this.startValue}`;\n }\n };\n\n render() {\n const rangeMin = this.min;\n const rangeMax = this.max;\n const startPercent =\n ((this.startValue - rangeMin) / (rangeMax - rangeMin)) * 100;\n const endPercent =\n ((this.endValue - rangeMin) / (rangeMax - rangeMin)) * 100;\n\n const startLabel =\n this.dataType === 'number'\n ? this.startValue\n : new Date(this.startValue).getFullYear();\n\n const endLabel =\n this.dataType === 'number'\n ? this.endValue\n : new Date(this.endValue).getFullYear();\n\n return (\n <div class='searchcraft-slider-container'>\n <div class='searchcraft-slider-range-container'>\n <div\n class='searchcraft-slider-active-range'\n style={{\n left: `${startPercent}%`,\n width: `${endPercent - startPercent}%`,\n }}\n />\n <input\n class={classNames(\n 'searchcraft-slider-input',\n 'searchcraft-slider-input-min-handle',\n )}\n max={this.max}\n min={this.min}\n onInput={this.handleStartValueChange.bind(this)}\n step={this.granularity}\n style={{ zIndex: this.lastFocusedHandle === 'min' ? '2' : '1' }}\n type='range'\n value={this.startValue}\n />\n <input\n class={classNames(\n 'searchcraft-slider-input',\n 'searchcraft-slider-input-max-handle',\n )}\n max={this.max}\n min={this.min}\n onInput={this.handleEndValueChange.bind(this)}\n step={this.granularity}\n style={{ zIndex: this.lastFocusedHandle === 'max' ? '2' : '1' }}\n type='range'\n value={this.endValue}\n />\n </div>\n <div class='searchcraft-slider-label-container'>\n <span class='searchcraft-slider-label'>{startLabel}</span>\n <span class='searchcraft-slider-label'>{endLabel}</span>\n </div>\n </div>\n );\n }\n}\n",".searchcraft-toggle-button-container {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 10px;\n}\n\n.searchcraft-toggle-button-label {\n @include body();\n margin: 0;\n color: var(--sc-content-neutral-primary);\n}\n\n.searchcraft-toggle-button-sub-label {\n @include body-small();\n margin: 0;\n color: var(--sc-content-neutral-secondary);\n}\n\n.searchcraft-toggle-button-background {\n transition: background-color 0.2s;\n background: var(--sc-surface-disabled);\n border: none;\n border-radius: 16px;\n cursor: pointer;\n height: 26px;\n position: relative;\n width: 44px;\n flex-shrink: 0;\n}\n\n.searchcraft-toggle-button-background.active {\n background: var(--sc-surface-brand-primary);\n box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05);\n}\n\n.searchcraft-toggle-button-handle {\n background: var(--sc-surface-neutral-light);\n border-radius: 50%;\n height: 18px;\n left: 4px;\n position: absolute;\n top: calc(50% - 18px/2);\n transition: transform 0.3s ease;\n width: 18px;\n}\n\n.searchcraft-toggle-button-handle.active {\n transform: translateX(16px);\n}\n","import { useSearchcraftStore } from '@provider/store';\nimport {\n Component,\n Event,\n h,\n Prop,\n State,\n type EventEmitter,\n} from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * This web component simulates a light switch functionality, providing a simple and intuitive toggle between two states—on and off.\n * It is consumed within the `searchcraft-filter-panel` component.\n */\n@Component({\n tag: 'searchcraft-toggle-button',\n styleUrl: 'searchcraft-toggle-button.module.scss',\n shadow: false,\n})\nexport class SearchcraftToggleButton {\n /**\n * The label.\n */\n @Prop() label = 'Toggle';\n /**\n * The secondary label displayed below the main label.\n */\n @Prop() subLabel: string | undefined;\n\n /**\n * When the toggle element is changed.\n */\n @Event() toggleUpdated: EventEmitter<boolean>;\n\n @State() isActive = false;\n @State() unsubscribe: (() => void) | undefined;\n @State() lastQuery: string | undefined;\n\n private handleToggle = async () => {\n this.isActive = !this.isActive;\n this.toggleUpdated.emit(this.isActive);\n };\n\n connectedCallback() {\n /** When the query changes, sets toggle button state back to inactive. */\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (state.query !== this.lastQuery && state.query.trim().length === 0) {\n this.isActive = false;\n }\n this.lastQuery = state.query;\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n render() {\n return (\n <div class='searchcraft-toggle-button-container'>\n <div>\n <p class='searchcraft-toggle-button-label'>{this.label}</p>\n {this.subLabel && (\n <p class='searchcraft-toggle-button-sub-label'>{this.subLabel}</p>\n )}\n </div>\n <button\n class={classNames('searchcraft-toggle-button-background', {\n active: this.isActive,\n })}\n onClick={this.handleToggle}\n type='button'\n >\n <div\n class={classNames('searchcraft-toggle-button-handle', {\n active: this.isActive,\n })}\n />\n </button>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,h as t}from"./p-e0be53df.js";import{u as c}from"./p-d6a88eed.js";const o="";const r=o;const s=class{constructor(t){e(this,t)}handleOnClick(){c.getState().setPopoverVisibility(true)}render(){return t("button",{key:"7885ca44b5ce619d572194d60c3b7e9d9f6666be",type:"button",onClick:this.handleOnClick.bind(this)},t("slot",{key:"0a8dc506eadbc725e3ed4c7c6987e02dfcecc229"}))}};s.style=r;export{s as searchcraft_popover_button};
2
+ //# sourceMappingURL=p-b8bd53ce.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["searchcraftPopoverButtonModuleCss","SearchcraftPopoverButtonStyle0","SearchcraftPopoverButton","handleOnClick","useSearchcraftStore","getState","setPopoverVisibility","render","h","key","type","onClick","this","bind"],"sources":["src/components/searchcraft-popover-button/searchcraft-popover-button.module.scss?tag=searchcraft-popover-button","src/components/searchcraft-popover-button/searchcraft-popover-button.tsx"],"sourcesContent":[null,"import { useSearchcraftStore } from '@provider/store';\nimport { Component, h } from '@stencil/core';\n\n/**\n * Renders a button which, when clicked, turns on popover visibility.\n */\n@Component({\n tag: 'searchcraft-popover-button',\n styleUrl: 'searchcraft-popover-button.module.scss',\n shadow: false,\n})\nexport class SearchcraftPopoverButton {\n handleOnClick() {\n useSearchcraftStore.getState().setPopoverVisibility(true);\n }\n\n render() {\n return (\n <button type='button' onClick={this.handleOnClick.bind(this)}>\n <slot />\n </button>\n );\n }\n}\n"],"mappings":"+EAAA,MAAMA,EAAoC,GAC1C,MAAAC,EAAeD,E,MCUFE,EAAwB,M,yBACnC,aAAAC,GACEC,EAAoBC,WAAWC,qBAAqB,K,CAGtD,MAAAC,GACE,OACEC,EAAA,UAAAC,IAAA,2CAAQC,KAAK,SAASC,QAASC,KAAKT,cAAcU,KAAKD,OACrDJ,EAAA,QAAAC,IAAA,6C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,h as s}from"./p-e0be53df.js";import{u as a}from"./p-d6a88eed.js";import{a as c}from"./p-755f491b.js";const t=":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-filter-panel{display:flex;flex-direction:column;gap:16px}.searchcraft-filter-panel-section{display:flex;flex-direction:column;gap:8px}.searchcraft-filter-panel-label{font-family:var(--sc-font-family);-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-bold-font-size);font-weight:var(--sc-body-small-bold-font-weight);line-height:var(--sc-body-small-bold-line-height)}";const r=t;const n=class{constructor(s){e(this,s);this.searchStore=a.getState();this.items=[];this.unsubscribe=undefined;this.lastQuery=undefined}componentDidLoad(){this.unsubscribe=a.subscribe((e=>{this.lastQuery=e.query||""}))}disconnectedCallback(){var e;(e=this.unsubscribe)===null||e===void 0?void 0:e.call(this)}handleDateRangeChanged(e,s,a){const c=new Date(s);const t=new Date(a);this.searchStore.addRangeValueForIndexField({fieldName:e,value:`${e}:[${c.toISOString()} TO ${t.toISOString()}]`});this.searchStore.search()}handleNumericRangeChanged(e,s,a){this.searchStore.addRangeValueForIndexField({fieldName:e,value:`${e}:[${s} TO ${a}]`});this.searchStore.search()}handleFacetSelectionUpdated(e,s){if(s.length>0){this.searchStore.addFacetPathsForIndexField({fieldName:e,value:`${e}: IN [${s.join(" ")}]`})}else{this.searchStore.removeFacetPathsForIndexField(e)}this.searchStore.search()}handleExactMatchToggleUpdated(e){this.searchStore.setSearchMode(e?"exact":"fuzzy");this.searchStore.search()}handleMostRecentToggleUpdated(e){this.searchStore.setSortType(e?"desc":"asc");this.searchStore.search()}render(){return s("div",{key:"43bb83b1616c00f46727c7baff2cbc013f88e111",class:"searchcraft-filter-panel"},this.items.map((e=>{switch(e.type){case"dateRange":{const a=e;const t=new Date(a.options.minDate).getTime();const r=new Date(a.options.maxDate).getTime();const n=c(a.options.granularity);return s("div",{class:"searchcraft-filter-panel-section"},s("p",{class:"searchcraft-filter-panel-label"},e.label),s("searchcraft-slider",{min:t,max:r,granularity:n,dataType:"date",onRangeChanged:e=>{this.handleDateRangeChanged(a.fieldName,e.detail.startValue,e.detail.endValue)}}))}case"numericRange":{const a=e;return s("div",{class:"searchcraft-filter-panel-section"},s("p",{class:"searchcraft-filter-panel-label"},e.label),s("searchcraft-slider",{min:a.options.min,max:a.options.max,granularity:a.options.granularity,onRangeChanged:e=>{this.handleNumericRangeChanged(a.fieldName,e.detail.startValue,e.detail.endValue)}}))}case"facets":{const a=e;return s("div",{class:"searchcraft-filter-panel-section"},s("p",{class:"searchcraft-filter-panel-label"},e.label),s("searchcraft-facet-list",{fieldName:a.fieldName,onFacetSelectionUpdated:e=>{this.handleFacetSelectionUpdated(a.fieldName,e.detail.paths)}}))}case"exactMatchToggle":{const a=e;return s("searchcraft-toggle-button",{label:a.label,subLabel:a.options.subLabel,onToggleUpdated:e=>{this.handleExactMatchToggleUpdated(e.detail)}})}case"mostRecentToggle":{const a=e;return s("searchcraft-toggle-button",{label:a.label,subLabel:a.options.subLabel,onToggleUpdated:e=>{this.handleMostRecentToggleUpdated(e.detail)}})}}})))}};n.style=r;export{n as searchcraft_filter_panel};
2
+ //# sourceMappingURL=p-c27a3673.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["searchcraftFilterPanelModuleCss","SearchcraftFilterPanelStyle0","SearchcraftFilterPanel","this","searchStore","useSearchcraftStore","getState","componentDidLoad","unsubscribe","subscribe","state","lastQuery","query","disconnectedCallback","_a","call","handleDateRangeChanged","fieldName","min","max","start","Date","end","addRangeValueForIndexField","value","toISOString","search","handleNumericRangeChanged","handleFacetSelectionUpdated","paths","length","addFacetPathsForIndexField","join","removeFacetPathsForIndexField","handleExactMatchToggleUpdated","isActive","setSearchMode","handleMostRecentToggleUpdated","setSortType","render","h","key","class","items","map","filterItem","type","item","options","minDate","getTime","maxDate","granularityValue","getMillis","granularity","label","dataType","onRangeChanged","event","detail","startValue","endValue","onFacetSelectionUpdated","subLabel","onToggleUpdated"],"sources":["src/components/searchcraft-filter-panel/searchcraft-filter-panel.module.scss?tag=searchcraft-filter-panel","src/components/searchcraft-filter-panel/searchcraft-filter-panel.tsx"],"sourcesContent":[".searchcraft-filter-panel {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.searchcraft-filter-panel-section {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.searchcraft-filter-panel-label {\n @include body-small-bold();\n}\n","import { Component, h, Prop, State } from '@stencil/core';\nimport type {\n FilterItem,\n DateRangeFilterItem,\n NumericFilterItem,\n ExactMatchToggleFilterItem,\n FacetsFilterItem,\n} from '../../types/searchcraft-filter-panel.types';\nimport { useSearchcraftStore } from '@provider/store';\nimport { getMillis } from '@utils';\n\n/**\n * This web component represents a series of filters that allows users to refine and control their search queries by applying various filter criteria.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-filter-panel />\n * ```\n */\n@Component({\n tag: 'searchcraft-filter-panel',\n styleUrl: 'searchcraft-filter-panel.module.scss',\n shadow: false,\n})\nexport class SearchcraftFilterPanel {\n /**\n * The items to filter.\n */\n @Prop() items: FilterItem[] = [];\n\n @State() unsubscribe: (() => void) | undefined;\n @State() lastQuery: string | undefined;\n\n private searchStore = useSearchcraftStore.getState();\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (this.lastQuery !== state.query) {\n // A place to put actions to do when the query changes\n }\n this.lastQuery = state.query || '';\n });\n }\n\n disconnectedCallback() {\n this.unsubscribe?.();\n }\n\n handleDateRangeChanged(fieldName: string, min: number, max: number) {\n const start = new Date(min);\n const end = new Date(max);\n this.searchStore.addRangeValueForIndexField({\n fieldName,\n value: `${fieldName}:[${start.toISOString()} TO ${end.toISOString()}]`,\n });\n\n this.searchStore.search();\n }\n\n handleNumericRangeChanged(fieldName: string, min: number, max: number) {\n this.searchStore.addRangeValueForIndexField({\n fieldName,\n value: `${fieldName}:[${min} TO ${max}]`,\n });\n this.searchStore.search();\n }\n\n handleFacetSelectionUpdated(fieldName: string, paths: string[]) {\n if (paths.length > 0) {\n this.searchStore.addFacetPathsForIndexField({\n fieldName,\n value: `${fieldName}: IN [${paths.join(' ')}]`,\n });\n } else {\n this.searchStore.removeFacetPathsForIndexField(fieldName);\n }\n this.searchStore.search();\n }\n\n handleExactMatchToggleUpdated(isActive: boolean) {\n this.searchStore.setSearchMode(isActive ? 'exact' : 'fuzzy');\n this.searchStore.search();\n }\n\n handleMostRecentToggleUpdated(isActive: boolean) {\n this.searchStore.setSortType(isActive ? 'desc' : 'asc');\n this.searchStore.search();\n }\n\n /**\n * Iterate through `items` and render them based on `type`\n */\n render() {\n return (\n <div class='searchcraft-filter-panel'>\n {this.items.map((filterItem) => {\n switch (filterItem.type) {\n case 'dateRange': {\n const item = filterItem as DateRangeFilterItem;\n const min = new Date(item.options.minDate).getTime();\n const max = new Date(item.options.maxDate).getTime();\n const granularityValue = getMillis(item.options.granularity);\n // return date range slider\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-slider\n min={min}\n max={max}\n granularity={granularityValue}\n dataType='date'\n onRangeChanged={(event) => {\n this.handleDateRangeChanged(\n item.fieldName,\n event.detail.startValue,\n event.detail.endValue,\n );\n }}\n />\n </div>\n );\n }\n case 'numericRange': {\n const item = filterItem as NumericFilterItem;\n // return date range slider\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-slider\n min={item.options.min}\n max={item.options.max}\n granularity={item.options.granularity}\n onRangeChanged={(event) => {\n this.handleNumericRangeChanged(\n item.fieldName,\n event.detail.startValue,\n event.detail.endValue,\n );\n }}\n />\n </div>\n );\n }\n case 'facets': {\n const item = filterItem as FacetsFilterItem;\n // return \"filters-list\"\n return (\n <div class='searchcraft-filter-panel-section'>\n <p class='searchcraft-filter-panel-label'>\n {filterItem.label}\n </p>\n <searchcraft-facet-list\n fieldName={item.fieldName}\n onFacetSelectionUpdated={(event) => {\n this.handleFacetSelectionUpdated(\n item.fieldName,\n event.detail.paths,\n );\n }}\n />\n </div>\n );\n }\n case 'exactMatchToggle': {\n const item = filterItem as ExactMatchToggleFilterItem;\n return (\n <searchcraft-toggle-button\n label={item.label}\n subLabel={item.options.subLabel}\n onToggleUpdated={(event) => {\n this.handleExactMatchToggleUpdated(event.detail);\n }}\n />\n );\n }\n case 'mostRecentToggle': {\n const item = filterItem as ExactMatchToggleFilterItem;\n return (\n <searchcraft-toggle-button\n label={item.label}\n subLabel={item.options.subLabel}\n onToggleUpdated={(event) => {\n this.handleMostRecentToggleUpdated(event.detail);\n }}\n />\n );\n }\n }\n })}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as s,c as e,h as t}from"./p-e0be53df.js";import{u as c}from"./p-d6a88eed.js";import{g as r}from"./p-755f491b.js";import{s as i}from"./p-d9551738.js";const n=":root{--sc-input-border-radius:8px;--sc-input-search-icon-size:20px;--sc-input-clear-icon-size:20px;--sc-input-padding-left:44px;--sc-input-padding-right:44px;--sc-image-border-radius:8px;--sc-popover-form-border-radius:8px;--sc-popover-list-view-height:400px;--sc-popover-list-item-image-size:60px;--sc-popover-list-item-padding-horizontal:8px;--sc-popover-list-item-padding-vertical:8px;--sc-popover-modal-max-width:570px}:root{--sc-surface-disabled:#D9D9D9;--sc-surface-neutral-primary:#FFFFFF;--sc-surface-neutral-secondary:#F3F3F3;--sc-surface-neutral-light:#FFFFFF;--sc-surface-neutral-primary-hover:#FAFAFA;--sc-surface-neutral-primary-active:#F7F7F7;--sc-surface-neutral-secondary-hover:#EDEDED;--sc-surface-neutral-secondary-active:#E6E6E6;--sc-surface-brand-primary:#000000;--sc-surface-brand-secondary:#E6E6E6;--sc-surface-brand-primary-hover:#2E2E2E;--sc-surface-brand-primary-active:#292929;--sc-surface-brand-secondary-hover:#EBEBEB;--sc-surface-brand-secondary-active:#E0E0E0;--sc-surface-success-primary:#008000;--sc-surface-success-secondary:#CCFFCC;--sc-surface-success-primary-hover:#009900;--sc-surface-success-primary-active:#006600;--sc-surface-success-secondary-hover:#E6FFE6;--sc-surface-success-secondary-active:#E6FFE6;--sc-surface-caution-primary:#CC6600;--sc-surface-caution-secondary:#FFD9B3;--sc-surface-caution-primary-hover:#E57300;--sc-surface-caution-primary-active:#B25A00;--sc-surface-caution-secondary-hover:#FFE5CC;--sc-surface-caution-secondary-active:#FFCC99;--sc-surface-danger-primary:#CC0000;--sc-surface-danger-secondary:#FFCCCC;--sc-surface-danger-primary-hover:#E50000;--sc-surface-danger-primary-active:#B30000;--sc-surface-danger-secondary-hover:#FFE7E7;--sc-surface-danger-secondary-active:#FFB3B3;--sc-content-brand:#000000;--sc-content-success:#008000;--sc-content-caution:#994D00;--sc-content-danger:#990000;--sc-content-disabled:#737373;--sc-content-neutral-primary:#292929;--sc-content-neutral-secondary:#404040;--sc-content-brand-on-primary:#FFFFFF;--sc-content-success-on-primary:#FFFFFF;--sc-content-caution-on-primary:#FFFFFF;--sc-content-danger-on-primary:#FFFFFF;--sc-content-disabled-on-disabled:#737373;--sc-border-neutral:rgba(0,0,0, 0.1);--sc-border-brand:#000000;--sc-border-success:#008000;--sc-border-caution:#CC6600;--sc-border-danger:#CC0000;--sc-border-disabled:#737373}:root{--sc-font-family:sans-serif;--sc-heading-1-font-size:32px;--sc-heading-1-line-height:36px;--sc-heading-1-font-weight:700;--sc-heading-2-font-size:29px;--sc-heading-2-line-height:32px;--sc-heading-2-font-weight:700;--sc-heading-3-font-size:26px;--sc-heading-3-line-height:28px;--sc-heading-3-font-weight:700;--sc-heading-4-font-size:23px;--sc-heading-4-line-height:24px;--sc-heading-4-font-weight:700;--sc-heading-5-font-size:20px;--sc-heading-5-line-height:24px;--sc-heading-5-font-weight:700;--sc-heading-6-font-size:10px;--sc-heading-6-line-height:12px;--sc-heading-6-font-weight:700;--sc-body-bold-font-size:16px;--sc-body-bold-line-height:20px;--sc-body-bold-font-weight:700;--sc-body-font-size:16px;--sc-body-line-height:20px;--sc-body-font-weight:400;--sc-body-small-bold-font-size:12px;--sc-body-small-bold-line-height:16px;--sc-body-small-bold-font-weight:700;--sc-body-small-font-size:12px;--sc-body-small-line-height:16px;--sc-body-small-font-weight:400}:root{--sc-breakpoint-sm:576px;--sc-breakpoint-md:768px;--sc-breakpoint-lg:992px}.searchcraft-search-results-container{display:flex;flex-direction:column;justify-content:center;gap:16px}.searchcraft-ad-section{align-items:center;background-color:#F1F1F1;border-radius:16px;display:flex;flex-direction:column;font-size:16px;justify-content:center;min-height:176px;text-align:center}.searchcraft-ad-section p{margin:0;color:var(--sc-content-disabled)}.searchcraft-search-results-empty-state-container{text-align:center}.searchcraft-search-results-error-message-container{text-align:center}";const a=n;const o=class{constructor(t){s(this,t);this.noResults=e(this,"noResults",7);this.adInterval=4;this.customStylesForResults=undefined;this.searchResultMappings=undefined;this.placeAdAtEnd=false;this.placeAdAtStart=true;this.resultImagePlacement="right";this.buttonLabel=undefined;this.buttonTarget="_blank";this.buttonRel=undefined;this.containerTarget="_blank";this.containerRel=undefined;this.hasSearched=false;this.query="";this.searchResults=null}componentDidLoad(){this.unsubscribe=c.subscribe((s=>{if(s.query.length>0){this.hasSearched=true}else{this.hasSearched=false}this.searchResults=Object.assign({},s.searchResults);this.query=s.query}));const{searchResults:s,query:e}=c.getState();this.searchResults=s;this.query=e}disconnectedCallback(){if(this.unsubscribe){this.unsubscribe()}}renderDocument(s,e){const c=r(s,this.searchResultMappings.title);const n=r(s,this.searchResultMappings.subtitle);const a=r(s,this.searchResultMappings.body);const o=r(s,this.searchResultMappings.containerHref);const d=r(s,this.searchResultMappings.buttonHref);const h=r(s,this.searchResultMappings.imageSource);const l=r(s,this.searchResultMappings.footer);const u=typeof this.customStylesForResults==="string"?this.customStylesForResults:i(this.customStylesForResults);return t("searchcraft-base-search-result",{key:`${s.document_id}-${e}`,"custom-styles":u,"image-placement":this.resultImagePlacement,"container-rel":this.containerRel,"container-target":this.containerTarget,"button-label":this.buttonLabel||"View more","button-rel":this.buttonRel,"button-target":this.buttonTarget,"document-position":e,"title-content":c,"subtitle-content":n,"body-content":a,"footer-content":l,"container-href":o,"button-href":d,"image-src":h})}render(){var s,e,c,r,i,n,a,o,d,h;if(this.query.trim()===""){return t("div",{class:"searchcraft-search-results-empty-state-container"},t("slot",{name:"empty-search"}))}if(!((s=this.searchResults)===null||s===void 0?void 0:s.data)){return}const l=(r=(c=(e=this.searchResults)===null||e===void 0?void 0:e.data)===null||c===void 0?void 0:c.hits)===null||r===void 0?void 0:r.map(((s,e)=>{const{doc:t}=s;return t}));const u=[];if(this.placeAdAtStart){u.push(t("div",{key:"ad-section-start",class:"searchcraft-ad-section"},t("p",null,"Ad Section")))}if(this.adInterval>0){l.forEach(((s,e)=>{u.push(this.renderDocument(s,e));if((e+1)%this.adInterval===0){u.push(t("div",{key:`ad-section-${e+1}`,class:"searchcraft-ad-section "},t("p",null,"Ad Section")))}}))}else{const s=l.map(((s,e)=>this.renderDocument(s,e)));u.push(...s)}if(this.placeAdAtEnd){u.push(t("div",{key:"ad-section-end",class:"searchcraft-ad-section"},t("p",null,"Ad Section")))}if(this.query.length>0&&((a=(n=(i=this.searchResults)===null||i===void 0?void 0:i.data)===null||n===void 0?void 0:n.hits)===null||a===void 0?void 0:a.length)===0){this.noResults.emit()}return t("div",{class:"searchcraft-search-results-container"},u,this.query.length>0&&((h=(d=(o=this.searchResults)===null||o===void 0?void 0:o.data)===null||d===void 0?void 0:d.hits)===null||h===void 0?void 0:h.length)===0&&t("div",{class:"searchcraft-search-results-error-message-container"},t("searchcraft-error-message",{"error-message":`No search results found for "${this.query}" query`})))}};o.style=a;export{o as searchcraft_base_search_results};
2
+ //# sourceMappingURL=p-cd852b84.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["searchcraftBaseSearchResultsModuleCss","SearchcraftBaseSearchResultsStyle0","SearchcraftBaseSearchResults","componentDidLoad","this","unsubscribe","useSearchcraftStore","subscribe","state","query","length","hasSearched","searchResults","Object","assign","getState","disconnectedCallback","renderDocument","document","index","titleContent","getDocumentValueFromSearchResultMapping","searchResultMappings","title","subtitleContent","subtitle","bodyContent","body","containerHref","buttonHref","imageSource","footerContent","footer","serializedStyles","customStylesForResults","serializeStyles","h","key","document_id","resultImagePlacement","containerRel","containerTarget","buttonLabel","buttonRel","buttonTarget","render","trim","class","name","_a","data","documents","_d","_c","_b","hits","map","_index","doc","result","finalComponents","placeAdAtStart","push","adInterval","forEach","documentElements","placeAdAtEnd","_g","_f","_e","noResults","emit","_k","_j","_h"],"sources":["src/components/searchcraft-base-search-results/searchcraft-base-search-results.module.scss?tag=searchcraft-base-search-results","src/components/searchcraft-base-search-results/searchcraft-base-search-results.tsx"],"sourcesContent":[".searchcraft-search-results-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 16px;\n}\n\n.searchcraft-ad-section {\n align-items: center;\n background-color: #F1F1F1;\n border-radius: 16px;\n display: flex;\n flex-direction: column;\n font-size: 16px;\n justify-content: center;\n min-height: 176px;\n text-align: center;\n\n p {\n margin: 0;\n color: var(--sc-content-disabled);\n }\n}\n\n.searchcraft-search-results-empty-state-container {\n text-align: center;\n}\n\n.searchcraft-search-results-error-message-container {\n text-align: center;\n}\n","import {\n Component,\n h,\n Event,\n Prop,\n State,\n type EventEmitter,\n} from '@stencil/core';\n\nimport type { SearchcraftResponse } from '@searchcraft/core';\n\nimport { useSearchcraftStore } from '@provider/store';\n\nimport {\n getDocumentValueFromSearchResultMapping,\n serializeStyles,\n} from '@utils';\nimport type { SearchResultMappings } from 'types';\n\n/**\n * This web component is responsible for displaying the results of a search query.\n * Once a query is submitted, the component formats and presents an ordered list of the results.\n *\n * ## Usage\n * ```html\n * <!-- index.html -->\n * <searchcraft-base-search-results\n * ad-interval=\"4\"\n * place-ad-at-start=\"false\"\n * result-image-placement=\"right\"\n * />\n * ```\n *\n * ```js\n * // index.js\n * const baseSearchResults = document.querySelector('searchcraft-base-search-results');\n *\n * baseSearchResults.searchResultMappings = containerHref: {\n * fieldNames: [\n * {\n * fieldName: 'canonical_link',\n * dataType: 'text',\n * },\n * ],\n * };\n *\n * baseSearchResults.addEventListener('noResults', () => {\n * console.log('No search results found');\n * });\n * ```\n */\n@Component({\n tag: 'searchcraft-base-search-results',\n styleUrl: 'searchcraft-base-search-results.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResults {\n /**\n * How often ads are injected.\n */\n @Prop() adInterval = 4;\n /**\n * A custom styles object.\n */\n @Prop() customStylesForResults:\n | string\n | Record<string, Record<string, string>>\n | undefined;\n /**\n * Formats the content rendered for each result.\n */\n @Prop() searchResultMappings: SearchResultMappings | undefined;\n /**\n * Should an ad be placed at the end of the results.\n */\n @Prop() placeAdAtEnd = false;\n /**\n * Should an ad be placed at the start of the results.\n */\n @Prop() placeAdAtStart = true;\n /**\n * The placement of the image for each result.\n */\n @Prop() resultImagePlacement: 'left' | 'right' = 'right';\n /**\n * The label for the button rendered when containerHref is not present for each result.\n */\n @Prop() buttonLabel: string | undefined;\n /**\n * Where to open the link for the button rendered when containerHref is not present for each result.\n */\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the button rendered when containerHref is not present for each result.\n */\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n /**\n * Where to open the link for the containing element for each result.\n */\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n /**\n * The relationship between the current document and the link for the containing element for each result.\n */\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n\n /**\n * When no results are returned.\n */\n @Event() noResults: EventEmitter<void>;\n\n @State() hasSearched = false;\n @State() query = '';\n @State() searchResults: SearchcraftResponse | null = null;\n\n private unsubscribe: () => void;\n\n componentDidLoad() {\n this.unsubscribe = useSearchcraftStore.subscribe((state) => {\n if (state.query.length > 0) {\n this.hasSearched = true;\n } else {\n this.hasSearched = false;\n }\n this.searchResults = { ...state.searchResults };\n this.query = state.query;\n });\n\n const { searchResults, query } = useSearchcraftStore.getState();\n this.searchResults = searchResults;\n this.query = query;\n }\n\n disconnectedCallback() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n\n renderDocument(document: Record<string, unknown>, index: number) {\n /**\n * Index field values -> Result container props mappings.\n */\n const titleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.title,\n );\n const subtitleContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.subtitle,\n );\n const bodyContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.body,\n );\n const containerHref = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.containerHref,\n );\n const buttonHref = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.buttonHref,\n );\n const imageSource = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.imageSource,\n );\n const footerContent = getDocumentValueFromSearchResultMapping(\n document,\n this.searchResultMappings.footer,\n );\n\n const serializedStyles =\n typeof this.customStylesForResults === 'string'\n ? this.customStylesForResults\n : serializeStyles(this.customStylesForResults);\n\n return (\n <searchcraft-base-search-result\n key={`${document.document_id}-${index}`}\n custom-styles={serializedStyles}\n image-placement={this.resultImagePlacement}\n container-rel={this.containerRel}\n container-target={this.containerTarget}\n button-label={this.buttonLabel || 'View more'}\n button-rel={this.buttonRel}\n button-target={this.buttonTarget}\n document-position={index}\n title-content={titleContent}\n subtitle-content={subtitleContent}\n body-content={bodyContent}\n footer-content={footerContent}\n container-href={containerHref}\n button-href={buttonHref}\n image-src={imageSource}\n />\n );\n }\n\n render() {\n if (this.query.trim() === '') {\n return (\n <div class='searchcraft-search-results-empty-state-container'>\n <slot name='empty-search' />\n </div>\n );\n }\n\n if (!this.searchResults?.data) {\n return;\n }\n\n const documents: Record<string, unknown>[] =\n this.searchResults?.data?.hits?.map((data, _index) => {\n const { doc: result } = data;\n return result;\n });\n\n const finalComponents: JSX.Element[] = [];\n\n if (this.placeAdAtStart) {\n finalComponents.push(\n <div key='ad-section-start' class='searchcraft-ad-section'>\n <p>Ad Section</p>\n </div>,\n );\n }\n\n if (this.adInterval > 0) {\n documents.forEach((document, index) => {\n finalComponents.push(this.renderDocument(document, index));\n\n if ((index + 1) % this.adInterval === 0) {\n finalComponents.push(\n <div\n key={`ad-section-${index + 1}`}\n class='searchcraft-ad-section '\n >\n <p>Ad Section</p>\n </div>,\n );\n }\n });\n } else {\n const documentElements = documents.map((document, index) =>\n this.renderDocument(document, index),\n );\n finalComponents.push(...documentElements);\n }\n\n if (this.placeAdAtEnd) {\n finalComponents.push(\n <div key='ad-section-end' class='searchcraft-ad-section'>\n <p>Ad Section</p>\n </div>,\n );\n }\n\n if (this.query.length > 0 && this.searchResults?.data?.hits?.length === 0) {\n this.noResults.emit();\n }\n\n return (\n <div class='searchcraft-search-results-container'>\n {finalComponents}\n {this.query.length > 0 &&\n this.searchResults?.data?.hits?.length === 0 && (\n <div class='searchcraft-search-results-error-message-container'>\n <searchcraft-error-message\n error-message={`No search results found for \"${this.query}\" query`}\n />\n </div>\n )}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ var e={};var n={};const t=e=>{let n;const t=new Set;const r=(e,r)=>{const o=typeof e==="function"?e(n):e;if(!Object.is(o,n)){const e=n;n=(r!=null?r:typeof o!=="object"||o===null)?o:Object.assign({},n,o);t.forEach((t=>t(n,e)))}};const o=()=>n;const i=()=>u;const a=e=>{t.add(e);return()=>t.delete(e)};const c={setState:r,getState:o,getInitialState:i,subscribe:a};const u=n=e(r,o,c);return c};const r=e=>e?t(e):t;n.createStore=r;var o={};var i={exports:{}};var a={};
2
+ /**
3
+ * @license React
4
+ * react.production.min.js
5
+ *
6
+ * Copyright (c) Facebook, Inc. and its affiliates.
7
+ *
8
+ * This source code is licensed under the MIT license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ */var c=Symbol.for("react.element"),u=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),h=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),w=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),y=Symbol.iterator;function b(e){if(null===e||"object"!==typeof e)return null;e=y&&e[y]||e["@@iterator"];return"function"===typeof e?e:null}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},S=Object.assign,M={};function O(e,n,t){this.props=e;this.context=n;this.refs=M;this.updater=t||g}O.prototype.isReactComponent={};O.prototype.setState=function(e,n){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};O.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function x(){}x.prototype=O.prototype;function F(e,n,t){this.props=e;this.context=n;this.refs=M;this.updater=t||g}var j=F.prototype=new x;j.constructor=F;S(j,O.prototype);j.isPureReactComponent=!0;var P=Array.isArray,k=Object.prototype.hasOwnProperty,I={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function R(e,n,t){var r,o={},i=null,a=null;if(null!=n)for(r in void 0!==n.ref&&(a=n.ref),void 0!==n.key&&(i=""+n.key),n)k.call(n,r)&&!E.hasOwnProperty(r)&&(o[r]=n[r]);var u=arguments.length-2;if(1===u)o.children=t;else if(1<u){for(var s=Array(u),f=0;f<u;f++)s[f]=arguments[f+2];o.children=s}if(e&&e.defaultProps)for(r in u=e.defaultProps,u)void 0===o[r]&&(o[r]=u[r]);return{$$typeof:c,type:e,key:i,ref:a,props:o,_owner:I.current}}function _(e,n){return{$$typeof:c,type:e.type,key:n,ref:e.ref,props:e.props,_owner:e._owner}}function T(e){return"object"===typeof e&&null!==e&&e.$$typeof===c}function A(e){var n={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return n[e]}))}var C=/\/+/g;function $(e,n){return"object"===typeof e&&null!==e&&null!=e.key?A(""+e.key):n.toString(36)}function U(e,n,t,r,o){var i=typeof e;if("undefined"===i||"boolean"===i)e=null;var a=!1;if(null===e)a=!0;else switch(i){case"string":case"number":a=!0;break;case"object":switch(e.$$typeof){case c:case u:a=!0}}if(a)return a=e,o=o(a),e=""===r?"."+$(a,0):r,P(o)?(t="",null!=e&&(t=e.replace(C,"$&/")+"/"),U(o,n,t,"",(function(e){return e}))):null!=o&&(T(o)&&(o=_(o,t+(!o.key||a&&a.key===o.key?"":(""+o.key).replace(C,"$&/")+"/")+e)),n.push(o)),1;a=0;r=""===r?".":r+":";if(P(e))for(var s=0;s<e.length;s++){i=e[s];var f=r+$(i,s);a+=U(i,n,t,f,o)}else if(f=b(e),"function"===typeof f)for(e=f.call(e),s=0;!(i=e.next()).done;)i=i.value,f=r+$(i,s++),a+=U(i,n,t,f,o);else if("object"===i)throw n=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n)+"). If you meant to render a collection of children, use an array instead.");return a}function q(e,n,t){if(null==e)return e;var r=[],o=0;U(e,r,"","",(function(e){return n.call(t,e,o++)}));return r}function V(e){if(-1===e._status){var n=e._result;n=n();n.then((function(n){if(0===e._status||-1===e._status)e._status=1,e._result=n}),(function(n){if(0===e._status||-1===e._status)e._status=2,e._result=n}));-1===e._status&&(e._status=0,e._result=n)}if(1===e._status)return e._result.default;throw e._result}var B={current:null},D={transition:null},L={ReactCurrentDispatcher:B,ReactCurrentBatchConfig:D,ReactCurrentOwner:I};function N(){throw Error("act(...) is not supported in production builds of React.")}a.Children={map:q,forEach:function(e,n,t){q(e,(function(){n.apply(this,arguments)}),t)},count:function(e){var n=0;q(e,(function(){n++}));return n},toArray:function(e){return q(e,(function(e){return e}))||[]},only:function(e){if(!T(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};a.Component=O;a.Fragment=s;a.Profiler=l;a.PureComponent=F;a.StrictMode=f;a.Suspense=m;a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=L;a.act=N;a.cloneElement=function(e,n,t){if(null===e||void 0===e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var r=S({},e.props),o=e.key,i=e.ref,a=e._owner;if(null!=n){void 0!==n.ref&&(i=n.ref,a=I.current);void 0!==n.key&&(o=""+n.key);if(e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(s in n)k.call(n,s)&&!E.hasOwnProperty(s)&&(r[s]=void 0===n[s]&&void 0!==u?u[s]:n[s])}var s=arguments.length-2;if(1===s)r.children=t;else if(1<s){u=Array(s);for(var f=0;f<s;f++)u[f]=arguments[f+2];r.children=u}return{$$typeof:c,type:e.type,key:o,ref:i,props:r,_owner:a}};a.createContext=function(e){e={$$typeof:h,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};e.Provider={$$typeof:d,_context:e};return e.Consumer=e};a.createElement=R;a.createFactory=function(e){var n=R.bind(null,e);n.type=e;return n};a.createRef=function(){return{current:null}};a.forwardRef=function(e){return{$$typeof:v,render:e}};a.isValidElement=T;a.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:V}};a.memo=function(e,n){return{$$typeof:w,type:e,compare:void 0===n?null:n}};a.startTransition=function(e){var n=D.transition;D.transition={};try{e()}finally{D.transition=n}};a.unstable_act=N;a.useCallback=function(e,n){return B.current.useCallback(e,n)};a.useContext=function(e){return B.current.useContext(e)};a.useDebugValue=function(){};a.useDeferredValue=function(e){return B.current.useDeferredValue(e)};a.useEffect=function(e,n){return B.current.useEffect(e,n)};a.useId=function(){return B.current.useId()};a.useImperativeHandle=function(e,n,t){return B.current.useImperativeHandle(e,n,t)};a.useInsertionEffect=function(e,n){return B.current.useInsertionEffect(e,n)};a.useLayoutEffect=function(e,n){return B.current.useLayoutEffect(e,n)};a.useMemo=function(e,n){return B.current.useMemo(e,n)};a.useReducer=function(e,n,t){return B.current.useReducer(e,n,t)};a.useRef=function(e){return B.current.useRef(e)};a.useState=function(e){return B.current.useState(e)};a.useSyncExternalStore=function(e,n,t){return B.current.useSyncExternalStore(e,n,t)};a.useTransition=function(){return B.current.useTransition()};a.version="18.3.1";{i.exports=a}var z=i.exports;var G=n;const W=e=>e;function J(e,n=W){const t=z.useSyncExternalStore(e.subscribe,(()=>n(e.getState())),(()=>n(e.getInitialState())));z.useDebugValue(t);return t}const H=e=>{const n=G.createStore(e);const t=e=>J(n,e);Object.assign(t,n);return t};const Q=e=>e?H(e):H;o.create=Q;o.useStore=J;(function(e){var t=n;var r=o;Object.keys(t).forEach((function(n){if(n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n))Object.defineProperty(e,n,{enumerable:true,get:function(){return t[n]}})}));Object.keys(r).forEach((function(n){if(n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n))Object.defineProperty(e,n,{enumerable:true,get:function(){return r[n]}})}))})(e);var K=Object.defineProperty;var X=(e,n,t)=>n in e?K(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var Z=(e,n,t)=>X(e,typeof n!="symbol"?n+"":n,t);const Y="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let ee=(e=21)=>{let n="",t=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)n+=Y[t[e]&63];return n};function ne(e,n,t,r){return new(t||(t=Promise))((function(n,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var r;e.done?n(e.value):(r=e.value,r instanceof t?r:new t((function(e){e(r)}))).then(i,a)}c((r=r.apply(e,[])).next())}))}function te(e,n){var t,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(u){return function(c){if(t)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(t=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(o=a.trys,!((o=o.length>0&&o[o.length-1])||c[0]!==6&&c[0]!==2)){a=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(c[0]===6&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=n.call(e,a)}catch(e){c=[6,e],r=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var re={exclude:[]},oe={},ie={timeout:"true"},ae=function(e,n){typeof window<"u"&&(oe[e]=n)},ce=function(){return Object.fromEntries(Object.entries(oe).filter((function(e){var n,t=e[0];return!(!((n=re==null?void 0:re.exclude)===null||n===void 0)&&n.includes(t))})).map((function(e){return[e[0],(0,e[1])()]})))};function ue(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}var se=new Uint32Array([597399067,2869860233,951274213,2716044179]);function fe(e,n){return e<<n|e>>>32-n}function le(e,n){var t;if(n===void 0&&(n=0),n=n?0|n:0,typeof e=="string"&&(t=e,e=(new TextEncoder).encode(t).buffer),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");var r=new Uint32Array([n,n,n,n]);(function(e,n){for(var t=e.byteLength/16|0,r=new Uint32Array(e,0,4*t),o=0;o<t;o++){var i=r.subarray(4*o,4*(o+1));i[0]=Math.imul(i[0],se[0]),i[0]=fe(i[0],15),i[0]=Math.imul(i[0],se[1]),n[0]=n[0]^i[0],n[0]=fe(n[0],19),n[0]=n[0]+n[1],n[0]=Math.imul(n[0],5)+1444728091,i[1]=Math.imul(i[1],se[1]),i[1]=fe(i[1],16),i[1]=Math.imul(i[1],se[2]),n[1]=n[1]^i[1],n[1]=fe(n[1],17),n[1]=n[1]+n[2],n[1]=Math.imul(n[1],5)+197830471,i[2]=Math.imul(i[2],se[2]),i[2]=fe(i[2],17),i[2]=Math.imul(i[2],se[3]),n[2]=n[2]^i[2],n[2]=fe(n[2],15),n[2]=n[2]+n[3],n[2]=Math.imul(n[2],5)+2530024501,i[3]=Math.imul(i[3],se[3]),i[3]=fe(i[3],18),i[3]=Math.imul(i[3],se[0]),n[3]=n[3]^i[3],n[3]=fe(n[3],13),n[3]=n[3]+n[0],n[3]=Math.imul(n[3],5)+850148119}})(e,r),function(e,n){var t=e.byteLength/16|0,r=e.byteLength%16,o=new Uint32Array(4),i=new Uint8Array(e,16*t,r);switch(r){case 15:o[3]=o[3]^i[14]<<16;case 14:o[3]=o[3]^i[13]<<8;case 13:o[3]=o[3]^i[12]<<0,o[3]=Math.imul(o[3],se[3]),o[3]=fe(o[3],18),o[3]=Math.imul(o[3],se[0]),n[3]=n[3]^o[3];case 12:o[2]=o[2]^i[11]<<24;case 11:o[2]=o[2]^i[10]<<16;case 10:o[2]=o[2]^i[9]<<8;case 9:o[2]=o[2]^i[8]<<0,o[2]=Math.imul(o[2],se[2]),o[2]=fe(o[2],17),o[2]=Math.imul(o[2],se[3]),n[2]=n[2]^o[2];case 8:o[1]=o[1]^i[7]<<24;case 7:o[1]=o[1]^i[6]<<16;case 6:o[1]=o[1]^i[5]<<8;case 5:o[1]=o[1]^i[4]<<0,o[1]=Math.imul(o[1],se[1]),o[1]=fe(o[1],16),o[1]=Math.imul(o[1],se[2]),n[1]=n[1]^o[1];case 4:o[0]=o[0]^i[3]<<24;case 3:o[0]=o[0]^i[2]<<16;case 2:o[0]=o[0]^i[1]<<8;case 1:o[0]=o[0]^i[0]<<0,o[0]=Math.imul(o[0],se[0]),o[0]=fe(o[0],15),o[0]=Math.imul(o[0],se[1]),n[0]=n[0]^o[0]}}(e,r),function(e,n){n[0]=n[0]^e.byteLength,n[1]=n[1]^e.byteLength,n[2]=n[2]^e.byteLength,n[3]=n[3]^e.byteLength,n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0,n[0]=ue(n[0]),n[1]=ue(n[1]),n[2]=ue(n[2]),n[3]=ue(n[3]),n[0]=n[0]+n[1]|0,n[0]=n[0]+n[2]|0,n[0]=n[0]+n[3]|0,n[1]=n[1]+n[0]|0,n[2]=n[2]+n[0]|0,n[3]=n[3]+n[0]|0}(e,r);var o=new Uint8Array(r.buffer);return Array.from(o).map((function(e){return e.toString(16).padStart(2,"0")})).join("")}function de(e,n){return new Promise((function(t){setTimeout((function(){return t(n)}),e)}))}function he(e,n,t){return Promise.all(e.map((function(e){return Promise.race([e,de(n,t)])})))}function ve(){return ne(this,void 0,void 0,(function(){var e,n,t,r,o;return te(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),e=ce(),n=Object.keys(e),[4,he(Object.values(e),(re==null?void 0:re.timeout)||1e3,ie)];case 1:return t=i.sent(),r=t.filter((function(e){return e!==void 0})),o={},r.forEach((function(e,t){o[n[t]]=e})),[2,me(o,re.exclude||[])];case 2:throw i.sent();case 3:return[2]}}))}))}function me(e,n){var t={},r=function(r){if(e.hasOwnProperty(r)){var o=e[r];if(typeof o!="object"||Array.isArray(o))n.includes(r)||(t[r]=o);else{var i=me(o,n.map((function(e){return e.startsWith(r+".")?e.slice(r.length+1):e})));Object.keys(i).length>0&&(t[r]=i)}}};for(var o in e)r(o);return t}function we(e){return ne(this,void 0,void 0,(function(){var e,n;return te(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,ve()];case 1:return e=t.sent(),n=le(JSON.stringify(e)),[2,n.toString()];case 2:throw t.sent();case 3:return[2]}}))}))}function pe(e){for(var n=0,t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}function ye(e,n,t){for(var r=[],o=0;o<e[0].data.length;o++){for(var i=[],a=0;a<e.length;a++)i.push(e[a].data[o]);r.push(be(i))}var c=new Uint8ClampedArray(r);return new ImageData(c,n,t)}function be(e){if(e.length===0)return 0;for(var n={},t=0,r=e;t<r.length;t++)n[i=r[t]]=(n[i]||0)+1;var o=e[0];for(var i in n)n[i]>n[o]&&(o=parseInt(i,10));return o}function ge(){if(typeof navigator>"u")return{name:"unknown",version:"unknown"};for(var e=navigator.userAgent,n={Edg:"Edge",OPR:"Opera"},t=0,r=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];t<r.length;t++){var o=r[t],i=e.match(o);if(i&&i.groups)return{name:n[i.groups.name]||i.groups.name,version:i.groups.version}}return{name:"unknown",version:"unknown"}}ae("audio",(function(){return ne(this,void 0,void 0,(function(){return te(this,(function(e){return[2,new Promise((function(e,n){try{var t=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),r=t.createBufferSource(),o=t.createOscillator();o.frequency.value=1e3;var i,a=t.createDynamicsCompressor();a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.2,o.connect(a),a.connect(t.destination),o.start(),t.oncomplete=function(n){i=n.renderedBuffer.getChannelData(0),e({sampleHash:pe(i),oscillator:o.type,maxChannels:t.destination.maxChannelCount,channelCountMode:r.channelCountMode})},t.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))]}))}))}));var Se=ge().name!=="SamsungBrowser"?1:3,Me=280,Oe=20;ge().name!="Firefox"&&ae("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(e){var n=Array.from({length:Se},(function(){return function(){var e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=Me,e.height=Oe;var t=n.createLinearGradient(0,0,e.width,e.height);t.addColorStop(0,"red"),t.addColorStop(.16666666666666666,"orange"),t.addColorStop(.3333333333333333,"yellow"),t.addColorStop(.5,"green"),t.addColorStop(.6666666666666666,"blue"),t.addColorStop(.8333333333333334,"indigo"),t.addColorStop(1,"violet"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);var r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();var o=n.getImageData(0,0,e.width,e.height);return o}()}));e({commonImageDataHash:le(ye(n,Me,Oe).data.toString()).toString()})}))}));var xe,Fe=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],je=["monospace","sans-serif","serif"];function Pe(e,n){if(!e)throw new Error("Canvas context not supported");return e.font="72px ".concat(n),e.measureText("WwMmLli0Oo").width}function ke(){var e,n=document.createElement("canvas"),t=(e=n.getContext("webgl"))!==null&&e!==void 0?e:n.getContext("experimental-webgl");if(t&&"getParameter"in t)try{var r=(t.getParameter(t.VENDOR)||"").toString(),o=(t.getParameter(t.RENDERER)||"").toString(),i={vendor:r,renderer:o,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!o.length||!r.length){var a=t.getExtension("WEBGL_debug_renderer_info");if(a){var c=(t.getParameter(a.UNMASKED_VENDOR_WEBGL)||"").toString(),u=(t.getParameter(a.UNMASKED_RENDERER_WEBGL)||"").toString();c&&(i.vendorUnmasked=c),u&&(i.rendererUnmasked=u)}}return i}catch{}return"undefined"}function Ie(){var e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}function Ee(e,n){var t={};return n.forEach((function(n){var r=function(e){if(e.length===0)return null;var n={};e.forEach((function(e){var t=String(e);n[t]=(n[t]||0)+1}));var t=e[0],r=1;return Object.keys(n).forEach((function(e){n[e]>r&&(t=e,r=n[e])})),t}(e.map((function(e){return n in e?e[n]:void 0})).filter((function(e){return e!==void 0})));r&&(t[n]=r)})),t}function Re(){var e=[],n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(n).forEach((function(t){n[t].forEach((function(n){matchMedia("(".concat(t,": ").concat(n,")")).matches&&e.push("".concat(t,": ").concat(n))}))})),e}function _e(){if(window.location.protocol==="https:"&&typeof window.ApplePaySession=="function")try{for(var e=window.ApplePaySession.supportsVersion,n=15;n>0;n--)if(e(n))return n}catch{return 0}return 0}ge().name!="Firefox"&&ae("fonts",(function(){var e=this;return new Promise((function(n,t){try{(function(e){var n;ne(this,void 0,void 0,(function(){var t,r,o;return te(this,(function(i){switch(i.label){case 0:return document.body?[3,2]:[4,(a=50,new Promise((function(e){return setTimeout(e,a,c)})))];case 1:return i.sent(),[3,0];case 2:if((t=document.createElement("iframe")).setAttribute("frameBorder","0"),(r=t.style).setProperty("position","fixed"),r.setProperty("display","block","important"),r.setProperty("visibility","visible"),r.setProperty("border","0"),r.setProperty("opacity","0"),t.src="about:blank",document.body.appendChild(t),!(o=t.contentDocument||((n=t.contentWindow)===null||n===void 0?void 0:n.document)))throw new Error("Iframe document is not accessible");return e({iframe:o}),setTimeout((function(){document.body.removeChild(t)}),0),[2]}var a,c}))}))})((function(t){var r=t.iframe;return ne(e,void 0,void 0,(function(){var e,t,o,i;return te(this,(function(a){return e=r.createElement("canvas"),t=e.getContext("2d"),o=je.map((function(e){return Pe(t,e)})),i={},Fe.forEach((function(e){var n=Pe(t,e);o.includes(n)||(i[e]=n)})),n(i),[2]}))}))}))}catch{t({error:"unsupported"})}}))})),ae("hardware",(function(){return new Promise((function(e,n){var t=navigator.deviceMemory!==void 0?navigator.deviceMemory:0,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:ke(),architecture:Ie(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))})),ae("locales",(function(){return new Promise((function(e){e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))})),ae("permissions",(function(){return ne(this,void 0,void 0,(function(){var e;return te(this,(function(n){return xe=(re==null?void 0:re.permissions_to_check)||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],e=Array.from({length:(re==null?void 0:re.retries)||3},(function(){return function(){return ne(this,void 0,void 0,(function(){var e,n,t,r,o;return te(this,(function(i){switch(i.label){case 0:e={},n=0,t=xe,i.label=1;case 1:if(!(n<t.length))return[3,6];r=t[n],i.label=2;case 2:return i.trys.push([2,4,,5]),[4,navigator.permissions.query({name:r})];case 3:return o=i.sent(),e[r]=o.state.toString(),[3,5];case 4:return i.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,e]}}))}))}()})),[2,Promise.all(e).then((function(e){return Ee(e,xe)}))]}))}))})),ae("plugins",(function(){var e=[];if(navigator.plugins)for(var n=0;n<navigator.plugins.length;n++){var t=navigator.plugins[n];e.push([t.name,t.filename,t.description].join("|"))}return new Promise((function(n){n({plugins:e})}))})),ae("screen",(function(){return new Promise((function(e){e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:Re()})}))})),ae("system",(function(){return new Promise((function(e){var n=ge();e({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:n.name,version:n.version},applePayVersion:_e()})}))}));var Te,Ae=ge().name!=="SamsungBrowser"?1:3,Ce=null;ae("webgl",(function(){return ne(this,void 0,void 0,(function(){var e;return te(this,(function(n){typeof document<"u"&&((Te=document.createElement("canvas")).width=200,Te.height=100,Ce=Te.getContext("webgl"));try{if(!Ce)throw new Error("WebGL not supported");return e=Array.from({length:Ae},(function(){return function(){try{if(!Ce)throw new Error("WebGL not supported");var e=`\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n `,n=`\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n `,t=Ce.createShader(Ce.VERTEX_SHADER),r=Ce.createShader(Ce.FRAGMENT_SHADER);if(!t||!r)throw new Error("Failed to create shaders");if(Ce.shaderSource(t,e),Ce.shaderSource(r,n),Ce.compileShader(t),!Ce.getShaderParameter(t,Ce.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+Ce.getShaderInfoLog(t));if(Ce.compileShader(r),!Ce.getShaderParameter(r,Ce.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+Ce.getShaderInfoLog(r));var o=Ce.createProgram();if(!o)throw new Error("Failed to create shader program");if(Ce.attachShader(o,t),Ce.attachShader(o,r),Ce.linkProgram(o),!Ce.getProgramParameter(o,Ce.LINK_STATUS))throw new Error("Shader program linking failed: "+Ce.getProgramInfoLog(o));Ce.useProgram(o);for(var i=137,a=new Float32Array(4*i),c=2*Math.PI/i,u=0;u<i;u++){var s=u*c;a[4*u]=0,a[4*u+1]=0,a[4*u+2]=Math.cos(s)*(Te.width/2),a[4*u+3]=Math.sin(s)*(Te.height/2)}var f=Ce.createBuffer();Ce.bindBuffer(Ce.ARRAY_BUFFER,f),Ce.bufferData(Ce.ARRAY_BUFFER,a,Ce.STATIC_DRAW);var l=Ce.getAttribLocation(o,"position");Ce.enableVertexAttribArray(l),Ce.vertexAttribPointer(l,2,Ce.FLOAT,!1,0,0),Ce.viewport(0,0,Te.width,Te.height),Ce.clearColor(0,0,0,1),Ce.clear(Ce.COLOR_BUFFER_BIT),Ce.drawArrays(Ce.LINES,0,2*i);var d=new Uint8ClampedArray(Te.width*Te.height*4);return Ce.readPixels(0,0,Te.width,Te.height,Ce.RGBA,Ce.UNSIGNED_BYTE,d),new ImageData(d,Te.width,Te.height)}catch{return new ImageData(1,1)}finally{Ce&&(Ce.bindBuffer(Ce.ARRAY_BUFFER,null),Ce.useProgram(null),Ce.viewport(0,0,Ce.drawingBufferWidth,Ce.drawingBufferHeight),Ce.clearColor(0,0,0,0))}}()})),[2,{commonImageHash:le(ye(e,Te.width,Te.height).data.toString()).toString()}]}catch{return[2,{webgl:"unsupported"}]}return[2]}))}))}));var $e=function(e,n,t,r){for(var o=(t-n)/r,i=0,a=0;a<r;a++)i+=e(n+(a+.5)*o);return i*o};ae("math",(function(){return ne(void 0,void 0,void 0,(function(){return te(this,(function(e){return[2,{acos:Math.acos(.5),asin:$e(Math.asin,-1,1,97),atan:$e(Math.atan,-1,1,97),cos:$e(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:$e(Math.sin,-Math.PI,Math.PI,97),sinh:$e(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:$e(Math.tan,0,2*Math.PI,97),tanh:$e(Math.tanh,-9/7,7/9,97)}]}))}))}));const Ue=500;class qe{constructor(e,n){Z(this,"config");Z(this,"sdkInfo");Z(this,"userId");Z(this,"sessionId");Z(this,"searchRequestTimeout");Z(this,"measureRequestTimeout");Z(this,"measureRequestsBatched",[]);Z(this,"search",((e,n)=>{const t=async()=>{if(this.sendMeasureEvent("search_requested",{search_term:e.query}),(e.query.match(/"/g)||[]).length%2!==0)throw new Error("The search term contains an uneven number of quote characters.");try{const t={query:this.buildQueryObject(e),limit:e.limit??20};e.offset!==void 0&&(t.offset=e.offset),e.order_by&&(t.order_by=e.order_by,t.sort=e.sort==="desc"||e.sort==="asc"?e.sort:"asc");const r={method:"POST",headers:{Authorization:this.config.readKey,"Content-Type":"application/json","X-Sc-User-Id":this.userId},body:JSON.stringify(t)},o=await fetch(this.baseSearchUrl,r);if(!o.ok)throw new Error(`Error: ${o.statusText} (Status: ${o.status})`);const i=await o.json();this.sendMeasureEvent("search_response_received",{search_term:e.query,number_of_documents:i.data.count}),n(i)}catch(e){throw console.error("Error parsing response:",e),e}};clearTimeout(this.searchRequestTimeout),this.config.searchDebounceDelay?this.searchRequestTimeout=setTimeout(t,this.config.searchDebounceDelay):t()}));Z(this,"sendMeasureEvent",((e,n={},t={})=>{const r={event_name:e,properties:{searchcraft_index_names:this.config.index,...n},user:{...this.measureRequestUser,...t}};this.measureRequestsBatched.push(r),clearTimeout(this.measureRequestTimeout),this.measureRequestTimeout=setTimeout((async()=>{const e=JSON.stringify({items:this.measureRequestsBatched}),n=`${this.baseMeasureUrl}/batch`;try{const t=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.config.readKey,"X-Sc-User-Id":this.userId},body:e,keepalive:!0});if(!t.ok)throw new Error(`Failed to send request: ${t.status} ${t.statusText}`);this.measureRequestsBatched=[];return}catch(e){throw console.error("Error sending MeasureRequest:",e),e}}),Ue)}));if(!e.endpointURL||!e.index||!e.readKey)throw new Error("Endpoint URL, Index value(s), and Read Key must be provided");this.config=e,this.sdkInfo=n,this.userId=e.userId||"",this.sessionId="",setTimeout((()=>{this.sessionId=ee(),this.initMeasure()}),300)}async initMeasure(){if(!this.config.userId){const e=await we();this.userId=e}this.sendMeasureEvent("sdk_initialized")}get baseSearchUrl(){return`${this.config.endpointURL}/index/${this.config.index.join(",")}/search`}get baseMeasureUrl(){return`${this.config.endpointURL}/measure`}get measureRequestUser(){return{user_id:this.userId,locale:navigator.language||"en-US",os:navigator.userAgent.includes("Windows")?"Windows":navigator.userAgent.includes("Mac")?"Mac":navigator.userAgent.includes("Linux")?"Linux":"Unknown",platform:navigator.platform||"Unknown",sdk_name:this.sdkInfo.sdkName,sdk_version:this.sdkInfo.sdkVersion,user_agent:navigator.userAgent||"Unknown"}}buildQueryObject(e){const n=[];let t="should";return e.facetPathsForIndexFields&&Object.keys(e.facetPathsForIndexFields).forEach((r=>{var o;const i=(o=e.facetPathsForIndexFields)==null?void 0:o[r];i&&(t="must",n.push({occur:t,exact:{ctx:i.value}}))})),e.rangeValueForIndexFields&&Object.keys(e.rangeValueForIndexFields).forEach((r=>{var o;const i=(o=e.rangeValueForIndexFields)==null?void 0:o[r];i&&(t="must",n.push({occur:t,exact:{ctx:i.value}}))})),e.sort==="desc"?e.order_by="date_published":e.order_by="",n.push({occur:t,[e.mode]:{ctx:e.query}}),n}}var Ve=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Ve||{});class Be{constructor(e){Z(this,"logLevel");Z(this,"logFormatter");this.logLevel=e.logLevel||1,this.logFormatter=e.logFormatter||this.defaultFormatter}defaultFormatter(e,n){return`[${Ve[e]}] ${(new Date).toISOString()}: ${n}`}debug(e){this.logLevel<=0&&console.log(this.logFormatter(0,e))}info(e){this.logLevel<=1&&console.info(this.logFormatter(1,e))}warn(e){this.logLevel<=2&&console.warn(this.logFormatter(2,e))}error(e){this.logLevel<=3&&console.error(this.logFormatter(3,e))}}const De=e.create(((e,n)=>{let t=null;let r=null;const o=(e,n)=>{if(r){switch(e){case Ve.DEBUG:r.debug(n);break;case Ve.INFO:r.info(n);break;case Ve.WARN:r.warn(n);break;case Ve.ERROR:r.error(n);break}}};return{setPopoverVisibility:n=>{e({isPopoverVisible:n})},isPopoverVisible:false,resetFacetPaths:()=>{e({facetPathsForIndexFields:{}})},addFacetPathsForIndexField:n=>e((e=>({facetPathsForIndexFields:Object.assign(Object.assign({},e.facetPathsForIndexFields),{[n.fieldName]:n})}))),removeFacetPathsForIndexField:n=>e((e=>{const t=e.facetPathsForIndexFields;delete t[n];return{facetPathsForIndexFields:Object.assign({},t)}})),addRangeValueForIndexField:n=>e((e=>({rangeValueForIndexFields:Object.assign(Object.assign({},e.rangeValueForIndexFields),{[n.fieldName]:n})}))),removeRangeValueForIndexField:n=>e((e=>{const t=e.rangeValueForIndexFields;delete t[n];return{rangeValueForIndexFields:Object.assign({},t)}})),setSearchMode:n=>e({searchMode:n}),setSortType:n=>e({sortType:n}),searchMode:"fuzzy",sortType:"asc",facetPathsForIndexFields:{},rangeValueForIndexFields:{},query:"",isRequesting:false,searchResults:null,facets:null,getSearchcraftInstance:()=>t,setQuery:n=>{e(Object.assign({query:n,facetPathsForIndexFields:{}},n.trim().length===0&&{searchMode:"fuzzy",sortType:"asc"}))},setSearchResults:n=>e({searchResults:n}),setFacets:n=>e({facets:n}),setIsRequesting:n=>e({isRequesting:n}),search:async()=>{const e=n();o(Ve.INFO,`Starting search with search term: "${e.query}"`);if(!t){throw new Error("Searchcraft instance is not initialized.")}if(!e.query.trim()){o(Ve.INFO,"No search request was made: search term was empty.");e.setSearchResults(null);return}e.setIsRequesting(true);t.search({query:e.query,mode:e.searchMode,sort:e.sortType,facetPathsForIndexFields:e.facetPathsForIndexFields,rangeValueForIndexFields:e.rangeValueForIndexFields},(n=>{const t=n.data.facets||null;e.setSearchResults(n);e.setFacets(t);o(Ve.DEBUG,`Search results: ${JSON.stringify(n)}`);o(Ve.DEBUG,`Updated facets: ${JSON.stringify(t)}`);e.setIsRequesting(false)}))},initialize:(e,n=false)=>{t=e;r=n?new Be({logLevel:Ve.DEBUG}):null;o(Ve.INFO,"Searchcraft store initialized.")}}}));const Le=e.create((e=>({theme:"light",toggleTheme:()=>e((e=>({theme:e.theme==="light"?"dark":"light"})))})));export{Le as a,qe as b,De as u};
11
+ //# sourceMappingURL=p-d6a88eed.js.map