@searchcraft/javascript-sdk 0.4.0 → 0.4.2

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 (183) hide show
  1. package/README.md +3 -4
  2. package/dist/cjs/{index-c8a8e492.js → index-6916cc47.js} +2 -1
  3. package/dist/cjs/index-6916cc47.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +2 -2
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/{package-ccc7e307.js → package-2005293c.js} +2 -2
  7. package/dist/cjs/package-2005293c.js.map +1 -0
  8. package/dist/cjs/searchcraft-auto-search-form.cjs.entry.js +27 -44
  9. package/dist/cjs/searchcraft-auto-search-form.cjs.entry.js.map +1 -1
  10. package/dist/cjs/searchcraft-base-search-form.cjs.entry.js +3 -3
  11. package/dist/cjs/searchcraft-base-search-result.cjs.entry.js +2 -2
  12. package/dist/cjs/searchcraft-base-search-results.cjs.entry.js +10 -30
  13. package/dist/cjs/searchcraft-base-search-results.cjs.entry.js.map +1 -1
  14. package/dist/cjs/searchcraft-button-icon.cjs.entry.js +1 -1
  15. package/dist/cjs/searchcraft-button.cjs.entry.js +1 -1
  16. package/dist/cjs/searchcraft-check-icon_2.cjs.entry.js +1 -1
  17. package/dist/cjs/searchcraft-clear-icon-set.cjs.entry.js +1 -1
  18. package/dist/cjs/searchcraft-error-message_3.cjs.entry.js +2 -2
  19. package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js +91 -38
  20. package/dist/cjs/searchcraft-facet-list_3.cjs.entry.js.map +1 -1
  21. package/dist/cjs/searchcraft-filter-panel.cjs.entry.js +7 -26
  22. package/dist/cjs/searchcraft-filter-panel.cjs.entry.js.map +1 -1
  23. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +2 -2
  24. package/dist/cjs/searchcraft-results-info.cjs.entry.js +3 -3
  25. package/dist/cjs/searchcraft-search-icon-set.cjs.entry.js +1 -1
  26. package/dist/cjs/searchcraft-spinner-dark.cjs.entry.js +1 -1
  27. package/dist/cjs/searchcraft-spinner-light.cjs.entry.js +1 -1
  28. package/dist/cjs/{store-72205332.js → store-afa727af.js} +11 -5
  29. package/dist/cjs/{store-72205332.js.map → store-afa727af.js.map} +1 -1
  30. package/dist/cjs/{utils-4ee2b88d.js → utils-a17279a2.js} +81 -24
  31. package/dist/cjs/utils-a17279a2.js.map +1 -0
  32. package/dist/collection/components/searchcraft-auto-search-form/searchcraft-auto-search-form.js +35 -50
  33. package/dist/collection/components/searchcraft-auto-search-form/searchcraft-auto-search-form.js.map +1 -1
  34. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +19 -39
  35. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
  36. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js +51 -20
  37. package/dist/collection/components/searchcraft-facet-list/searchcraft-facet-list.js.map +1 -1
  38. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js +16 -34
  39. package/dist/collection/components/searchcraft-filter-panel/searchcraft-filter-panel.js.map +1 -1
  40. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js +23 -15
  41. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js.map +1 -1
  42. package/dist/collection/components/searchcraft-slider/searchcraft-slider.module.css +11 -11
  43. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js +21 -3
  44. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js.map +1 -1
  45. package/dist/collection/provider/store.js +10 -4
  46. package/dist/collection/provider/store.js.map +1 -1
  47. package/dist/collection/types/searchcraft-base-search-results.types.js.map +1 -1
  48. package/dist/collection/utils/utils.js +80 -23
  49. package/dist/collection/utils/utils.js.map +1 -1
  50. package/dist/components/index.js +2 -2
  51. package/dist/components/{p-8062f0ea.js → p-0468a9eb.js} +2 -2
  52. package/dist/components/{p-8062f0ea.js.map → p-0468a9eb.js.map} +1 -1
  53. package/dist/components/{p-be63dcac.js → p-3c181808.js} +11 -5
  54. package/dist/components/{p-be63dcac.js.map → p-3c181808.js.map} +1 -1
  55. package/dist/components/{p-e3c8b1ef.js → p-3e8d3586.js} +26 -18
  56. package/dist/components/p-3e8d3586.js.map +1 -0
  57. package/dist/components/{p-b1a59f07.js → p-415f7b11.js} +2 -2
  58. package/dist/components/{p-b1a59f07.js.map → p-415f7b11.js.map} +1 -1
  59. package/dist/components/{p-68897c11.js → p-7bb734f3.js} +54 -23
  60. package/dist/components/p-7bb734f3.js.map +1 -0
  61. package/dist/components/{p-ebf021b5.js → p-9b9df0ca.js} +22 -4
  62. package/dist/components/p-9b9df0ca.js.map +1 -0
  63. package/dist/components/{p-69eed21e.js → p-c994d722.js} +2 -2
  64. package/dist/components/p-c994d722.js.map +1 -0
  65. package/dist/components/{p-0deddac7.js → p-f308d05d.js} +81 -24
  66. package/dist/components/p-f308d05d.js.map +1 -0
  67. package/dist/components/searchcraft-auto-search-form.js +29 -47
  68. package/dist/components/searchcraft-auto-search-form.js.map +1 -1
  69. package/dist/components/searchcraft-base-search-form.js +3 -3
  70. package/dist/components/searchcraft-base-search-result.js +1 -1
  71. package/dist/components/searchcraft-base-search-results.js +12 -35
  72. package/dist/components/searchcraft-base-search-results.js.map +1 -1
  73. package/dist/components/searchcraft-facet-list.js +1 -1
  74. package/dist/components/searchcraft-filter-panel.js +11 -33
  75. package/dist/components/searchcraft-filter-panel.js.map +1 -1
  76. package/dist/components/searchcraft-input.js +1 -1
  77. package/dist/components/searchcraft-results-info.js +2 -2
  78. package/dist/components/searchcraft-slider.js +1 -1
  79. package/dist/components/searchcraft-toggle-button.js +1 -1
  80. package/dist/esm/{index-88dc5f88.js → index-921fe029.js} +2 -2
  81. package/dist/esm/index-921fe029.js.map +1 -0
  82. package/dist/esm/index.js +2 -2
  83. package/dist/esm/loader.js +3 -3
  84. package/dist/esm/{package-ee16f835.js → package-07f53086.js} +2 -2
  85. package/dist/esm/package-07f53086.js.map +1 -0
  86. package/dist/esm/searchcraft-auto-search-form.entry.js +27 -44
  87. package/dist/esm/searchcraft-auto-search-form.entry.js.map +1 -1
  88. package/dist/esm/searchcraft-base-search-form.entry.js +3 -3
  89. package/dist/esm/searchcraft-base-search-result.entry.js +2 -2
  90. package/dist/esm/searchcraft-base-search-results.entry.js +10 -30
  91. package/dist/esm/searchcraft-base-search-results.entry.js.map +1 -1
  92. package/dist/esm/searchcraft-button-icon.entry.js +1 -1
  93. package/dist/esm/searchcraft-button.entry.js +1 -1
  94. package/dist/esm/searchcraft-check-icon_2.entry.js +1 -1
  95. package/dist/esm/searchcraft-clear-icon-set.entry.js +1 -1
  96. package/dist/esm/searchcraft-error-message_3.entry.js +2 -2
  97. package/dist/esm/searchcraft-facet-list_3.entry.js +91 -38
  98. package/dist/esm/searchcraft-facet-list_3.entry.js.map +1 -1
  99. package/dist/esm/searchcraft-filter-panel.entry.js +7 -26
  100. package/dist/esm/searchcraft-filter-panel.entry.js.map +1 -1
  101. package/dist/esm/searchcraft-javascript-sdk.js +3 -3
  102. package/dist/esm/searchcraft-results-info.entry.js +3 -3
  103. package/dist/esm/searchcraft-search-icon-set.entry.js +1 -1
  104. package/dist/esm/searchcraft-spinner-dark.entry.js +1 -1
  105. package/dist/esm/searchcraft-spinner-light.entry.js +1 -1
  106. package/dist/esm/{store-52436995.js → store-8d82e948.js} +11 -5
  107. package/dist/esm/{store-52436995.js.map → store-8d82e948.js.map} +1 -1
  108. package/dist/esm/{utils-89a02921.js → utils-c2ce411f.js} +81 -24
  109. package/dist/esm/utils-c2ce411f.js.map +1 -0
  110. package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
  111. package/dist/searchcraft-javascript-sdk/{p-9647ae41.entry.js → p-1720b612.entry.js} +2 -2
  112. package/dist/searchcraft-javascript-sdk/{p-f4612b94.entry.js → p-3292e706.entry.js} +2 -2
  113. package/dist/searchcraft-javascript-sdk/p-491ae071.entry.js +2 -0
  114. package/dist/searchcraft-javascript-sdk/p-491ae071.entry.js.map +1 -0
  115. package/dist/searchcraft-javascript-sdk/{p-bf80bbee.entry.js → p-4a2d1f44.entry.js} +2 -2
  116. package/dist/searchcraft-javascript-sdk/p-676e2eef.entry.js +2 -0
  117. package/dist/searchcraft-javascript-sdk/p-676e2eef.entry.js.map +1 -0
  118. package/dist/searchcraft-javascript-sdk/{p-4c32c87d.js → p-80e3f29f.js} +2 -2
  119. package/dist/searchcraft-javascript-sdk/{p-4c32c87d.js.map → p-80e3f29f.js.map} +1 -1
  120. package/dist/searchcraft-javascript-sdk/{p-93e9de71.entry.js → p-83a074b6.entry.js} +2 -2
  121. package/dist/searchcraft-javascript-sdk/p-8a9b0762.entry.js +2 -0
  122. package/dist/searchcraft-javascript-sdk/{p-acc645c7.entry.js.map → p-8a9b0762.entry.js.map} +1 -1
  123. package/dist/searchcraft-javascript-sdk/{p-bb03e946.js → p-a2801518.js} +2 -2
  124. package/dist/searchcraft-javascript-sdk/p-a2801518.js.map +1 -0
  125. package/dist/searchcraft-javascript-sdk/{p-343adbe3.entry.js → p-a56af0b0.entry.js} +2 -2
  126. package/dist/searchcraft-javascript-sdk/p-a56af0b0.entry.js.map +1 -0
  127. package/dist/searchcraft-javascript-sdk/{p-4278ff89.entry.js → p-bcc68b15.entry.js} +2 -2
  128. package/dist/searchcraft-javascript-sdk/{p-7c59b3cd.entry.js → p-c70b31ae.entry.js} +2 -2
  129. package/dist/searchcraft-javascript-sdk/{p-69eed21e.js → p-c994d722.js} +2 -2
  130. package/dist/searchcraft-javascript-sdk/p-d08d0b15.entry.js +2 -0
  131. package/dist/searchcraft-javascript-sdk/p-d08d0b15.entry.js.map +1 -0
  132. package/dist/searchcraft-javascript-sdk/{p-3a2d9be9.entry.js → p-d4a7d8bd.entry.js} +2 -2
  133. package/dist/searchcraft-javascript-sdk/{p-69f64bdd.entry.js → p-e8a96dca.entry.js} +2 -2
  134. package/dist/searchcraft-javascript-sdk/{p-08bd95f1.entry.js → p-efb41d6d.entry.js} +2 -2
  135. package/dist/searchcraft-javascript-sdk/p-f308d05d.js +2 -0
  136. package/dist/searchcraft-javascript-sdk/p-f308d05d.js.map +1 -0
  137. package/dist/searchcraft-javascript-sdk/{p-a613a6ba.entry.js → p-fb239507.entry.js} +2 -2
  138. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
  139. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
  140. package/dist/types/components/searchcraft-auto-search-form/searchcraft-auto-search-form.d.ts +5 -5
  141. package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +1 -6
  142. package/dist/types/components/searchcraft-facet-list/searchcraft-facet-list.d.ts +4 -1
  143. package/dist/types/components/searchcraft-filter-panel/searchcraft-filter-panel.d.ts +3 -6
  144. package/dist/types/components/searchcraft-slider/searchcraft-slider.d.ts +4 -6
  145. package/dist/types/components/searchcraft-toggle-button/searchcraft-toggle-button.d.ts +4 -0
  146. package/dist/types/components.d.ts +10 -6
  147. package/dist/types/provider/store.d.ts +0 -5
  148. package/dist/types/types/searchcraft-base-search-results.types.d.ts +1 -1
  149. package/dist/types/utils/utils.d.ts +1 -1
  150. package/package.json +1 -1
  151. package/dist/cjs/index-c8a8e492.js.map +0 -1
  152. package/dist/cjs/package-ccc7e307.js.map +0 -1
  153. package/dist/cjs/utils-4ee2b88d.js.map +0 -1
  154. package/dist/components/p-0deddac7.js.map +0 -1
  155. package/dist/components/p-68897c11.js.map +0 -1
  156. package/dist/components/p-69eed21e.js.map +0 -1
  157. package/dist/components/p-e3c8b1ef.js.map +0 -1
  158. package/dist/components/p-ebf021b5.js.map +0 -1
  159. package/dist/esm/index-88dc5f88.js.map +0 -1
  160. package/dist/esm/package-ee16f835.js.map +0 -1
  161. package/dist/esm/utils-89a02921.js.map +0 -1
  162. package/dist/searchcraft-javascript-sdk/p-0deddac7.js +0 -2
  163. package/dist/searchcraft-javascript-sdk/p-0deddac7.js.map +0 -1
  164. package/dist/searchcraft-javascript-sdk/p-15f9891d.entry.js +0 -2
  165. package/dist/searchcraft-javascript-sdk/p-15f9891d.entry.js.map +0 -1
  166. package/dist/searchcraft-javascript-sdk/p-2419a8c5.entry.js +0 -2
  167. package/dist/searchcraft-javascript-sdk/p-2419a8c5.entry.js.map +0 -1
  168. package/dist/searchcraft-javascript-sdk/p-343adbe3.entry.js.map +0 -1
  169. package/dist/searchcraft-javascript-sdk/p-56413bef.entry.js +0 -2
  170. package/dist/searchcraft-javascript-sdk/p-56413bef.entry.js.map +0 -1
  171. package/dist/searchcraft-javascript-sdk/p-acc645c7.entry.js +0 -2
  172. package/dist/searchcraft-javascript-sdk/p-bb03e946.js.map +0 -1
  173. /package/dist/searchcraft-javascript-sdk/{p-9647ae41.entry.js.map → p-1720b612.entry.js.map} +0 -0
  174. /package/dist/searchcraft-javascript-sdk/{p-f4612b94.entry.js.map → p-3292e706.entry.js.map} +0 -0
  175. /package/dist/searchcraft-javascript-sdk/{p-bf80bbee.entry.js.map → p-4a2d1f44.entry.js.map} +0 -0
  176. /package/dist/searchcraft-javascript-sdk/{p-93e9de71.entry.js.map → p-83a074b6.entry.js.map} +0 -0
  177. /package/dist/searchcraft-javascript-sdk/{p-4278ff89.entry.js.map → p-bcc68b15.entry.js.map} +0 -0
  178. /package/dist/searchcraft-javascript-sdk/{p-7c59b3cd.entry.js.map → p-c70b31ae.entry.js.map} +0 -0
  179. /package/dist/searchcraft-javascript-sdk/{p-69eed21e.js.map → p-c994d722.js.map} +0 -0
  180. /package/dist/searchcraft-javascript-sdk/{p-3a2d9be9.entry.js.map → p-d4a7d8bd.entry.js.map} +0 -0
  181. /package/dist/searchcraft-javascript-sdk/{p-69f64bdd.entry.js.map → p-e8a96dca.entry.js.map} +0 -0
  182. /package/dist/searchcraft-javascript-sdk/{p-08bd95f1.entry.js.map → p-efb41d6d.entry.js.map} +0 -0
  183. /package/dist/searchcraft-javascript-sdk/{p-a613a6ba.entry.js.map → p-fb239507.entry.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h } from './p-5639be85.js';
