@envive-ai/react-hooks 0.2.5 → 0.2.6-alpha-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 (646) hide show
  1. package/dist/AmplitudeOperations-C3i2q2Bn.js +34 -0
  2. package/dist/AmplitudeOperations-DcuLn1Zk.cjs +41 -0
  3. package/dist/{NewOrgConfig-B98Y9tMb.js → NewOrgConfig-BtvujFC8.js} +2 -2
  4. package/dist/{NewOrgConfig-ZbBKiByQ.cjs → NewOrgConfig-CHt7Xg4t.cjs} +2 -2
  5. package/dist/TrackComponentVisibleEvent-Be7wfXXY.js +53 -0
  6. package/dist/TrackComponentVisibleEvent-KUihr_y4.cjs +60 -0
  7. package/dist/amplitudeContext-CRFxGj_x.d.ts +52 -0
  8. package/dist/amplitudeContext-ZkerrMUa.d.cts +52 -0
  9. package/dist/api-D4HaU2Gf.js +166 -0
  10. package/dist/api-D4Xoibs9.cjs +239 -0
  11. package/dist/application/models/graphql/index.cjs +3 -3
  12. package/dist/application/models/graphql/index.d.cts +2 -2
  13. package/dist/application/models/graphql/index.d.ts +2 -2
  14. package/dist/application/models/graphql/index.js +2 -3
  15. package/dist/application/models/guards/api/index.cjs +3 -3
  16. package/dist/application/models/guards/api/index.d.cts +2 -2
  17. package/dist/application/models/guards/api/index.d.ts +2 -2
  18. package/dist/application/models/guards/api/index.js +3 -3
  19. package/dist/application/models/guards/utils.cjs +1 -1
  20. package/dist/application/models/guards/utils.d.ts +1 -1
  21. package/dist/application/models/guards/utils.js +1 -1
  22. package/dist/application/models/index.cjs +7 -23
  23. package/dist/application/models/index.d.cts +167 -11
  24. package/dist/application/models/index.d.ts +168 -12
  25. package/dist/application/models/index.js +7 -11
  26. package/dist/application/utils/index.cjs +19 -19
  27. package/dist/application/utils/index.d.cts +14 -63
  28. package/dist/application/utils/index.d.ts +14 -63
  29. package/dist/application/utils/index.js +19 -19
  30. package/dist/{atomStore-DXTVqiKc.js → atomStore-BuopbV9k.js} +1 -1
  31. package/dist/{atomStore-DNji91Im.cjs → atomStore-CZKe3itM.cjs} +1 -1
  32. package/dist/atoms/app/index.cjs +19 -19
  33. package/dist/atoms/app/index.d.cts +9 -20
  34. package/dist/atoms/app/index.d.ts +2 -13
  35. package/dist/atoms/app/index.js +19 -19
  36. package/dist/atoms/atomStore/index.cjs +1 -1
  37. package/dist/atoms/atomStore/index.js +1 -1
  38. package/dist/atoms/chat/index.cjs +21 -21
  39. package/dist/atoms/chat/index.d.cts +37 -45
  40. package/dist/atoms/chat/index.d.ts +35 -43
  41. package/dist/atoms/chat/index.js +21 -21
  42. package/dist/atoms/globalSearch/index.cjs +1 -1
  43. package/dist/atoms/globalSearch/index.d.cts +6 -6
  44. package/dist/atoms/globalSearch/index.d.ts +6 -6
  45. package/dist/atoms/globalSearch/index.js +1 -1
  46. package/dist/atoms/org/index.cjs +10 -11
  47. package/dist/atoms/org/index.d.cts +19 -31
  48. package/dist/atoms/org/index.d.ts +19 -31
  49. package/dist/atoms/org/index.js +2 -3
  50. package/dist/atoms/search/index.cjs +7 -47
  51. package/dist/atoms/search/index.d.cts +76 -14
  52. package/dist/atoms/search/index.d.ts +76 -14
  53. package/dist/atoms/search/index.js +7 -29
  54. package/dist/atoms/search/utils.cjs +1 -1
  55. package/dist/atoms/search/utils.d.cts +1 -1
  56. package/dist/atoms/search/utils.d.ts +1 -1
  57. package/dist/atoms/search/utils.js +1 -1
  58. package/dist/cdnContext-B2-NiEiW.js +38 -0
  59. package/dist/cdnContext-CdhppNeT.cjs +53 -0
  60. package/dist/chat-C9KdnT5V.js +230 -0
  61. package/dist/chat-bImNRcnQ.cjs +330 -0
  62. package/dist/chatState-DqWSgmjC.cjs +120 -0
  63. package/dist/chatState-DxG0t4fK.js +34 -0
  64. package/dist/config/index.d.cts +4 -4
  65. package/dist/config/index.d.ts +4 -4
  66. package/dist/config/locators/components/chat/index.d.cts +1 -1
  67. package/dist/config/locators/components/chat/index.d.ts +1 -1
  68. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  69. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  70. package/dist/config/locators/components/common/index.d.cts +1 -1
  71. package/dist/config/locators/components/common/index.d.ts +1 -1
  72. package/dist/config/locators/components/index.d.cts +1 -1
  73. package/dist/config/locators/components/index.d.ts +1 -1
  74. package/dist/config/locators/components/search/index.d.cts +1 -1
  75. package/dist/config/locators/components/search/index.d.ts +1 -1
  76. package/dist/config/locators/index.d.cts +4 -4
  77. package/dist/config/locators/index.d.ts +4 -4
  78. package/dist/contexts/amplitudeContext/index.cjs +19 -19
  79. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  80. package/dist/contexts/amplitudeContext/index.d.ts +1 -1
  81. package/dist/contexts/amplitudeContext/index.js +19 -19
  82. package/dist/contexts/cdnContext/index.cjs +4 -4
  83. package/dist/contexts/cdnContext/index.d.cts +2 -6
  84. package/dist/contexts/cdnContext/index.d.ts +2 -6
  85. package/dist/contexts/cdnContext/index.js +4 -4
  86. package/dist/contexts/enviveConfigContext/index.cjs +4 -4
  87. package/dist/contexts/enviveConfigContext/index.d.cts +3 -24
  88. package/dist/contexts/enviveConfigContext/index.d.ts +3 -24
  89. package/dist/contexts/enviveConfigContext/index.js +4 -4
  90. package/dist/contexts/enviveCssContext/index.cjs +15 -19
  91. package/dist/contexts/enviveCssContext/index.d.cts +3 -5
  92. package/dist/contexts/enviveCssContext/index.d.ts +3 -5
  93. package/dist/contexts/enviveCssContext/index.js +15 -19
  94. package/dist/contexts/featureFlagContext/index.cjs +9 -10
  95. package/dist/contexts/featureFlagContext/index.d.cts +3 -11
  96. package/dist/contexts/featureFlagContext/index.d.ts +3 -11
  97. package/dist/contexts/featureFlagContext/index.js +6 -7
  98. package/dist/contexts/featureFlagServiceContext/index.cjs +4 -3
  99. package/dist/contexts/featureFlagServiceContext/index.d.cts +1 -4
  100. package/dist/contexts/featureFlagServiceContext/index.d.ts +1 -4
  101. package/dist/contexts/featureFlagServiceContext/index.js +4 -3
  102. package/dist/contexts/graphqlContext/index.cjs +8 -13
  103. package/dist/contexts/graphqlContext/index.d.cts +11 -14
  104. package/dist/contexts/graphqlContext/index.d.ts +11 -14
  105. package/dist/contexts/graphqlContext/index.js +8 -13
  106. package/dist/contexts/localStorageContext/index.cjs +3 -3
  107. package/dist/contexts/localStorageContext/index.d.cts +3 -22
  108. package/dist/contexts/localStorageContext/index.d.ts +3 -22
  109. package/dist/contexts/localStorageContext/index.js +4 -3
  110. package/dist/contexts/newOrgConfigContext/index.cjs +13 -17
  111. package/dist/contexts/newOrgConfigContext/index.d.cts +12 -15
  112. package/dist/contexts/newOrgConfigContext/index.d.ts +12 -15
  113. package/dist/contexts/newOrgConfigContext/index.js +13 -17
  114. package/dist/contexts/searchContext/index.cjs +24 -24
  115. package/dist/contexts/searchContext/index.d.cts +2 -7
  116. package/dist/contexts/searchContext/index.d.ts +2 -7
  117. package/dist/contexts/searchContext/index.js +24 -24
  118. package/dist/contexts/sessionStorageContext/index.cjs +2 -2
  119. package/dist/contexts/sessionStorageContext/index.d.cts +2 -6
  120. package/dist/contexts/sessionStorageContext/index.d.ts +2 -6
  121. package/dist/contexts/sessionStorageContext/index.js +2 -2
  122. package/dist/contexts/shopifyUrlContext/index.cjs +2 -2
  123. package/dist/contexts/shopifyUrlContext/index.d.cts +2 -11
  124. package/dist/contexts/shopifyUrlContext/index.d.ts +2 -11
  125. package/dist/contexts/shopifyUrlContext/index.js +2 -2
  126. package/dist/contexts/systemSettingsContext/index.cjs +4 -4
  127. package/dist/contexts/systemSettingsContext/index.d.cts +6 -16
  128. package/dist/contexts/systemSettingsContext/index.d.ts +4 -14
  129. package/dist/contexts/systemSettingsContext/index.js +4 -4
  130. package/dist/contexts/userIdentityContext/index.cjs +19 -19
  131. package/dist/contexts/userIdentityContext/index.d.cts +11 -2
  132. package/dist/contexts/userIdentityContext/index.d.ts +11 -2
  133. package/dist/contexts/userIdentityContext/index.js +19 -19
  134. package/dist/dist-B7BErEyV.cjs +6019 -0
  135. package/dist/dist-CtkINi1R.js +5923 -0
  136. package/dist/domObserver-B19-69gW.js +285 -0
  137. package/dist/{domObserver-v9ODTyfT.js → domObserver-CwieVNgj.cjs} +23 -4
  138. package/dist/enviveConfig-Be2kZE7j.js +62 -0
  139. package/dist/enviveConfig-u50Rpz-G.cjs +130 -0
  140. package/dist/enviveConfigContext-1oiQuocd.js +45 -0
  141. package/dist/enviveConfigContext-kQfHEGdJ.cjs +60 -0
  142. package/dist/events/index.cjs +2 -3
  143. package/dist/events/index.d.cts +2 -15
  144. package/dist/events/index.d.ts +2 -15
  145. package/dist/events/index.js +2 -2
  146. package/dist/events-CgFGtanE.cjs +69 -0
  147. package/dist/events-WOOrnUAx.js +63 -0
  148. package/dist/exceptions/index.cjs +4 -0
  149. package/dist/exceptions/index.d.cts +12 -0
  150. package/dist/exceptions/index.d.ts +12 -0
  151. package/dist/exceptions/index.js +3 -0
  152. package/dist/exceptions-BjDgLzGi.cjs +32 -0
  153. package/dist/exceptions-CUGY31Ua.js +20 -0
  154. package/dist/featureFlagServiceContext-B7je7VZV.d.cts +24 -0
  155. package/dist/featureFlagServiceContext-CPsygiHO.js +46 -0
  156. package/dist/featureFlagServiceContext-ahy3jou0.d.ts +24 -0
  157. package/dist/featureFlagServiceContext-pPneufeB.cjs +66 -0
  158. package/dist/{globalSearch-Ccxq8hNF.js → globalSearch-B_v9qfCT.js} +1 -1
  159. package/dist/{globalSearch-FBk2epe8.cjs → globalSearch-OiF96VLG.cjs} +1 -1
  160. package/dist/graphql-CvAHWmel.js +46 -0
  161. package/dist/graphql-JaGqsToc.cjs +70 -0
  162. package/dist/graphqlContext-BuXJ5DiW.js +96 -0
  163. package/dist/graphqlContext-CU7NIJo7.cjs +111 -0
  164. package/dist/hooks/AmplitudeOperations/index.cjs +21 -22
  165. package/dist/hooks/AmplitudeOperations/index.d.cts +2 -2
  166. package/dist/hooks/AmplitudeOperations/index.d.ts +2 -2
  167. package/dist/hooks/AmplitudeOperations/index.js +20 -21
  168. package/dist/hooks/AppDetails/index.cjs +22 -22
  169. package/dist/hooks/AppDetails/index.d.cts +3 -23
  170. package/dist/hooks/AppDetails/index.d.ts +3 -23
  171. package/dist/hooks/AppDetails/index.js +22 -22
  172. package/dist/hooks/CdnOperations/index.cjs +4 -4
  173. package/dist/hooks/CdnOperations/index.d.cts +1 -1
  174. package/dist/hooks/CdnOperations/index.js +4 -4
  175. package/dist/hooks/ChatToggle/index.cjs +24 -24
  176. package/dist/hooks/ChatToggle/index.d.cts +2 -2
  177. package/dist/hooks/ChatToggle/index.d.ts +2 -2
  178. package/dist/hooks/ChatToggle/index.js +22 -22
  179. package/dist/hooks/ChatToggleAnalytics/index.cjs +23 -24
  180. package/dist/hooks/ChatToggleAnalytics/index.d.cts +2 -2
  181. package/dist/hooks/ChatToggleAnalytics/index.d.ts +2 -2
  182. package/dist/hooks/ChatToggleAnalytics/index.js +22 -23
  183. package/dist/hooks/CustomerSupportHandoff/index.cjs +2 -2
  184. package/dist/hooks/CustomerSupportHandoff/index.js +2 -2
  185. package/dist/hooks/Debounce/index.cjs +20 -2
  186. package/dist/hooks/Debounce/index.js +18 -2
  187. package/dist/hooks/ElementObserver/index.cjs +4 -6
  188. package/dist/hooks/ElementObserver/index.d.cts +4 -25
  189. package/dist/hooks/ElementObserver/index.d.ts +4 -25
  190. package/dist/hooks/ElementObserver/index.js +4 -6
  191. package/dist/hooks/GrabAndScroll/index.cjs +1 -1
  192. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  193. package/dist/hooks/GrabAndScroll/index.js +1 -1
  194. package/dist/hooks/GraphQLConfig/index.cjs +9 -14
  195. package/dist/hooks/GraphQLConfig/index.d.cts +2 -13
  196. package/dist/hooks/GraphQLConfig/index.d.ts +2 -13
  197. package/dist/hooks/GraphQLConfig/index.js +9 -14
  198. package/dist/hooks/IdentifyUser/index.cjs +19 -19
  199. package/dist/hooks/IdentifyUser/index.js +19 -19
  200. package/dist/hooks/ImageResolver/index.cjs +20 -29
  201. package/dist/hooks/ImageResolver/index.js +20 -29
  202. package/dist/hooks/Intersection/index.cjs +1 -1
  203. package/dist/hooks/Intersection/index.js +1 -1
  204. package/dist/hooks/LocalStorageOperations/index.cjs +8 -7
  205. package/dist/hooks/LocalStorageOperations/index.js +4 -3
  206. package/dist/hooks/MessageFilter/index.cjs +3 -12
  207. package/dist/hooks/MessageFilter/index.d.cts +2 -17
  208. package/dist/hooks/MessageFilter/index.d.ts +2 -17
  209. package/dist/hooks/MessageFilter/index.js +2 -11
  210. package/dist/hooks/NewOrgConfig/index.cjs +14 -18
  211. package/dist/hooks/NewOrgConfig/index.d.cts +3 -16
  212. package/dist/hooks/NewOrgConfig/index.d.ts +3 -16
  213. package/dist/hooks/NewOrgConfig/index.js +14 -18
  214. package/dist/hooks/Search/index.cjs +332 -167
  215. package/dist/hooks/Search/index.d.cts +3 -57
  216. package/dist/hooks/Search/index.d.ts +3 -57
  217. package/dist/hooks/Search/index.js +320 -156
  218. package/dist/hooks/SearchOperations/index.cjs +25 -25
  219. package/dist/hooks/SearchOperations/index.d.cts +2 -3
  220. package/dist/hooks/SearchOperations/index.d.ts +2 -3
  221. package/dist/hooks/SearchOperations/index.js +25 -25
  222. package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
  223. package/dist/hooks/SessionStorageOperations/index.js +2 -2
  224. package/dist/hooks/ShopifyUrlOperations/index.cjs +3 -3
  225. package/dist/hooks/ShopifyUrlOperations/index.d.cts +2 -4
  226. package/dist/hooks/ShopifyUrlOperations/index.d.ts +2 -4
  227. package/dist/hooks/ShopifyUrlOperations/index.js +3 -3
  228. package/dist/hooks/SnapCalculator/index.cjs +1 -1
  229. package/dist/hooks/SnapCalculator/index.d.cts +4 -3
  230. package/dist/hooks/SnapCalculator/index.d.ts +4 -3
  231. package/dist/hooks/SnapCalculator/index.js +1 -1
  232. package/dist/hooks/SystemSettingsContext/index.cjs +17 -6
  233. package/dist/hooks/SystemSettingsContext/index.d.cts +5 -15
  234. package/dist/hooks/SystemSettingsContext/index.d.ts +5 -15
  235. package/dist/hooks/SystemSettingsContext/index.js +15 -6
  236. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +21 -21
  237. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -3
  238. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -3
  239. package/dist/hooks/TrackComponentVisibleEvent/index.js +21 -21
  240. package/dist/hooks/UpdateAnalyticsProps/index.cjs +21 -21
  241. package/dist/hooks/UpdateAnalyticsProps/index.js +20 -20
  242. package/dist/hooks/utils.d.cts +20 -13
  243. package/dist/hooks/utils.d.ts +20 -13
  244. package/dist/{index-LTdMHOxj.d.ts → index-B4cSHxVN.d.ts} +1 -1
  245. package/dist/{index-DzbkQtaK.d.cts → index-BQpWG3Jm.d.cts} +1 -1
  246. package/dist/index-BVZbvpx_.d.cts +11 -0
  247. package/dist/index-CEmUfoZa.d.ts +42 -0
  248. package/dist/index-CMZcE7pk.d.cts +224 -0
  249. package/dist/{index-DBqgBV9N.d.ts → index-CYGpI6hE.d.ts} +1 -1
  250. package/dist/{index-9NE86em3.d.cts → index-ClVBVK15.d.cts} +1 -1
  251. package/dist/{index-nDWHlouq.d.ts → index-Clf4wYaJ.d.ts} +1 -1
  252. package/dist/index-DeQte6mb.d.ts +11 -0
  253. package/dist/index-Dzv6WwSZ.d.ts +224 -0
  254. package/dist/{index-FQjyuD3D.d.cts → index-ca7Qn8o0.d.cts} +1 -1
  255. package/dist/{index-DHgVW8ey.d.ts → index-dngXrfnT.d.ts} +1 -1
  256. package/dist/index-qOBU4GEh.d.cts +42 -0
  257. package/dist/{index-Da1s8h5C.d.cts → index-w64il54a.d.cts} +1 -1
  258. package/dist/interceptors/index.cjs +28 -3
  259. package/dist/interceptors/index.d.cts +4 -15
  260. package/dist/interceptors/index.d.ts +4 -15
  261. package/dist/interceptors/index.js +25 -3
  262. package/dist/localStorageContext-Bb2b_3ue.cjs +104 -0
  263. package/dist/localStorageContext-D2uXKahw.js +90 -0
  264. package/dist/{logger-W3lqg-4b.js → logger-BMVdhQOV.js} +1 -1
  265. package/dist/{logger-TBIl4uIH.cjs → logger-BqHq67zN.cjs} +1 -1
  266. package/dist/models-DmsMlaHT.js +1118 -0
  267. package/dist/models-wh2gh_Qz.cjs +1305 -0
  268. package/dist/newOrgConfigAtom-Dsk0fJNR.js +8 -0
  269. package/dist/{newOrgConfigAtom-A4BEeHMf.cjs → newOrgConfigAtom-hs5A1pbZ.cjs} +1 -1
  270. package/dist/newOrgConfigContext-DPUxIF2G.js +53 -0
  271. package/dist/newOrgConfigContext-lw85mMS-.cjs +68 -0
  272. package/dist/nodeSelector-CbWcUbuc.d.ts +28 -0
  273. package/dist/nodeSelector-Cj-Xl1LP.d.cts +28 -0
  274. package/dist/org-C2kLSSe9.cjs +111 -0
  275. package/dist/org-CIczyLRP.js +32 -0
  276. package/dist/search-BzXoTgRx.js +233 -0
  277. package/dist/search-D1cU29CV.cjs +312 -0
  278. package/dist/searchContext-C8DpjnqD.js +129 -0
  279. package/dist/searchContext-R_XuFzYe.cjs +145 -0
  280. package/dist/searchServiceAdapter-CKc7UXKi.js +16 -0
  281. package/dist/searchServiceAdapter-pROGm3Rf.cjs +34 -0
  282. package/dist/sessionStorageContext-ByaTsDUC.cjs +66 -0
  283. package/dist/sessionStorageContext-DKE97oMv.js +52 -0
  284. package/dist/shopifyUrlContext-G9eqIcsL.cjs +75 -0
  285. package/dist/shopifyUrlContext-WAm0pnPh.js +61 -0
  286. package/dist/systemSettingsContext-B-FZ8UAg.js +39 -0
  287. package/dist/systemSettingsContext-J1sny8W8.cjs +60 -0
  288. package/dist/types/index.cjs +3 -33
  289. package/dist/types/index.d.cts +2 -3
  290. package/dist/types/index.d.ts +2 -3
  291. package/dist/types/index.js +2 -30
  292. package/dist/types-1iJ_FnQQ.cjs +39 -0
  293. package/dist/types-D5du68Vp.js +27 -0
  294. package/dist/urlsParser-C-Vzs--G.cjs +78 -0
  295. package/dist/urlsParser-G7Ocwg0M.js +42 -0
  296. package/dist/useAppDetails-BtK9ZZJs.js +30 -0
  297. package/dist/useAppDetails-Bw2jJ39H.cjs +38 -0
  298. package/dist/useGraphQLConfig-Dc8h2yyN.cjs +76 -0
  299. package/dist/useGraphQLConfig-DuLB3tdv.js +63 -0
  300. package/dist/{useIntersection-BJRFGG0f.js → useIntersection-BWiHkpKL.js} +1 -1
  301. package/dist/{useIntersection-CYRvxtRN.cjs → useIntersection-DZHz44BY.cjs} +1 -1
  302. package/dist/{utils-DIvMgPe8.js → utils-B1LVzQYK.js} +1 -1
  303. package/dist/{utils-Buo4KU5l.cjs → utils-BivlGkeU.cjs} +1 -1
  304. package/dist/{utils-BRNaQkCK.js → utils-CExht7Uj.js} +1 -1
  305. package/dist/{utils-CDw74BCO.cjs → utils-CiJLDPjY.cjs} +1 -1
  306. package/dist/utils-D_kATUj6.js +1 -1
  307. package/dist/utils-DqNhRm2b.cjs +1546 -0
  308. package/dist/utils-IogJwDB9.js +1364 -0
  309. package/dist/utils-hYTjy7hJ.cjs +1 -1
  310. package/dist/{utils-DyTiotQz.d.ts → utils-wWki3L1d.d.ts} +1 -1
  311. package/package.json +7 -25
  312. package/src/application/commerce-api.ts +38 -37
  313. package/src/application/models/graphql/index.ts +1 -0
  314. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -23
  315. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -89
  316. package/src/application/models/guards/api/isApiFormResponse.ts +4 -4
  317. package/src/application/models/guards/api/isApiFormSubmittedResponseAttributes.ts +2 -2
  318. package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +2 -20
  319. package/src/application/models/guards/api/isApiOrgConfigResults.ts +3 -9
  320. package/src/application/models/guards/api/isApiOrganizationConfig.ts +8 -32
  321. package/src/application/models/guards/api/isApiPDPEventAttributes.ts +8 -5
  322. package/src/application/models/guards/api/isApiPLPEventAttributes.ts +14 -10
  323. package/src/application/models/guards/api/isApiPageResponseAttributes.ts +1 -1
  324. package/src/application/models/guards/api/isApiProductResponseAttributes.ts +2 -4
  325. package/src/application/models/guards/api/isApiProductSearchAttributes.ts +9 -6
  326. package/src/application/models/guards/api/isApiProductSearchFilterAttributes.ts +7 -4
  327. package/src/application/models/guards/api/isApiQueryTypedEventAttributes.ts +8 -3
  328. package/src/application/models/guards/api/isApiResponse.ts +22 -15
  329. package/src/application/models/guards/api/isApiReviewResponseAttributes.ts +1 -1
  330. package/src/application/models/guards/api/isApiReviewRichInformation.ts +1 -1
  331. package/src/application/models/guards/api/isApiTextResponseAttributes.ts +1 -1
  332. package/src/application/models/guards/graphQL/isGraphQLColorsConfig.ts +1 -1
  333. package/src/application/models/guards/isBaseEcommerceEvent.ts +1 -2
  334. package/src/application/models/guards/isGA4EcommerceEvent.ts +1 -1
  335. package/src/application/models/guards/isLegacyUAEcommerceEvent.ts +1 -1
  336. package/src/application/models/guards/isMobilePLPChatPlacementParameter.ts +1 -3
  337. package/src/application/models/guards/isSpanxTakeAQuizCtaParameter.ts +5 -3
  338. package/src/application/models/guards/isVariantInfo.ts +6 -1
  339. package/src/application/models/index.ts +30 -95
  340. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  341. package/src/application/models/validators/validateGraphQLColorsConfig.ts +6 -2
  342. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +6 -6
  343. package/src/application/models/validators/validateMobilePLPChatPlacementParameter.ts +5 -3
  344. package/src/application/models/validators/validateOrgConfigResults.ts +6 -5
  345. package/src/application/models/validators/validateOrganizationConfig.ts +11 -8
  346. package/src/application/models/validators/validateResponse.ts +66 -44
  347. package/src/application/models/validators/validateSuggestion.ts +1 -1
  348. package/src/application/models/validators/validateUserEvent.ts +23 -12
  349. package/src/application/utils/analyticsUtils.ts +16 -38
  350. package/src/application/utils/coreContextToApiContext.ts +3 -1
  351. package/src/application/utils/coreUserEventToApiUserEvent.ts +2 -2
  352. package/src/application/utils/elementObserver.ts +1 -1
  353. package/src/application/utils/imageFilter.ts +5 -2
  354. package/src/application/utils/index.ts +20 -21
  355. package/src/application/utils/messageFromFormSubmittedEvent.ts +1 -1
  356. package/src/application/utils/messageFromQueryEvent.ts +1 -1
  357. package/src/application/utils/messageFromResponse.ts +14 -10
  358. package/src/application/utils/messageFromSuggestionEvent.ts +6 -4
  359. package/src/application/utils/mouseEventTypes.ts +1 -1
  360. package/src/application/utils/nextMessageRequestToApiRequest.ts +1 -1
  361. package/src/application/utils/overrides.ts +1 -49
  362. package/src/application/utils/supportedEventRequestToApiRequest.ts +3 -1
  363. package/src/application/utils/urlsParser.ts +1 -7
  364. package/src/atoms/app/index.ts +15 -25
  365. package/src/atoms/app/variant.ts +1 -1
  366. package/src/atoms/chat/chatState.ts +9 -14
  367. package/src/atoms/chat/form.ts +1 -1
  368. package/src/atoms/chat/messageQueue.ts +25 -50
  369. package/src/atoms/chat/replies.ts +40 -43
  370. package/src/atoms/chat/suggestions.ts +34 -29
  371. package/src/atoms/envive/enviveConfig.ts +14 -20
  372. package/src/atoms/org/customerService.ts +4 -8
  373. package/src/atoms/org/graphqlConfig.ts +7 -15
  374. package/src/atoms/org/index.ts +4 -6
  375. package/src/atoms/org/newOrgConfigAtom.ts +2 -2
  376. package/src/atoms/org/orgAnalyticsConfig.ts +1 -1
  377. package/src/atoms/search/index.ts +0 -1
  378. package/src/atoms/search/productFilters.ts +72 -52
  379. package/src/atoms/search/productRetrievalAPI.ts +72 -0
  380. package/src/atoms/search/productRetrievalAdapter.ts +28 -0
  381. package/src/atoms/search/productSorter.ts +2 -2
  382. package/src/atoms/search/searchAPI.ts +42 -60
  383. package/src/atoms/search/searchServiceAdapter.ts +1 -1
  384. package/src/contexts/amplitudeContext/amplitudeContext.tsx +104 -143
  385. package/src/contexts/cdnContext/cdnContext.tsx +9 -16
  386. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +6 -27
  387. package/src/contexts/enviveCssContext/enviveCssContext.tsx +5 -12
  388. package/src/contexts/featureFlagContext/featureFlagContext.tsx +27 -48
  389. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +11 -3
  390. package/src/contexts/graphqlContext/graphqlContext.tsx +40 -95
  391. package/src/contexts/localStorageContext/localStorageContext.tsx +26 -60
  392. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +10 -22
  393. package/src/contexts/searchContext/searchContext.tsx +29 -49
  394. package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +12 -33
  395. package/src/contexts/shopifyUrlContext/shopifyUrlContext.tsx +20 -37
  396. package/src/contexts/systemSettingsContext/systemSettingsContext.tsx +8 -21
  397. package/src/contexts/userIdentityContext/userIdentityContext.tsx +33 -77
  398. package/src/events/index.ts +8 -5
  399. package/src/events/registerAnalyticsListeners.ts +10 -13
  400. package/src/exceptions/index.ts +2 -0
  401. package/src/{types/exceptions → exceptions}/unsupportedProductExceptions.ts +2 -2
  402. package/src/global.d.ts +8 -0
  403. package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +6 -11
  404. package/src/hooks/AppDetails/useAppDetails.ts +10 -24
  405. package/src/hooks/ChatToggle/useChatToggle.ts +7 -19
  406. package/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts +4 -4
  407. package/src/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.ts +1 -1
  408. package/src/hooks/ElementObserver/useElementObserver.ts +14 -32
  409. package/src/hooks/GrabAndScroll/useGrabAndScroll.ts +125 -124
  410. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +5 -7
  411. package/src/hooks/ImageResolver/useImageResolver.ts +24 -31
  412. package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +12 -19
  413. package/src/hooks/MessageFilter/useMessageFilter.ts +1 -7
  414. package/src/hooks/Search/useRecommendedProducts.ts +50 -0
  415. package/src/hooks/Search/useSearch.tsx +80 -210
  416. package/src/hooks/Search/useSearchInput.ts +227 -0
  417. package/src/hooks/SearchOperations/useSearchOperations.ts +8 -12
  418. package/src/hooks/ShopifyUrlOperations/useShopifyUrlOperations.ts +8 -14
  419. package/src/hooks/SnapCalculator/useSnapCalculator.ts +1 -2
  420. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +8 -11
  421. package/src/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.ts +11 -25
  422. package/src/hooks/utils.ts +19 -29
  423. package/src/interceptors/index.ts +1 -2
  424. package/src/interceptors/useMessageInterceptor.ts +10 -6
  425. package/src/{application/models/api/response.ts → types/ApiResponse.ts} +35 -29
  426. package/src/types/FilterAttribute.ts +35 -0
  427. package/src/{application/models/message.ts → types/Message.ts} +38 -34
  428. package/src/types/Suggestion.ts +6 -0
  429. package/src/types/index.ts +4 -4
  430. package/src/util/colorVar.ts +4 -0
  431. package/src/util/configVersion.ts +4 -0
  432. package/src/util/domInsertion.ts +17 -0
  433. package/dist/SystemSettingsContext-CO5c1L62.cjs +0 -20
  434. package/dist/SystemSettingsContext-CXmUlH8i.js +0 -13
  435. package/dist/TrackComponentVisibleEvent-B0WO3ArV.js +0 -52
  436. package/dist/TrackComponentVisibleEvent-LRE9MYzL.cjs +0 -59
  437. package/dist/amplitudeContext-B73xamNe.d.cts +0 -52
  438. package/dist/amplitudeContext-DXnJi0V1.d.ts +0 -52
  439. package/dist/api-BWSsazAG.js +0 -166
  440. package/dist/api-DeW6rHj3.cjs +0 -239
  441. package/dist/application/models/utilityTypes/index.cjs +0 -1
  442. package/dist/application/models/utilityTypes/index.d.cts +0 -2
  443. package/dist/application/models/utilityTypes/index.d.ts +0 -2
  444. package/dist/application/models/utilityTypes/index.js +0 -3
  445. package/dist/application/models/variantInfo/index.cjs +0 -3
  446. package/dist/application/models/variantInfo/index.d.cts +0 -2
  447. package/dist/application/models/variantInfo/index.d.ts +0 -2
  448. package/dist/application/models/variantInfo/index.js +0 -3
  449. package/dist/atoms/search/types.cjs +0 -5
  450. package/dist/atoms/search/types.d.cts +0 -2
  451. package/dist/atoms/search/types.d.ts +0 -2
  452. package/dist/atoms/search/types.js +0 -3
  453. package/dist/cdnContext-CH_-ssYa.js +0 -38
  454. package/dist/cdnContext-D7kHxOzE.cjs +0 -53
  455. package/dist/chat-CqPuT9_V.cjs +0 -393
  456. package/dist/chat-DH70QqJp.js +0 -257
  457. package/dist/chatElementDisplayLocation-BoE6DEdv.d.ts +0 -25
  458. package/dist/chatElementDisplayLocation-DWmfNX_u.d.cts +0 -25
  459. package/dist/chatSearch-BQCZI8MJ.cjs +0 -418
  460. package/dist/chatSearch-D8xCWU8m.js +0 -295
  461. package/dist/chatState-CcFtSqJT.cjs +0 -120
  462. package/dist/chatState-DKnNHmwe.js +0 -34
  463. package/dist/contexts/chatContext/index.cjs +0 -326
  464. package/dist/contexts/chatContext/index.d.cts +0 -15
  465. package/dist/contexts/chatContext/index.d.ts +0 -15
  466. package/dist/contexts/chatContext/index.js +0 -319
  467. package/dist/contexts/types.cjs +0 -7
  468. package/dist/contexts/types.d.cts +0 -4
  469. package/dist/contexts/types.d.ts +0 -4
  470. package/dist/contexts/types.js +0 -3
  471. package/dist/domObserver-Bqf3ooj8.cjs +0 -304
  472. package/dist/enviveConfig-DZBohDpc.js +0 -62
  473. package/dist/enviveConfig-Dv9-esGV.cjs +0 -130
  474. package/dist/enviveConfigContext-D2OELZDR.cjs +0 -60
  475. package/dist/enviveConfigContext-DrDjCems.js +0 -45
  476. package/dist/events-DYY4l817.cjs +0 -90
  477. package/dist/events-DyUix-Bn.js +0 -78
  478. package/dist/featureFlagServiceContext-CJyYItqu.cjs +0 -62
  479. package/dist/featureFlagServiceContext-C_2m4wPL.d.ts +0 -23
  480. package/dist/featureFlagServiceContext-CiKWV306.d.cts +0 -23
  481. package/dist/featureFlagServiceContext-FBM6DdMJ.js +0 -42
  482. package/dist/featureGates-KEwAL8p_.js +0 -26
  483. package/dist/featureGates-qU_ulhpC.cjs +0 -32
  484. package/dist/frontendConfig-CymUbclV.d.ts +0 -856
  485. package/dist/frontendConfig-tVg0hsWZ.d.cts +0 -856
  486. package/dist/graphql-3PxNRFOc.js +0 -36
  487. package/dist/graphql-DGYfelZp.cjs +0 -53
  488. package/dist/graphqlConfig-GHZ1UgCw.cjs +0 -73
  489. package/dist/graphqlConfig-mDg6J44N.js +0 -24
  490. package/dist/graphqlContext-BZPEAFSR.cjs +0 -111
  491. package/dist/graphqlContext-Bf3E-V2T.d.cts +0 -28
  492. package/dist/graphqlContext-CQikpV_I.d.ts +0 -28
  493. package/dist/graphqlContext-eaZPxgRE.js +0 -96
  494. package/dist/index-BVf069X-.d.ts +0 -184
  495. package/dist/index-B_KJB5L_.d.cts +0 -186
  496. package/dist/index-BkLv_fCu.d.ts +0 -186
  497. package/dist/index-Bmub8e38.d.cts +0 -98
  498. package/dist/index-C0eAp5f5.d.ts +0 -98
  499. package/dist/index-CESxqFso.d.cts +0 -228
  500. package/dist/index-CG3P8xE1.d.cts +0 -676
  501. package/dist/index-CJc7_j_v.d.ts +0 -44
  502. package/dist/index-CiWEYzXl.d.cts +0 -184
  503. package/dist/index-Cyq5HiC0.d.cts +0 -44
  504. package/dist/index-DL2ODEnw.d.ts +0 -1
  505. package/dist/index-DgjDuQl4.d.ts +0 -676
  506. package/dist/index-RcVcRKH7.d.cts +0 -1
  507. package/dist/index-vP8BKdxl.d.ts +0 -228
  508. package/dist/interceptors/types.cjs +0 -1
  509. package/dist/interceptors/types.d.cts +0 -13
  510. package/dist/interceptors/types.d.ts +0 -13
  511. package/dist/interceptors/types.js +0 -3
  512. package/dist/localStorageContext-BPZ82q-G.js +0 -95
  513. package/dist/localStorageContext-NRP-CdmF.cjs +0 -115
  514. package/dist/models-D-4db7XW.cjs +0 -1537
  515. package/dist/models-c86hYW-F.js +0 -1296
  516. package/dist/newOrgConfigAtom-OzAyrPS8.js +0 -8
  517. package/dist/newOrgConfigContext-DOdUxlOE.d.cts +0 -16
  518. package/dist/newOrgConfigContext-DX9iqIIK.cjs +0 -68
  519. package/dist/newOrgConfigContext-aqN8Tu79.js +0 -53
  520. package/dist/newOrgConfigContext-jphS5d4K.d.ts +0 -16
  521. package/dist/nodeSelector-B3bPtEjX.d.cts +0 -31
  522. package/dist/nodeSelector-Dcn3_NrZ.d.ts +0 -31
  523. package/dist/org-Bq2KsJSp.cjs +0 -43
  524. package/dist/org-gtWmGw4K.js +0 -12
  525. package/dist/search-BQPMtze5.cjs +0 -205
  526. package/dist/search-CIrqYYMI.d.ts +0 -20
  527. package/dist/search-PXzaYtZj.js +0 -126
  528. package/dist/search-filter-types-BhK20ts3.d.ts +0 -102
  529. package/dist/search-filter-types-BxaNSLs_.d.cts +0 -102
  530. package/dist/search-y-ioX5Mz.d.cts +0 -20
  531. package/dist/searchContext-CmsLR6Ka.cjs +0 -145
  532. package/dist/searchContext-NPfqMf6b.js +0 -129
  533. package/dist/searchServiceAdapter-BczodJGV.cjs +0 -34
  534. package/dist/searchServiceAdapter-BuEHFG5t.js +0 -16
  535. package/dist/sessionStorageContext-C1u04nAK.js +0 -52
  536. package/dist/sessionStorageContext-Cy8xc9-3.cjs +0 -66
  537. package/dist/shopifyUrlContext-CUyq3f27.cjs +0 -75
  538. package/dist/shopifyUrlContext-DTLlqlMj.js +0 -61
  539. package/dist/spiffyWidgets-BnkP5kXf.d.ts +0 -20
  540. package/dist/spiffyWidgets-BuS00VaQ.d.cts +0 -20
  541. package/dist/systemSettingsContext-Ba-wi2NZ.cjs +0 -60
  542. package/dist/systemSettingsContext-DumUaV0m.js +0 -39
  543. package/dist/test-types-DbrKQIqB.d.ts +0 -40
  544. package/dist/test-types-ThQiO_cc.d.cts +0 -40
  545. package/dist/types-BWzwd0Qc.js +0 -30
  546. package/dist/types-CEx2uKKS.d.ts +0 -51
  547. package/dist/types-CKMMb_gX.d.cts +0 -51
  548. package/dist/types-CKPddlfS.cjs +0 -0
  549. package/dist/types-CtUb63bt.js +0 -76
  550. package/dist/types-Cz8CaPUQ.cjs +0 -48
  551. package/dist/types-Dc6hx6ei.js +0 -1
  552. package/dist/types-Mwm0bS2l.d.ts +0 -10
  553. package/dist/types-UUvB6h05.cjs +0 -106
  554. package/dist/types-zQGBI-Yo.d.cts +0 -10
  555. package/dist/types.cjs +0 -0
  556. package/dist/types.d.cts +0 -15
  557. package/dist/types.d.ts +0 -15
  558. package/dist/types.js +0 -1
  559. package/dist/urlsParser-COzMdJaX.cjs +0 -78
  560. package/dist/urlsParser-DxjoLj98.js +0 -42
  561. package/dist/useAmplitudeOperations-Cv0fi3uj.cjs +0 -41
  562. package/dist/useAmplitudeOperations-Ti6phPPq.js +0 -34
  563. package/dist/useAppDetails-BgqbPlfR.cjs +0 -38
  564. package/dist/useAppDetails-DnKGYtCd.js +0 -30
  565. package/dist/useDebounce-BV7B-Jz3.js +0 -19
  566. package/dist/useDebounce-vU5iW5sa.cjs +0 -26
  567. package/dist/useGraphQLConfig-BizpCw23.cjs +0 -76
  568. package/dist/useGraphQLConfig-DFWl9Z89.js +0 -63
  569. package/dist/useMessageInterceptor-BjGP_uXm.js +0 -25
  570. package/dist/useMessageInterceptor-arAqUq1Q.cjs +0 -33
  571. package/dist/userIdentityContext-BvsEnQVX.d.ts +0 -20
  572. package/dist/userIdentityContext-D2oFVFzo.d.cts +0 -20
  573. package/dist/utilityTypes-B2KuRn37.js +0 -1
  574. package/dist/utilityTypes-BGbL2WTP.cjs +0 -0
  575. package/dist/utils-B7PAzB_M.d.cts +0 -22
  576. package/dist/utils-CLGXsOwE.cjs +0 -1591
  577. package/dist/utils-CrQ0h9tc.d.ts +0 -22
  578. package/dist/utils-jYtD3hmA.js +0 -1385
  579. package/dist/variantInfo-BfKlkaWU.js +0 -11
  580. package/dist/variantInfo-DpLn4nHz.cjs +0 -17
  581. package/src/application/models/api/context.ts +0 -4
  582. package/src/application/models/api/generationParams.ts +0 -4
  583. package/src/application/models/api/nextMessageRequest.ts +0 -11
  584. package/src/application/models/api/orgAnalyticsConfig.ts +0 -19
  585. package/src/application/models/api/orgConfigResults.ts +0 -44
  586. package/src/application/models/api/organizationConfig.ts +0 -12
  587. package/src/application/models/api/responseGenerics.ts +0 -67
  588. package/src/application/models/api/search.ts +0 -26
  589. package/src/application/models/api/suggestion.ts +0 -4
  590. package/src/application/models/api/supportedEventRequest.ts +0 -8
  591. package/src/application/models/api/userEvent.ts +0 -101
  592. package/src/application/models/cachedValue.ts +0 -8
  593. package/src/application/models/chatElementDisplayLocation.ts +0 -22
  594. package/src/application/models/clientDetails.ts +0 -18
  595. package/src/application/models/colorsConfig.ts +0 -28
  596. package/src/application/models/conversationalSearchIds.ts +0 -5
  597. package/src/application/models/dataLayer.ts +0 -45
  598. package/src/application/models/events.ts +0 -5
  599. package/src/application/models/featureGates.ts +0 -21
  600. package/src/application/models/frontendConfig.ts +0 -14
  601. package/src/application/models/googleAnalyticsEvents.ts +0 -8
  602. package/src/application/models/localStorageEventListener.ts +0 -4
  603. package/src/application/models/mobilePLPChatPlacementParameter.ts +0 -3
  604. package/src/application/models/orgsEnum.ts +0 -36
  605. package/src/application/models/productExperiment.ts +0 -5
  606. package/src/application/models/spanxTakeAQuizCtaParameter.ts +0 -4
  607. package/src/application/models/spiffyWidgets.ts +0 -16
  608. package/src/application/models/utilityTypes/camelCase.ts +0 -87
  609. package/src/application/models/utilityTypes/camelCasedPropertiesDeep.ts +0 -80
  610. package/src/application/models/utilityTypes/delimiterCase.ts +0 -121
  611. package/src/application/models/utilityTypes/delimiterCasedPropertiesDeep.ts +0 -98
  612. package/src/application/models/utilityTypes/index.ts +0 -1
  613. package/src/application/models/utilityTypes/internal.ts +0 -93
  614. package/src/application/models/utilityTypes/primitive.ts +0 -8
  615. package/src/application/models/utilityTypes/snakeCasedPropertiesDeep.ts +0 -49
  616. package/src/application/models/utilityTypes/splitWords.ts +0 -76
  617. package/src/application/models/utilityTypes/trim.ts +0 -28
  618. package/src/application/models/utilityTypes/unknownArray.ts +0 -25
  619. package/src/application/models/variantInfo/index.ts +0 -1
  620. package/src/application/models/variantInfo/pageVisitInfo.ts +0 -6
  621. package/src/application/models/variantInfo/plpInfo.ts +0 -3
  622. package/src/application/models/variantInfo/productInfo.ts +0 -5
  623. package/src/application/models/variantInfo/variantInfo.ts +0 -29
  624. package/src/application/utils/__tests__/divideArrays.test.ts +0 -14
  625. package/src/application/utils/cdnUtils.ts +0 -11
  626. package/src/atoms/search/chatSearch.ts +0 -317
  627. package/src/atoms/search/types.ts +0 -55
  628. package/src/config/divIds.ts +0 -27
  629. package/src/config/socialProofClasses.ts +0 -17
  630. package/src/contexts/chatContext/chatContext.tsx +0 -509
  631. package/src/contexts/chatContext/index.ts +0 -1
  632. package/src/contexts/types.ts +0 -1066
  633. package/src/events/event-types.ts +0 -11
  634. package/src/interceptors/types.ts +0 -6
  635. package/src/merchants/domInsertion.ts +0 -30
  636. package/src/merchants/gridInsertion.ts +0 -19
  637. package/src/types/config-versions.ts +0 -6
  638. package/src/types/customerService.ts +0 -31
  639. package/src/types/custservice-types.ts +0 -28
  640. package/src/types/search-filter-types.ts +0 -111
  641. package/src/types/suggestionBarV2-types.ts +0 -4
  642. package/src/types/test-types.ts +0 -3
  643. package/src/types.ts +0 -11
  644. /package/dist/{AmplitudeOperations-CWI4yjZ4.js → featureFlagServiceContext-CbUOAw5l.js} +0 -0
  645. /package/dist/{AmplitudeOperations-BEGeYKG5.cjs → featureFlagServiceContext-DSo2brno.cjs} +0 -0
  646. /package/src/{types/exceptions → exceptions}/sessionExceptions.ts +0 -0
