@envive-ai/react-hooks 0.2.6 → 0.2.7-arthur-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 (377) hide show
  1. package/dist/{NewOrgConfig-BfrGpiGk.js → NewOrgConfig-BVByiYPp.js} +2 -2
  2. package/dist/{NewOrgConfig-BxSuoP9C.cjs → NewOrgConfig-CInGtTV6.cjs} +2 -2
  3. package/dist/{SystemSettingsContext-Bkoiobdv.cjs → SystemSettingsContext-150LTxIk.cjs} +2 -2
  4. package/dist/{SystemSettingsContext-B8X_Dvw2.js → SystemSettingsContext-ei5B0dxO.js} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-DMuX-byo.cjs → TrackComponentVisibleEvent-C7-nnBks.cjs} +2 -2
  6. package/dist/{TrackComponentVisibleEvent-DwfGqNTx.js → TrackComponentVisibleEvent-CuwSLbug.js} +2 -2
  7. package/dist/amplitudeContext-BBQ1ATA3.js +265 -0
  8. package/dist/amplitudeContext-BItT9HmT.js +1 -0
  9. package/dist/amplitudeContext-C-0-DDk3.cjs +287 -0
  10. package/dist/{amplitudeContext-B73xamNe.d.cts → amplitudeContext-CCVyp5RU.d.cts} +1 -1
  11. package/dist/amplitudeContext-DPtyVv3Q.cjs +0 -0
  12. package/dist/{amplitudeContext-CiO9T9c-.d.ts → amplitudeContext-DcRur97Z.d.ts} +1 -1
  13. package/dist/{api-bHEYmSiT.js → api-BWSsazAG.js} +3 -3
  14. package/dist/{api-BvygKEiX.cjs → api-DeW6rHj3.cjs} +3 -3
  15. package/dist/{app-Aqkm_SlS.js → app-C_Y-57U5.js} +3 -4
  16. package/dist/{app-BQw_-JGl.cjs → app-XEFPotoH.cjs} +3 -4
  17. package/dist/application/models/graphql/index.cjs +4 -3
  18. package/dist/application/models/graphql/index.d.cts +2 -2
  19. package/dist/application/models/graphql/index.d.ts +2 -2
  20. package/dist/application/models/graphql/index.js +3 -3
  21. package/dist/application/models/guards/api/index.cjs +3 -3
  22. package/dist/application/models/guards/api/index.d.cts +2 -1
  23. package/dist/application/models/guards/api/index.d.ts +2 -1
  24. package/dist/application/models/guards/api/index.js +3 -3
  25. package/dist/application/models/guards/utils.cjs +1 -1
  26. package/dist/application/models/guards/utils.d.cts +1 -1
  27. package/dist/application/models/guards/utils.d.ts +1 -1
  28. package/dist/application/models/guards/utils.js +1 -1
  29. package/dist/application/models/index.cjs +9 -9
  30. package/dist/application/models/index.d.cts +11 -10
  31. package/dist/application/models/index.d.ts +11 -10
  32. package/dist/application/models/index.js +8 -8
  33. package/dist/application/models/variantInfo/index.d.cts +1 -1
  34. package/dist/application/models/variantInfo/index.d.ts +1 -1
  35. package/dist/application/utils/index.cjs +17 -17
  36. package/dist/application/utils/index.d.cts +16 -15
  37. package/dist/application/utils/index.d.ts +16 -15
  38. package/dist/application/utils/index.js +17 -17
  39. package/dist/{atomStore-CmZbgQHc.cjs → atomStore-8ppNkJ_n.cjs} +1 -1
  40. package/dist/{atomStore-DEcDhiLp.js → atomStore-BLYJ2ZoQ.js} +1 -1
  41. package/dist/atoms/app/index.cjs +12 -12
  42. package/dist/atoms/app/index.d.cts +19 -18
  43. package/dist/atoms/app/index.d.ts +14 -13
  44. package/dist/atoms/app/index.js +12 -12
  45. package/dist/atoms/atomStore/index.cjs +1 -1
  46. package/dist/atoms/atomStore/index.js +1 -1
  47. package/dist/atoms/chat/index.cjs +18 -18
  48. package/dist/atoms/chat/index.d.cts +39 -38
  49. package/dist/atoms/chat/index.d.ts +13 -12
  50. package/dist/atoms/chat/index.js +18 -18
  51. package/dist/atoms/globalSearch/index.d.cts +5 -5
  52. package/dist/atoms/org/index.cjs +1 -1
  53. package/dist/atoms/org/index.d.cts +30 -29
  54. package/dist/atoms/org/index.d.ts +30 -29
  55. package/dist/atoms/org/index.js +1 -1
  56. package/dist/atoms/search/index.cjs +20 -20
  57. package/dist/atoms/search/index.d.cts +13 -12
  58. package/dist/atoms/search/index.d.ts +13 -12
  59. package/dist/atoms/search/index.js +20 -20
  60. package/dist/atoms/search/types.d.cts +4 -2
  61. package/dist/atoms/search/types.d.ts +4 -2
  62. package/dist/{cdnContext-Cd0Kvt6g.cjs → cdnContext-Bzqk0s2M.cjs} +2 -2
  63. package/dist/{cdnContext-D8pHA9gh.js → cdnContext-CTC-zBtx.js} +2 -2
  64. package/dist/{chat-U1IgKNij.js → chat-Bzay7QnI.js} +9 -9
  65. package/dist/{chat-DwNALtox.cjs → chat-Ckd1b_z_.cjs} +14 -8
  66. package/dist/{chat-EJbfGWRr.js → chat-ClvJ9xEj.js} +1 -1
  67. package/dist/{chat-CJ9D8n7g.cjs → chat-DCGriB7h.cjs} +1 -1
  68. package/dist/{chatElementDisplayLocation-DWmfNX_u.d.cts → chatElementDisplayLocation-B7vr33eG.d.cts} +1 -1
  69. package/dist/{chatElementDisplayLocation-DbmdwAff.d.ts → chatElementDisplayLocation-D4XF0UfI.d.ts} +1 -1
  70. package/dist/{chatSearch-DtE2cUQw.cjs → chatSearch-Bev4ZI8Z.cjs} +4 -4
  71. package/dist/{chatSearch-Bb2SMr9X.js → chatSearch-DNaGtQyx.js} +4 -4
  72. package/dist/{chatState-BXBN-12W.js → chatState-CcCvgmSM.js} +3 -3
  73. package/dist/{chatState-B3Dyrd9M.cjs → chatState-OkYPVghN.cjs} +3 -3
  74. package/dist/{commerce-api-DXbnMNT8.js → commerce-api-ml5fkEuk.js} +9 -8
  75. package/dist/{commerce-api-Dx02FCQ7.cjs → commerce-api-sQtLuwTh.cjs} +9 -8
  76. package/dist/{common-CuwWqIJ1.cjs → common-DQPvV_S_.cjs} +1 -1
  77. package/dist/{common-Df2bwzd2.js → common-c_4eX0qn.js} +1 -1
  78. package/dist/{components-QGCWJ26c.js → components-CDpaMUjK.js} +1 -1
  79. package/dist/{components-BCfFLf9X.cjs → components-DKwVHIjq.cjs} +1 -1
  80. package/dist/config/index.cjs +4 -4
  81. package/dist/config/index.d.cts +4 -4
  82. package/dist/config/index.d.ts +4 -4
  83. package/dist/config/index.js +4 -4
  84. package/dist/config/locators/components/chat/index.cjs +1 -1
  85. package/dist/config/locators/components/chat/index.d.cts +1 -1
  86. package/dist/config/locators/components/chat/index.d.ts +1 -1
  87. package/dist/config/locators/components/chat/index.js +1 -1
  88. package/dist/config/locators/components/common/index.cjs +1 -1
  89. package/dist/config/locators/components/common/index.d.cts +1 -1
  90. package/dist/config/locators/components/common/index.d.ts +1 -1
  91. package/dist/config/locators/components/common/index.js +1 -1
  92. package/dist/config/locators/components/index.cjs +1 -1
  93. package/dist/config/locators/components/index.d.cts +1 -1
  94. package/dist/config/locators/components/index.d.ts +1 -1
  95. package/dist/config/locators/components/index.js +1 -1
  96. package/dist/config/locators/index.cjs +4 -4
  97. package/dist/config/locators/index.d.cts +4 -4
  98. package/dist/config/locators/index.d.ts +4 -4
  99. package/dist/config/locators/index.js +4 -4
  100. package/dist/contexts/amplitudeContext/index.cjs +17 -16
  101. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  102. package/dist/contexts/amplitudeContext/index.d.ts +1 -1
  103. package/dist/contexts/amplitudeContext/index.js +17 -16
  104. package/dist/contexts/cdnContext/index.cjs +4 -4
  105. package/dist/contexts/cdnContext/index.js +4 -4
  106. package/dist/contexts/chatContext/index.cjs +25 -25
  107. package/dist/contexts/chatContext/index.d.cts +2 -2
  108. package/dist/contexts/chatContext/index.d.ts +2 -2
  109. package/dist/contexts/chatContext/index.js +25 -25
  110. package/dist/contexts/enviveConfigContext/index.cjs +4 -4
  111. package/dist/contexts/enviveConfigContext/index.d.cts +3 -3
  112. package/dist/contexts/enviveConfigContext/index.d.ts +3 -3
  113. package/dist/contexts/enviveConfigContext/index.js +4 -4
  114. package/dist/contexts/enviveCssContext/index.cjs +15 -15
  115. package/dist/contexts/enviveCssContext/index.js +15 -15
  116. package/dist/contexts/featureFlagContext/index.cjs +6 -6
  117. package/dist/contexts/featureFlagContext/index.d.cts +3 -3
  118. package/dist/contexts/featureFlagContext/index.d.ts +3 -3
  119. package/dist/contexts/featureFlagContext/index.js +6 -6
  120. package/dist/contexts/featureFlagServiceContext/index.cjs +3 -3
  121. package/dist/contexts/featureFlagServiceContext/index.d.cts +4 -4
  122. package/dist/contexts/featureFlagServiceContext/index.d.ts +4 -4
  123. package/dist/contexts/featureFlagServiceContext/index.js +3 -3
  124. package/dist/contexts/graphqlContext/index.cjs +11 -11
  125. package/dist/contexts/graphqlContext/index.d.cts +13 -12
  126. package/dist/contexts/graphqlContext/index.d.ts +13 -12
  127. package/dist/contexts/graphqlContext/index.js +11 -11
  128. package/dist/contexts/localStorageContext/index.cjs +2 -2
  129. package/dist/contexts/localStorageContext/index.js +2 -2
  130. package/dist/contexts/newOrgConfigContext/index.cjs +14 -14
  131. package/dist/contexts/newOrgConfigContext/index.d.cts +14 -13
  132. package/dist/contexts/newOrgConfigContext/index.d.ts +14 -13
  133. package/dist/contexts/newOrgConfigContext/index.js +14 -14
  134. package/dist/contexts/searchContext/index.cjs +18 -18
  135. package/dist/contexts/searchContext/index.d.cts +1 -1
  136. package/dist/contexts/searchContext/index.d.ts +1 -1
  137. package/dist/contexts/searchContext/index.js +18 -18
  138. package/dist/contexts/sessionStorageContext/index.cjs +2 -2
  139. package/dist/contexts/sessionStorageContext/index.js +2 -2
  140. package/dist/contexts/shopifyUrlContext/index.cjs +2 -2
  141. package/dist/contexts/shopifyUrlContext/index.d.cts +3 -3
  142. package/dist/contexts/shopifyUrlContext/index.d.ts +3 -3
  143. package/dist/contexts/shopifyUrlContext/index.js +2 -2
  144. package/dist/contexts/systemSettingsContext/index.cjs +4 -4
  145. package/dist/contexts/systemSettingsContext/index.d.cts +16 -15
  146. package/dist/contexts/systemSettingsContext/index.d.ts +16 -15
  147. package/dist/contexts/systemSettingsContext/index.js +4 -4
  148. package/dist/contexts/types.cjs +1 -1
  149. package/dist/contexts/types.d.cts +3 -3
  150. package/dist/contexts/types.d.ts +3 -3
  151. package/dist/contexts/types.js +1 -1
  152. package/dist/contexts/userIdentityContext/index.cjs +20 -20
  153. package/dist/contexts/userIdentityContext/index.d.cts +1 -1
  154. package/dist/contexts/userIdentityContext/index.d.ts +1 -1
  155. package/dist/contexts/userIdentityContext/index.js +20 -20
  156. package/dist/{enviveConfig-BlIkxiAF.js → enviveConfig-DV8F12B9.js} +3 -3
  157. package/dist/{enviveConfig-B42OJ8bK.cjs → enviveConfig-DZHdtLsQ.cjs} +3 -3
  158. package/dist/{enviveConfigContext-1_EivtCa.js → enviveConfigContext-BS7aNop5.js} +3 -3
  159. package/dist/{enviveConfigContext-Y1ahEAMe.cjs → enviveConfigContext-CTcHUIFP.cjs} +3 -3
  160. package/dist/{featureFlagServiceContext-D3Ge8GH5.cjs → featureFlagServiceContext-CJyYItqu.cjs} +3 -3
  161. package/dist/{featureFlagServiceContext-C5U0bshi.d.ts → featureFlagServiceContext-CpxlOkI9.d.ts} +2 -2
  162. package/dist/{featureFlagServiceContext-CAPrb4e_.js → featureFlagServiceContext-FBM6DdMJ.js} +3 -3
  163. package/dist/{featureFlagServiceContext-CiKWV306.d.cts → featureFlagServiceContext-p5UBwPM3.d.cts} +2 -2
  164. package/dist/{featureGates-D4Me_IZH.js → featureGates-KEwAL8p_.js} +1 -1
  165. package/dist/{featureGates-Bt_Y3kZ7.cjs → featureGates-qU_ulhpC.cjs} +1 -1
  166. package/dist/{frontendConfig-BiD1-j48.d.ts → frontendConfig-Cawh5iqv.d.ts} +6 -3
  167. package/dist/{frontendConfig-tVg0hsWZ.d.cts → frontendConfig-iZipB5FG.d.cts} +6 -3
  168. package/dist/graphql-CkxgqsXP.js +48 -0
  169. package/dist/graphql-i3dtpVTl.cjs +71 -0
  170. package/dist/{graphqlContext-Bf3E-V2T.d.cts → graphqlContext-BeyKU1Dr.d.cts} +2 -2
  171. package/dist/{graphqlContext-CpwAvnro.cjs → graphqlContext-CVbYIftg.cjs} +6 -6
  172. package/dist/{graphqlContext-CDeKzb46.d.ts → graphqlContext-DgkS-UX1.d.ts} +4 -4
  173. package/dist/{graphqlContext-dyWNSWNv.js → graphqlContext-DouNZbYo.js} +5 -5
  174. package/dist/hooks/AmplitudeOperations/index.cjs +18 -18
  175. package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
  176. package/dist/hooks/AmplitudeOperations/index.d.ts +1 -1
  177. package/dist/hooks/AmplitudeOperations/index.js +18 -18
  178. package/dist/hooks/AppDetails/index.cjs +15 -15
  179. package/dist/hooks/AppDetails/index.d.cts +12 -11
  180. package/dist/hooks/AppDetails/index.d.ts +12 -11
  181. package/dist/hooks/AppDetails/index.js +15 -15
  182. package/dist/hooks/CdnOperations/index.cjs +4 -4
  183. package/dist/hooks/CdnOperations/index.js +4 -4
  184. package/dist/hooks/ChatToggle/index.cjs +18 -18
  185. package/dist/hooks/ChatToggle/index.d.cts +1 -1
  186. package/dist/hooks/ChatToggle/index.d.ts +1 -1
  187. package/dist/hooks/ChatToggle/index.js +18 -18
  188. package/dist/hooks/ChatToggleAnalytics/index.cjs +19 -19
  189. package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
  190. package/dist/hooks/ChatToggleAnalytics/index.d.ts +1 -1
  191. package/dist/hooks/ChatToggleAnalytics/index.js +19 -19
  192. package/dist/hooks/CustomerSupportHandoff/index.cjs +1 -1
  193. package/dist/hooks/CustomerSupportHandoff/index.js +1 -1
  194. package/dist/hooks/Debounce/index.cjs +20 -2
  195. package/dist/hooks/Debounce/index.js +18 -2
  196. package/dist/hooks/ElementObserver/index.d.cts +1 -1
  197. package/dist/hooks/ElementObserver/index.d.ts +1 -1
  198. package/dist/hooks/GrabAndScroll/index.d.ts +2 -2
  199. package/dist/hooks/GraphQLConfig/index.cjs +12 -12
  200. package/dist/hooks/GraphQLConfig/index.d.cts +13 -12
  201. package/dist/hooks/GraphQLConfig/index.d.ts +13 -12
  202. package/dist/hooks/GraphQLConfig/index.js +12 -12
  203. package/dist/hooks/IdentifyUser/index.cjs +20 -20
  204. package/dist/hooks/IdentifyUser/index.js +20 -20
  205. package/dist/hooks/ImageResolver/index.cjs +10 -10
  206. package/dist/hooks/ImageResolver/index.js +10 -10
  207. package/dist/hooks/LocalStorageOperations/index.cjs +2 -2
  208. package/dist/hooks/LocalStorageOperations/index.js +2 -2
  209. package/dist/hooks/MessageFilter/index.cjs +8 -8
  210. package/dist/hooks/MessageFilter/index.d.cts +12 -11
  211. package/dist/hooks/MessageFilter/index.d.ts +12 -11
  212. package/dist/hooks/MessageFilter/index.js +8 -8
  213. package/dist/hooks/NewOrgConfig/index.cjs +15 -15
  214. package/dist/hooks/NewOrgConfig/index.d.cts +14 -13
  215. package/dist/hooks/NewOrgConfig/index.d.ts +14 -13
  216. package/dist/hooks/NewOrgConfig/index.js +15 -15
  217. package/dist/hooks/Search/index.cjs +323 -152
  218. package/dist/hooks/Search/index.d.cts +21 -17
  219. package/dist/hooks/Search/index.d.ts +21 -17
  220. package/dist/hooks/Search/index.js +323 -153
  221. package/dist/hooks/SearchOperations/index.cjs +18 -18
  222. package/dist/hooks/SearchOperations/index.d.cts +1 -1
  223. package/dist/hooks/SearchOperations/index.d.ts +1 -1
  224. package/dist/hooks/SearchOperations/index.js +18 -18
  225. package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
  226. package/dist/hooks/SessionStorageOperations/index.js +2 -2
  227. package/dist/hooks/ShopifyUrlOperations/index.cjs +2 -2
  228. package/dist/hooks/ShopifyUrlOperations/index.d.cts +5 -5
  229. package/dist/hooks/ShopifyUrlOperations/index.d.ts +5 -5
  230. package/dist/hooks/ShopifyUrlOperations/index.js +2 -2
  231. package/dist/hooks/SystemSettingsContext/index.cjs +5 -5
  232. package/dist/hooks/SystemSettingsContext/index.d.cts +12 -11
  233. package/dist/hooks/SystemSettingsContext/index.d.ts +14 -13
  234. package/dist/hooks/SystemSettingsContext/index.js +5 -5
  235. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +17 -17
  236. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -2
  237. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -2
  238. package/dist/hooks/TrackComponentVisibleEvent/index.js +17 -17
  239. package/dist/hooks/UpdateAnalyticsProps/index.cjs +16 -16
  240. package/dist/hooks/UpdateAnalyticsProps/index.js +16 -16
  241. package/dist/hooks/utils.d.cts +12 -11
  242. package/dist/hooks/utils.d.ts +12 -11
  243. package/dist/{index-B6xpW8RG.d.ts → index--9_c4tze.d.ts} +1 -1
  244. package/dist/index-BEpDGqnz.d.cts +41 -0
  245. package/dist/{index-D31m6bPU.d.ts → index-BKvFVPUX.d.ts} +1 -1
  246. package/dist/{index-VwfWqyR_.d.ts → index-BNHIIgYk.d.ts} +1 -1
  247. package/dist/index-BUDrAxnl.d.ts +673 -0
  248. package/dist/{index-DzbkQtaK.d.cts → index-CCboEuTO.d.cts} +1 -1
  249. package/dist/{index-wFHfdr6p.d.ts → index-CMJM-3zV.d.ts} +5 -5
  250. package/dist/{index-FQjyuD3D.d.cts → index-COXkY78t.d.cts} +1 -1
  251. package/dist/{index--uHjE7L8.d.ts → index-D7htGSQC.d.ts} +1 -1
  252. package/dist/index-DM_5fh8c.d.ts +101 -0
  253. package/dist/index-DU7uw0ba.d.cts +101 -0
  254. package/dist/{index-Da1s8h5C.d.cts → index-DZtnHhlr.d.cts} +1 -1
  255. package/dist/{index-Bq39XSmY.d.cts → index-DpJzjjpi.d.cts} +34 -34
  256. package/dist/{index-DSRs6N6J.d.ts → index-Dtw-hJdt.d.ts} +1 -1
  257. package/dist/index-Dy3TTIOm.d.cts +673 -0
  258. package/dist/index-ErVcwUnR.d.ts +41 -0
  259. package/dist/{index-Cyq5HiC0.d.cts → index-OkKEOL6H.d.cts} +1 -1
  260. package/dist/{index-9NE86em3.d.cts → index-hAqp0oYb.d.cts} +1 -1
  261. package/dist/interceptors/index.d.cts +13 -12
  262. package/dist/interceptors/index.d.ts +13 -12
  263. package/dist/interceptors/types.d.cts +12 -11
  264. package/dist/interceptors/types.d.ts +12 -11
  265. package/dist/{localStorageContext-DAOJ4be4.js → localStorageContext-CqcSvg2H.js} +2 -2
  266. package/dist/{localStorageContext-C5giszHn.cjs → localStorageContext-DiLfSsqL.cjs} +2 -2
  267. package/dist/{locators-C2fWd-74.js → locators-BMQGmGLq.js} +1 -1
  268. package/dist/{locators-Cx3q6Z_h.cjs → locators-DxYdak1F.cjs} +1 -1
  269. package/dist/{logger-0D_8Ip2L.cjs → logger-TBIl4uIH.cjs} +1 -1
  270. package/dist/{logger-Co0IA3k5.js → logger-W3lqg-4b.js} +1 -1
  271. package/dist/models-CWOgrLCm.js +1284 -0
  272. package/dist/models-DqdLOi2I.cjs +1519 -0
  273. package/dist/{newOrgConfigContext-BMvcqPzD.cjs → newOrgConfigContext-BIDz4ZuO.cjs} +4 -4
  274. package/dist/{newOrgConfigContext-DOdUxlOE.d.cts → newOrgConfigContext-CJI3tsVV.d.cts} +2 -2
  275. package/dist/{newOrgConfigContext-BVyJExeW.d.ts → newOrgConfigContext-CKn7B2rj.d.ts} +2 -2
  276. package/dist/{newOrgConfigContext-6mlrvr1w.js → newOrgConfigContext-u_9UPNcX.js} +4 -4
  277. package/dist/{nodeSelector-DYhDUi7v.d.ts → nodeSelector-B5NfnUHv.d.ts} +1 -1
  278. package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-vKB44CDB.d.cts} +1 -1
  279. package/dist/{orgAnalyticsConfig-Bm23fw4s.cjs → orgAnalyticsConfig-CGEQtAFs.cjs} +1 -1
  280. package/dist/{orgAnalyticsConfig-CpBmga08.js → orgAnalyticsConfig-i4jozLBB.js} +1 -1
  281. package/dist/responseGenerics-D9bS-Dd6.d.ts +148 -0
  282. package/dist/{index-Cx9e-fRi.d.ts → responseGenerics-DWLV09cQ.d.cts} +4 -40
  283. package/dist/{search-y-ioX5Mz.d.cts → search-6RrxBXD6.d.cts} +1 -1
  284. package/dist/{search-D-UfTjB7.cjs → search-CTVX9gC6.cjs} +2 -2
  285. package/dist/{search-B1OtJe8Z.d.ts → search-DrJiCT7d.d.ts} +1 -1
  286. package/dist/{search-yawhMv22.js → search-NgNrXNS9.js} +2 -2
  287. package/dist/{search-filter-types-BxaNSLs_.d.cts → search-filter-types-BItKtezf.d.cts} +1 -1
  288. package/dist/{search-filter-types-OI9zH3E_.d.ts → search-filter-types-CGFhksO3.d.ts} +1 -1
  289. package/dist/{searchContext-CFuwIIW-.cjs → searchContext-CnDXkawZ.cjs} +6 -6
  290. package/dist/{searchContext-CiqOqTJL.js → searchContext-DtRmshTA.js} +6 -6
  291. package/dist/{sessionStorageContext-BmCW091C.cjs → sessionStorageContext-1Ks_d4Z0.cjs} +2 -2
  292. package/dist/{sessionStorageContext-CNxkqJi1.js → sessionStorageContext-CDcl7NVl.js} +2 -2
  293. package/dist/{shopifyUrlContext-aZMwCfbJ.cjs → shopifyUrlContext-CxjV3qvH.cjs} +2 -2
  294. package/dist/{shopifyUrlContext-BXbI0PIG.js → shopifyUrlContext-D2btP_lY.js} +2 -2
  295. package/dist/{spiffyWidgets-CvEJIuJx.d.ts → spiffyWidgets-CR6F7FRE.d.ts} +1 -1
  296. package/dist/{spiffyWidgets-BuS00VaQ.d.cts → spiffyWidgets-eNbU1gMc.d.cts} +1 -1
  297. package/dist/{systemSettingsContext-SozpUezn.cjs → systemSettingsContext-BejoGzzB.cjs} +2 -2
  298. package/dist/{systemSettingsContext-kz6yyiFF.js → systemSettingsContext-C4dtZ0uZ.js} +2 -2
  299. package/dist/{test-types-DRhqHXw-.d.ts → test-types-BEml_bm3.d.ts} +1 -1
  300. package/dist/{test-types-ThQiO_cc.d.cts → test-types-Dsu8RJZu.d.cts} +1 -1
  301. package/dist/types/index.d.cts +2 -2
  302. package/dist/types/index.d.ts +2 -2
  303. package/dist/{types-r0Z6CwyF.d.ts → types-4LQ7LUCk.d.ts} +2 -2
  304. package/dist/types-BegmH0S1.d.ts +60 -0
  305. package/dist/types-BuvXXGxE.cjs +1 -1
  306. package/dist/types-CtUb63bt.js +76 -0
  307. package/dist/{types-zQGBI-Yo.d.cts → types-DFsSqmWx.d.cts} +2 -2
  308. package/dist/types-DWorwfS-.d.cts +60 -0
  309. package/dist/types-DXnG1tV0.js +1 -1
  310. package/dist/types-UUvB6h05.cjs +106 -0
  311. package/dist/types.d.cts +3 -3
  312. package/dist/types.d.ts +3 -3
  313. package/dist/{unsupportedProductExceptions-B4f9aLjr.cjs → unsupportedProductExceptions-B0yx2bHK.cjs} +1 -1
  314. package/dist/{unsupportedProductExceptions-DlmraJm8.js → unsupportedProductExceptions-Cs66ngs3.js} +1 -1
  315. package/dist/{urlsParser-DhcEZLc_.cjs → urlsParser-COzMdJaX.cjs} +1 -1
  316. package/dist/{urlsParser-DLCzibqU.js → urlsParser-DxjoLj98.js} +1 -1
  317. package/dist/{useAmplitudeOperations-D0nvIYlt.cjs → useAmplitudeOperations-BJXD9v2u.cjs} +2 -2
  318. package/dist/{useAmplitudeOperations-Dhks3PgF.js → useAmplitudeOperations-Dym0Ker8.js} +2 -2
  319. package/dist/{useAppDetails-qyaQIbWE.js → useAppDetails-Dmh16bWE.js} +4 -4
  320. package/dist/{useAppDetails-B9sGmpJ3.cjs → useAppDetails-DsAZ1xQn.cjs} +4 -4
  321. package/dist/{useGraphQLConfig-CgKEfVYc.cjs → useGraphQLConfig-B3DlwmGg.cjs} +2 -2
  322. package/dist/{useGraphQLConfig-BccQUaeW.js → useGraphQLConfig-DSRaDTdT.js} +2 -2
  323. package/dist/{userIdentityContext-BKLedN4R.d.ts → userIdentityContext-C6kApbuk.d.ts} +1 -1
  324. package/dist/userIdentityContext-DF3atBFE.js +119 -0
  325. package/dist/userIdentityContext-DpQTduhF.cjs +136 -0
  326. package/dist/{userIdentityContext-D2oFVFzo.d.cts → userIdentityContext-kU1PIo8K.d.cts} +1 -1
  327. package/dist/{utils-DFPt3FSw.js → utils-B7KTAEmV.js} +4 -4
  328. package/dist/{utils-BhyZiDrE.d.ts → utils-BRkGP1eb.d.ts} +1 -1
  329. package/dist/{utils-B7PAzB_M.d.cts → utils-CBD4g2Nc.d.cts} +4 -4
  330. package/dist/{utils-C6imnLBo.cjs → utils-CDw74BCO.cjs} +1 -1
  331. package/dist/{utils-Cazq8Q3q.cjs → utils-CcC2jZRi.cjs} +4 -4
  332. package/dist/{utils-B3x_9JTY.d.cts → utils-DCrwX6FT.d.cts} +1 -1
  333. package/dist/{utils-C4ci_t0-.js → utils-DIvMgPe8.js} +1 -1
  334. package/dist/{utils-B1v0iXs3.d.ts → utils-QKFAbPT6.d.ts} +4 -4
  335. package/package.json +7 -2
  336. package/src/application/commerce-api.ts +2 -0
  337. package/src/application/models/graphql/index.ts +1 -0
  338. package/src/atoms/app/index.ts +1 -1
  339. package/src/atoms/search/productRetrievalAPI.ts +70 -0
  340. package/src/atoms/search/productRetrievalAdapter.ts +25 -0
  341. package/src/atoms/search/types.ts +13 -0
  342. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +525 -0
  343. package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -2
  344. package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +790 -0
  345. package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +775 -0
  346. package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +495 -0
  347. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +806 -0
  348. package/src/contexts/systemSettingsContext/__tests__/systemSettingsContext.test.tsx +506 -0
  349. package/src/contexts/types.ts +3 -0
  350. package/src/contexts/userIdentityContext/userIdentityContext.tsx +7 -5
  351. package/src/hooks/Search/useRecommendedProducts.ts +48 -0
  352. package/src/hooks/Search/useSearch.tsx +89 -182
  353. package/src/hooks/Search/useSearchInput.ts +263 -0
  354. package/src/types/FilterAttribute.ts +35 -0
  355. package/dist/amplitudeContext-DOqL2Vn8.js +0 -264
  356. package/dist/amplitudeContext-ZTQMvVTV.cjs +0 -286
  357. package/dist/graphql-OkhsP4ir.js +0 -36
  358. package/dist/graphql-l4dQrsA6.cjs +0 -53
  359. package/dist/index-Bmub8e38.d.cts +0 -98
  360. package/dist/index-CG3P8xE1.d.cts +0 -676
  361. package/dist/index-CiWEYzXl.d.cts +0 -184
  362. package/dist/index-D2VaMPA3.d.ts +0 -98
  363. package/dist/index-fUsw_Mea.d.ts +0 -676
  364. package/dist/models-CkJ-wg9Q.cjs +0 -1537
  365. package/dist/models-UHOY0ak5.js +0 -1296
  366. package/dist/types-BwNrLPSZ.cjs +0 -106
  367. package/dist/types-CKMMb_gX.d.cts +0 -51
  368. package/dist/types-D3uOF0Oy.js +0 -76
  369. package/dist/types-DZPuBnHe.d.ts +0 -51
  370. package/dist/useDebounce-BZDtUAQ8.cjs +0 -26
  371. package/dist/useDebounce-ueblXZI-.js +0 -19
  372. package/dist/userIdentityContext-Cb6lLv6t.cjs +0 -132
  373. package/dist/userIdentityContext-O_DHHPTN.js +0 -115
  374. /package/dist/{AmplitudeOperations-ChZWcSsc.js → AmplitudeOperations-C-ieCm9m.js} +0 -0
  375. /package/dist/{AmplitudeOperations-JggIc1zD.cjs → AmplitudeOperations-p7APchq9.cjs} +0 -0
  376. /package/dist/{index-RcVcRKH7.d.cts → index-A0HvA68Y.d.cts} +0 -0
  377. /package/dist/{index-mHc9_XC3.d.ts → index-DNVvRcKu.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { useAtom, useAtomValue, useSetAtom } from "jotai";
2
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
- import { useDebounce } from "src/hooks/Debounce/useDebounce";
2
+ import { useCallback, useEffect, useMemo, useRef } from "react";
3
+
4
4
  import {
5
5
  addSearchFilterAtom,
6
6
  clearSearchFiltersAtom,
@@ -16,7 +16,6 @@ import {
16
16
  SelectedFilterOption,
17
17
  } from "src/atoms/search";
18
18
  import {
19
- autocompleteStateAtom,
20
19
  isFilterOpenAtom,
21
20
  } from "src/atoms/globalSearch/globalSearch";
22
21
  import { formatFilterDisplayName } from "src/atoms/search/utils";
@@ -27,7 +26,6 @@ import {
27
26
  } from "src/contexts/amplitudeContext/amplitudeContext";
28
27
  import { SpiffyWidgets } from "src/application/models/spiffyWidgets";
29
28
  import { ProductCardConfig } from "src/contexts/types";
30
- import Logger from "src/application/logging/logger";
31
29
  import { SearchResult } from "src/application/models/api/search";
32
30
  import { SearchResponseProduct } from "@spiffy-ai/commerce-api-client";
33
31
  import {
@@ -36,8 +34,14 @@ import {
36
34
  } from "src/types/search-filter-types";
37
35
  import { getSearchResultsState, SearchResultsState } from "../utils";
38
36
  import { orgShortNameAtom } from "src/atoms/envive/enviveConfig";
39
- import { useNewOrgConfig } from "../NewOrgConfig";
40
37
  import { useTrackComponentVisibleEvent } from "../TrackComponentVisibleEvent";
38
+ import { amplitudeTrackEventAtom } from "src/atoms/amplitude/amplitudeTrackEventAtom";
39
+ import { newOrgConfigAtom } from "src/atoms/org";
40
+ import { retrievedProductsAtom } from "src/atoms/search/productRetrievalAPI";
41
+ import { useSearchInput } from "./useSearchInput";
42
+ import { SearchResponseProductAttributes } from "src/application/models";
43
+ import { useNewOrgConfig } from "../NewOrgConfig";
44
+ import { useRecommendedProducts } from "./useRecommendedProducts";
41
45
 
42
46
  export interface SearchResultsHocProps {
43
47
  // Data
@@ -50,14 +54,15 @@ export interface SearchResultsHocProps {
50
54
  searchFilters: SearchFilterDatum[];
51
55
  availableDynamicFilters: { name: string; displayName: string }[];
52
56
  selectedFilterOptions: SelectedFilterOption[];
57
+ recommendedProducts: SearchResponseProductAttributes['attributes'][];
53
58
 
54
59
  // State
55
60
  searchText: string;
61
+ query: string;
56
62
  searchResultsState: SearchResultsState;
57
- isLoadingAutocomplete: boolean;
58
63
  isLoadingSearch: boolean;
59
64
  isFilterOpen: boolean;
60
- isDirty: boolean;
65
+ shouldShowAutocomplete: boolean;
61
66
  focusedIndex: number;
62
67
  focusedOptionId: string | undefined;
63
68
 
@@ -69,13 +74,9 @@ export interface SearchResultsHocProps {
69
74
  onSubmitSearch: () => void;
70
75
  onAutocompleteSelect: (suggestion: string) => void;
71
76
  onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
72
- onToggleDynamicFilter: ({
73
- filter,
74
- dynamicFilterDisplayName,
75
- }: {
76
- filter: string;
77
- dynamicFilterDisplayName: string;
78
- }) => void;
77
+ onSearchInputFocus: () => void;
78
+ onSearchInputBlur: () => void;
79
+ onToggleDynamicFilter: ({ filter, dynamicFilterDisplayName }: { filter: string; dynamicFilterDisplayName: string }) => void;
79
80
  onSelectFilterItem: SelectFilterItem;
80
81
  onRemoveFilter: (filter: SelectedFilterOption) => void;
81
82
  onClearAllFilters: () => void;
@@ -93,10 +94,6 @@ export const useSearch = (): SearchResultsHocProps => {
93
94
  useAtomValue(searchAtom);
94
95
  const productList = useAtomValue(filteredSearchProductsAtom);
95
96
  const performSearch = useSetAtom(performSearchAtom);
96
- const [
97
- { results: autocompleteResults, isLoading: isLoadingAutocomplete },
98
- setAutocompleteState,
99
- ] = useAtom(autocompleteStateAtom);
100
97
  const [{ query }] = useAtom(searchParamsAtom);
101
98
  const [isFilterOpen, setIsFilterOpen] = useAtom(isFilterOpenAtom);
102
99
  const [selectedFilterOptions] = useAtom(searchSelectedFiltersAtom);
@@ -105,20 +102,44 @@ export const useSearch = (): SearchResultsHocProps => {
105
102
  const [productSorting, setProductSorting] = useAtom(searchProductSortingAtom);
106
103
  const clearFilters = useSetAtom(clearSearchFiltersAtom);
107
104
  const searchFilters = useAtomValue(searchFiltersAtom);
108
-
109
- // State
110
- const [isDirty, setIsDirty] = useState(true);
111
- const [focusedIndex, setFocusedIndex] = useState(-1);
112
- const [focusedOptionId, setFocusedOptionId] = useState<string | undefined>(
113
- undefined
114
- );
115
- const [searchText, setSearchText] = useState(query || "");
105
+ const recommendedProducts = useRecommendedProducts();
116
106
 
117
107
  // Refs
118
108
  const searchResultsRef = useRef<HTMLDivElement>(null);
119
-
120
- // Derived State
121
- const debouncedSearchText = useDebounce(searchText, 200);
109
+
110
+ // Utilities
111
+ const scrollToTop = useCallback(() => {
112
+ const container = searchResultsRef.current;
113
+ if (container) {
114
+ container.scrollTo({ top: 0, behavior: 'smooth' });
115
+ } else {
116
+ window.scrollTo({ top: 0, behavior: 'smooth' });
117
+ }
118
+ }, []);
119
+
120
+ // Search Input Hook
121
+ const searchInput = useSearchInput({
122
+ initialSearchText: query || '',
123
+ searchOrigin: SpiffyWidgets.SearchResults,
124
+ onSearchSubmit: (searchQuery) => {
125
+ performSearch({ query: searchQuery });
126
+ },
127
+ });
128
+
129
+ const {
130
+ searchText,
131
+ focusedIndex,
132
+ focusedOptionId,
133
+ autocompleteResults,
134
+ shouldShowAutocomplete,
135
+ handleSearchInputChange,
136
+ handleSearchInputFocus,
137
+ handleSearchInputBlur,
138
+ handleKeyDown,
139
+ handleAutocompleteSelect,
140
+ handleSubmitSearch,
141
+ setSearchText,
142
+ } = searchInput;
122
143
  const searchResultsState = getSearchResultsState(isLoadingSearch, searchData);
123
144
 
124
145
  const dynamicFilters = searchData?.filters || [];
@@ -136,9 +157,7 @@ export const useSearch = (): SearchResultsHocProps => {
136
157
  return dynamicFilters
137
158
  .filter(
138
159
  (dynamicFilterName) =>
139
- !selectedFilterOptions.some(
140
- (option) => option.id === `dynamic:${dynamicFilterName}`
141
- )
160
+ !selectedFilterOptions.some((option) => option.id === `dynamic:${dynamicFilterName}`),
142
161
  )
143
162
  .map((dynamicFilterName) => ({
144
163
  name: dynamicFilterName,
@@ -150,39 +169,36 @@ export const useSearch = (): SearchResultsHocProps => {
150
169
  const sortOptions = [
151
170
  {
152
171
  filterItemId: String(ProductSorting.FEATURED),
153
- displayName: "Relevance",
172
+ displayName: 'Relevance',
154
173
  productCount: 0,
155
174
  isSelected: productSorting === ProductSorting.FEATURED,
156
175
  },
157
176
  {
158
177
  filterItemId: String(ProductSorting.PRICE_ASC),
159
- displayName: "Price: Low to High",
178
+ displayName: 'Price: Low to High',
160
179
  productCount: 0,
161
180
  isSelected: productSorting === ProductSorting.PRICE_ASC,
162
181
  },
163
182
  {
164
183
  filterItemId: String(ProductSorting.PRICE_DESC),
165
- displayName: "Price: High to Low",
184
+ displayName: 'Price: High to Low',
166
185
  productCount: 0,
167
186
  isSelected: productSorting === ProductSorting.PRICE_DESC,
168
187
  },
169
188
  ];
170
189
 
171
- return [
172
- { filterId: "sort", displayName: "SORT", items: sortOptions },
173
- ...searchFilters,
174
- ] as SearchFilterDatum[];
190
+ return [{ filterId: 'sort', displayName: 'SORT', items: sortOptions }, ...searchFilters] as SearchFilterDatum[];
175
191
  }, [productSorting, searchFilters]);
176
192
 
177
193
  const filterButtonText = useMemo(() => {
178
194
  const selectedCount = filters.reduce((acc: number, filter) => {
179
- if (filter.filterId === "sort") {
195
+ if (filter.filterId === 'sort') {
180
196
  return acc;
181
197
  }
182
198
  return acc + filter.items.filter((item) => item.isSelected).length;
183
199
  }, 0);
184
200
  if (selectedCount === 0) {
185
- return "Filter & Sort";
201
+ return 'Filter & Sort';
186
202
  }
187
203
  return `Filter & Sort (${selectedCount})`;
188
204
  }, [filters]);
@@ -190,110 +206,31 @@ export const useSearch = (): SearchResultsHocProps => {
190
206
  // Callbacks
191
207
  const { trackEvent } = useAmplitude();
192
208
 
209
+
193
210
  const handleToggleDynamicFilter = useCallback(
194
- ({
195
- filter,
196
- dynamicFilterDisplayName,
197
- }: {
198
- filter: string;
199
- dynamicFilterDisplayName: string;
200
- }) => {
211
+ ({ filter, dynamicFilterDisplayName }: { filter: string; dynamicFilterDisplayName: string }) => {
201
212
  trackEvent({
202
213
  eventName: SpiffyMetricsEventName.SearchFilterClicked,
203
214
  eventProps: {
204
- filterType: "Dynamic",
215
+ filterType: 'Dynamic',
205
216
  filterValue: filter,
206
217
  queryText: searchText,
207
218
  },
208
219
  });
209
- addFilter(
210
- createFilterOption("dynamic", filter, dynamicFilterDisplayName)
211
- );
220
+ addFilter(createFilterOption('dynamic', filter, dynamicFilterDisplayName));
221
+ scrollToTop();
212
222
  },
213
- [addFilter, searchText, trackEvent]
223
+ [addFilter, searchText, scrollToTop],
214
224
  );
215
225
 
216
226
  const handleRemoveFilter = useCallback(
217
227
  (filter: SelectedFilterOption) => {
218
228
  removeFilter(filter.id);
229
+ scrollToTop();
219
230
  },
220
- [removeFilter]
231
+ [removeFilter, scrollToTop],
221
232
  );
222
233
 
223
- const handleSubmitSearch = useCallback(async () => {
224
- if (searchText.trim()) {
225
- trackEvent({
226
- eventName: SpiffyMetricsEventName.SearchQuerySubmitted,
227
- eventProps: {
228
- searchOrigin: SpiffyWidgets.SearchResults,
229
- queryText: searchText.trim(),
230
- },
231
- alsoSendToGoogleAnalytics: true,
232
- });
233
- const url = new URL(window.location.href);
234
- url.searchParams.set("esq", searchText.trim());
235
- window.history.pushState({}, "", url);
236
- performSearch({ query: searchText.trim() });
237
- }
238
- }, [performSearch, searchText, trackEvent]);
239
-
240
- const handleAutocompleteSelect = useCallback(
241
- (suggestion: string) => {
242
- setSearchText(suggestion);
243
- handleSubmitSearch();
244
- },
245
- [handleSubmitSearch, setSearchText]
246
- );
247
-
248
- const handleKeyDown = useCallback(
249
- (event: React.KeyboardEvent<HTMLInputElement>) => {
250
- if (event.key === "ArrowDown") {
251
- event.preventDefault();
252
- const newIndex = (focusedIndex + 1) % autocompleteResults.length;
253
- setFocusedIndex(newIndex);
254
- setFocusedOptionId(`option-${newIndex}`);
255
- } else if (event.key === "ArrowUp") {
256
- event.preventDefault();
257
- const newIndex =
258
- (focusedIndex - 1 + autocompleteResults.length) %
259
- autocompleteResults.length;
260
- setFocusedIndex(newIndex);
261
- setFocusedOptionId(`option-${newIndex}`);
262
- } else if (event.key === "Enter") {
263
- if (focusedIndex === -1) {
264
- event.preventDefault();
265
- handleSubmitSearch();
266
- } else {
267
- event.preventDefault();
268
- const suggestionText = autocompleteResults[focusedIndex];
269
- handleAutocompleteSelect(suggestionText);
270
- }
271
- } else if (event.key === "Escape") {
272
- event.preventDefault();
273
- setFocusedIndex(-1);
274
- setFocusedOptionId(undefined);
275
- }
276
- },
277
- [
278
- autocompleteResults,
279
- focusedIndex,
280
- handleAutocompleteSelect,
281
- handleSubmitSearch,
282
- ]
283
- );
284
-
285
- const handleSearchInputChange = (newValue: string) => {
286
- if (newValue.length === 1) {
287
- trackEvent({
288
- eventName: SpiffyMetricsEventName.SearchInputStarted,
289
- eventProps: {
290
- searchOrigin: SpiffyWidgets.SearchResults,
291
- },
292
- });
293
- }
294
- setSearchText(newValue);
295
- setIsDirty(true);
296
- };
297
234
 
298
235
  const handleSelectFilterItem: SelectFilterItem = useCallback(
299
236
  ({
@@ -307,7 +244,7 @@ export const useSearch = (): SearchResultsHocProps => {
307
244
  isSelected: boolean;
308
245
  displayName: string;
309
246
  }) => {
310
- if (filterId === "sort") {
247
+ if (filterId === 'sort') {
311
248
  const newSort = filterItemId as ProductSorting;
312
249
  trackEvent({
313
250
  eventName: SpiffyMetricsEventName.SearchSortClicked,
@@ -317,39 +254,44 @@ export const useSearch = (): SearchResultsHocProps => {
317
254
  },
318
255
  });
319
256
  setProductSorting(newSort);
257
+ scrollToTop();
320
258
  } else if (!isSelected) {
321
259
  removeFilter(`${filterId}:${filterItemId}`);
260
+ scrollToTop();
322
261
  } else {
323
262
  trackEvent({
324
263
  eventName: SpiffyMetricsEventName.SearchFilterClicked,
325
264
  eventProps: {
326
- filterType: "Static",
265
+ filterType: 'Static',
327
266
  filterCategory: filterId,
328
267
  filterValue: filterItemId,
329
268
  queryText: searchText,
330
269
  },
331
270
  });
332
271
  addFilter(createFilterOption(filterId, filterItemId, displayName));
272
+ scrollToTop();
333
273
  }
334
274
  },
335
- [addFilter, removeFilter, setProductSorting, searchText, trackEvent]
275
+ [addFilter, removeFilter, setProductSorting, searchText, scrollToTop],
336
276
  );
337
277
 
278
+
338
279
  const handleClearAllFilters = useCallback(() => {
339
280
  setProductSorting(ProductSorting.FEATURED);
340
281
  clearFilters();
341
- }, [setProductSorting, clearFilters]);
282
+ scrollToTop();
283
+ }, [setProductSorting, clearFilters, scrollToTop]);
342
284
 
343
285
  // Side Effects
344
286
  useTrackComponentVisibleEvent(
345
287
  SpiffyWidgets.SearchResults,
346
288
  searchResultsRef,
347
289
  {},
348
- SpiffyMetricsEventName.SearchComponentVisible
290
+ SpiffyMetricsEventName.SearchComponentVisible,
349
291
  );
350
292
 
351
293
  useEffect(() => {
352
- if (searchResultsState === SearchResultsState.NoResults || searchResultsState === SearchResultsState.Results) {
294
+ if (searchResultsState === SearchResultsState.Results || searchResultsState === SearchResultsState.NoResults) {
353
295
  trackEvent({
354
296
  eventName: SpiffyMetricsEventName.SearchResultsViewed,
355
297
  eventProps: {
@@ -358,72 +300,35 @@ export const useSearch = (): SearchResultsHocProps => {
358
300
  },
359
301
  });
360
302
  }
361
- }, [productList.length, searchResultsState, trackEvent]);
303
+ }, [productList.length, searchResultsState]);
362
304
 
305
+ // This is the single source of truth for the search text triggering a search
363
306
  useEffect(() => {
364
307
  if (query && query !== searchText) {
308
+ const esq = new URLSearchParams(window.location.search).get('esq');
365
309
  setSearchText(query);
310
+ performSearch({ query: esq ?? query });
366
311
  }
367
- // eslint-disable-next-line react-hooks/exhaustive-deps
368
- }, [query]);
369
-
370
- useEffect(() => {
371
- const esq = new URLSearchParams(window.location.search).get("esq");
372
- if (esq) {
373
- setSearchText(esq);
374
- performSearch({ query: esq });
375
- }
376
- // eslint-disable-next-line react-hooks/exhaustive-deps
377
- }, [performSearch]);
378
-
379
- const fetchAutocompleteSuggestions = (_query: string) => {
380
- // TODO: implement autocomplete suggestions
381
- return Promise.resolve([]);
382
- };
383
-
384
- useEffect(() => {
385
- if (fetchAutocompleteSuggestions === undefined) {
386
- return;
387
- }
388
-
389
- if (!isDirty || debouncedSearchText.length <= 2) {
390
- setAutocompleteState({ results: [], isLoading: false });
391
- return;
392
- }
393
-
394
- setAutocompleteState((prev) => ({ ...prev, isLoading: true }));
395
-
396
- const fetchData = async () => {
397
- try {
398
- const results = await fetchAutocompleteSuggestions?.(
399
- debouncedSearchText
400
- );
401
- setAutocompleteState({ results: results ?? [], isLoading: false });
402
- } catch (error) {
403
- Logger.logError("Failed to fetch autocomplete suggestions:", error);
404
- setAutocompleteState({ results: [], isLoading: false });
405
- }
406
- };
407
-
408
- fetchData();
409
- }, [debouncedSearchText, isDirty, setAutocompleteState]);
312
+ // eslint-disable-next-line react-hooks/exhaustive-deps
313
+ }, [performSearch, query, setSearchText]);
410
314
 
411
315
  return {
412
316
  searchData,
413
- searchResponseId: searchData?.searchResponseId ?? "",
317
+ searchResponseId: searchData?.searchResponseId ?? '',
414
318
  merchantShortName: safeMerchantShortName,
415
319
  productCardConfig: safeProductCardConfig,
416
320
  productList,
321
+ recommendedProducts,
417
322
  autocompleteResults,
418
323
  searchFilters: filters,
419
324
  availableDynamicFilters,
420
325
  selectedFilterOptions,
421
326
  searchText,
327
+ query: query || '',
422
328
  searchResultsState,
423
- isLoadingAutocomplete,
424
329
  isLoadingSearch,
425
330
  isFilterOpen,
426
- isDirty,
331
+ shouldShowAutocomplete,
427
332
  focusedIndex,
428
333
  focusedOptionId,
429
334
  filterButtonText,
@@ -431,6 +336,8 @@ export const useSearch = (): SearchResultsHocProps => {
431
336
  onSubmitSearch: handleSubmitSearch,
432
337
  onAutocompleteSelect: handleAutocompleteSelect,
433
338
  onKeyDown: handleKeyDown,
339
+ onSearchInputFocus: handleSearchInputFocus,
340
+ onSearchInputBlur: handleSearchInputBlur,
434
341
  onToggleDynamicFilter: handleToggleDynamicFilter,
435
342
  onSelectFilterItem: handleSelectFilterItem,
436
343
  onRemoveFilter: handleRemoveFilter,
@@ -438,4 +345,4 @@ export const useSearch = (): SearchResultsHocProps => {
438
345
  setIsFilterOpen,
439
346
  searchResultsRef,
440
347
  };
441
- };
348
+ };