2
- import { a as getMillis } from './p-0deddac7.js';
2
+ import { a as getMillis } from './p-f308d05d.js';
3
3
  import { c as classNames } from './p-5cdc6210.js';
4
4
 
5
- const searchcraftSliderModuleCss = ":root{--sc-spinner-size:20px;--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}: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}.sliderContainer{align-items:center;display:flex;flex-direction:column;gap:10px;width:100%}.rangeContainer{align-items:center;background-color:var(--sc-surface-disabled);border-radius:999px;display:flex;position:relative;height:4px;width:100%}.rangeContainer::-webkit-slider-runnable-track{pointer-events:none}.rangeContainer .activeRange{background-color:var(--sc-surface-brand-primary);border-radius:2px;height:4px;position:absolute;top:50%;transform:translateY(-50%);z-index:0}.rangeContainer .activeRange::-webkit-slider-runnable-track{pointer-events:none}.rangeContainer .activeRange::-moz-range-track{pointer-events:none}.rangeContainer .rangeSlider{appearance:none;background:transparent;border-radius:2px;height:4px;margin:0;outline:none;pointer-events:none;position:absolute;width:100%;-webkit-appearance:none}.rangeContainer .rangeSlider::-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}.rangeContainer .rangeSlider::-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}.yearLabels{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%}.yearLabel{min-width:30px;text-align:center}";
5
+ const searchcraftSliderModuleCss = ":root{--sc-spinner-size:20px;--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}: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}.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}";
6
6
  const SearchcraftSliderStyle0 = searchcraftSliderModuleCss;