@@ -1,8 +1,7 @@
1
- import { ProductResponseAttributes } from 'src/application/models';
2
- import { FilterAttribute } from 'src/contexts/types';
3
- import { SelectedFilterOption } from 'src/atoms/search/searchAPI';
4
- import { ChatSearchFilter, ChatSearchFilterItem } from './types';
5
- import { formatFilterDisplayName } from './utils';
1
+ import { ChatSearchFilter, ChatSearchFilterItem } from "@envive-ai/types";
2
+ import { FilterAttribute, ProductResponseAttributes } from "src/types";
3
+ import { SelectedFilterOption } from "src/atoms/search/searchAPI";
4
+ import { formatFilterDisplayName } from "./utils";
6
5
 
7
6
  const getPriceBucket = (price: number, bucketSize: number) => {
8
7
  const bucket = Math.floor(price / bucketSize);
@@ -13,27 +12,30 @@ const isStringArray = (value: unknown): value is string[] => {
13
12
  if (!Array.isArray(value)) {
14
13
  return false;
15
14
  }
16
- return value.every((item) => typeof item === 'string');
15
+ return value.every((item) => typeof item === "string");
17
16
  };
18
17
 
19
- type FilterSortFunction = (a: ChatSearchFilterItem, b: ChatSearchFilterItem) => number;
18
+ type FilterSortFunction = (
19
+ a: ChatSearchFilterItem,
20
+ b: ChatSearchFilterItem
21
+ ) => number;
20
22
 
21
23
  const sortFilter = (filterConfig: FilterAttribute): FilterSortFunction => {
22
- if (filterConfig.type === 'price') {
24
+ if (filterConfig.type === "price") {
23
25
  return (a, b) => Number(a.filterItemId) - Number(b.filterItemId);
24
26
  }
25
- if (filterConfig.type === 'dynamic') {
26
- if (filterConfig.sorting.type === 'alphabetic') {
27
+ if (filterConfig.type === "dynamic") {
28
+ if (filterConfig.sorting.type === "alphabetic") {
27
29
  return (a, b) => a.displayName.localeCompare(b.displayName);
28
30
  }
29
31
  // Sort by the number of products, if they match, sort by alphabetical
30
- if (filterConfig.sorting.type === 'productCount') {
32
+ if (filterConfig.sorting.type === "productCount") {
31
33
  return (a, b) =>
32
34
  a.productCount === b.productCount
33
35
  ? a.displayName.localeCompare(b.displayName)
34
36
  : b.productCount - a.productCount;
35
37
  }
36
- if (filterConfig.sorting.type === 'custom') {
38
+ if (filterConfig.sorting.type === "custom") {
37
39
  const sortedKeys = filterConfig.sorting.map;
38
40
  return (a, b) => {
39
41
  if (sortedKeys[a.displayName] && sortedKeys[b.displayName]) {
@@ -53,14 +55,14 @@ const sortFilter = (filterConfig: FilterAttribute): FilterSortFunction => {
53
55
  };
54
56
  }
55
57
  }
56
- throw new Error('Invaalid search filter configuration');
58
+ throw new Error("Invaalid search filter configuration");
57
59
  };
58
60
 
59
61
  export class ProductFilters {
60
62
  static getFiltersForProducts(
61
- products: ProductResponseAttributes['attributes'][],
63
+ products: ProductResponseAttributes["attributes"][],
62
64
  filterConfigs: FilterAttribute[],
63
- selectedFilterOptions: SelectedFilterOption[],
65
+ selectedFilterOptions: SelectedFilterOption[]
64
66
  ): ChatSearchFilter[] {
65
67
  if (!products || products.length === 0) {
66
68
  return [];
@@ -70,23 +72,29 @@ export class ProductFilters {
70
72
  products.reduce(
71
73
  (acc, product) => {
72
74
  // Price has special handling for the filters
73
- if (filterConfig.type === 'price') {
75
+ if (filterConfig.type === "price") {
74
76
  const priceBucket = getPriceBucket(
75
77
  product.salePrice ?? product.originalPrice ?? 0,
76
- filterConfig.bucketSize,
78
+ filterConfig.bucketSize
77
79
  );
78
80
  const current = acc.map[priceBucket] ?? {
79
81
  filterItemId: priceBucket,
80
- displayName: `$${priceBucket}-$${priceBucket + filterConfig.bucketSize}`,
82
+ displayName: `$${priceBucket}-$${
83
+ priceBucket + filterConfig.bucketSize
84
+ }`,
81
85
  productCount: 0,
82
86
  };
83
- acc.map[priceBucket] = { ...current, productCount: current.productCount + 1 };
87
+ acc.map[priceBucket] = {
88
+ ...current,
89
+ productCount: current.productCount + 1,
90
+ };
84
91
  return acc;
85
92
  }
86
93
 
87
94
  // Assume that the "attribute" is an array of values
88
95
  const attributeValues =
89
- (product.filters && product.filters?.[filterConfig.attribute]) ?? [];
96
+ (product.filters && product.filters?.[filterConfig.attribute]) ??
97
+ [];
90
98
  if (isStringArray(attributeValues)) {
91
99
  attributeValues.forEach((val) => {
92
100
  const normalizedVal = val.toLowerCase();
@@ -95,7 +103,10 @@ export class ProductFilters {
95
103
  displayName: formatFilterDisplayName(val), // Keep original case for display
96
104
  productCount: 0,
97
105
  };
98
- acc.map[normalizedVal] = { ...current, productCount: current.productCount + 1 };
106
+ acc.map[normalizedVal] = {
107
+ ...current,
108
+ productCount: current.productCount + 1,
109
+ };
99
110
  });
100
111
  }
101
112
 
@@ -104,40 +115,44 @@ export class ProductFilters {
104
115
  {
105
116
  filterConfig,
106
117
  map: {} as Record<string, ChatSearchFilterItem>,
107
- },
108
- ),
118
+ }
119
+ )
109
120
  );
110
121
 
111
- const transformedFilters: ChatSearchFilter[] = filters.map(({ filterConfig, map }) => ({
112
- filterId: filterConfig.filterId,
113
- displayName: filterConfig.displayName,
114
- items: Object.values(map)
115
- .map((filter) => ({
116
- filterItemId: filter.filterItemId,
117
- displayName: filter.displayName,
118
- productCount: filter.productCount,
119
- isSelected:
120
- selectedFilterOptions.some(
121
- (option) => option.id === `${filterConfig.filterId}:${filter.filterItemId}`,
122
- ) ?? false,
123
- }))
124
- .sort(sortFilter(filterConfig)),
125
- }));
122
+ const transformedFilters: ChatSearchFilter[] = filters.map(
123
+ ({ filterConfig, map }) => ({
124
+ filterId: filterConfig.filterId,
125
+ displayName: filterConfig.displayName,
126
+ items: Object.values(map)
127
+ .map((filter) => ({
128
+ filterItemId: filter.filterItemId,
129
+ displayName: filter.displayName,
130
+ productCount: filter.productCount,
131
+ isSelected:
132
+ selectedFilterOptions.some(
133
+ (option) =>
134
+ option.id ===
135
+ `${filterConfig.filterId}:${filter.filterItemId}`
136
+ ) ?? false,
137
+ }))
138
+ .sort(sortFilter(filterConfig)),
139
+ })
140
+ );
126
141
 
127
142
  return [...transformedFilters];
128
143
  }
129
144
 
130
145
  static filterProducts(
131
- products: ProductResponseAttributes['attributes'][],
146
+ products: ProductResponseAttributes["attributes"][],
132
147
  filterConfigs: FilterAttribute[],
133
148
  selectedFilterOptions: SelectedFilterOption[],
134
- additiveDynamicFilters = false, // Set this to true to restore the original behavior where stacking filters has OR logic.
149
+ additiveDynamicFilters = false // Set this to true to restore the original behavior where stacking filters has OR logic.
135
150
  ) {
136
151
  const selectedFilters = filterConfigs
137
152
  .map((filterConfig) => ({
138
153
  filterConfig,
139
154
  hasSelectedOptions: selectedFilterOptions.some(
140
- (option) => option.filterId === filterConfig.filterId,
155
+ (option) => option.filterId === filterConfig.filterId
141
156
  ),
142
157
  }))
143
158
  .filter(({ hasSelectedOptions }) => hasSelectedOptions);
@@ -150,20 +165,20 @@ export class ProductFilters {
150
165
  return acc;
151
166
  }
152
167
  // Price is special
153
- if (selectedFilter.filterConfig.type === 'price') {
168
+ if (selectedFilter.filterConfig.type === "price") {
154
169
  const priceBucket = getPriceBucket(
155
170
  product.salePrice ?? product.originalPrice ?? 0,
156
- selectedFilter.filterConfig.bucketSize,
171
+ selectedFilter.filterConfig.bucketSize
157
172
  );
158
173
  const matchesPriceFilter = selectedFilterOptions.some(
159
- (option) => option.id === `price:${priceBucket}`,
174
+ (option) => option.id === `price:${priceBucket}`
160
175
  );
161
176
  if (!matchesPriceFilter) {
162
177
  return false;
163
178
  }
164
179
  }
165
180
 
166
- if (selectedFilter.filterConfig.type === 'dynamic') {
181
+ if (selectedFilter.filterConfig.type === "dynamic") {
167
182
  // dynamic is misleading here. Its not just dynamic filters, but static filters because the config counts static filters as type: dynamic.
168
183
  const { filterId, attribute } = selectedFilter.filterConfig;
169
184
  const attributeValues = product.filters?.[attribute];
@@ -172,8 +187,10 @@ export class ProductFilters {
172
187
  return false;
173
188
  }
174
189
 
175
- const isDynamicFilter = selectedFilter.filterConfig.attribute === 'dynamic'; // True dynamic filters (the ones that appear beneath the search input)
176
- const isSubtractiveLogic = isDynamicFilter && !additiveDynamicFilters;
190
+ const isDynamicFilter =
191
+ selectedFilter.filterConfig.attribute === "dynamic"; // True dynamic filters (the ones that appear beneath the search input)
192
+ const isSubtractiveLogic =
193
+ isDynamicFilter && !additiveDynamicFilters;
177
194
 
178
195
  if (isSubtractiveLogic) {
179
196
  // AND logic for subtractive dynamic filters and between static filter categories
@@ -181,8 +198,11 @@ export class ProductFilters {
181
198
  .filter((option) => option.filterId === filterId)
182
199
  .map((option) => option.filterItemId.toLowerCase());
183
200
 
184
- const hasAllSelectedValues = selectedOptionsForThisFilter.every((selectedValue) =>
185
- attributeValues.some((val) => val.toLowerCase() === selectedValue),
201
+ const hasAllSelectedValues = selectedOptionsForThisFilter.every(
202
+ (selectedValue) =>
203
+ attributeValues.some(
204
+ (val) => val.toLowerCase() === selectedValue
205
+ )
186
206
  );
187
207
 
188
208
  if (!hasAllSelectedValues) {
@@ -192,8 +212,8 @@ export class ProductFilters {
192
212
  // OR logic for static filters in the sidebar within a category.
193
213
  const matches = attributeValues.some((val) =>
194
214
  selectedFilterOptions.some(
195
- (option) => option.id === `${filterId}:${val.toLowerCase()}`,
196
- ),
215
+ (option) => option.id === `${filterId}:${val.toLowerCase()}`
216
+ )
197
217
  );
198
218
  if (!matches) {
199
219
  return false;
@@ -201,7 +221,7 @@ export class ProductFilters {
201
221
  }
202
222
  }
203
223
  return true;
204
- }, true),
224
+ }, true)
205
225
  );
206
226
  }
207
227
  }
@@ -0,0 +1,72 @@
1
+ import {
2
+ ProductRetrievalParams,
3
+ ProductRetrievalResult,
4
+ } from "@envive-ai/types";
5
+ import { atom } from "jotai";
6
+ import { getProductRetrievalFunction } from "./productRetrievalAdapter";
7
+
8
+ interface ProductRetrievalState {
9
+ data: ProductRetrievalResult | null;
10
+ loading: boolean;
11
+ error: string | null;
12
+ lastProductIds: string[] | null;
13
+ }
14
+
15
+ export const productRetrievalAtom = atom<ProductRetrievalState>({
16
+ data: null,
17
+ loading: false,
18
+ error: null,
19
+ lastProductIds: null,
20
+ });
21
+
22
+ export const performProductRetrievalAtom = atom(
23
+ null,
24
+ async (get, set, params: ProductRetrievalParams) => {
25
+ const currentState = get(productRetrievalAtom);
26
+
27
+ if (currentState.loading) {
28
+ return; // Prevent concurrent retrievals
29
+ }
30
+
31
+ set(productRetrievalAtom, {
32
+ data: null,
33
+ loading: true,
34
+ error: null,
35
+ lastProductIds: params.productIds,
36
+ });
37
+
38
+ try {
39
+ const retrieveProducts = getProductRetrievalFunction();
40
+ const result = await retrieveProducts(params);
41
+ set(productRetrievalAtom, {
42
+ data: result,
43
+ loading: false,
44
+ error: null,
45
+ lastProductIds: params.productIds,
46
+ });
47
+ } catch (error: unknown) {
48
+ const errorMessage =
49
+ error instanceof Error ? error.message : "An unknown error occurred";
50
+ set(productRetrievalAtom, {
51
+ data: null,
52
+ loading: false,
53
+ error: errorMessage,
54
+ lastProductIds: params.productIds,
55
+ });
56
+ }
57
+ }
58
+ );
59
+
60
+ // Get just the products array (already normalized by service)
61
+ export const retrievedProductsAtom = atom((get) => {
62
+ const retrievalData = get(productRetrievalAtom).data;
63
+ return retrievalData?.products || [];
64
+ });
65
+
66
+ export const productRetrievalLoadingAtom = atom((get) => {
67
+ return get(productRetrievalAtom).loading;
68
+ });
69
+
70
+ export const productRetrievalErrorAtom = atom((get) => {
71
+ return get(productRetrievalAtom).error;
72
+ });
@@ -0,0 +1,28 @@
1
+ import {
2
+ ProductRetrievalParams,
3
+ ProductRetrievalResult,
4
+ } from "@envive-ai/types";
5
+
6
+ // This will be set by the ProductRetrievalProvider when it initializes
7
+ let productRetrievalFunction:
8
+ | ((params: ProductRetrievalParams) => Promise<ProductRetrievalResult>)
9
+ | null = null;
10
+
11
+ export const setProductRetrievalFunction = (
12
+ fn: (params: ProductRetrievalParams) => Promise<ProductRetrievalResult>
13
+ ) => {
14
+ productRetrievalFunction = fn;
15
+ };
16
+
17
+ export const getProductRetrievalFunction = () => {
18
+ if (!productRetrievalFunction) {
19
+ throw new Error(
20
+ "Product retrieval function not initialized. Make sure ProductRetrievalProvider is mounted."
21
+ );
22
+ }
23
+ return productRetrievalFunction;
24
+ };
25
+
26
+ export const clearProductRetrievalFunction = () => {
27
+ productRetrievalFunction = null;
28
+ };
@@ -1,5 +1,5 @@
1
- import { ProductResponseAttributes } from 'src/application/models';
2
- import { ProductSorting } from './types';
1
+ import { ProductResponseAttributes } from '@envive-ai/types';
2
+ import { ProductSorting } from '@envive-ai/types';
3
3
 
4
4
  export class ProductSorter {
5
5
  static sort(products: ProductResponseAttributes['attributes'][], sorting: ProductSorting) {
@@ -1,10 +1,10 @@
1
- import { atom } from "jotai";
2
- import { SearchResult, SearchParams } from "src/application/models/api/search";
3
- import { ProductSorting } from "./types";
4
- import { ProductFilters } from "./productFilters";
5
- import { ProductSorter } from "./productSorter";
6
- import { newOrgConfigAtom } from "../org";
7
- import { getSearchServiceFunction } from "./searchServiceAdapter";
1
+ import { atom } from 'jotai';
2
+ import { ProductSorting } from '@envive-ai/types';
3
+ import { ProductFilters } from './productFilters';
4
+ import { ProductSorter } from './productSorter';
5
+ import { newOrgConfigAtom } from '../org';
6
+ import { getSearchServiceFunction } from './searchServiceAdapter';
7
+ import { SearchParams, SearchResult } from '@envive-ai/types';
8
8
 
9
9
  export type SelectedFilterOption = {
10
10
  id: string; // "filterId:filterItemId" - maintains backward compatibility for comparisons
@@ -27,15 +27,13 @@ export const searchAtom = atom<SearchState>({
27
27
  lastQuery: null,
28
28
  });
29
29
 
30
- export const searchProductSortingAtom = atom<ProductSorting>(
31
- ProductSorting.FEATURED
32
- );
30
+ export const searchProductSortingAtom = atom<ProductSorting>(ProductSorting.FEATURED);
33
31
  export const searchSelectedFiltersAtom = atom<SelectedFilterOption[]>([]);
34
32
 
35
33
  export const createFilterOption = (
36
34
  filterId: string,
37
35
  filterItemId: string,
38
- displayName: string
36
+ displayName: string,
39
37
  ): SelectedFilterOption => ({
40
38
  id: `${filterId}:${filterItemId}`,
41
39
  displayName,
@@ -55,7 +53,7 @@ export const searchParamsAtom = atom(
55
53
  (get) => get(internalSearchParamsAtom),
56
54
  (_, set, value: { id: string | null; query: string | null }) => {
57
55
  set(internalSearchParamsAtom, value);
58
- }
56
+ },
59
57
  );
60
58
  export const internalSearchSystemStateAtom = atom<boolean>(false);
61
59
 
@@ -67,9 +65,9 @@ export const searchSystemAtom = atom(
67
65
  }
68
66
  const stateChangeHandler = () => {
69
67
  const params = new URLSearchParams(window.location.search);
70
- if (params.get("es") === "true") {
71
- const id = params.get("esi");
72
- const query = params.get("esq");
68
+ if (params.get('es') === 'true') {
69
+ const id = params.get('esi');
70
+ const query = params.get('esq');
73
71
  set(searchParamsAtom, { id, query });
74
72
  } else {
75
73
  set(searchParamsAtom, { id: null, query: null });
@@ -77,14 +75,14 @@ export const searchSystemAtom = atom(
77
75
  };
78
76
  if (value) {
79
77
  set(internalSearchSystemStateAtom, true);
80
- window.addEventListener("popstate", stateChangeHandler);
78
+ window.addEventListener('popstate', stateChangeHandler);
81
79
  // Also trigger the hash change handler to set the initial state
82
80
  stateChangeHandler();
83
81
  } else {
84
82
  set(internalSearchSystemStateAtom, false);
85
- window.removeEventListener("popstate", stateChangeHandler);
83
+ window.removeEventListener('popstate', stateChangeHandler);
86
84
  }
87
- }
85
+ },
88
86
  );
89
87
 
90
88
  export const filteredSearchProductsAtom = atom((get) => {
@@ -93,17 +91,13 @@ export const filteredSearchProductsAtom = atom((get) => {
93
91
  const selectedFilters = get(searchSelectedFiltersAtom);
94
92
  const newOrgConfig = get(newOrgConfigAtom);
95
93
 
96
- if (
97
- !searchData?.products ||
98
- !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
99
- )
100
- return [];
94
+ if (!searchData?.products || !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig) return [];
101
95
 
102
96
  const filteredProducts = ProductFilters.filterProducts(
103
97
  searchData.products,
104
98
  newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig,
105
99
  selectedFilters,
106
- newOrgConfig.frontendConfig.uiConfigs.searchConfig.additiveDynamicFilters
100
+ newOrgConfig.frontendConfig.uiConfigs.searchConfig.additiveDynamicFilters,
107
101
  );
108
102
 
109
103
  return ProductSorter.sort(filteredProducts, sorting);
@@ -114,39 +108,29 @@ export const searchFiltersAtom = atom((get) => {
114
108
  const selectedFilters = get(searchSelectedFiltersAtom);
115
109
  const newOrgConfig = get(newOrgConfigAtom);
116
110
 
117
- if (
118
- !searchData?.products ||
119
- !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
120
- )
121
- return [];
111
+ if (!searchData?.products || !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig) return [];
122
112
 
123
113
  return ProductFilters.getFiltersForProducts(
124
114
  searchData.products,
125
115
  newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig,
126
- selectedFilters
116
+ selectedFilters,
127
117
  );
128
118
  });
129
119
 
130
- export const addSearchFilterAtom = atom(
131
- null,
132
- (get, set, filter: SelectedFilterOption) => {
133
- const current = get(searchSelectedFiltersAtom);
134
- if (!current.some((f) => f.id === filter.id)) {
135
- set(searchSelectedFiltersAtom, [...current, filter]);
136
- }
120
+ export const addSearchFilterAtom = atom(null, (get, set, filter: SelectedFilterOption) => {
121
+ const current = get(searchSelectedFiltersAtom);
122
+ if (!current.some((f) => f.id === filter.id)) {
123
+ set(searchSelectedFiltersAtom, [...current, filter]);
137
124
  }
138
- );
125
+ });
139
126
 
140
- export const removeSearchFilterAtom = atom(
141
- null,
142
- (get, set, filterId: string) => {
143
- const current = get(searchSelectedFiltersAtom);
144
- set(
145
- searchSelectedFiltersAtom,
146
- current.filter((f) => f.id !== filterId)
147
- );
148
- }
149
- );
127
+ export const removeSearchFilterAtom = atom(null, (get, set, filterId: string) => {
128
+ const current = get(searchSelectedFiltersAtom);
129
+ set(
130
+ searchSelectedFiltersAtom,
131
+ current.filter((f) => f.id !== filterId),
132
+ );
133
+ });
150
134
 
151
135
  export const clearSearchFiltersAtom = atom(null, (_, set) => {
152
136
  set(searchSelectedFiltersAtom, []);
@@ -158,29 +142,28 @@ export const performSearchAtom = atom(
158
142
  const currentState = get(searchAtom);
159
143
  const newOrgConfig = get(newOrgConfigAtom);
160
144
  const redirectSearchResultsUrl =
161
- newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
162
- ?.redirectSearchResultsUrl;
145
+ newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig?.redirectSearchResultsUrl;
163
146
 
164
147
  if (allowRedirect && redirectSearchResultsUrl) {
165
148
  const redirectUrl = new URL(redirectSearchResultsUrl);
166
- redirectUrl.searchParams.set("es", "true");
167
- redirectUrl.searchParams.set("esq", params.query);
149
+ redirectUrl.searchParams.set('es', 'true');
150
+ redirectUrl.searchParams.set('esq', params.query);
168
151
  window.location.href = redirectUrl.toString();
169
152
  } else {
170
153
  // Update URL and manually trigger state change (since pushState doesn't trigger popstate)
171
154
  const url = new URL(window.location.href);
172
- url.searchParams.set("es", "true");
173
- url.searchParams.set("esq", params.query);
174
- window.history.pushState({}, "", url);
155
+ url.searchParams.set('es', 'true');
156
+ url.searchParams.set('esq', params.query);
157
+ window.history.pushState({}, '', url);
175
158
 
176
159
  // Manually trigger page variant re-evaluation by dispatching a popstate event
177
160
  // This ensures the page variant system detects the URL change and mounts search results
178
- window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
161
+ window.dispatchEvent(new PopStateEvent('popstate', { state: {} }));
179
162
  }
180
163
 
181
164
  // Manually trigger page variant re-evaluation by dispatching a popstate event
182
165
  // This ensures the page variant system detects the URL change and mounts search results
183
- window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
166
+ window.dispatchEvent(new PopStateEvent('popstate', { state: {} }));
184
167
  if (currentState.loading) {
185
168
  return; // Prevent concurrent searches
186
169
  }
@@ -201,8 +184,7 @@ export const performSearchAtom = atom(
201
184
  lastQuery: params.query,
202
185
  });
203
186
  } catch (error: unknown) {
204
- const errorMessage =
205
- error instanceof Error ? error.message : "An unknown error occurred";
187
+ const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred';
206
188
  set(searchAtom, {
207
189
  data: null,
208
190
  loading: false,
@@ -210,5 +192,5 @@ export const performSearchAtom = atom(
210
192
  lastQuery: params.query,
211
193
  });
212
194
  }
213
- }
195
+ },
214
196
  );
@@ -1,4 +1,4 @@
1
- import { SearchResult, SearchParams } from "src/application/models/api/search";
1
+ import { SearchResult, SearchParams } from "@envive-ai/types";
2
2
 
3
3
  // This will be set by the SearchProvider when it initializes
4
4
  let searchServiceFunction: