@searchcraft/javascript-sdk 0.3.0 → 0.3.1

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 (224) hide show
  1. package/dist/cjs/{index-6c5282a0.js → index-264ebadc.js} +290 -9
  2. package/dist/cjs/index-264ebadc.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/package-35d3b670.js +68 -0
  6. package/dist/cjs/package-35d3b670.js.map +1 -0
  7. package/dist/cjs/{searchcraft-auto-search-form_19.cjs.entry.js → searchcraft-auto-search-form_17.cjs.entry.js} +126 -120
  8. package/dist/cjs/searchcraft-auto-search-form_17.cjs.entry.js.map +1 -0
  9. package/dist/cjs/searchcraft-base-search-form.cjs.entry.js +13 -5
  10. package/dist/cjs/searchcraft-base-search-form.cjs.entry.js.map +1 -1
  11. package/dist/cjs/searchcraft-button-icon.cjs.entry.js +1 -1
  12. package/dist/cjs/searchcraft-button.cjs.entry.js +4 -4
  13. package/dist/cjs/searchcraft-button.cjs.entry.js.map +1 -1
  14. package/dist/cjs/searchcraft-javascript-sdk.cjs.js +2 -2
  15. package/dist/cjs/searchcraft-spinner-dark.cjs.entry.js +22 -0
  16. package/dist/cjs/searchcraft-spinner-dark.cjs.entry.js.map +1 -0
  17. package/dist/cjs/searchcraft-spinner-light.cjs.entry.js +22 -0
  18. package/dist/cjs/searchcraft-spinner-light.cjs.entry.js.map +1 -0
  19. package/dist/cjs/store-e3bbdd49.js +1022 -0
  20. package/dist/cjs/store-e3bbdd49.js.map +1 -0
  21. package/dist/collection/assets/searchcraft-button-icons.js.map +1 -1
  22. package/dist/collection/assets/searchcraft-check-icon.js.map +1 -1
  23. package/dist/collection/assets/searchcraft-clear-icon-set.js.map +1 -1
  24. package/dist/collection/assets/searchcraft-dash-icon.js.map +1 -1
  25. package/dist/collection/assets/searchcraft-search-icon-set.js.map +1 -1
  26. package/dist/collection/components/searchcraft-auto-search-form/searchcraft-auto-search-form.js +18 -10
  27. package/dist/collection/components/searchcraft-auto-search-form/searchcraft-auto-search-form.js.map +1 -1
  28. package/dist/collection/components/searchcraft-base-search-form/searchcraft-base-search-form.js +17 -10
  29. package/dist/collection/components/searchcraft-base-search-form/searchcraft-base-search-form.js.map +1 -1
  30. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js +76 -26
  31. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.js.map +1 -1
  32. package/dist/collection/components/searchcraft-base-search-result/searchcraft-base-search-result.module.css +42 -22
  33. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js +50 -10
  34. package/dist/collection/components/searchcraft-base-search-results/searchcraft-base-search-results.js.map +1 -1
  35. package/dist/collection/components/searchcraft-button/searchcraft-button.js +2 -3
  36. package/dist/collection/components/searchcraft-button/searchcraft-button.js.map +1 -1
  37. package/dist/collection/components/searchcraft-button/searchcraft-button.module.css +4 -33
  38. package/dist/collection/components/searchcraft-clear-input-button/searchcraft-clear-input-button.js +4 -5
  39. package/dist/collection/components/searchcraft-clear-input-button/searchcraft-clear-input-button.js.map +1 -1
  40. package/dist/collection/components/searchcraft-clear-input-button/searchcraft-clear-input-button.module.css +3 -3
  41. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js +3 -4
  42. package/dist/collection/components/searchcraft-error-message/searchcraft-error-message.js.map +1 -1
  43. package/dist/collection/components/searchcraft-filters-list/searchcraft-filters-list.js +6 -10
  44. package/dist/collection/components/searchcraft-filters-list/searchcraft-filters-list.js.map +1 -1
  45. package/dist/collection/components/searchcraft-filters-list/searchcraft-filters-list.module.css +26 -25
  46. package/dist/collection/components/searchcraft-input/searchcraft-input.js +20 -21
  47. package/dist/collection/components/searchcraft-input/searchcraft-input.js.map +1 -1
  48. package/dist/collection/components/searchcraft-input/searchcraft-input.module.css +44 -52
  49. package/dist/collection/components/searchcraft-input-caption/searchcraft-input-caption.js +2 -3
  50. package/dist/collection/components/searchcraft-input-caption/searchcraft-input-caption.js.map +1 -1
  51. package/dist/collection/components/searchcraft-input-icon/searchcraft-input-icon.js +2 -2
  52. package/dist/collection/components/searchcraft-input-icon/searchcraft-input-icon.js.map +1 -1
  53. package/dist/collection/components/searchcraft-input-icon/searchcraft-input-icon.module.css +2 -2
  54. package/dist/collection/components/searchcraft-input-label/searchcraft-input-label.js +1 -2
  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 +1 -1
  57. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js +5 -3
  58. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.js.map +1 -1
  59. package/dist/collection/components/searchcraft-results-info/searchcraft-results-info.module.css +14 -4
  60. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js +34 -8
  61. package/dist/collection/components/searchcraft-slider/searchcraft-slider.js.map +1 -1
  62. package/dist/collection/components/searchcraft-slider/searchcraft-slider.module.css +37 -23
  63. package/dist/collection/components/searchcraft-spinner-dark/searchcraft-spinner-dark.js.map +1 -1
  64. package/dist/collection/components/searchcraft-spinner-light/searchcraft-spinner-light.js.map +1 -1
  65. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js +4 -2
  66. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.js.map +1 -1
  67. package/dist/collection/components/searchcraft-toggle-button/searchcraft-toggle-button.module.css +7 -7
  68. package/dist/collection/index.js.map +1 -1
  69. package/dist/collection/provider/store.js +1 -0
  70. package/dist/collection/provider/store.js.map +1 -1
  71. package/dist/collection/utils/utils.js +3 -0
  72. package/dist/collection/utils/utils.js.map +1 -1
  73. package/dist/components/index.js +3 -3
  74. package/dist/components/{p-8c38185e.js → p-4f939ba2.js} +7 -7
  75. package/dist/components/p-4f939ba2.js.map +1 -0
  76. package/dist/components/{p-498c7ef9.js → p-5015a359.js} +4 -5
  77. package/dist/components/p-5015a359.js.map +1 -0
  78. package/dist/components/{p-27a6ca57.js → p-54848b4d.js} +35 -48
  79. package/dist/components/p-54848b4d.js.map +1 -0
  80. package/dist/components/{p-a3bd1bc8.js → p-5a872bdf.js} +2 -2
  81. package/dist/components/{p-a3bd1bc8.js.map → p-5a872bdf.js.map} +1 -1
  82. package/dist/components/{p-7d1bcd2d.js → p-62c40862.js} +5 -2
  83. package/dist/components/p-62c40862.js.map +1 -0
  84. package/dist/components/{p-70722ab2.js → p-62e6b69c.js} +2 -2
  85. package/dist/components/{p-70722ab2.js.map → p-62e6b69c.js.map} +1 -1
  86. package/dist/components/{p-6237f03e.js → p-69ee3b9a.js} +5 -6
  87. package/dist/components/p-69ee3b9a.js.map +1 -0
  88. package/dist/components/{p-7498e493.js → p-6b353c3e.js} +290 -9
  89. package/dist/components/p-6b353c3e.js.map +1 -0
  90. package/dist/components/p-727bfc38.js +925 -0
  91. package/dist/components/p-727bfc38.js.map +1 -0
  92. package/dist/components/{p-bc3f9025.js → p-7c280820.js} +2 -2
  93. package/dist/components/{p-bc3f9025.js.map → p-7c280820.js.map} +1 -1
  94. package/dist/components/{p-4468fba3.js → p-7d385ffb.js} +7 -8
  95. package/dist/components/p-7d385ffb.js.map +1 -0
  96. package/dist/components/p-8524c749.js +54 -0
  97. package/dist/components/p-8524c749.js.map +1 -0
  98. package/dist/components/{p-e5471fcf.js → p-aad03c2a.js} +2 -2
  99. package/dist/components/{p-e5471fcf.js.map → p-aad03c2a.js.map} +1 -1
  100. package/dist/components/p-b0c1fd63.js +66 -0
  101. package/dist/components/p-b0c1fd63.js.map +1 -0
  102. package/dist/components/{p-ae84b899.js → p-b38d171d.js} +5 -6
  103. package/dist/components/p-b38d171d.js.map +1 -0
  104. package/dist/components/{p-d3187f5a.js → p-bbf9973a.js} +2 -2
  105. package/dist/components/{p-d3187f5a.js.map → p-bbf9973a.js.map} +1 -1
  106. package/dist/components/p-cd9a038a.js +105 -0
  107. package/dist/components/p-cd9a038a.js.map +1 -0
  108. package/dist/components/searchcraft-auto-search-form.js +32 -36
  109. package/dist/components/searchcraft-auto-search-form.js.map +1 -1
  110. package/dist/components/searchcraft-base-search-form.js +34 -33
  111. package/dist/components/searchcraft-base-search-form.js.map +1 -1
  112. package/dist/components/searchcraft-base-search-result.js +1 -1
  113. package/dist/components/searchcraft-base-search-results.js +21 -15
  114. package/dist/components/searchcraft-base-search-results.js.map +1 -1
  115. package/dist/components/searchcraft-button-icon.js +1 -1
  116. package/dist/components/searchcraft-button.js +1 -1
  117. package/dist/components/searchcraft-check-icon.js +1 -1
  118. package/dist/components/searchcraft-clear-icon-set.js +1 -1
  119. package/dist/components/searchcraft-clear-input-button.js +1 -1
  120. package/dist/components/searchcraft-dash-icon.js +1 -1
  121. package/dist/components/searchcraft-error-message.js +1 -1
  122. package/dist/components/searchcraft-filters-list.js +12 -16
  123. package/dist/components/searchcraft-filters-list.js.map +1 -1
  124. package/dist/components/searchcraft-input-caption.js +1 -1
  125. package/dist/components/searchcraft-input-icon.js +1 -1
  126. package/dist/components/searchcraft-input-label.js +1 -1
  127. package/dist/components/searchcraft-input.js +1 -1
  128. package/dist/components/searchcraft-results-info.js +9 -7
  129. package/dist/components/searchcraft-results-info.js.map +1 -1
  130. package/dist/components/searchcraft-search-icon-set.js +1 -1
  131. package/dist/components/searchcraft-slider.js +20 -11
  132. package/dist/components/searchcraft-slider.js.map +1 -1
  133. package/dist/components/searchcraft-spinner-dark.js +1 -1
  134. package/dist/components/searchcraft-spinner-light.js +29 -1
  135. package/dist/components/searchcraft-spinner-light.js.map +1 -1
  136. package/dist/components/searchcraft-toggle-button.js +8 -6
  137. package/dist/components/searchcraft-toggle-button.js.map +1 -1
  138. package/dist/esm/{index-0ac5bb53.js → index-d851fb46.js} +290 -9
  139. package/dist/esm/index-d851fb46.js.map +1 -0
  140. package/dist/esm/index.js +1 -1
  141. package/dist/esm/loader.js +3 -3
  142. package/dist/esm/package-82baadd7.js +66 -0
  143. package/dist/esm/package-82baadd7.js.map +1 -0
  144. package/dist/esm/{searchcraft-auto-search-form_19.entry.js → searchcraft-auto-search-form_17.entry.js} +125 -117
  145. package/dist/esm/searchcraft-auto-search-form_17.entry.js.map +1 -0
  146. package/dist/esm/searchcraft-base-search-form.entry.js +13 -5
  147. package/dist/esm/searchcraft-base-search-form.entry.js.map +1 -1
  148. package/dist/esm/searchcraft-button-icon.entry.js +1 -1
  149. package/dist/esm/searchcraft-button.entry.js +4 -4
  150. package/dist/esm/searchcraft-button.entry.js.map +1 -1
  151. package/dist/esm/searchcraft-javascript-sdk.js +3 -3
  152. package/dist/esm/searchcraft-spinner-dark.entry.js +18 -0
  153. package/dist/esm/searchcraft-spinner-dark.entry.js.map +1 -0
  154. package/dist/esm/searchcraft-spinner-light.entry.js +18 -0
  155. package/dist/esm/searchcraft-spinner-light.entry.js.map +1 -0
  156. package/dist/esm/store-b519dd0b.js +1011 -0
  157. package/dist/esm/store-b519dd0b.js.map +1 -0
  158. package/dist/searchcraft-javascript-sdk/index.esm.js +1 -1
  159. package/dist/searchcraft-javascript-sdk/p-1f3ae7f3.entry.js +2 -0
  160. package/dist/searchcraft-javascript-sdk/p-1f3ae7f3.entry.js.map +1 -0
  161. package/dist/searchcraft-javascript-sdk/p-201cb2dc.entry.js +2 -0
  162. package/dist/searchcraft-javascript-sdk/p-201cb2dc.entry.js.map +1 -0
  163. package/dist/searchcraft-javascript-sdk/p-2c220368.entry.js +2 -0
  164. package/dist/searchcraft-javascript-sdk/p-2c220368.entry.js.map +1 -0
  165. package/dist/searchcraft-javascript-sdk/p-39c0ca33.entry.js +2 -0
  166. package/dist/searchcraft-javascript-sdk/p-39c0ca33.entry.js.map +1 -0
  167. package/dist/searchcraft-javascript-sdk/p-476829a4.entry.js +2 -0
  168. package/dist/searchcraft-javascript-sdk/p-476829a4.entry.js.map +1 -0
  169. package/dist/searchcraft-javascript-sdk/{p-5ec960bd.entry.js → p-99356c9a.entry.js} +2 -2
  170. package/dist/searchcraft-javascript-sdk/p-b0c1fd63.js +2 -0
  171. package/dist/searchcraft-javascript-sdk/p-b0c1fd63.js.map +1 -0
  172. package/dist/searchcraft-javascript-sdk/p-b42eaa55.js +3 -0
  173. package/dist/searchcraft-javascript-sdk/p-b42eaa55.js.map +1 -0
  174. package/dist/searchcraft-javascript-sdk/p-d5f8dda2.js +11 -0
  175. package/dist/searchcraft-javascript-sdk/p-d5f8dda2.js.map +1 -0
  176. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js +1 -1
  177. package/dist/searchcraft-javascript-sdk/searchcraft-javascript-sdk.esm.js.map +1 -1
  178. package/dist/types/components/searchcraft-auto-search-form/searchcraft-auto-search-form.d.ts +2 -2
  179. package/dist/types/components/searchcraft-base-search-form/searchcraft-base-search-form.d.ts +2 -2
  180. package/dist/types/components/searchcraft-base-search-result/searchcraft-base-search-result.d.ts +6 -3
  181. package/dist/types/components/searchcraft-base-search-results/searchcraft-base-search-results.d.ts +3 -0
  182. package/dist/types/components/searchcraft-error-message/searchcraft-error-message.d.ts +0 -6
  183. package/dist/types/components/searchcraft-filters-list/searchcraft-filters-list.d.ts +1 -1
  184. package/dist/types/components/searchcraft-input/searchcraft-input.d.ts +3 -3
  185. package/dist/types/components/searchcraft-slider/searchcraft-slider.d.ts +5 -0
  186. package/dist/types/components.d.ts +48 -22
  187. package/dist/types/provider/store.d.ts +2 -1
  188. package/dist/types/utils/utils.d.ts +1 -0
  189. package/package.json +1 -1
  190. package/dist/cjs/index-6c5282a0.js.map +0 -1
  191. package/dist/cjs/searchcraft-auto-search-form_19.cjs.entry.js.map +0 -1
  192. package/dist/cjs/store-f3bec622.js +0 -406
  193. package/dist/cjs/store-f3bec622.js.map +0 -1
  194. package/dist/components/p-07edaa9b.js +0 -67
  195. package/dist/components/p-07edaa9b.js.map +0 -1
  196. package/dist/components/p-27a6ca57.js.map +0 -1
  197. package/dist/components/p-4468fba3.js.map +0 -1
  198. package/dist/components/p-498c7ef9.js.map +0 -1
  199. package/dist/components/p-6237f03e.js.map +0 -1
  200. package/dist/components/p-7498e493.js.map +0 -1
  201. package/dist/components/p-7d1bcd2d.js.map +0 -1
  202. package/dist/components/p-8c38185e.js.map +0 -1
  203. package/dist/components/p-ae84b899.js.map +0 -1
  204. package/dist/components/p-bfb22305.js +0 -33
  205. package/dist/components/p-bfb22305.js.map +0 -1
  206. package/dist/components/p-c31274dd.js +0 -89
  207. package/dist/components/p-c31274dd.js.map +0 -1
  208. package/dist/components/p-ff049f0a.js +0 -313
  209. package/dist/components/p-ff049f0a.js.map +0 -1
  210. package/dist/esm/index-0ac5bb53.js.map +0 -1
  211. package/dist/esm/searchcraft-auto-search-form_19.entry.js.map +0 -1
  212. package/dist/esm/store-6af9ea01.js +0 -396
  213. package/dist/esm/store-6af9ea01.js.map +0 -1
  214. package/dist/searchcraft-javascript-sdk/p-05416a3e.entry.js +0 -2
  215. package/dist/searchcraft-javascript-sdk/p-05416a3e.entry.js.map +0 -1
  216. package/dist/searchcraft-javascript-sdk/p-0880cfbb.js +0 -3
  217. package/dist/searchcraft-javascript-sdk/p-0880cfbb.js.map +0 -1
  218. package/dist/searchcraft-javascript-sdk/p-1ab836bf.js +0 -11
  219. package/dist/searchcraft-javascript-sdk/p-1ab836bf.js.map +0 -1
  220. package/dist/searchcraft-javascript-sdk/p-3cb77ee1.entry.js +0 -2
  221. package/dist/searchcraft-javascript-sdk/p-3cb77ee1.entry.js.map +0 -1
  222. package/dist/searchcraft-javascript-sdk/p-72382d90.entry.js +0 -2
  223. package/dist/searchcraft-javascript-sdk/p-72382d90.entry.js.map +0 -1
  224. /package/dist/searchcraft-javascript-sdk/{p-5ec960bd.entry.js.map → p-99356c9a.entry.js.map} +0 -0
@@ -0,0 +1,1022 @@
1
+ 'use strict';
2
+
3
+ function parseCustomStyles(styles) {
4
+ if (typeof styles === 'string') {
5
+ try {
6
+ return JSON.parse(styles);
7
+ }
8
+ catch (error) {
9
+ console.error('Invalid customStyles format:', styles);
10
+ return {};
11
+ }
12
+ }
13
+ return styles || {};
14
+ }
15
+ function parseSearchKeys(documentAttributesForDisplay) {
16
+ try {
17
+ const parsedKeys = JSON.parse(documentAttributesForDisplay);
18
+ if (Array.isArray(parsedKeys) &&
19
+ parsedKeys.every((key) => typeof key === 'string')) {
20
+ return parsedKeys;
21
+ }
22
+ console.warn('searchKeys must be a JSON array of strings. Defaulting to an empty array.');
23
+ return [];
24
+ }
25
+ catch (error) {
26
+ console.error('Failed to parse searchKeys:', error);
27
+ return [];
28
+ }
29
+ }
30
+ function extractDynamicProperties(document, keys) {
31
+ const extractedProperties = {};
32
+ keys.forEach((key) => {
33
+ extractedProperties[key] = document[key] || '';
34
+ });
35
+ return extractedProperties;
36
+ }
37
+ function serializeStyles(styles) {
38
+ try {
39
+ return JSON.stringify(styles);
40
+ }
41
+ catch (error) {
42
+ console.error('Error serializing styles:', error);
43
+ return '{}';
44
+ }
45
+ }
46
+ function getFormattedTimeFromNow(timestamp) {
47
+ const now = new Date();
48
+ const inputTime = new Date(timestamp);
49
+ const diffInSeconds = Math.floor((now.getTime() - inputTime.getTime()) / 1000);
50
+ const minutes = Math.floor(diffInSeconds / 60);
51
+ const hours = Math.floor(minutes / 60);
52
+ const days = Math.floor(hours / 24);
53
+ const years = Math.floor(days / 365);
54
+ if (minutes < 60) {
55
+ return `${minutes}m ago`;
56
+ }
57
+ if (hours < 24) {
58
+ return `${hours}h ago`;
59
+ }
60
+ if (days < 365) {
61
+ return `${days}d ago`;
62
+ }
63
+ return `${years}y ago`;
64
+ }
65
+ function flattenFacets(sections) {
66
+ return sections.map((section) => {
67
+ const fullPath = section.path;
68
+ // Create the FacetCheckbox object
69
+ const facetCheckbox = {
70
+ label: fullPath.replace(/^\//, ''), // Format the label without leading slash
71
+ value: fullPath, // The full path as the value
72
+ count: section.count, // Count from the Section
73
+ children: flattenFacets(section.children || []), // Recursively flatten children
74
+ };
75
+ return facetCheckbox;
76
+ });
77
+ }
78
+ function filterPaths(paths) {
79
+ return paths.filter((path) => {
80
+ const parts = path.split('/').filter(Boolean);
81
+ if (parts.length > 1) {
82
+ return true;
83
+ }
84
+ return !paths.some((otherPath) => otherPath.startsWith(`${path}/`) && otherPath !== path);
85
+ });
86
+ }
87
+ function formatNumberWithCommas(number) {
88
+ return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
89
+ }
90
+
91
+ var zustand = {};
92
+
93
+ var vanilla$1 = {};
94
+
95
+ const createStoreImpl = (createState) => {
96
+ let state;
97
+ const listeners = /* @__PURE__ */ new Set();
98
+ const setState = (partial, replace) => {
99
+ const nextState = typeof partial === "function" ? partial(state) : partial;
100
+ if (!Object.is(nextState, state)) {
101
+ const previousState = state;
102
+ state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState);
103
+ listeners.forEach((listener) => listener(state, previousState));
104
+ }
105
+ };
106
+ const getState = () => state;
107
+ const getInitialState = () => initialState;
108
+ const subscribe = (listener) => {
109
+ listeners.add(listener);
110
+ return () => listeners.delete(listener);
111
+ };
112
+ const api = { setState, getState, getInitialState, subscribe };
113
+ const initialState = state = createState(setState, getState, api);
114
+ return api;
115
+ };
116
+ const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
117
+
118
+ vanilla$1.createStore = createStore;
119
+
120
+ var react$1 = {};
121
+
122
+ var react = {exports: {}};
123
+
124
+ var react_production_min = {};
125
+
126
+ /**
127
+ * @license React
128
+ * react.production.min.js
129
+ *
130
+ * Copyright (c) Facebook, Inc. and its affiliates.
131
+ *
132
+ * This source code is licensed under the MIT license found in the
133
+ * LICENSE file in the root directory of this source tree.
134
+ */
135
+ var l$1=Symbol.for("react.element"),n=Symbol.for("react.portal"),p$1=Symbol.for("react.fragment"),q$1=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v$1=Symbol.for("react.forward_ref"),w$1=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y$1=Symbol.for("react.lazy"),z$1=Symbol.iterator;function A$1(a){if(null===a||"object"!==typeof a)return null;a=z$1&&a[z$1]||a["@@iterator"];return "function"===typeof a?a:null}
136
+ var B$1={isMounted:function(){return !1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C$1=Object.assign,D={};function E$1(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B$1;}E$1.prototype.isReactComponent={};
137
+ E$1.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)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,a,b,"setState");};E$1.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate");};function F$1(){}F$1.prototype=E$1.prototype;function G$1(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B$1;}var H$1=G$1.prototype=new F$1;
138
+ H$1.constructor=G$1;C$1(H$1,E$1.prototype);H$1.isPureReactComponent=!0;var I$1=Array.isArray,J$1=Object.prototype.hasOwnProperty,K$1={current:null},L$1={key:!0,ref:!0,__self:!0,__source:!0};
139
+ function M$1(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J$1.call(b,d)&&!L$1.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f;}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return {$$typeof:l$1,type:a,key:k,ref:h,props:c,_owner:K$1.current}}
140
+ function N$1(a,b){return {$$typeof:l$1,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O$1(a){return "object"===typeof a&&null!==a&&a.$$typeof===l$1}function escape(a){var b={"=":"=0",":":"=2"};return "$"+a.replace(/[=:]/g,function(a){return b[a]})}var P$1=/\/+/g;function Q$1(a,b){return "object"===typeof a&&null!==a&&null!=a.key?escape(""+a.key):b.toString(36)}
141
+ function R(a,b,e,d,c){var k=typeof a;if("undefined"===k||"boolean"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case "string":case "number":h=!0;break;case "object":switch(a.$$typeof){case l$1:case n:h=!0;}}if(h)return h=a,c=c(h),a=""===d?"."+Q$1(h,0):d,I$1(c)?(e="",null!=a&&(e=a.replace(P$1,"$&/")+"/"),R(c,b,e,"",function(a){return a})):null!=c&&(O$1(c)&&(c=N$1(c,e+(!c.key||h&&h.key===c.key?"":(""+c.key).replace(P$1,"$&/")+"/")+a)),b.push(c)),1;h=0;d=""===d?".":d+":";if(I$1(a))for(var g=0;g<a.length;g++){k=
142
+ a[g];var f=d+Q$1(k,g);h+=R(k,b,e,f,c);}else if(f=A$1(a),"function"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q$1(k,g++),h+=R(k,b,e,f,c);else if("object"===k)throw b=String(a),Error("Objects are not valid as a React child (found: "+("[object Object]"===b?"object with keys {"+Object.keys(a).join(", ")+"}":b)+"). If you meant to render a collection of children, use an array instead.");return h}
143
+ function S$1(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,"","",function(a){return b.call(e,a,c++)});return d}function T$1(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b;},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b;});-1===a._status&&(a._status=0,a._result=b);}if(1===a._status)return a._result.default;throw a._result;}
144
+ var U$1={current:null},V$1={transition:null},W$1={ReactCurrentDispatcher:U$1,ReactCurrentBatchConfig:V$1,ReactCurrentOwner:K$1};function X$1(){throw Error("act(...) is not supported in production builds of React.");}
145
+ react_production_min.Children={map:S$1,forEach:function(a,b,e){S$1(a,function(){b.apply(this,arguments);},e);},count:function(a){var b=0;S$1(a,function(){b++;});return b},toArray:function(a){return S$1(a,function(a){return a})||[]},only:function(a){if(!O$1(a))throw Error("React.Children.only expected to receive a single React element child.");return a}};react_production_min.Component=E$1;react_production_min.Fragment=p$1;react_production_min.Profiler=r;react_production_min.PureComponent=G$1;react_production_min.StrictMode=q$1;react_production_min.Suspense=w$1;
146
+ react_production_min.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W$1;react_production_min.act=X$1;
147
+ react_production_min.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+a+".");var d=C$1({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K$1.current);void 0!==b.key&&(c=""+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J$1.call(b,f)&&!L$1.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f]);}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);
148
+ for(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g;}return {$$typeof:l$1,type:a.type,key:c,ref:k,props:d,_owner:h}};react_production_min.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};react_production_min.createElement=M$1;react_production_min.createFactory=function(a){var b=M$1.bind(null,a);b.type=a;return b};react_production_min.createRef=function(){return {current:null}};
149
+ react_production_min.forwardRef=function(a){return {$$typeof:v$1,render:a}};react_production_min.isValidElement=O$1;react_production_min.lazy=function(a){return {$$typeof:y$1,_payload:{_status:-1,_result:a},_init:T$1}};react_production_min.memo=function(a,b){return {$$typeof:x,type:a,compare:void 0===b?null:b}};react_production_min.startTransition=function(a){var b=V$1.transition;V$1.transition={};try{a();}finally{V$1.transition=b;}};react_production_min.unstable_act=X$1;react_production_min.useCallback=function(a,b){return U$1.current.useCallback(a,b)};react_production_min.useContext=function(a){return U$1.current.useContext(a)};
150
+ react_production_min.useDebugValue=function(){};react_production_min.useDeferredValue=function(a){return U$1.current.useDeferredValue(a)};react_production_min.useEffect=function(a,b){return U$1.current.useEffect(a,b)};react_production_min.useId=function(){return U$1.current.useId()};react_production_min.useImperativeHandle=function(a,b,e){return U$1.current.useImperativeHandle(a,b,e)};react_production_min.useInsertionEffect=function(a,b){return U$1.current.useInsertionEffect(a,b)};react_production_min.useLayoutEffect=function(a,b){return U$1.current.useLayoutEffect(a,b)};
151
+ react_production_min.useMemo=function(a,b){return U$1.current.useMemo(a,b)};react_production_min.useReducer=function(a,b,e){return U$1.current.useReducer(a,b,e)};react_production_min.useRef=function(a){return U$1.current.useRef(a)};react_production_min.useState=function(a){return U$1.current.useState(a)};react_production_min.useSyncExternalStore=function(a,b,e){return U$1.current.useSyncExternalStore(a,b,e)};react_production_min.useTransition=function(){return U$1.current.useTransition()};react_production_min.version="18.3.1";
152
+
153
+ {
154
+ react.exports = react_production_min;
155
+ }
156
+
157
+ var React = react.exports;
158
+ var vanilla = vanilla$1;
159
+
160
+ const identity = (arg) => arg;
161
+ function useStore(api, selector = identity) {
162
+ const slice = React.useSyncExternalStore(
163
+ api.subscribe,
164
+ () => selector(api.getState()),
165
+ () => selector(api.getInitialState())
166
+ );
167
+ React.useDebugValue(slice);
168
+ return slice;
169
+ }
170
+ const createImpl = (createState) => {
171
+ const api = vanilla.createStore(createState);
172
+ const useBoundStore = (selector) => useStore(api, selector);
173
+ Object.assign(useBoundStore, api);
174
+ return useBoundStore;
175
+ };
176
+ const create = (createState) => createState ? createImpl(createState) : createImpl;
177
+
178
+ react$1.create = create;
179
+ react$1.useStore = useStore;
180
+
181
+ (function (exports) {
182
+
183
+ var vanilla = vanilla$1;
184
+ var react = react$1;
185
+
186
+
187
+
188
+ Object.keys(vanilla).forEach(function (k) {
189
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
190
+ enumerable: true,
191
+ get: function () { return vanilla[k]; }
192
+ });
193
+ });
194
+ Object.keys(react).forEach(function (k) {
195
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
196
+ enumerable: true,
197
+ get: function () { return react[k]; }
198
+ });
199
+ });
200
+ }(zustand));
201
+
202
+ var F = Object.defineProperty;
203
+ var B = (n, t, r) => t in n ? F(n, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : n[t] = r;
204
+ var p = (n, t, r) => B(n, typeof t != "symbol" ? t + "" : t, r);
205
+ const L = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
206
+ let N = (n = 21) => {
207
+ let t = "", r = crypto.getRandomValues(new Uint8Array(n |= 0));
208
+ for (; n--; )
209
+ t += L[r[n] & 63];
210
+ return t;
211
+ };
212
+ function w(n, t, r, o) {
213
+ return new (r || (r = Promise))(function(s, i) {
214
+ function e(u) {
215
+ try {
216
+ d(o.next(u));
217
+ } catch (a) {
218
+ i(a);
219
+ }
220
+ }
221
+ function c(u) {
222
+ try {
223
+ d(o.throw(u));
224
+ } catch (a) {
225
+ i(a);
226
+ }
227
+ }
228
+ function d(u) {
229
+ var a;
230
+ u.done ? s(u.value) : (a = u.value, a instanceof r ? a : new r(function(m) {
231
+ m(a);
232
+ })).then(e, c);
233
+ }
234
+ d((o = o.apply(n, [])).next());
235
+ });
236
+ }
237
+ function y(n, t) {
238
+ var r, o, s, i, e = { label: 0, sent: function() {
239
+ if (1 & s[0]) throw s[1];
240
+ return s[1];
241
+ }, trys: [], ops: [] };
242
+ return i = { next: c(0), throw: c(1), return: c(2) }, typeof Symbol == "function" && (i[Symbol.iterator] = function() {
243
+ return this;
244
+ }), i;
245
+ function c(d) {
246
+ return function(u) {
247
+ return function(a) {
248
+ if (r) throw new TypeError("Generator is already executing.");
249
+ for (; i && (i = 0, a[0] && (e = 0)), e; ) try {
250
+ if (r = 1, o && (s = 2 & a[0] ? o.return : a[0] ? o.throw || ((s = o.return) && s.call(o), 0) : o.next) && !(s = s.call(o, a[1])).done) return s;
251
+ switch (o = 0, s && (a = [2 & a[0], s.value]), a[0]) {
252
+ case 0:
253
+ case 1:
254
+ s = a;
255
+ break;
256
+ case 4:
257
+ return e.label++, { value: a[1], done: !1 };
258
+ case 5:
259
+ e.label++, o = a[1], a = [0];
260
+ continue;
261
+ case 7:
262
+ a = e.ops.pop(), e.trys.pop();
263
+ continue;
264
+ default:
265
+ if (s = e.trys, !((s = s.length > 0 && s[s.length - 1]) || a[0] !== 6 && a[0] !== 2)) {
266
+ e = 0;
267
+ continue;
268
+ }
269
+ if (a[0] === 3 && (!s || a[1] > s[0] && a[1] < s[3])) {
270
+ e.label = a[1];
271
+ break;
272
+ }
273
+ if (a[0] === 6 && e.label < s[1]) {
274
+ e.label = s[1], s = a;
275
+ break;
276
+ }
277
+ if (s && e.label < s[2]) {
278
+ e.label = s[2], e.ops.push(a);
279
+ break;
280
+ }
281
+ s[2] && e.ops.pop(), e.trys.pop();
282
+ continue;
283
+ }
284
+ a = t.call(n, e);
285
+ } catch (m) {
286
+ a = [6, m], o = 0;
287
+ } finally {
288
+ r = s = 0;
289
+ }
290
+ if (5 & a[0]) throw a[1];
291
+ return { value: a[0] ? a[1] : void 0, done: !0 };
292
+ }([d, u]);
293
+ };
294
+ }
295
+ }
296
+ var b = { exclude: [] }, T = {}, j = { timeout: "true" }, v = function(n, t) {
297
+ typeof window < "u" && (T[n] = t);
298
+ }, q = function() {
299
+ return Object.fromEntries(Object.entries(T).filter(function(n) {
300
+ var t, r = n[0];
301
+ return !(!((t = b == null ? void 0 : b.exclude) === null || t === void 0) && t.includes(r));
302
+ }).map(function(n) {
303
+ return [n[0], (0, n[1])()];
304
+ }));
305
+ };
306
+ function E(n) {
307
+ return n ^= n >>> 16, n = Math.imul(n, 2246822507), n ^= n >>> 13, n = Math.imul(n, 3266489909), (n ^= n >>> 16) >>> 0;
308
+ }
309
+ var f = new Uint32Array([597399067, 2869860233, 951274213, 2716044179]);
310
+ function g(n, t) {
311
+ return n << t | n >>> 32 - t;
312
+ }
313
+ function I(n, t) {
314
+ var r;
315
+ if (t === void 0 && (t = 0), t = t ? 0 | t : 0, typeof n == "string" && (r = n, n = new TextEncoder().encode(r).buffer), !(n instanceof ArrayBuffer)) throw new TypeError("Expected key to be ArrayBuffer or string");
316
+ var o = new Uint32Array([t, t, t, t]);
317
+ ((function(i, e) {
318
+ for (var c = i.byteLength / 16 | 0, d = new Uint32Array(i, 0, 4 * c), u = 0; u < c; u++) {
319
+ var a = d.subarray(4 * u, 4 * (u + 1));
320
+ a[0] = Math.imul(a[0], f[0]), a[0] = g(a[0], 15), a[0] = Math.imul(a[0], f[1]), e[0] = e[0] ^ a[0], e[0] = g(e[0], 19), e[0] = e[0] + e[1], e[0] = Math.imul(e[0], 5) + 1444728091, a[1] = Math.imul(a[1], f[1]), a[1] = g(a[1], 16), a[1] = Math.imul(a[1], f[2]), e[1] = e[1] ^ a[1], e[1] = g(e[1], 17), e[1] = e[1] + e[2], e[1] = Math.imul(e[1], 5) + 197830471, a[2] = Math.imul(a[2], f[2]), a[2] = g(a[2], 17), a[2] = Math.imul(a[2], f[3]), e[2] = e[2] ^ a[2], e[2] = g(e[2], 15), e[2] = e[2] + e[3], e[2] = Math.imul(e[2], 5) + 2530024501, a[3] = Math.imul(a[3], f[3]), a[3] = g(a[3], 18), a[3] = Math.imul(a[3], f[0]), e[3] = e[3] ^ a[3], e[3] = g(e[3], 13), e[3] = e[3] + e[0], e[3] = Math.imul(e[3], 5) + 850148119;
321
+ }
322
+ }))(n, o), function(i, e) {
323
+ var c = i.byteLength / 16 | 0, d = i.byteLength % 16, u = new Uint32Array(4), a = new Uint8Array(i, 16 * c, d);
324
+ switch (d) {
325
+ case 15:
326
+ u[3] = u[3] ^ a[14] << 16;
327
+ case 14:
328
+ u[3] = u[3] ^ a[13] << 8;
329
+ case 13:
330
+ u[3] = u[3] ^ a[12] << 0, u[3] = Math.imul(u[3], f[3]), u[3] = g(u[3], 18), u[3] = Math.imul(u[3], f[0]), e[3] = e[3] ^ u[3];
331
+ case 12:
332
+ u[2] = u[2] ^ a[11] << 24;
333
+ case 11:
334
+ u[2] = u[2] ^ a[10] << 16;
335
+ case 10:
336
+ u[2] = u[2] ^ a[9] << 8;
337
+ case 9:
338
+ u[2] = u[2] ^ a[8] << 0, u[2] = Math.imul(u[2], f[2]), u[2] = g(u[2], 17), u[2] = Math.imul(u[2], f[3]), e[2] = e[2] ^ u[2];
339
+ case 8:
340
+ u[1] = u[1] ^ a[7] << 24;
341
+ case 7:
342
+ u[1] = u[1] ^ a[6] << 16;
343
+ case 6:
344
+ u[1] = u[1] ^ a[5] << 8;
345
+ case 5:
346
+ u[1] = u[1] ^ a[4] << 0, u[1] = Math.imul(u[1], f[1]), u[1] = g(u[1], 16), u[1] = Math.imul(u[1], f[2]), e[1] = e[1] ^ u[1];
347
+ case 4:
348
+ u[0] = u[0] ^ a[3] << 24;
349
+ case 3:
350
+ u[0] = u[0] ^ a[2] << 16;
351
+ case 2:
352
+ u[0] = u[0] ^ a[1] << 8;
353
+ case 1:
354
+ u[0] = u[0] ^ a[0] << 0, u[0] = Math.imul(u[0], f[0]), u[0] = g(u[0], 15), u[0] = Math.imul(u[0], f[1]), e[0] = e[0] ^ u[0];
355
+ }
356
+ }(n, o), function(i, e) {
357
+ e[0] = e[0] ^ i.byteLength, e[1] = e[1] ^ i.byteLength, e[2] = e[2] ^ i.byteLength, e[3] = e[3] ^ i.byteLength, e[0] = e[0] + e[1] | 0, e[0] = e[0] + e[2] | 0, e[0] = e[0] + e[3] | 0, e[1] = e[1] + e[0] | 0, e[2] = e[2] + e[0] | 0, e[3] = e[3] + e[0] | 0, e[0] = E(e[0]), e[1] = E(e[1]), e[2] = E(e[2]), e[3] = E(e[3]), e[0] = e[0] + e[1] | 0, e[0] = e[0] + e[2] | 0, e[0] = e[0] + e[3] | 0, e[1] = e[1] + e[0] | 0, e[2] = e[2] + e[0] | 0, e[3] = e[3] + e[0] | 0;
358
+ }(n, o);
359
+ var s = new Uint8Array(o.buffer);
360
+ return Array.from(s).map(function(i) {
361
+ return i.toString(16).padStart(2, "0");
362
+ }).join("");
363
+ }
364
+ function G(n, t) {
365
+ return new Promise(function(r) {
366
+ setTimeout(function() {
367
+ return r(t);
368
+ }, n);
369
+ });
370
+ }
371
+ function W(n, t, r) {
372
+ return Promise.all(n.map(function(o) {
373
+ return Promise.race([o, G(t, r)]);
374
+ }));
375
+ }
376
+ function V() {
377
+ return w(this, void 0, void 0, function() {
378
+ var n, t, r, o, s;
379
+ return y(this, function(i) {
380
+ switch (i.label) {
381
+ case 0:
382
+ return i.trys.push([0, 2, , 3]), n = q(), t = Object.keys(n), [4, W(Object.values(n), (b == null ? void 0 : b.timeout) || 1e3, j)];
383
+ case 1:
384
+ return r = i.sent(), o = r.filter(function(e) {
385
+ return e !== void 0;
386
+ }), s = {}, o.forEach(function(e, c) {
387
+ s[t[c]] = e;
388
+ }), [2, O(s, b.exclude || [])];
389
+ case 2:
390
+ throw i.sent();
391
+ case 3:
392
+ return [2];
393
+ }
394
+ });
395
+ });
396
+ }
397
+ function O(n, t) {
398
+ var r = {}, o = function(i) {
399
+ if (n.hasOwnProperty(i)) {
400
+ var e = n[i];
401
+ if (typeof e != "object" || Array.isArray(e)) t.includes(i) || (r[i] = e);
402
+ else {
403
+ var c = O(e, t.map(function(d) {
404
+ return d.startsWith(i + ".") ? d.slice(i.length + 1) : d;
405
+ }));
406
+ Object.keys(c).length > 0 && (r[i] = c);
407
+ }
408
+ }
409
+ };
410
+ for (var s in n) o(s);
411
+ return r;
412
+ }
413
+ function $(n) {
414
+ return w(this, void 0, void 0, function() {
415
+ var t, r;
416
+ return y(this, function(o) {
417
+ switch (o.label) {
418
+ case 0:
419
+ return o.trys.push([0, 2, , 3]), [4, V()];
420
+ case 1:
421
+ return t = o.sent(), r = I(JSON.stringify(t)), [2, r.toString()];
422
+ case 2:
423
+ throw o.sent();
424
+ case 3:
425
+ return [2];
426
+ }
427
+ });
428
+ });
429
+ }
430
+ function H(n) {
431
+ for (var t = 0, r = 0; r < n.length; ++r) t += Math.abs(n[r]);
432
+ return t;
433
+ }
434
+ function U(n, t, r) {
435
+ for (var o = [], s = 0; s < n[0].data.length; s++) {
436
+ for (var i = [], e = 0; e < n.length; e++) i.push(n[e].data[s]);
437
+ o.push(K(i));
438
+ }
439
+ var c = new Uint8ClampedArray(o);
440
+ return new ImageData(c, t, r);
441
+ }
442
+ function K(n) {
443
+ if (n.length === 0) return 0;
444
+ for (var t = {}, r = 0, o = n; r < o.length; r++)
445
+ t[i = o[r]] = (t[i] || 0) + 1;
446
+ var s = n[0];
447
+ for (var i in t) t[i] > t[s] && (s = parseInt(i, 10));
448
+ return s;
449
+ }
450
+ function M() {
451
+ if (typeof navigator > "u") return { name: "unknown", version: "unknown" };
452
+ for (var n = navigator.userAgent, t = { Edg: "Edge", OPR: "Opera" }, r = 0, o = [/(?<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+)?)/]; r < o.length; r++) {
453
+ var s = o[r], i = n.match(s);
454
+ if (i && i.groups) return { name: t[i.groups.name] || i.groups.name, version: i.groups.version };
455
+ }
456
+ return { name: "unknown", version: "unknown" };
457
+ }
458
+ v("audio", function() {
459
+ return w(this, void 0, void 0, function() {
460
+ return y(this, function(n) {
461
+ return [2, new Promise(function(t, r) {
462
+ try {
463
+ var o = new (window.OfflineAudioContext || window.webkitOfflineAudioContext)(1, 5e3, 44100), s = o.createBufferSource(), i = o.createOscillator();
464
+ i.frequency.value = 1e3;
465
+ var e, c = o.createDynamicsCompressor();
466
+ c.threshold.value = -50, c.knee.value = 40, c.ratio.value = 12, c.attack.value = 0, c.release.value = 0.2, i.connect(c), c.connect(o.destination), i.start(), o.oncomplete = function(d) {
467
+ e = d.renderedBuffer.getChannelData(0), t({ sampleHash: H(e), oscillator: i.type, maxChannels: o.destination.maxChannelCount, channelCountMode: s.channelCountMode });
468
+ }, o.startRendering();
469
+ } catch (d) {
470
+ console.error("Error creating audio fingerprint:", d), r(d);
471
+ }
472
+ })];
473
+ });
474
+ });
475
+ });
476
+ var z = M().name !== "SamsungBrowser" ? 1 : 3, C = 280, k = 20;
477
+ M().name != "Firefox" && v("canvas", function() {
478
+ return document.createElement("canvas").getContext("2d"), new Promise(function(n) {
479
+ var t = Array.from({ length: z }, function() {
480
+ return function() {
481
+ var r = document.createElement("canvas"), o = r.getContext("2d");
482
+ if (!o) return new ImageData(1, 1);
483
+ r.width = C, r.height = k;
484
+ var s = o.createLinearGradient(0, 0, r.width, r.height);
485
+ s.addColorStop(0, "red"), s.addColorStop(0.16666666666666666, "orange"), s.addColorStop(0.3333333333333333, "yellow"), s.addColorStop(0.5, "green"), s.addColorStop(0.6666666666666666, "blue"), s.addColorStop(0.8333333333333334, "indigo"), s.addColorStop(1, "violet"), o.fillStyle = s, o.fillRect(0, 0, r.width, r.height);
486
+ var i = "Random Text WMwmil10Oo";
487
+ o.font = "23.123px Arial", o.fillStyle = "black", o.fillText(i, -5, 15), o.fillStyle = "rgba(0, 0, 255, 0.5)", o.fillText(i, -3.3, 17.7), o.beginPath(), o.moveTo(0, 0), o.lineTo(2 * r.width / 7, r.height), o.strokeStyle = "white", o.lineWidth = 2, o.stroke();
488
+ var e = o.getImageData(0, 0, r.width, r.height);
489
+ return e;
490
+ }();
491
+ });
492
+ n({ commonImageDataHash: I(U(t, C, k).data.toString()).toString() });
493
+ });
494
+ });
495
+ var A, J = ["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"], Y = ["monospace", "sans-serif", "serif"];
496
+ function _(n, t) {
497
+ if (!n) throw new Error("Canvas context not supported");
498
+ return n.font = "72px ".concat(t), n.measureText("WwMmLli0Oo").width;
499
+ }
500
+ function Q() {
501
+ var n, t = document.createElement("canvas"), r = (n = t.getContext("webgl")) !== null && n !== void 0 ? n : t.getContext("experimental-webgl");
502
+ if (r && "getParameter" in r) try {
503
+ var o = (r.getParameter(r.VENDOR) || "").toString(), s = (r.getParameter(r.RENDERER) || "").toString(), i = { vendor: o, renderer: s, version: (r.getParameter(r.VERSION) || "").toString(), shadingLanguageVersion: (r.getParameter(r.SHADING_LANGUAGE_VERSION) || "").toString() };
504
+ if (!s.length || !o.length) {
505
+ var e = r.getExtension("WEBGL_debug_renderer_info");
506
+ if (e) {
507
+ var c = (r.getParameter(e.UNMASKED_VENDOR_WEBGL) || "").toString(), d = (r.getParameter(e.UNMASKED_RENDERER_WEBGL) || "").toString();
508
+ c && (i.vendorUnmasked = c), d && (i.rendererUnmasked = d);
509
+ }
510
+ }
511
+ return i;
512
+ } catch {
513
+ }
514
+ return "undefined";
515
+ }
516
+ function X() {
517
+ var n = new Float32Array(1), t = new Uint8Array(n.buffer);
518
+ return n[0] = 1 / 0, n[0] = n[0] - n[0], t[3];
519
+ }
520
+ function Z(n, t) {
521
+ var r = {};
522
+ return t.forEach(function(o) {
523
+ var s = function(i) {
524
+ if (i.length === 0) return null;
525
+ var e = {};
526
+ i.forEach(function(u) {
527
+ var a = String(u);
528
+ e[a] = (e[a] || 0) + 1;
529
+ });
530
+ var c = i[0], d = 1;
531
+ return Object.keys(e).forEach(function(u) {
532
+ e[u] > d && (c = u, d = e[u]);
533
+ }), c;
534
+ }(n.map(function(i) {
535
+ return o in i ? i[o] : void 0;
536
+ }).filter(function(i) {
537
+ return i !== void 0;
538
+ }));
539
+ s && (r[o] = s);
540
+ }), r;
541
+ }
542
+ function ee() {
543
+ var n = [], t = { "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"] };
544
+ return Object.keys(t).forEach(function(r) {
545
+ t[r].forEach(function(o) {
546
+ matchMedia("(".concat(r, ": ").concat(o, ")")).matches && n.push("".concat(r, ": ").concat(o));
547
+ });
548
+ }), n;
549
+ }
550
+ function te() {
551
+ if (window.location.protocol === "https:" && typeof window.ApplePaySession == "function") try {
552
+ for (var n = window.ApplePaySession.supportsVersion, t = 15; t > 0; t--) if (n(t)) return t;
553
+ } catch {
554
+ return 0;
555
+ }
556
+ return 0;
557
+ }
558
+ M().name != "Firefox" && v("fonts", function() {
559
+ var n = this;
560
+ return new Promise(function(t, r) {
561
+ try {
562
+ (function(o) {
563
+ var s;
564
+ w(this, void 0, void 0, function() {
565
+ var i, e, c;
566
+ return y(this, function(d) {
567
+ switch (d.label) {
568
+ case 0:
569
+ return document.body ? [3, 2] : [4, (u = 50, new Promise(function(m) {
570
+ return setTimeout(m, u, a);
571
+ }))];
572
+ case 1:
573
+ return d.sent(), [3, 0];
574
+ case 2:
575
+ if ((i = document.createElement("iframe")).setAttribute("frameBorder", "0"), (e = i.style).setProperty("position", "fixed"), e.setProperty("display", "block", "important"), e.setProperty("visibility", "visible"), e.setProperty("border", "0"), e.setProperty("opacity", "0"), i.src = "about:blank", document.body.appendChild(i), !(c = i.contentDocument || ((s = i.contentWindow) === null || s === void 0 ? void 0 : s.document))) throw new Error("Iframe document is not accessible");
576
+ return o({ iframe: c }), setTimeout(function() {
577
+ document.body.removeChild(i);
578
+ }, 0), [2];
579
+ }
580
+ var u, a;
581
+ });
582
+ });
583
+ })(function(o) {
584
+ var s = o.iframe;
585
+ return w(n, void 0, void 0, function() {
586
+ var i, e, c, d;
587
+ return y(this, function(u) {
588
+ return i = s.createElement("canvas"), e = i.getContext("2d"), c = Y.map(function(a) {
589
+ return _(e, a);
590
+ }), d = {}, J.forEach(function(a) {
591
+ var m = _(e, a);
592
+ c.includes(m) || (d[a] = m);
593
+ }), t(d), [2];
594
+ });
595
+ });
596
+ });
597
+ } catch {
598
+ r({ error: "unsupported" });
599
+ }
600
+ });
601
+ }), v("hardware", function() {
602
+ return new Promise(function(n, t) {
603
+ var r = navigator.deviceMemory !== void 0 ? navigator.deviceMemory : 0, o = window.performance && window.performance.memory ? window.performance.memory : 0;
604
+ n({ videocard: Q(), architecture: X(), deviceMemory: r.toString() || "undefined", jsHeapSizeLimit: o.jsHeapSizeLimit || 0 });
605
+ });
606
+ }), v("locales", function() {
607
+ return new Promise(function(n) {
608
+ n({ languages: navigator.language, timezone: Intl.DateTimeFormat().resolvedOptions().timeZone });
609
+ });
610
+ }), v("permissions", function() {
611
+ return w(this, void 0, void 0, function() {
612
+ var n;
613
+ return y(this, function(t) {
614
+ return A = (b == null ? void 0 : b.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"], n = Array.from({ length: (b == null ? void 0 : b.retries) || 3 }, function() {
615
+ return function() {
616
+ return w(this, void 0, void 0, function() {
617
+ var r, o, s, i, e;
618
+ return y(this, function(c) {
619
+ switch (c.label) {
620
+ case 0:
621
+ r = {}, o = 0, s = A, c.label = 1;
622
+ case 1:
623
+ if (!(o < s.length)) return [3, 6];
624
+ i = s[o], c.label = 2;
625
+ case 2:
626
+ return c.trys.push([2, 4, , 5]), [4, navigator.permissions.query({ name: i })];
627
+ case 3:
628
+ return e = c.sent(), r[i] = e.state.toString(), [3, 5];
629
+ case 4:
630
+ return c.sent(), [3, 5];
631
+ case 5:
632
+ return o++, [3, 1];
633
+ case 6:
634
+ return [2, r];
635
+ }
636
+ });
637
+ });
638
+ }();
639
+ }), [2, Promise.all(n).then(function(r) {
640
+ return Z(r, A);
641
+ })];
642
+ });
643
+ });
644
+ }), v("plugins", function() {
645
+ var n = [];
646
+ if (navigator.plugins) for (var t = 0; t < navigator.plugins.length; t++) {
647
+ var r = navigator.plugins[t];
648
+ n.push([r.name, r.filename, r.description].join("|"));
649
+ }
650
+ return new Promise(function(o) {
651
+ o({ plugins: n });
652
+ });
653
+ }), v("screen", function() {
654
+ return new Promise(function(n) {
655
+ n({ is_touchscreen: navigator.maxTouchPoints > 0, maxTouchPoints: navigator.maxTouchPoints, colorDepth: screen.colorDepth, mediaMatches: ee() });
656
+ });
657
+ }), v("system", function() {
658
+ return new Promise(function(n) {
659
+ var t = M();
660
+ n({ platform: window.navigator.platform, cookieEnabled: window.navigator.cookieEnabled, productSub: navigator.productSub, product: navigator.product, useragent: navigator.userAgent, hardwareConcurrency: navigator.hardwareConcurrency, browser: { name: t.name, version: t.version }, applePayVersion: te() });
661
+ });
662
+ });
663
+ var h, ne = M().name !== "SamsungBrowser" ? 1 : 3, l = null;
664
+ v("webgl", function() {
665
+ return w(this, void 0, void 0, function() {
666
+ var n;
667
+ return y(this, function(t) {
668
+ typeof document < "u" && ((h = document.createElement("canvas")).width = 200, h.height = 100, l = h.getContext("webgl"));
669
+ try {
670
+ if (!l) throw new Error("WebGL not supported");
671
+ return n = Array.from({ length: ne }, function() {
672
+ return function() {
673
+ try {
674
+ if (!l) throw new Error("WebGL not supported");
675
+ var r = `
676
+ attribute vec2 position;
677
+ void main() {
678
+ gl_Position = vec4(position, 0.0, 1.0);
679
+ }
680
+ `, o = `
681
+ precision mediump float;
682
+ void main() {
683
+ gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color
684
+ }
685
+ `, s = l.createShader(l.VERTEX_SHADER), i = l.createShader(l.FRAGMENT_SHADER);
686
+ if (!s || !i) throw new Error("Failed to create shaders");
687
+ if (l.shaderSource(s, r), l.shaderSource(i, o), l.compileShader(s), !l.getShaderParameter(s, l.COMPILE_STATUS)) throw new Error("Vertex shader compilation failed: " + l.getShaderInfoLog(s));
688
+ if (l.compileShader(i), !l.getShaderParameter(i, l.COMPILE_STATUS)) throw new Error("Fragment shader compilation failed: " + l.getShaderInfoLog(i));
689
+ var e = l.createProgram();
690
+ if (!e) throw new Error("Failed to create shader program");
691
+ if (l.attachShader(e, s), l.attachShader(e, i), l.linkProgram(e), !l.getProgramParameter(e, l.LINK_STATUS)) throw new Error("Shader program linking failed: " + l.getProgramInfoLog(e));
692
+ l.useProgram(e);
693
+ for (var c = 137, d = new Float32Array(4 * c), u = 2 * Math.PI / c, a = 0; a < c; a++) {
694
+ var m = a * u;
695
+ d[4 * a] = 0, d[4 * a + 1] = 0, d[4 * a + 2] = Math.cos(m) * (h.width / 2), d[4 * a + 3] = Math.sin(m) * (h.height / 2);
696
+ }
697
+ var D = l.createBuffer();
698
+ l.bindBuffer(l.ARRAY_BUFFER, D), l.bufferData(l.ARRAY_BUFFER, d, l.STATIC_DRAW);
699
+ var R = l.getAttribLocation(e, "position");
700
+ l.enableVertexAttribArray(R), l.vertexAttribPointer(R, 2, l.FLOAT, !1, 0, 0), l.viewport(0, 0, h.width, h.height), l.clearColor(0, 0, 0, 1), l.clear(l.COLOR_BUFFER_BIT), l.drawArrays(l.LINES, 0, 2 * c);
701
+ var x = new Uint8ClampedArray(h.width * h.height * 4);
702
+ return l.readPixels(0, 0, h.width, h.height, l.RGBA, l.UNSIGNED_BYTE, x), new ImageData(x, h.width, h.height);
703
+ } catch {
704
+ return new ImageData(1, 1);
705
+ } finally {
706
+ l && (l.bindBuffer(l.ARRAY_BUFFER, null), l.useProgram(null), l.viewport(0, 0, l.drawingBufferWidth, l.drawingBufferHeight), l.clearColor(0, 0, 0, 0));
707
+ }
708
+ }();
709
+ }), [2, { commonImageHash: I(U(n, h.width, h.height).data.toString()).toString() }];
710
+ } catch {
711
+ return [2, { webgl: "unsupported" }];
712
+ }
713
+ return [2];
714
+ });
715
+ });
716
+ });
717
+ var S = function(n, t, r, o) {
718
+ for (var s = (r - t) / o, i = 0, e = 0; e < o; e++)
719
+ i += n(t + (e + 0.5) * s);
720
+ return i * s;
721
+ };
722
+ v("math", function() {
723
+ return w(void 0, void 0, void 0, function() {
724
+ return y(this, function(n) {
725
+ return [2, { acos: Math.acos(0.5), asin: S(Math.asin, -1, 1, 97), atan: S(Math.atan, -1, 1, 97), cos: S(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: S(Math.sin, -Math.PI, Math.PI, 97), sinh: S(Math.sinh, -9 / 7, 7 / 9, 97), sqrt: Math.sqrt(2), tan: S(Math.tan, 0, 2 * Math.PI, 97), tanh: S(Math.tanh, -9 / 7, 7 / 9, 97) }];
726
+ });
727
+ });
728
+ });
729
+ class ie {
730
+ constructor(t, r) {
731
+ p(this, "config");
732
+ p(this, "sdkInfo");
733
+ p(this, "userId");
734
+ p(this, "sessionId");
735
+ /**
736
+ * Performs a search operation.
737
+ * @param {SearchParams} searchParams - The parameters for the search.
738
+ * @returns {Promise<SearchcraftResponse>} - Returns the search response or throws an error.
739
+ */
740
+ p(this, "search", async (t) => {
741
+ if (this.sendMeasureEvent("search_requested", {
742
+ search_term: t.query
743
+ }), (t.query.match(/"/g) || []).length % 2 !== 0)
744
+ throw new Error(
745
+ "The search term contains an uneven number of quote characters."
746
+ );
747
+ try {
748
+ const o = {
749
+ query: this.buildQueryObject(t),
750
+ limit: t.limit ?? 20
751
+ // Default to 20 if not provided
752
+ };
753
+ t.offset !== void 0 && (o.offset = t.offset), t.facets && (o.facets = t.facets), t.order_by && (o.order_by = t.order_by, o.sort = t.sort === "desc" || t.sort === "asc" ? t.sort : "asc");
754
+ const s = {
755
+ method: "POST",
756
+ headers: {
757
+ Authorization: this.config.readKey,
758
+ "Content-Type": "application/json",
759
+ "X-Sc-User-Id": this.userId
760
+ },
761
+ body: JSON.stringify(o)
762
+ }, i = await fetch(this.baseSearchUrl, s);
763
+ if (!i.ok)
764
+ throw new Error(
765
+ `Error: ${i.statusText} (Status: ${i.status})`
766
+ );
767
+ const e = await i.json();
768
+ return this.sendMeasureEvent("search_response_received", {
769
+ search_term: t.query,
770
+ number_of_documents: e.data.count
771
+ }), e;
772
+ } catch (o) {
773
+ throw console.error("Error parsing response:", o), o;
774
+ }
775
+ });
776
+ /**
777
+ * Sends a measure event to the `/measure/event` endpoint for analytics purposes.
778
+ *
779
+ * @param {MeasureEventName} eventName - Name of the event.
780
+ * @param {Partial<MeasureRequestProperties>} properties - Additional properties to send with the event.
781
+ * @param {Partial<MeasureRequestUser>} user - Additional user properites to send with the event.
782
+ */
783
+ p(this, "sendMeasureEvent", async (t, r = {}, o = {}) => {
784
+ const s = {
785
+ event_name: t,
786
+ properties: {
787
+ searchcraft_organization_id: this.config.organizationId,
788
+ searchcraft_application_id: this.config.applicationId,
789
+ searchcraft_index_names: this.config.index,
790
+ ...r
791
+ },
792
+ user: {
793
+ ...this.measureRequestUser,
794
+ ...o
795
+ }
796
+ }, i = JSON.stringify(s), e = `${this.baseMeasureUrl}/event`;
797
+ try {
798
+ const c = await fetch(e, {
799
+ method: "POST",
800
+ headers: {
801
+ "Content-Type": "application/json",
802
+ Authorization: this.config.readKey,
803
+ "X-Sc-User-Id": this.userId
804
+ },
805
+ body: i,
806
+ keepalive: !0
807
+ });
808
+ if (!c.ok)
809
+ throw new Error(
810
+ `Failed to send request: ${c.status} ${c.statusText}`
811
+ );
812
+ return;
813
+ } catch (c) {
814
+ throw console.error("Error sending MeasureRequest:", c), c;
815
+ }
816
+ });
817
+ if (!t.endpointURL || !t.index || !t.readKey)
818
+ throw new Error(
819
+ "Endpoint URL, Index value(s), and Read Key must be provided"
820
+ );
821
+ this.config = t, this.sdkInfo = r, this.userId = t.userId || "", this.sessionId = N(), this.initMeasure();
822
+ }
823
+ /**
824
+ * Initializes this.userId based on config & sends the `sdk_innitialized` event.
825
+ */
826
+ async initMeasure() {
827
+ if (!this.config.userId) {
828
+ const t = await $();
829
+ this.userId = t;
830
+ }
831
+ this.sendMeasureEvent("sdk_initialized");
832
+ }
833
+ /**
834
+ * Getter for the base url used by the /search endpoint.
835
+ */
836
+ get baseSearchUrl() {
837
+ return `${this.config.endpointURL}/index/${this.config.index.join(",")}/search`;
838
+ }
839
+ /**
840
+ * Getter for the base url used by the /measure endpoints.
841
+ */
842
+ get baseMeasureUrl() {
843
+ return `${this.config.endpointURL}/measure`;
844
+ }
845
+ /**
846
+ * Getter for the measure request user. Uses config values + navigator values.
847
+ */
848
+ get measureRequestUser() {
849
+ return {
850
+ user_id: this.userId,
851
+ locale: navigator.language || "en-US",
852
+ os: navigator.userAgent.includes("Windows") ? "Windows" : navigator.userAgent.includes("Mac") ? "Mac" : navigator.userAgent.includes("Linux") ? "Linux" : "Unknown",
853
+ platform: navigator.platform || "Unknown",
854
+ sdk_name: this.sdkInfo.sdkName,
855
+ sdk_version: this.sdkInfo.sdkVersion,
856
+ user_agent: navigator.userAgent || "Unknown"
857
+ };
858
+ }
859
+ /**
860
+ * Builds a query object for the search request.
861
+ * @param {SearchParams} searchParams - The parameters for the search.
862
+ * @returns {QueryObject} - A properly formatted query object.
863
+ */
864
+ buildQueryObject(t) {
865
+ var i;
866
+ const r = [];
867
+ let o = "should";
868
+ if (t.yearsRange) {
869
+ o = "must";
870
+ const e = /* @__PURE__ */ new Date(`${t.yearsRange[0]}-01-01`), c = /* @__PURE__ */ new Date(`${t.yearsRange[1]}-12-31`);
871
+ r.push({
872
+ occur: o,
873
+ normal: {
874
+ ctx: `date_published:[${e.toISOString()} TO ${c.toISOString()}]`
875
+ }
876
+ });
877
+ }
878
+ const s = Object.keys(((i = t == null ? void 0 : t.facets) == null ? void 0 : i.section.counts) || {});
879
+ return s && s.length > 0 && (o = "must", r.push({
880
+ occur: o,
881
+ normal: {
882
+ ctx: `section: IN [${s.join(" ")}]`
883
+ }
884
+ })), t.sort === "desc" ? t.order_by = "date_published" : t.order_by = "", r.push({
885
+ occur: o,
886
+ // Valid, as 'occur' is a required property in QueryItem
887
+ [t.mode]: { ctx: t.query }
888
+ // Ensure dynamic mode is inside queryType
889
+ }), r;
890
+ }
891
+ }
892
+ var P = /* @__PURE__ */ ((n) => (n[n.DEBUG = 0] = "DEBUG", n[n.INFO = 1] = "INFO", n[n.WARN = 2] = "WARN", n[n.ERROR = 3] = "ERROR", n))(P || {});
893
+ class ae {
894
+ constructor(t) {
895
+ p(this, "logLevel");
896
+ p(this, "logFormatter");
897
+ this.logLevel = t.logLevel || 1, this.logFormatter = t.logFormatter || this.defaultFormatter;
898
+ }
899
+ defaultFormatter(t, r) {
900
+ return `[${P[t]}] ${( new Date()).toISOString()}: ${r}`;
901
+ }
902
+ debug(t) {
903
+ this.logLevel <= 0 && console.log(this.logFormatter(0, t));
904
+ }
905
+ info(t) {
906
+ this.logLevel <= 1 && console.info(this.logFormatter(1, t));
907
+ }
908
+ warn(t) {
909
+ this.logLevel <= 2 && console.warn(this.logFormatter(2, t));
910
+ }
911
+ error(t) {
912
+ this.logLevel <= 3 && console.error(this.logFormatter(3, t));
913
+ }
914
+ }
915
+
916
+ // Zustand store for Searchcraft state
917
+ const useSearchcraftStore = zustand.create((set, get) => {
918
+ let searchcraft = null;
919
+ let debuggerInstance = null;
920
+ const log = (level, message) => {
921
+ if (debuggerInstance) {
922
+ switch (level) {
923
+ case P.DEBUG:
924
+ debuggerInstance.debug(message);
925
+ break;
926
+ case P.INFO:
927
+ debuggerInstance.info(message);
928
+ break;
929
+ case P.WARN:
930
+ debuggerInstance.warn(message);
931
+ break;
932
+ case P.ERROR:
933
+ debuggerInstance.error(message);
934
+ break;
935
+ }
936
+ }
937
+ };
938
+ return {
939
+ query: '',
940
+ isRequesting: false,
941
+ searchResults: null,
942
+ facets: null,
943
+ getSearchcraftInstance: () => searchcraft,
944
+ selectedFilters: [],
945
+ searchParams: {
946
+ mode: 'fuzzy',
947
+ sort: 'asc',
948
+ },
949
+ setQuery: (query) => set({ query }),
950
+ setSearchResults: (results) => set({ searchResults: results }),
951
+ setFacets: (facets) => set({ facets }),
952
+ setSelectedFilters: (filters) => set({ selectedFilters: filters }),
953
+ setIsRequesting: (isRequesting) => set({ isRequesting }),
954
+ setSearchParams: (params) => set((state) => ({
955
+ searchParams: Object.assign(Object.assign({}, state.searchParams), params),
956
+ })),
957
+ setYearsRange: (yearsRange) => set((state) => ({
958
+ searchParams: Object.assign(Object.assign({}, state.searchParams), { yearsRange }),
959
+ })),
960
+ search: async () => {
961
+ const { query, selectedFilters, setIsRequesting, setSearchResults, setFacets, searchParams, } = get();
962
+ if (!searchcraft) {
963
+ throw new Error('Searchcraft instance is not initialized.');
964
+ }
965
+ setIsRequesting(true);
966
+ log(P.INFO, `Starting search with query: "${query}"`);
967
+ const filters = filterPaths(selectedFilters);
968
+ try {
969
+ const searchRequest = {
970
+ query,
971
+ mode: searchParams.mode,
972
+ sort: searchParams.sort,
973
+ facets: selectedFilters.length > 0
974
+ ? {
975
+ section: {
976
+ counts: Object.fromEntries(filters.map((path) => [path, 1])),
977
+ },
978
+ }
979
+ : null,
980
+ yearsRange: searchParams.yearsRange,
981
+ };
982
+ const results = await searchcraft.search(searchRequest);
983
+ setSearchResults(results);
984
+ const updatedFacets = results.data.facets || null;
985
+ setFacets(updatedFacets);
986
+ log(P.DEBUG, `Search results: ${JSON.stringify(results)}`);
987
+ log(P.DEBUG, `Updated facets: ${JSON.stringify(updatedFacets)}`);
988
+ }
989
+ catch (error) {
990
+ console.error(`Search failed: ${error.message}`);
991
+ log(P.ERROR, `Search failed with error: ${error.message}`);
992
+ }
993
+ finally {
994
+ setIsRequesting(false);
995
+ }
996
+ },
997
+ initialize: (searchcraftInstance, debug = false) => {
998
+ searchcraft = searchcraftInstance;
999
+ debuggerInstance = debug
1000
+ ? new ae({ logLevel: P.DEBUG })
1001
+ : null;
1002
+ log(P.INFO, 'Searchcraft store initialized.');
1003
+ },
1004
+ };
1005
+ });
1006
+ const useThemeStore = zustand.create((set) => ({
1007
+ theme: 'light',
1008
+ toggleTheme: () => set((state) => ({ theme: state.theme === 'light' ? 'dark' : 'light' })),
1009
+ }));
1010
+
1011
+ exports.extractDynamicProperties = extractDynamicProperties;
1012
+ exports.flattenFacets = flattenFacets;
1013
+ exports.formatNumberWithCommas = formatNumberWithCommas;
1014
+ exports.getFormattedTimeFromNow = getFormattedTimeFromNow;
1015
+ exports.ie = ie;
1016
+ exports.parseCustomStyles = parseCustomStyles;
1017
+ exports.parseSearchKeys = parseSearchKeys;
1018
+ exports.serializeStyles = serializeStyles;
1019
+ exports.useSearchcraftStore = useSearchcraftStore;
1020
+ exports.useThemeStore = useThemeStore;
1021
+
1022
+ //# sourceMappingURL=store-e3bbdd49.js.map