7
7
 
8
8
  const SearchcraftSlider = /*@__PURE__*/ proxyCustomElement(class SearchcraftSlider extends H {
@@ -10,24 +10,36 @@ const SearchcraftSlider = /*@__PURE__*/ proxyCustomElement(class SearchcraftSlid
10
10
  super();
11
11
  this.__registerHost();
12
12
  this.rangeChanged = createEvent(this, "rangeChanged", 7);
13
- this.updateValues = async () => {
13
+ this.emitUpdate = async () => {
14
14
  this.rangeChanged.emit({
15
15
  startValue: this.startValue,
16
16
  endValue: this.endValue,
17
17
  });
18
18
  };
19
- this.handlestartValueChange = (event) => {
20
- const value = Number.parseInt(event.target.value, 10);
19
+ this.handleStartValueChange = (event) => {
20
+ const inputElement = event.target;
21
+ const value = Number.parseInt(inputElement.value, 10);
22
+ this.lastFocusedHandle = 'min';
21
23
  if (value <= this.endValue) {
22
24
  this.startValue = value;
23
- this.updateValues();
25
+ this.emitUpdate();
26
+ }
27
+ else {
28
+ this.startValue = this.endValue;
29
+ inputElement.value = `${this.endValue}`;
24
30
  }
25
31
  };
26
- this.handleendValueChange = (event) => {
27
- const value = Number.parseInt(event.target.value, 10);
32
+ this.handleEndValueChange = (event) => {
33
+ const inputElement = event.target;
34
+ const value = Number.parseInt(inputElement.value, 10);
35
+ this.lastFocusedHandle = 'max';
28
36
  if (value >= this.startValue) {
29
37
  this.endValue = value;
30
- this.updateValues();
38
+ this.emitUpdate();
39
+ }
40
+ else {
41
+ this.endValue = this.startValue;
42
+ inputElement.value = `${this.startValue}`;
31
43
  }
32
44
  };
33
45
  this.max = 100;
@@ -36,9 +48,7 @@ const SearchcraftSlider = /*@__PURE__*/ proxyCustomElement(class SearchcraftSlid
36
48
  this.dataType = 'number';
37
49
  this.endValue = this.max;
38
50
  this.startValue = this.min;
39
- this.hasSearched = false;
40
- this.query = '';
41
- this.resultsCount = 0;
51
+ this.lastFocusedHandle = 'max';
42
52
  }
43
53
  componentDidLoad() {
44
54
  this.startValue = this.min;
@@ -55,10 +65,10 @@ const SearchcraftSlider = /*@__PURE__*/ proxyCustomElement(class SearchcraftSlid
55
65
  const endLabel = this.dataType === 'number'
56
66
  ? this.endValue
57
67
  : new Date(this.endValue).getFullYear();
58
- return (h("div", { key: '5b85ed684719fc53cb2c6d4d6b9b25dda95238c4', class: classNames('sliderContainer', 'searchcraft-slider-container') }, h("div", { key: '4222101284dc36c5fc70f033fbdd5080e4c25f41', class: classNames('rangeContainer', 'searchcraft-slider-range-container') }, h("div", { key: '8610d8fbdd7c920e93969d588d75e4b1266d24a9', class: classNames('activeRange', 'searchcraft-slider-active-range'), style: {
68
+ return (h("div", { key: 'f05bc14a425c9e302cd0aad174af7e80a553258e', class: 'searchcraft-slider-container' }, h("div", { key: 'e52983353639e1c5b695772d55148daa25b48845', class: 'searchcraft-slider-range-container' }, h("div", { key: '9f7d5601f056a75bfd8f5ef9053a21a4931c8b1c', class: 'searchcraft-slider-active-range', style: {
59
69
  left: `${startPercent}%`,
60
70
  width: `${endPercent - startPercent}%`,
61
- } }), h("input", { key: 'aafc7ecf347131e8f86bce144d046ca33d3ce7a9', class: classNames('rangeSlider', 'searchcraft-slider-range-slider-start-thumb'), max: this.max, min: this.min, onInput: this.handlestartValueChange, step: this.granularity, type: 'range', value: this.startValue }), h("input", { key: '8247c65541d1fe70ac078d4f3ddf9111919750e7', class: classNames('rangeSlider', 'searchcraft-slider-range-slider-end-thumb'), max: this.max, min: this.min, onInput: this.handleendValueChange, step: this.granularity, type: 'range', value: this.endValue })), h("div", { key: '43f708034b96d7683dea2c60c95b1689bce47ad5', class: classNames('yearLabels', 'searchcraft-slider-year-label-container') }, h("span", { key: '39c5a9f41c9ddc87f81cb7fc488fdc61afd82ae6', class: classNames('yearLabel', 'searchcraft-slider-start-year-label') }, startLabel), h("span", { key: '536fb604734b109318f3b4da38743c00581f369a', class: classNames('yearLabel', 'searchcraft-slider-end-year-label') }, endLabel))));
71
+ } }), h("input", { key: 'c7816c75212e3573ec35171557b79c9de1da60f9', class: classNames('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 }), h("input", { key: '0fe6e721448b99899f6875d05789399f862cb82e', class: classNames('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 })), h("div", { key: 'fdf17ab7c1322824bbd94de96b223d3e2ceddfc8', class: 'searchcraft-slider-label-container' }, h("span", { key: 'e7ddfd13f5d258a995bb824e9b26a492e5ca4f32', class: 'searchcraft-slider-label' }, startLabel), h("span", { key: '67d6f9ea4e8fa7f651c9e9cafb624996df1676ea', class: 'searchcraft-slider-label' }, endLabel))));
62
72
  }
63
73
  static get style() { return SearchcraftSliderStyle0; }
64
74
  }, [0, "searchcraft-slider", {
@@ -68,9 +78,7 @@ const SearchcraftSlider = /*@__PURE__*/ proxyCustomElement(class SearchcraftSlid
68
78
  "dataType": [1, "data-type"],
69
79
  "endValue": [32],
70
80
  "startValue": [32],
71
- "hasSearched": [32],
72
- "query": [32],
73
- "resultsCount": [32]
81
+ "lastFocusedHandle": [32]
74
82
  }]);
75
83
  function defineCustomElement() {
76
84
  if (typeof customElements === "undefined") {
@@ -88,4 +96,4 @@ function defineCustomElement() {
88
96
 
89
97
  export { SearchcraftSlider as S, defineCustomElement as d };
90
98
 
91
- //# sourceMappingURL=p-e3c8b1ef.js.map
99
+ //# sourceMappingURL=p-3e8d3586.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-3e8d3586.js","mappings":"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","names":[],"sources":["src/components/searchcraft-slider/searchcraft-slider.module.scss?tag=searchcraft-slider","src/components/searchcraft-slider/searchcraft-slider.tsx"],"sourcesContent":[".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/utils';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'searchcraft-slider',\n styleUrl: 'searchcraft-slider.module.scss',\n shadow: false,\n})\nexport class SearchcraftSlider {\n @Prop() max = 100;\n @Prop() min = 0;\n @Prop() granularity: number = getMillis('month');\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 @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"],"version":3}
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, h, F as Fragment } from './p-5639be85.js';
2
- import { u as useSearchcraftStore } from './p-be63dcac.js';
2
+ import { u as useSearchcraftStore } from './p-3c181808.js';
3
3
 
4
4
  const searchcraftBaseSearchResultModuleCss = ":root{--sc-spinner-size:20px;--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}: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}.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: 900px){.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: 900px){.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)}";
5
5
  const SearchcraftBaseSearchResultStyle0 = searchcraftBaseSearchResultModuleCss;
@@ -98,4 +98,4 @@ function defineCustomElement() {
98
98
 
99
99
  export { SearchcraftBaseSearchResult as S, defineCustomElement as d };
100
100
 
101
- //# sourceMappingURL=p-b1a59f07.js.map
101
+ //# sourceMappingURL=p-415f7b11.js.map
@@ -1 +1 @@
1
- {"file":"p-b1a59f07.js","mappings":";;;AAAA,MAAM,oCAAoC,GAAG,uvJAAuvJ,CAAC;AACryJ,0CAAe,oCAAoC;;MCOtC,2BAA2B;;;;QAkB9B,qBAAgB,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAElD,uBAAkB,GAAG;;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;YAEnE,IAAI,WAAW,EAAE;gBACf,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAChD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAChD,MAAM,mBAAmB,GACvB,CAAA,MAAA,MAAA,MAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,0CAAE,IAAI,0CAAE,IAAI,0CAAE,MAAM,KAAI,CAAC,CAAC;gBAE/D,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;oBAC/C,iBAAiB;oBACjB,mBAAmB;oBACnB,WAAW;iBACZ,CAAC,CAAC;aACJ;SACF,CAAC;QAEM,gBAAW,GAAG;YACpB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI;oBACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACtC;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;oBACrD,OAAO,EAAE,CAAC;iBACX;aACF;YACD,OAAO,EAAE,CAAC;SACX,CAAC;;;;;;;4BAxC8D,QAAQ;;;+BAGL,QAAQ;;;;;;gCAMhD,CAAC;;IAiC5B,MAAM;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,KAClC,WACE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,KAAK,EAAC,iCAAiC,EACvC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,GACzB,CACH,CAAC;QAEF,MAAM,gBAAgB,IACpB,EAAC,QAAQ,QACN,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,cAAc,EAClE,WAAK,KAAK,EAAC,kDAAkD,IAC1D,IAAI,CAAC,YAAY,KAChB,UACE,KAAK,EAAC,sCAAsC,EAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,IAExB,IAAI,CAAC,YAAY,CACf,CACN,EACA,IAAI,CAAC,eAAe,KACnB,UACE,KAAK,EAAC,yCAAyC,EAC/C,KAAK,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,IAE3B,IAAI,CAAC,eAAe,CAClB,CACN,EACA,IAAI,CAAC,WAAW,KACf,SACE,KAAK,EAAC,6CAA6C,EACnD,KAAK,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE,IAEjC,IAAI,CAAC,WAAW,CACf,CACL,EAEA,IAAI,CAAC,aAAa,KACjB,SACE,KAAK,EAAC,+CAA+C,EACrD,KAAK,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE,IAEnC,IAAI,CAAC,aAAa,CACjB,CACL,EACA,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,KACzD,SACE,KAAK,EAAC,kCAAkC,EACxC,IAAI,EAAE,IAAI,CAAC,UAAU,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAC1B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,GAAG,EAAE,IAAI,CAAC,SAAS,IAElB,IAAI,CAAC,WAAW,CACf,CACL,CACG,EACL,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,IAAI,cAAc,CAC1D,CACZ,CAAC;;QAGF,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,QACE,SACE,KAAK,EAAC,qCAAqC,EAC3C,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAChC,IAAI,EAAE,IAAI,CAAC,aAAa,EACxB,GAAG,EAAE,IAAI,CAAC,YAAY,EACtB,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,EAC7B,QAAQ,EAAC,GAAG,EACZ,MAAM,EAAE,IAAI,CAAC,eAAe,IAE3B,gBAAgB,CACf,EACJ;SACH;;QAGD,QACE,WACE,KAAK,EAAC,qCAAqC,EAC3C,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,IAE5B,gBAAgB,CACb,EACN;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"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: 900px) {\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: 900px) {\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@Component({\n tag: 'searchcraft-base-search-result',\n styleUrl: 'searchcraft-base-search-result.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResult {\n @Prop() titleContent: string | undefined;\n @Prop() subtitleContent: string | undefined;\n @Prop() bodyContent: string | undefined;\n @Prop() footerContent: string | undefined;\n @Prop() buttonLabel: string | undefined;\n @Prop() buttonHref: string | undefined;\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n @Prop() containerHref: string | undefined;\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n @Prop() imageSrc: string | undefined;\n @Prop() imageAlt: string | undefined;\n @Prop() imagePlacement: 'left' | 'right';\n @Prop() customStyles: string | undefined;\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"],"version":3}
1
+ {"file":"p-415f7b11.js","mappings":"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","names":[],"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: 900px) {\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: 900px) {\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@Component({\n tag: 'searchcraft-base-search-result',\n styleUrl: 'searchcraft-base-search-result.module.scss',\n shadow: false,\n})\nexport class SearchcraftBaseSearchResult {\n @Prop() titleContent: string | undefined;\n @Prop() subtitleContent: string | undefined;\n @Prop() bodyContent: string | undefined;\n @Prop() footerContent: string | undefined;\n @Prop() buttonLabel: string | undefined;\n @Prop() buttonHref: string | undefined;\n @Prop() buttonTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() buttonRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n @Prop() containerHref: string | undefined;\n @Prop() containerTarget: '_blank' | '_self' | '_top' | '_parent' = '_blank';\n @Prop() containerRel: 'noreferrer' | 'noopener' | 'nofollow' | undefined;\n @Prop() imageSrc: string | undefined;\n @Prop() imageAlt: string | undefined;\n @Prop() imagePlacement: 'left' | 'right';\n @Prop() customStyles: string | undefined;\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"],"version":3}
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, F as Fragment } from './p-5639be85.js';
2
2
  import { c as classNames } from './p-5cdc6210.js';
3
- import { u as useSearchcraftStore } from './p-be63dcac.js';
4
- import { m as mergeFacetRoots, r as removeSubstringMatches } from './p-0deddac7.js';
3
+ import { u as useSearchcraftStore } from './p-3c181808.js';
4
+ import { m as mergeFacetRoots, r as removeSubstringMatches } from './p-f308d05d.js';
5
5
  import { d as defineCustomElement$2 } from './p-04d13314.js';
6
6
  import { d as defineCustomElement$1 } from './p-de50441f.js';
7
7
 
@@ -26,37 +26,45 @@ const SearchcraftFiltersList = /*@__PURE__*/ proxyCustomElement(class Searchcraf
26
26
  return `${label.replace(/-/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase())} (${count})`;
27
27
  };
28
28
  this.fieldName = undefined;
29
+ this.baseFacetRoot = undefined;
29
30
  this.facetRoot = undefined;
30
31
  this.selectedPaths = {};
31
32
  this.lastQuery = undefined;
33
+ this.lastTimeTaken = undefined;
34
+ this.hasNewSearchTerm = false;
32
35
  this.unsubscribe = undefined;
33
36
  }
34
- initFacetRootFromState(state) {
35
- var _a;
37
+ handleStateUpdate(state) {
38
+ var _a, _b;
36
39
  const facetPrime = (_a = state.searchResults) === null || _a === void 0 ? void 0 : _a.data.facets;
37
- if (facetPrime) {
38
- const facetRoot = facetPrime.find((facet) => this.fieldName === Object.keys(facet)[0]);
39
- if (this.facetRoot) {
40
- this.facetRoot = mergeFacetRoots(this.fieldName, this.facetRoot, facetRoot);
41
- }
42
- else {
43
- this.facetRoot = facetRoot;
40
+ const timeTaken = (_b = state.searchResults) === null || _b === void 0 ? void 0 : _b.data.time_taken;
41
+ /** Things to do when the state's search term has changed, but before the response received */
42
+ if (state.query !== this.lastQuery) {
43
+ this.selectedPaths = {};
44
+ this.hasNewSearchTerm = true;
45
+ }
46
+ /** Things to do when a new response with a new facet prime has been received */
47
+ if (timeTaken !== this.lastTimeTaken && facetPrime) {
48
+ this.facetRoot = undefined;
49
+ const incomingFacetRoot = facetPrime.find((facet) => this.fieldName === Object.keys(facet)[0]);
50
+ /** Data is from a new search term: completely override our facets */
51
+ if (this.hasNewSearchTerm) {
52
+ this.baseFacetRoot = incomingFacetRoot;
53
+ this.facetRoot = incomingFacetRoot;
54
+ this.hasNewSearchTerm = false;
44
55
  }
45
- // Clear the selected paths if the query changed
46
- if (state.query !== this.lastQuery) {
47
- this.selectedPaths = {};
48
- // Remove the facet root if the query is empty
49
- if (state.query.trim().length === 0) {
50
- this.facetRoot = undefined;
51
- }
56
+ else if (this.baseFacetRoot) {
57
+ /** Data is from an existing search term, merge the facets together */
58
+ this.facetRoot = mergeFacetRoots(this.fieldName, this.baseFacetRoot, incomingFacetRoot);
52
59
  }
53
60
  }
54
61
  this.lastQuery = state.query;
62
+ this.lastTimeTaken = timeTaken;
55
63
  }
56
64
  connectedCallback() {
57
- this.initFacetRootFromState(this.searchStore);
65
+ this.handleStateUpdate(this.searchStore);
58
66
  this.unsubscribe = useSearchcraftStore.subscribe((state) => {
59
- this.initFacetRootFromState(state);
67
+ this.handleStateUpdate(state);
60
68
  });
61
69
  }
62
70
  disconnectedCallback() {
@@ -64,7 +72,27 @@ const SearchcraftFiltersList = /*@__PURE__*/ proxyCustomElement(class Searchcraf
64
72
  (_a = this.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
65
73
  }
66
74
  handleCheckboxChange(path) {
67
- this.selectedPaths = Object.assign(Object.assign({}, this.selectedPaths), { [path]: !this.selectedPaths[path] });
75
+ const isCheckboxChecked = !this.selectedPaths[path];
76
+ if (isCheckboxChecked) {
77
+ /**
78
+ * Checkbox Checked: Add to the selectedPaths record
79
+ * Uses spread operator here so UI updates.
80
+ */
81
+ this.selectedPaths = Object.assign(Object.assign({}, this.selectedPaths), { [path]: true });
82
+ }
83
+ else {
84
+ /**
85
+ * Checkbox Uncheck: Remove any paths and sub-paths
86
+ */
87
+ const updatedPaths = Object.keys(this.selectedPaths).filter((testPath) => !testPath.includes(path));
88
+ this.selectedPaths = updatedPaths.reduce((acc, str) => {
89
+ acc[str] = true;
90
+ return acc;
91
+ }, {});
92
+ }
93
+ /**
94
+ * Emit the paths array, with parent paths removed.
95
+ */
68
96
  const paths = Object.keys(this.selectedPaths).filter((path) => this.selectedPaths[path]);
69
97
  const pathsWithParentPathsRemoved = removeSubstringMatches(paths);
70
98
  this.facetSelectionUpdated.emit({ paths: pathsWithParentPathsRemoved });
@@ -72,7 +100,7 @@ const SearchcraftFiltersList = /*@__PURE__*/ proxyCustomElement(class Searchcraf
72
100
  render() {
73
101
  var _a;
74
102
  const firstFacet = (_a = this.facetRoot) === null || _a === void 0 ? void 0 : _a[this.fieldName];
75
- return (h("div", { key: '3f7daaa4d9efdd5cfef6c254bd56aad457eceb47', class: classNames('filtersListContainer', 'searchcraft-filters-list-container') }, !firstFacet && (h("p", { key: '3f9fc14961209475b88cd4726014035dfcf62a20', class: 'searchcraft-facet-message' }, "Enter a search to view facets.")), firstFacet === null || firstFacet === void 0 ? void 0 :
103
+ return (h("div", { key: '3dbfa6515c9628e8eea3cddcd108403a9d51f7c1', class: classNames('filtersListContainer', 'searchcraft-filters-list-container') }, !firstFacet && (h("p", { key: 'c7c519a6a4b6d27343a0ba953d428ec892dbdc93', class: 'searchcraft-facet-message' }, "Enter a search to view facets.")), firstFacet === null || firstFacet === void 0 ? void 0 :
76
104
  firstFacet.map((facetChild) => {
77
105
  var _a;
78
106
  const isChildSelected = facetChild.children
@@ -90,9 +118,12 @@ const SearchcraftFiltersList = /*@__PURE__*/ proxyCustomElement(class Searchcraf
90
118
  static get style() { return SearchcraftFacetListStyle0; }
91
119
  }, [0, "searchcraft-facet-list", {
92
120
  "fieldName": [1, "field-name"],
121
+ "baseFacetRoot": [32],
93
122
  "facetRoot": [32],
94
123
  "selectedPaths": [32],
95
124
  "lastQuery": [32],
125
+ "lastTimeTaken": [32],
126
+ "hasNewSearchTerm": [32],
96
127
  "unsubscribe": [32]
97
128
  }]);
98
129
  function defineCustomElement() {
@@ -121,4 +152,4 @@ function defineCustomElement() {
121
152
 
122
153
  export { SearchcraftFiltersList as S, defineCustomElement as d };
123
154
 
124
- //# sourceMappingURL=p-68897c11.js.map
155
+ //# sourceMappingURL=p-7bb734f3.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-7bb734f3.js","mappings":"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","names":[],"sources":["src/components/searchcraft-facet-list/searchcraft-facet-list.module.scss?tag=searchcraft-facet-list","src/components/searchcraft-facet-list/searchcraft-facet-list.tsx"],"sourcesContent":[".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/utils';\n\n@Component({\n tag: 'searchcraft-facet-list',\n styleUrl: 'searchcraft-facet-list.module.scss',\n shadow: false,\n})\nexport class SearchcraftFiltersList {\n @Prop() fieldName: string;\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() lastQuery: string | undefined;\n @State() lastTimeTaken: number | undefined;\n @State() hasNewSearchTerm = false;\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 (state.query !== this.lastQuery) {\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.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"],"version":3}
@@ -1,4 +1,5 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h } from './p-5639be85.js';
2
+ import { u as useSearchcraftStore } from './p-3c181808.js';
2
3
  import { c as classNames } from './p-5cdc6210.js';
3
4
 
4
5
  const searchcraftToggleButtonModuleCss = ":root{--sc-spinner-size:20px;--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}: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}.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)}";
@@ -16,11 +17,26 @@ const SearchcraftToggleButton = /*@__PURE__*/ proxyCustomElement(class Searchcra
16
17
  this.label = 'Toggle';
17
18
  this.subLabel = undefined;
18
19
  this.isActive = false;
20
+ this.unsubscribe = undefined;
21
+ this.lastQuery = undefined;
22
+ }
23
+ connectedCallback() {
24
+ /** When the query changes, sets toggle button state back to inactive. */
25
+ this.unsubscribe = useSearchcraftStore.subscribe((state) => {
26
+ if (state.query !== this.lastQuery) {
27
+ this.isActive = false;
28
+ this.lastQuery = state.query;
29
+ }
30
+ });
31
+ }
32
+ disconnectedCallback() {
33
+ var _a;
34
+ (_a = this.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
19
35
  }
20
36
  render() {
21
- return (h("div", { key: 'd22c50dcf65d66208bd0ee78c88f452ba94c96e1', class: 'searchcraft-toggle-button-container' }, h("div", { key: 'c7309a315b979c1bc68b140f4e3d250fdb208e37' }, h("p", { key: '2a22fc2b52f73a5fe79512c4e3ed105110a514cd', class: 'searchcraft-toggle-button-label' }, this.label), this.subLabel && (h("p", { key: '8c1670c628751c19576ff9f8cf4bad71b974fb4f', class: 'searchcraft-toggle-button-sub-label' }, this.subLabel))), h("button", { key: '10600dd271917d074bf4d1e8dea473b583c79031', class: classNames('searchcraft-toggle-button-background', {
37
+ return (h("div", { key: 'e6d23071452a4a01b95a45748860df7737735c83', class: 'searchcraft-toggle-button-container' }, h("div", { key: '3d87cd576368065c7fe8d3b50daef9c67c04253e' }, h("p", { key: '06d1f349c9132e6a9762d777e3f90c635852e4a1', class: 'searchcraft-toggle-button-label' }, this.label), this.subLabel && (h("p", { key: '9bf361bdb33977a089d9364822c9c11b846b59a5', class: 'searchcraft-toggle-button-sub-label' }, this.subLabel))), h("button", { key: 'bb8f27eecb9fe8d5dde237f81d04c3e79a7ec87b', class: classNames('searchcraft-toggle-button-background', {
22
38
  active: this.isActive,
23
- }), onClick: this.handleToggle, type: 'button' }, h("div", { key: '3cd18a77345001252c700d6b1ca3f34b9e7e849d', class: classNames('searchcraft-toggle-button-handle', {
39
+ }), onClick: this.handleToggle, type: 'button' }, h("div", { key: 'd4be7cc5fbadfc28e97c4dfada15236b7be2fda0', class: classNames('searchcraft-toggle-button-handle', {
24
40
  active: this.isActive,
25
41
  }) }))));
26
42
  }
@@ -28,7 +44,9 @@ const SearchcraftToggleButton = /*@__PURE__*/ proxyCustomElement(class Searchcra
28
44
  }, [0, "searchcraft-toggle-button", {
29
45
  "label": [1],
30
46
  "subLabel": [1, "sub-label"],
31
- "isActive": [32]
47
+ "isActive": [32],
48
+ "unsubscribe": [32],
49
+ "lastQuery": [32]
32
50
  }]);
33
51
  function defineCustomElement() {
34
52
  if (typeof customElements === "undefined") {
@@ -46,4 +64,4 @@ function defineCustomElement() {
46
64
 
47
65
  export { SearchcraftToggleButton as S, defineCustomElement as d };
48
66
 
49
- //# sourceMappingURL=p-ebf021b5.js.map
67
+ //# sourceMappingURL=p-9b9df0ca.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-9b9df0ca.js","mappings":";;;;AAAA,MAAM,gCAAgC,GAAG,oxIAAoxI,CAAC;AAC9zI,sCAAe,gCAAgC;;MCclC,uBAAuB;;;;;QAe1B,iBAAY,GAAG;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACxC,CAAC;qBAZc,QAAQ;;wBAKJ,KAAK;;;;IASzB,iBAAiB;;QAEf,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAAK;YACrD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;gBAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;aAC9B;SACF,CAAC,CAAC;KACJ;IAED,oBAAoB;;QAClB,MAAA,IAAI,CAAC,WAAW,oDAAI,CAAC;KACtB;IAED,MAAM;QACJ,QACE,4DAAK,KAAK,EAAC,qCAAqC,IAC9C,8DACE,0DAAG,KAAK,EAAC,iCAAiC,IAAE,IAAI,CAAC,KAAK,CAAK,EAC1D,IAAI,CAAC,QAAQ,KACZ,0DAAG,KAAK,EAAC,qCAAqC,IAAE,IAAI,CAAC,QAAQ,CAAK,CACnE,CACG,EACN,+DACE,KAAK,EAAE,UAAU,CAAC,sCAAsC,EAAE;gBACxD,MAAM,EAAE,IAAI,CAAC,QAAQ;aACtB,CAAC,EACF,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,IAAI,EAAC,QAAQ,IAEb,4DACE,KAAK,EAAE,UAAU,CAAC,kCAAkC,EAAE;gBACpD,MAAM,EAAE,IAAI,CAAC,QAAQ;aACtB,CAAC,GACF,CACK,CACL,EACN;KACH;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/searchcraft-toggle-button/searchcraft-toggle-button.module.scss?tag=searchcraft-toggle-button","src/components/searchcraft-toggle-button/searchcraft-toggle-button.tsx"],"sourcesContent":[".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@Component({\n tag: 'searchcraft-toggle-button',\n styleUrl: 'searchcraft-toggle-button.module.scss',\n shadow: false,\n})\nexport class SearchcraftToggleButton {\n /**\n * Type of the toggle - determines what it controls\n * 'mode': toggles between 'fuzzy' and 'normal'\n * 'sort': toggles between 'asc' and 'desc'\n */\n @Prop() label = 'Toggle';\n @Prop() subLabel: string | undefined;\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) {\n this.isActive = false;\n this.lastQuery = state.query;\n }\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"],"version":3}
@@ -1,5 +1,5 @@
1
1
  const name = "@searchcraft/javascript-sdk";
2
- const version = "0.4.0";
2
+ const version = "0.4.2";
3
3
  const description = "Searchcraft Javascript SDK";
4
4
  const author = "Searchcraft";
5
5
  const license = "Apache-2.0";
@@ -63,4 +63,4 @@ const packageJson = {
63
63
 
64
64
  export { packageJson as p };
65
65
 
66
- //# sourceMappingURL=p-69eed21e.js.map
66
+ //# sourceMappingURL=p-c994d722.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-c994d722.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -90,7 +90,7 @@ function getDocumentValueFromSearchResultMapping(document, mapping) {
90
90
  return valueFound;
91
91
  })
92
92
  .filter((value) => !!value)
93
- .join(mapping.delimeter || ' ');
93
+ .join(mapping.delimiter || ' ');
94
94
  }
95
95
  }
96
96
  function deepMergeWithSpread(obj1, obj2) {
@@ -108,18 +108,52 @@ function deepMergeWithSpread(obj1, obj2) {
108
108
  }
109
109
  return result;
110
110
  }
111
- function facetToObject(child) {
112
- const transformed = {
113
- count: child.count,
114
- path: child.path,
111
+ function facetToRecord(facet) {
112
+ const records = {};
113
+ const traverseAndAddToFragments = (facetChild) => {
114
+ var _a;
115
+ records[facetChild.path] = {
116
+ count: facetChild.count,
117
+ path: facetChild.path,
118
+ };
119
+ (_a = facetChild.children) === null || _a === void 0 ? void 0 : _a.forEach((child) => {
120
+ traverseAndAddToFragments(child);
121
+ });
122
+ };
123
+ traverseAndAddToFragments(facet);
124
+ return records;
125
+ }
126
+ function recordToObject(record) {
127
+ const root = {
128
+ count: 0,
129
+ path: '/',
115
130
  children: {},
116
131
  };
117
- if (child.children) {
118
- child.children.forEach((subChild) => {
119
- transformed.children[subChild.path] = facetToObject(subChild);
132
+ Object.keys(record).forEach((key) => {
133
+ const fragment = record[key];
134
+ if (fragment.path === '/') {
135
+ return;
136
+ }
137
+ const pathParts = fragment.path.substring(1).split('/');
138
+ let currentRoot = root;
139
+ let currentPath = '';
140
+ pathParts.forEach((part, index) => {
141
+ const nextPath = `${currentPath}/${part}`;
142
+ if (!currentRoot.children[nextPath]) {
143
+ currentRoot.children[nextPath] = {
144
+ count: 0,
145
+ path: nextPath,
146
+ children: {},
147
+ };
148
+ }
149
+ if (index === pathParts.length - 1) {
150
+ currentRoot.children[nextPath].count = fragment.count;
151
+ }
152
+ currentPath = nextPath;
153
+ currentRoot = currentRoot.children[nextPath];
120
154
  });
121
- }
122
- return transformed;
155
+ });
156
+ return root;
123
157
  }
124
158
  function objectToFacet(childObject) {
125
159
  const transformed = {
@@ -132,25 +166,48 @@ function objectToFacet(childObject) {
132
166
  }
133
167
  return transformed;
134
168
  }
135
- function mergeFacetRoots(fieldName, root1, root2) {
136
- const array1 = root1[fieldName];
137
- const array2 = root2[fieldName];
138
- const rootFacetChild1 = {
169
+ /**
170
+ * Filters records with the parent paths from record2 OUT of record1
171
+ */
172
+ function filterRecordByParentPaths(record1, record2) {
173
+ // Extract all paths (keys) both records
174
+ const paths1 = Object.keys(record1);
175
+ const paths2 = Object.keys(record2);
176
+ // Find all parent paths in record2
177
+ const parentPaths = new Set(paths2
178
+ .filter((path) => path.split('/').length > 2) // Only consider paths with more than one level
179
+ .map((path) => path.substring(0, path.lastIndexOf('/'))));
180
+ // Filter out keys in record1 that share a parent path with any of the identified parent paths
181
+ const filteredRecord = Object.fromEntries(paths1
182
+ .filter((path) => !parentPaths.has(path.substring(0, path.lastIndexOf('/'))))
183
+ .map((path) => [path, record1[path]]));
184
+ return filteredRecord;
185
+ }
186
+ function mergeFacetRoots(fieldName, currentRoot, incomingRoot) {
187
+ const currentArray = currentRoot[fieldName];
188
+ const incomingArray = incomingRoot[fieldName];
189
+ const currentRootFacetChild = {
139
190
  count: 0,
140
191
  path: '/',
141
- children: array1,
192
+ children: currentArray,
142
193
  };
143
- const rootFacetChild2 = {
194
+ const incomingRootFacetChild = {
144
195
  count: 0,
145
196
  path: '/',
146
- children: array2,
197
+ children: incomingArray,
147
198
  };
148
- // Transform into objects
149
- const facetObject1 = facetToObject(rootFacetChild1);
150
- const facetObject2 = facetToObject(rootFacetChild2);
151
- // Deep merge the objects
152
- const mergedFacetObject = deepMergeWithSpread(facetObject1, facetObject2);
153
- const mergedFacetChild = objectToFacet(mergedFacetObject);
199
+ // Flatten them into records
200
+ const currentRecord = facetToRecord(currentRootFacetChild);
201
+ const incomingRecord = facetToRecord(incomingRootFacetChild);
202
+ // Filter out the records from record1 (the current set of records)
203
+ // that share a parent path with record2 (the incoming records)
204
+ const filteredCurrentRecord = filterRecordByParentPaths(currentRecord, incomingRecord);
205
+ // Deep merge the records together
206
+ const mergedRecord = deepMergeWithSpread(filteredCurrentRecord, incomingRecord);
207
+ // Convert into a heirarchical object
208
+ const mergedObject = recordToObject(mergedRecord);
209
+ // Convert the heirarchical object back to the Facet child structure
210
+ const mergedFacetChild = objectToFacet(mergedObject);
154
211
  return {
155
212
  [fieldName]: mergedFacetChild.children,
156
213
  };
@@ -158,4 +215,4 @@ function mergeFacetRoots(fieldName, root1, root2) {
158
215
 
159
216
  export { getMillis as a, formatNumberWithCommas as f, getDocumentValueFromSearchResultMapping as g, mergeFacetRoots as m, parseCustomStyles as p, removeSubstringMatches as r, serializeStyles as s };
160
217
 
161
- //# sourceMappingURL=p-0deddac7.js.map
218
+ //# sourceMappingURL=p-f308d05d.js.map