@envive-ai/react-hooks 0.1.3 → 0.1.5

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 (439) hide show
  1. package/dist/adapters/amplitude/index.cjs +13 -13
  2. package/dist/adapters/amplitude/index.d.cts +5 -3
  3. package/dist/adapters/amplitude/index.d.ts +5 -3
  4. package/dist/adapters/amplitude/index.js +10 -10
  5. package/dist/api-B2euFL-5.cjs +269 -0
  6. package/dist/api-XRr_lAG6.js +190 -0
  7. package/dist/application/config/index.cjs +14 -5
  8. package/dist/application/config/index.d.cts +2 -1
  9. package/dist/application/config/index.d.ts +2 -1
  10. package/dist/application/config/index.js +14 -5
  11. package/dist/application/models/graphql/index.cjs +12 -12
  12. package/dist/application/models/graphql/index.d.cts +1 -1
  13. package/dist/application/models/graphql/index.d.ts +1 -1
  14. package/dist/application/models/graphql/index.js +10 -10
  15. package/dist/application/models/guards/api/index.cjs +2 -2
  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 +2 -2
  19. package/dist/application/models/index.cjs +54 -54
  20. package/dist/application/models/index.d.cts +8 -9
  21. package/dist/application/models/index.d.ts +8 -9
  22. package/dist/application/models/index.js +10 -10
  23. package/dist/application/models/utilityTypes/index.cjs +1 -1
  24. package/dist/application/models/utilityTypes/index.d.cts +1 -1
  25. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  26. package/dist/application/models/utilityTypes/index.js +1 -1
  27. package/dist/application/models/variantInfo/index.cjs +1 -1
  28. package/dist/application/models/variantInfo/index.d.cts +1 -1
  29. package/dist/application/models/variantInfo/index.d.ts +1 -1
  30. package/dist/application/models/variantInfo/index.js +1 -1
  31. package/dist/application/service/customerService/index.cjs +2 -2
  32. package/dist/application/service/customerService/index.d.cts +2 -2
  33. package/dist/application/service/customerService/index.d.ts +2 -2
  34. package/dist/application/service/customerService/index.js +2 -2
  35. package/dist/application/service/index.cjs +38 -757
  36. package/dist/application/service/index.d.cts +26 -20
  37. package/dist/application/service/index.d.ts +26 -20
  38. package/dist/application/service/index.js +12 -727
  39. package/dist/application/utils/index.cjs +37 -37
  40. package/dist/application/utils/index.d.cts +12 -12
  41. package/dist/application/utils/index.d.ts +14 -14
  42. package/dist/application/utils/index.js +10 -10
  43. package/dist/atomStore-B1cgmbP0.js +32 -0
  44. package/dist/atomStore-JwGb7pcy.cjs +58 -0
  45. package/dist/atomStore-ONYy0XuA.d.cts +24 -0
  46. package/dist/atomStore-kOKiEcNl.d.ts +24 -0
  47. package/dist/atoms/app/index.cjs +16 -16
  48. package/dist/atoms/app/index.d.cts +11 -11
  49. package/dist/atoms/app/index.d.ts +12 -12
  50. package/dist/atoms/app/index.js +10 -10
  51. package/dist/atoms/atomStore/index.cjs +1 -2
  52. package/dist/atoms/atomStore/index.d.cts +1 -22
  53. package/dist/atoms/atomStore/index.d.ts +1 -22
  54. package/dist/atoms/atomStore/index.js +1 -2
  55. package/dist/atoms/chat/index.cjs +40 -40
  56. package/dist/atoms/chat/index.d.cts +37 -37
  57. package/dist/atoms/chat/index.d.ts +38 -38
  58. package/dist/atoms/chat/index.js +10 -10
  59. package/dist/atoms/globalSearch/index.cjs +1 -1
  60. package/dist/atoms/globalSearch/index.d.cts +7 -6
  61. package/dist/atoms/globalSearch/index.d.ts +2 -1
  62. package/dist/atoms/globalSearch/index.js +1 -1
  63. package/dist/atoms/org/index.cjs +38 -40
  64. package/dist/atoms/org/index.d.cts +35 -53
  65. package/dist/atoms/org/index.d.ts +34 -52
  66. package/dist/atoms/org/index.js +11 -12
  67. package/dist/atoms/search/index.cjs +41 -43
  68. package/dist/atoms/search/index.d.cts +9 -10
  69. package/dist/atoms/search/index.d.ts +9 -10
  70. package/dist/atoms/search/index.js +10 -12
  71. package/dist/bandolier-Da4wt6sm.cjs +1230 -0
  72. package/dist/bandolier-DzEmYWcz.js +1230 -0
  73. package/dist/carpe-AXipz0Xl.cjs +608 -0
  74. package/dist/carpe-CaUKwcEa.js +606 -0
  75. package/dist/chat-CHmD79E1.js +26 -0
  76. package/dist/{chat-CCgyDehy.cjs → chat-_NzpO_Hn.cjs} +2 -1
  77. package/dist/{components-CScS7Ii-.cjs → components-D0XDRcaN.cjs} +2 -1
  78. package/dist/components-Dl-TMD9k.js +11 -0
  79. package/dist/config/locators/components/chat/index.cjs +1 -1
  80. package/dist/config/locators/components/chat/index.d.ts +1 -1
  81. package/dist/config/locators/components/chat/index.js +1 -1
  82. package/dist/config/locators/components/chat/variants/index.cjs +2 -1
  83. package/dist/config/locators/components/chat/variants/index.d.cts +2 -1
  84. package/dist/config/locators/components/chat/variants/index.d.ts +2 -1
  85. package/dist/config/locators/components/chat/variants/index.js +2 -1
  86. package/dist/config/locators/components/index.cjs +1 -1
  87. package/dist/config/locators/components/index.d.ts +1 -1
  88. package/dist/config/locators/components/index.js +1 -1
  89. package/dist/config/locators/components/search/index.cjs +2 -1
  90. package/dist/config/locators/components/search/index.d.cts +2 -1
  91. package/dist/config/locators/components/search/index.d.ts +2 -1
  92. package/dist/config/locators/components/search/index.js +2 -1
  93. package/dist/config/locators/index.cjs +4 -4
  94. package/dist/config/locators/index.d.cts +2 -1
  95. package/dist/config/locators/index.d.ts +4 -3
  96. package/dist/config/locators/index.js +4 -4
  97. package/dist/contexts/index.cjs +20 -23
  98. package/dist/contexts/index.d.cts +10 -59
  99. package/dist/contexts/index.d.ts +10 -59
  100. package/dist/contexts/index.js +11 -17
  101. package/dist/contexts-CtRlNXaS.js +7674 -0
  102. package/dist/contexts-CtgmnYNn.cjs +9088 -0
  103. package/dist/coterie--MGvWeVh.cjs +240 -0
  104. package/dist/coterie-oKHAT0lx.js +240 -0
  105. package/dist/customerService-BG1uNZZ1.cjs +36 -0
  106. package/dist/customerService-BHQRnLhC.js +23 -0
  107. package/dist/custservice-types-C8-9vKWb.cjs +35 -0
  108. package/dist/custservice-types-CamCiXjq.js +23 -0
  109. package/dist/default-B4fINY5_.cjs +4 -0
  110. package/dist/default-BrTQxA0c.js +4 -0
  111. package/dist/default-C3LrcbZB.cjs +199 -0
  112. package/dist/default-CXkYrLEr.js +176 -0
  113. package/dist/divIds-0Vj9g-fM.js +23 -0
  114. package/dist/{divIds-CFyAjjp3.cjs → divIds-CjceLRD9.cjs} +2 -1
  115. package/dist/dreamlandBaby-BEqt0eKF.js +347 -0
  116. package/dist/dreamlandBaby-DBDjEJCc.cjs +347 -0
  117. package/dist/{embedded-BlXJUbik.cjs → embedded-B5Wi9g0T.cjs} +2 -1
  118. package/dist/embedded-_cLpd6FK.js +23 -0
  119. package/dist/entrypoints-CNUvSgnk.js +7 -0
  120. package/dist/entrypoints-DM9Sm18O.cjs +19 -0
  121. package/dist/events/index.cjs +1 -1
  122. package/dist/events/index.d.cts +2 -1
  123. package/dist/events/index.d.ts +2 -1
  124. package/dist/events/index.js +1 -1
  125. package/dist/events-ClCDFK7t.js +78 -0
  126. package/dist/events-Da7gpmGv.cjs +90 -0
  127. package/dist/featureFlagService-5wdmW02z.d.ts +18 -0
  128. package/dist/featureFlagService-DaelrXEk.d.cts +18 -0
  129. package/dist/fiveCbd-CdqNt16h.cjs +614 -0
  130. package/dist/fiveCbd-D6B-sgnX.js +614 -0
  131. package/dist/forLoveAndLemons-C7GsJG7f.cjs +668 -0
  132. package/dist/forLoveAndLemons-gNDlMtPR.js +666 -0
  133. package/dist/{globalSearch-hxbXekus.cjs → globalSearch-BTeZxvk1.cjs} +2 -1
  134. package/dist/globalSearch-b0wC7ZEO.js +14 -0
  135. package/dist/greenpan-B5AaW4M_.js +398 -0
  136. package/dist/greenpan-DrORpYms.cjs +398 -0
  137. package/dist/grooveLife-BJqsfH2H.cjs +343 -0
  138. package/dist/grooveLife-xIUmDM8s.js +343 -0
  139. package/dist/homegrownCannabis-8TZ21u6L.cjs +411 -0
  140. package/dist/homegrownCannabis-BtMuEvbZ.js +411 -0
  141. package/dist/hooks/index.cjs +36 -38
  142. package/dist/hooks/index.d.cts +36 -82
  143. package/dist/hooks/index.d.ts +38 -84
  144. package/dist/hooks/index.js +11 -17
  145. package/dist/index-BTK5uzs6.d.cts +98 -0
  146. package/dist/index-BdNKc2ix.d.cts +2 -1
  147. package/dist/index-BrXuc_Ck.d.cts +2 -1
  148. package/dist/index-BzgkfbNO.d.cts +228 -0
  149. package/dist/index-CKKkTsms.d.ts +39 -0
  150. package/dist/index-CKUpnyJQ.d.ts +72 -0
  151. package/dist/index-CSIOQD-A.d.ts +25 -0
  152. package/dist/index-CbJZOEU4.d.ts +203 -0
  153. package/dist/index-ClJ0nMsR.d.cts +184 -0
  154. package/dist/index-Cr2y08f1.d.ts +9 -0
  155. package/dist/index-Cx9e-fRi.d.ts +184 -0
  156. package/dist/index-D2VaMPA3.d.ts +98 -0
  157. package/dist/index-D46Rd0io.d.cts +39 -0
  158. package/dist/index-DFL1dIT_.d.ts +7 -0
  159. package/dist/index-DXpgMVpp.d.ts +749 -0
  160. package/dist/index-Dxpscrvz.d.ts +228 -0
  161. package/dist/index-K2kNsOTw.d.cts +203 -0
  162. package/dist/index-MFbPQ8Ji.d.ts +95 -0
  163. package/dist/index-VHFMGkO-.d.cts +72 -0
  164. package/dist/index-VSFakgAI.d.cts +95 -0
  165. package/dist/index-aNW5V9fh.d.cts +749 -0
  166. package/dist/index-zZjcds15.d.cts +7 -0
  167. package/dist/interceptors/index.cjs +12 -13
  168. package/dist/interceptors/index.d.cts +10 -10
  169. package/dist/interceptors/index.d.ts +10 -10
  170. package/dist/interceptors/index.js +10 -11
  171. package/dist/jackArcher-WtkbLBZj.cjs +728 -0
  172. package/dist/jackArcher-sO9EbgrZ.js +728 -0
  173. package/dist/jordanCraig-471FcgqF.cjs +1787 -0
  174. package/dist/jordanCraig-DNOncplU.js +1787 -0
  175. package/dist/kindredBravely-BlLyHGMX.cjs +491 -0
  176. package/dist/kindredBravely-cqZ4OvXp.js +491 -0
  177. package/dist/kutFromTheKloth-3mOIryvt.cjs +370 -0
  178. package/dist/kutFromTheKloth-DtVNCMKa.js +370 -0
  179. package/dist/larryAndSerges-88Bvq-Us.cjs +262 -0
  180. package/dist/larryAndSerges-cvak6May.js +262 -0
  181. package/dist/leapsAndRebounds-Dmf8eUPq.js +361 -0
  182. package/dist/leapsAndRebounds-iWKc923H.cjs +361 -0
  183. package/dist/logger-Dln20ans.cjs +26 -0
  184. package/dist/logger-pdEEY8T2.js +20 -0
  185. package/dist/longevityrx-BTMI9vn-.js +321 -0
  186. package/dist/longevityrx-CobPyigd.cjs +321 -0
  187. package/dist/lookOptic-C4H_c0JZ.cjs +283 -0
  188. package/dist/lookOptic-Jwf7EAU8.js +283 -0
  189. package/dist/mantraBrand-CySGqbn6.cjs +751 -0
  190. package/dist/mantraBrand-DoaVj837.js +751 -0
  191. package/dist/medterra-BnZ5p27n.cjs +584 -0
  192. package/dist/medterra-DaICcPPp.js +584 -0
  193. package/dist/modells-CZ1L6dD_.js +485 -0
  194. package/dist/modells-DF0SndHr.cjs +485 -0
  195. package/dist/nodeSelector-DybpVr-i.d.ts +31 -0
  196. package/dist/nodeSelector-vKB44CDB.d.cts +2 -1
  197. package/dist/orgConfigResults--dAwtw3W.d.ts +881 -0
  198. package/dist/orgConfigResults-BL0XBA6x.d.cts +881 -0
  199. package/dist/pressedFloral-B3t2cYzs.cjs +662 -0
  200. package/dist/pressedFloral-Dsws2Kfb.js +662 -0
  201. package/dist/search-filter-types-9rTb3jMj.d.cts +102 -0
  202. package/dist/search-filter-types-C-zZSpGo.d.ts +102 -0
  203. package/dist/skinPerfection-CILQM2bR.cjs +335 -0
  204. package/dist/skinPerfection-DmQCntRf.js +335 -0
  205. package/dist/snapSupplements--X_v0KRM.js +286 -0
  206. package/dist/snapSupplements-Djuzl0Ed.cjs +286 -0
  207. package/dist/socialProofClasses-DdzG1tZy.js +10 -0
  208. package/dist/socialProofClasses-ky69yppk.cjs +40 -0
  209. package/dist/spanx-Bo81yXSF.cjs +664 -0
  210. package/dist/spanx-DauxB8KE.js +662 -0
  211. package/dist/spanxStaging-BucYQvR1.cjs +849 -0
  212. package/dist/spanxStaging-CfXUukdP.js +846 -0
  213. package/dist/{suggestionBarV2-types-DG3Ekk44.cjs → suggestionBarV2-types-B3lwrENK.cjs} +2 -1
  214. package/dist/suggestionBarV2-types-Penx3Y67.js +10 -0
  215. package/dist/supergoop-8qa_NV3F.cjs +338 -0
  216. package/dist/supergoop-DOaui-A6.js +336 -0
  217. package/dist/test-types-CXVJxTeu.d.ts +40 -0
  218. package/dist/test-types-CuOq25VT.d.cts +40 -0
  219. package/dist/types/index.cjs +2 -2
  220. package/dist/types/index.d.cts +2 -2
  221. package/dist/types/index.d.ts +2 -2
  222. package/dist/types/index.js +2 -2
  223. package/dist/types-CD4LFta-.d.cts +33 -0
  224. package/dist/types-CGC6Oozp.cjs +231 -0
  225. package/dist/types-CnTCkyvK.js +177 -0
  226. package/dist/types-DBdI0j89.d.ts +33 -0
  227. package/dist/uniqueVintage-BWkDgt1z.js +1212 -0
  228. package/dist/uniqueVintage-DAne8XcL.cjs +1214 -0
  229. package/dist/variant-CC1nrywd.d.ts +13 -0
  230. package/dist/variant-CQTuQQSq.d.cts +13 -0
  231. package/dist/venaCbd-B1HO_Pkr.cjs +366 -0
  232. package/dist/venaCbd-CnByO-5R.js +366 -0
  233. package/dist/westonJonBoucher-BAGXegsX.js +423 -0
  234. package/dist/westonJonBoucher-BRfHWMbs.cjs +423 -0
  235. package/dist/wineEnthusiast-DW8JVwV8.cjs +941 -0
  236. package/dist/wineEnthusiast-EJbhMeKQ.js +941 -0
  237. package/dist/wolfMattress-B6INZNRJ.cjs +373 -0
  238. package/dist/wolfMattress-D9P7ErH_.js +373 -0
  239. package/dist/wolfTactical-C5Pupi3J.js +350 -0
  240. package/dist/wolfTactical-TMthZM93.cjs +350 -0
  241. package/package.json +2 -1
  242. package/src/adapters/amplitude/amplitudeAdapter.ts +32 -9
  243. package/src/adapters/spiffy/commerce/api.ts +17 -8
  244. package/src/adapters/spiffy/commerce/graphql.ts +16 -5
  245. package/src/application/config/generalStaticConfig.ts +5 -2
  246. package/src/application/models/api/orgConfigResults.ts +6 -2
  247. package/src/application/models/supportedOrgs.ts +1 -1
  248. package/src/application/models/validators/validateGraphQLColorsConfig.ts +23 -21
  249. package/src/application/service/cdnService.ts +4 -2
  250. package/src/application/service/graphqlConfigService.ts +59 -0
  251. package/src/application/service/index.ts +1 -1
  252. package/src/application/service/pageVariantService.ts +5 -5
  253. package/src/application/service/searchService.ts +9 -2
  254. package/src/application/service/windowChatToggleService.ts +28 -19
  255. package/src/application/service/windowFrontendConfigService.ts +7 -4
  256. package/src/atoms/app/index.ts +26 -17
  257. package/src/atoms/app/variant.ts +1 -0
  258. package/src/atoms/chat/messageQueue.ts +1 -1
  259. package/src/atoms/envive/enviveConfig.ts +81 -0
  260. package/src/atoms/org/graphqlConfig.ts +40 -11
  261. package/src/atoms/org/index.ts +7 -7
  262. package/src/atoms/org/merchantCss.ts +119 -2
  263. package/src/atoms/org/org.ts +67 -70
  264. package/src/atoms/org/orgPageConfig.ts +9 -6
  265. package/src/atoms/org/orgUIConfig.ts +22 -9
  266. package/src/atoms/search/chatSearch.ts +85 -67
  267. package/src/atoms/search/searchAPI.ts +52 -42
  268. package/src/contexts/chatContext.tsx +4 -1
  269. package/src/contexts/enviveConfigContext.tsx +37 -26
  270. package/src/contexts/enviveCssContext.tsx +20 -0
  271. package/src/contexts/index.ts +2 -0
  272. package/src/contexts/orgConfigContext.tsx +106 -0
  273. package/src/contexts/systemSettingsContext.tsx +2 -2
  274. package/src/contexts/types.ts +12 -9
  275. package/src/hooks/index.ts +2 -3
  276. package/src/hooks/useDynamicVariants.ts +48 -32
  277. package/src/hooks/useFileUpload.ts +1 -1
  278. package/src/hooks/useHideElements.ts +21 -18
  279. package/src/hooks/useImageResolver.ts +16 -8
  280. package/src/hooks/useNewOrgConfig.ts +80 -0
  281. package/src/hooks/useSearch.tsx +10 -6
  282. package/src/hooks/utils.ts +1 -1
  283. package/src/interceptors/useFormEscalation.ts +26 -9
  284. package/src/types.ts +0 -2
  285. package/dist/api-BtzLHcfU.cjs +0 -268
  286. package/dist/api-kpPTZhV9.js +0 -189
  287. package/dist/atomStore-BNQyGmU_.cjs +0 -57
  288. package/dist/atomStore-TnLPtYns.js +0 -31
  289. package/dist/bandolier-CQrxBHsk.cjs +0 -1230
  290. package/dist/bandolier-Di9DpZ8e.js +0 -1230
  291. package/dist/carpe-3NJOR-Rj.cjs +0 -608
  292. package/dist/carpe-DmWKaIQq.js +0 -606
  293. package/dist/cdnService-BNreZjqy.js +0 -18
  294. package/dist/cdnService-vLxePdrU.cjs +0 -23
  295. package/dist/chat-CCQMmhc1.cjs +0 -5057
  296. package/dist/chat-Dk6KPb1K.js +0 -25
  297. package/dist/chat-H6YcCS4I.js +0 -4113
  298. package/dist/components-DAQxVIn9.js +0 -10
  299. package/dist/coterie-D0UFsFC5.cjs +0 -240
  300. package/dist/coterie-JblRmIZL.js +0 -240
  301. package/dist/customerService-C4wc0glQ.js +0 -22
  302. package/dist/customerService-zsDlp7g2.cjs +0 -35
  303. package/dist/custservice-types-D8Npo-5Z.js +0 -22
  304. package/dist/custservice-types-E9_OSaZ7.cjs +0 -34
  305. package/dist/default-C5ZTV8HA.cjs +0 -4
  306. package/dist/default-DPv8m-eQ.js +0 -175
  307. package/dist/default-DRKBosow.cjs +0 -198
  308. package/dist/default-ao0vRl0W.js +0 -4
  309. package/dist/divIds-BWvq-i6I.js +0 -22
  310. package/dist/dreamlandBaby-CyS8oW8X.js +0 -347
  311. package/dist/dreamlandBaby-y7kSvwH2.cjs +0 -347
  312. package/dist/embedded-C1jvFj3v.js +0 -22
  313. package/dist/entrypoints-CmmOszXO.js +0 -6
  314. package/dist/entrypoints-fowCLUT2.cjs +0 -18
  315. package/dist/enviveConfigContext-Bs8kepnO.cjs +0 -48
  316. package/dist/enviveConfigContext-CWVdVWKW.js +0 -34
  317. package/dist/events-DgFzlVJR.js +0 -77
  318. package/dist/events-bH-24eRW.cjs +0 -89
  319. package/dist/featureFlagService-CroFRxvD.d.cts +0 -17
  320. package/dist/featureFlagService-NkJ2fuEj.d.ts +0 -17
  321. package/dist/featureGates-BMWXU0dS.d.ts +0 -90
  322. package/dist/featureGates-N_gyHCTn.d.cts +0 -90
  323. package/dist/fiveCbd-CXVuIBiZ.cjs +0 -614
  324. package/dist/fiveCbd-Cyc3-Ab9.js +0 -614
  325. package/dist/forLoveAndLemons-CxQS0USq.cjs +0 -668
  326. package/dist/forLoveAndLemons-D8mcgmdk.js +0 -666
  327. package/dist/frontendConfig-KeNqU1wa.d.cts +0 -790
  328. package/dist/frontendConfig-cPvCTWm6.d.ts +0 -790
  329. package/dist/globalSearch-BC0rOX3E.js +0 -13
  330. package/dist/greenpan-JM6SHcqO.js +0 -398
  331. package/dist/greenpan-eIzyxVsn.cjs +0 -398
  332. package/dist/grooveLife-BmsUc2cD.js +0 -343
  333. package/dist/grooveLife-KdTizVUn.cjs +0 -343
  334. package/dist/homegrownCannabis-C0GDai4r.cjs +0 -411
  335. package/dist/homegrownCannabis-a9udocBT.js +0 -411
  336. package/dist/hooks-DjOa7ihH.cjs +0 -7331
  337. package/dist/hooks-fneW8SWw.js +0 -7152
  338. package/dist/index-BQErGgfM.d.cts +0 -202
  339. package/dist/index-C4zjAR1c.d.cts +0 -227
  340. package/dist/index-CGB6CAmr.d.ts +0 -6
  341. package/dist/index-CIco0cCQ.d.ts +0 -183
  342. package/dist/index-COG1kOZG.d.ts +0 -749
  343. package/dist/index-CVxe7FpL.d.cts +0 -6
  344. package/dist/index-Cn1SeI5y.d.cts +0 -183
  345. package/dist/index-CnqHN_jz.d.ts +0 -202
  346. package/dist/index-Cqg6ltII.d.ts +0 -38
  347. package/dist/index-DE_7Q8qK.d.ts +0 -94
  348. package/dist/index-Da0UzyI9.d.ts +0 -24
  349. package/dist/index-DbWWcYax.d.cts +0 -749
  350. package/dist/index-DtoVXd6O.d.cts +0 -97
  351. package/dist/index-JClBRnSX.d.cts +0 -94
  352. package/dist/index-ghzD_356.d.ts +0 -8
  353. package/dist/index-hdbCEjYy.d.cts +0 -38
  354. package/dist/index-luJrHgPN.d.ts +0 -97
  355. package/dist/index-tfRj22E1.d.ts +0 -227
  356. package/dist/jackArcher-B6OJ0N3a.cjs +0 -728
  357. package/dist/jackArcher-B9fe4Hv8.js +0 -728
  358. package/dist/jordanCraig-0CB_m_ts.cjs +0 -1787
  359. package/dist/jordanCraig-DNm1iw1L.js +0 -1787
  360. package/dist/kindredBravely-CZgt7DJA.js +0 -491
  361. package/dist/kindredBravely-KvYPbckZ.cjs +0 -491
  362. package/dist/kutFromTheKloth-BxgtWZs9.cjs +0 -370
  363. package/dist/kutFromTheKloth-SmteSZjk.js +0 -370
  364. package/dist/larryAndSerges-6O_u3L90.cjs +0 -261
  365. package/dist/larryAndSerges-DO-zG8ES.js +0 -261
  366. package/dist/leapsAndRebounds-BK62AmXw.js +0 -361
  367. package/dist/leapsAndRebounds-gPsWVUmQ.cjs +0 -361
  368. package/dist/logger-Be0NyKaY.cjs +0 -25
  369. package/dist/logger-BexDfK3W.js +0 -19
  370. package/dist/longevityrx-DjKbwJo3.cjs +0 -321
  371. package/dist/longevityrx-eq5TeUcy.js +0 -321
  372. package/dist/lookOptic-BPPqms_j.cjs +0 -283
  373. package/dist/lookOptic-jRpBXQCN.js +0 -283
  374. package/dist/mantraBrand-BZOZfkUK.js +0 -751
  375. package/dist/mantraBrand-Cp8zptkj.cjs +0 -751
  376. package/dist/medterra-BHYCBgvQ.cjs +0 -584
  377. package/dist/medterra-CShe6CLY.js +0 -584
  378. package/dist/modells-DE7-gmjK.cjs +0 -485
  379. package/dist/modells-DFyJxNwT.js +0 -485
  380. package/dist/nodeSelector-DpKXszfU.d.ts +0 -30
  381. package/dist/org-Bkn6fl6I.cjs +0 -106
  382. package/dist/org-CX8HFbc9.js +0 -63
  383. package/dist/pressedFloral-BMkCVs8c.cjs +0 -662
  384. package/dist/pressedFloral-aK9br-LF.js +0 -662
  385. package/dist/search-DtIFZeMA.cjs +0 -743
  386. package/dist/search-eWwg8pNn.js +0 -542
  387. package/dist/search-filter-types-ByJnFPc4.d.cts +0 -101
  388. package/dist/search-filter-types-DPgeG8FS.d.ts +0 -101
  389. package/dist/skinPerfection-B9G6yLM2.js +0 -335
  390. package/dist/skinPerfection-BBC1q65Z.cjs +0 -335
  391. package/dist/snapSupplements-D7hx6Kgj.cjs +0 -286
  392. package/dist/snapSupplements-DKvJl__T.js +0 -286
  393. package/dist/socialProofClasses-BYLiEXpU.cjs +0 -39
  394. package/dist/socialProofClasses-CkJufEGb.js +0 -9
  395. package/dist/spanx-D-ZKkxjM.cjs +0 -664
  396. package/dist/spanx-yl7YfVrf.js +0 -662
  397. package/dist/spanxStaging-CXeIg6zI.cjs +0 -849
  398. package/dist/spanxStaging-DzGXL9wD.js +0 -846
  399. package/dist/suggestionBarV2-types-B0RbMStE.js +0 -9
  400. package/dist/supergoop-CSpDPOpl.cjs +0 -337
  401. package/dist/supergoop-D0UkuRiA.js +0 -335
  402. package/dist/test-types-C9b_OdfO.d.ts +0 -39
  403. package/dist/test-types-CpKCxk8U.d.cts +0 -39
  404. package/dist/types-BE4faOO_.d.cts +0 -32
  405. package/dist/types-C3S1H4hl.js +0 -176
  406. package/dist/types-TD8g7LnH.d.ts +0 -32
  407. package/dist/types-lcjuhDBt.cjs +0 -230
  408. package/dist/uniqueVintage-DygVpCqU.cjs +0 -1214
  409. package/dist/uniqueVintage-_n0FZFVj.js +0 -1212
  410. package/dist/useMessageInterceptor-BP6gzo8a.js +0 -57
  411. package/dist/useMessageInterceptor-BnUG2Pzt.cjs +0 -72
  412. package/dist/variant-DH4zusMi.d.cts +0 -12
  413. package/dist/variant-DTEqSBHd.d.ts +0 -12
  414. package/dist/variantInfo-BTvC6CQh.js +0 -1
  415. package/dist/variantInfo-Cz2YXraO.cjs +0 -0
  416. package/dist/venaCbd-BS0dvdBm.js +0 -366
  417. package/dist/venaCbd-Pqg0bj-P.cjs +0 -366
  418. package/dist/westonJonBoucher-CLw8Hy6u.js +0 -423
  419. package/dist/westonJonBoucher-CeA0jwxe.cjs +0 -423
  420. package/dist/wineEnthusiast-M9P18d1w.js +0 -941
  421. package/dist/wineEnthusiast-gHBaQMbe.cjs +0 -941
  422. package/dist/wolfMattress-BQHjoQYu.js +0 -373
  423. package/dist/wolfMattress-CdmN-Evm.cjs +0 -373
  424. package/dist/wolfTactical-Cc2ZLBRh.js +0 -350
  425. package/dist/wolfTactical-dObnPgAG.cjs +0 -350
  426. package/src/application/service/environmentService.ts +0 -51
  427. package/src/extension.ts +0 -63
  428. package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
  429. package/src/hooks/useReducedMotionWithOverride.ts +0 -15
  430. package/src/hooks/useSnapControl.ts +0 -155
  431. package/src/initialize.ts +0 -163
  432. package/src/main.tsx +0 -108
  433. package/src/merchants/uniqueVintage/views/useUniqueVintageChatSearch.ts +0 -147
  434. /package/dist/{atomStore-B3tsg6mF.cjs → locators-CugndTUM.cjs} +0 -0
  435. /package/dist/{atomStore-FSZd_20F.js → locators-DnKpajbY.js} +0 -0
  436. /package/dist/{locators-C2DX_nX6.js → utilityTypes-BVikejDo.js} +0 -0
  437. /package/dist/{locators-CUpyd9Wt.cjs → utilityTypes-C4h2wgAK.cjs} +0 -0
  438. /package/dist/{utilityTypes-DMdsI0DG.cjs → variantInfo-CNRTY0gH.cjs} +0 -0
  439. /package/dist/{utilityTypes-UWdNHElu.js → variantInfo-CzhR5W6h.js} +0 -0
@@ -0,0 +1,106 @@
1
+ import React, {
2
+ createContext,
3
+ useContext,
4
+ ReactNode,
5
+ useState,
6
+ useEffect,
7
+ } from "react";
8
+ import { useAtomValue } from "jotai";
9
+ import { OrgConfig as OrgConfigType } from "src/application/models/api/orgConfigResults";
10
+ import { getAsyncOrgConfig } from "src/atoms/org/org";
11
+ import { enviveConfigAtom } from "src/atoms/envive/enviveConfig";
12
+ import Logger from "src/application/logging/logger";
13
+
14
+ interface OrgConfigContextType {
15
+ orgConfig: OrgConfigType | undefined;
16
+ loading: boolean;
17
+ error: Error | undefined;
18
+ }
19
+
20
+ const OrgConfigContext = createContext<OrgConfigContextType | undefined>(
21
+ undefined
22
+ );
23
+
24
+ interface OrgConfigProviderProps {
25
+ children: ReactNode;
26
+ }
27
+
28
+ export const OrgConfigProvider: React.FC<OrgConfigProviderProps> = ({
29
+ children,
30
+ }) => {
31
+ const [orgConfig, setOrgConfig] = useState<OrgConfigType | undefined>(
32
+ undefined
33
+ );
34
+ const [loading, setLoading] = useState<boolean>(true);
35
+ const [error, setError] = useState<Error | undefined>(undefined);
36
+
37
+ // Watch for EnviveConfig to be available
38
+ const enviveConfig = useAtomValue(enviveConfigAtom);
39
+
40
+ useEffect(() => {
41
+ const fetchOrgConfig = async () => {
42
+ try {
43
+ setLoading(true);
44
+ setError(undefined); // Clear any previous errors
45
+
46
+ // Check if we have the required dependencies from EnviveConfig
47
+ if (!enviveConfig) {
48
+ Logger.logDebug(
49
+ "OrgConfigProvider: Waiting for EnviveConfig to be available"
50
+ );
51
+ return; // Don't fetch yet, wait for EnviveConfig
52
+ }
53
+
54
+ // Check if we have either orgLevelApiKey or orgShortName
55
+ const hasApiKey = enviveConfig.orgLevelApiKey;
56
+ const hasOrgShortName = enviveConfig.orgShortName;
57
+
58
+ if (!hasApiKey && !hasOrgShortName) {
59
+ Logger.logWarn(
60
+ "OrgConfigProvider: Neither orgLevelApiKey nor orgShortName available in EnviveConfig",
61
+ enviveConfig
62
+ );
63
+ setError(
64
+ new Error(
65
+ "OrgConfigProvider requires either orgLevelApiKey or orgShortName to be provided in EnviveConfigProvider"
66
+ )
67
+ );
68
+ return;
69
+ }
70
+
71
+ Logger.logDebug(
72
+ "OrgConfigProvider: EnviveConfig available, fetching OrgConfig",
73
+ {
74
+ hasApiKey: !!hasApiKey,
75
+ hasOrgShortName: !!hasOrgShortName,
76
+ }
77
+ );
78
+
79
+ const fetchedConfig = await getAsyncOrgConfig();
80
+ setOrgConfig(fetchedConfig);
81
+ Logger.logDebug("OrgConfigProvider: Successfully fetched OrgConfig");
82
+ } catch (err) {
83
+ Logger.logError("OrgConfigProvider: Failed to fetch OrgConfig", err);
84
+ setError(err as Error);
85
+ } finally {
86
+ setLoading(false);
87
+ }
88
+ };
89
+
90
+ fetchOrgConfig();
91
+ }, [enviveConfig]); // Re-run when enviveConfig changes
92
+
93
+ return (
94
+ <OrgConfigContext.Provider value={{ orgConfig, loading, error }}>
95
+ {children}
96
+ </OrgConfigContext.Provider>
97
+ );
98
+ };
99
+
100
+ export const useOrgConfig = () => {
101
+ const context = useContext(OrgConfigContext);
102
+ if (context === undefined) {
103
+ throw new Error("useOrgConfig must be used within an OrgConfigProvider");
104
+ }
105
+ return context;
106
+ };
@@ -8,7 +8,7 @@ import {
8
8
  useState,
9
9
  } from "react";
10
10
  import { GenerationParams } from "src/application/models";
11
- import { endpointURLAtom } from "src/atoms/org/org";
11
+ import { baseUrlAtom } from "src/atoms/envive/enviveConfig";
12
12
 
13
13
  // TODO: Refactor this to a common service that handles query params (and spiffy variables all together)
14
14
  const getChatModelName = () => {
@@ -49,7 +49,7 @@ const SystemSettingsContextProvider = ({
49
49
  const [params, setParams] = useState<GenerationParams | undefined>(
50
50
  () => generationParams ?? defaultGenerationParams
51
51
  );
52
- const endpointURL = useAtomValue(endpointURLAtom);
52
+ const endpointURL = useAtomValue(baseUrlAtom);
53
53
  const settingsContextValues = useMemo(
54
54
  () => ({
55
55
  generationParams: params,
@@ -963,6 +963,8 @@ interface OrgConfigContextType {
963
963
  orgUIConfig: OrgUIConfig;
964
964
  }
965
965
 
966
+ export type OrgConfig = OrgUIConfig;
967
+
966
968
  export {
967
969
  CategoryExtractorType,
968
970
  ColorNames,
@@ -972,15 +974,16 @@ export {
972
974
  };
973
975
 
974
976
  export interface EnviveConfig {
975
- amplitudeApiKey: string;
976
- dataResidency: string;
977
- env: string;
978
- baseUrl: string;
979
- reactAppName: string;
980
- cdnUrl: string;
981
- contextSource: string;
982
- orgLevelApiKey: string;
983
- orgShortName: string;
977
+ amplitudeApiKey?: string;
978
+ dataResidency?: string;
979
+ env?: string;
980
+ baseUrl?: string;
981
+ reactAppName?: string;
982
+ cdnUrl?: string;
983
+ contextSource?: string;
984
+ orgLevelApiKey?: string;
985
+ orgShortName?: string;
986
+ identifyingPrefix?: string;
984
987
  }
985
988
 
986
989
  export type {
@@ -7,16 +7,15 @@ export * from "./useElementObserver";
7
7
  export * from "./useFileUpload";
8
8
  export * from "./useGrabAndScroll";
9
9
  export * from "./useHideElements";
10
- export * from "./useHorizontalScrollAnimation";
11
10
  export * from "./useImageResolver";
12
11
  export * from "./useIntersection";
13
12
  export * from "./useIsSmallScreen";
14
13
  export * from "./useMessageFilter";
15
14
  export * from "./useMessageScrollObserver";
16
- export * from "./useReducedMotionWithOverride";
17
15
  export * from "./useSearch";
18
16
  export * from "./useSnapCalculator";
19
- export * from "./useSnapControl";
20
17
  export * from "./useSystemSettingsContext";
21
18
  export * from "./useTrackComponentVisibleEvent";
22
19
  export * from "./useUpdateAnalyticsProps";
20
+ export * from "./useNewOrgConfig";
21
+ export * from "./utils";
@@ -1,16 +1,22 @@
1
- import Logger from 'src/application/logging/logger';
2
- import { useEffect, useRef, useCallback, useState } from 'react';
3
- import { useAtom, useAtomValue, useSetAtom } from 'jotai';
4
- import { variantInfoAtom } from 'src/atoms/app';
5
- import { PageVariantService } from 'src/application/service/pageVariantService';
6
- import { orgPageConfigAtom } from 'src/atoms/org/orgPageConfig';
7
- import { hasParsedVariantInfoAtom, supportedEventAtom } from 'src/atoms/app/variant';
8
- import { SpiffyMetricsEventName, AmplitudeAdapter } from 'src/adapters/amplitude';
9
- import { orgUIConfigAtom } from 'src/atoms/org/orgUIConfig';
10
- import { createAppLoadedEvent, createVisitUserEvent } from 'src/hooks/utils';
11
- import { queueUserEventAtom } from 'src/atoms/chat/messageQueue';
12
- import { UserEvent } from 'src/application/models';
13
- import { UserEventCategory } from '@spiffy-ai/commerce-api-client';
1
+ import Logger from "src/application/logging/logger";
2
+ import { useEffect, useRef, useCallback, useState } from "react";
3
+ import { useAtom, useAtomValue, useSetAtom } from "jotai";
4
+ import { variantInfoAtom } from "src/atoms/app";
5
+ import { PageVariantService } from "src/application/service/pageVariantService";
6
+ import { orgPageConfigAtom } from "src/atoms/org/orgPageConfig";
7
+ import {
8
+ hasParsedVariantInfoAtom,
9
+ supportedEventAtom,
10
+ } from "src/atoms/app/variant";
11
+ import {
12
+ SpiffyMetricsEventName,
13
+ AmplitudeAdapter,
14
+ } from "src/adapters/amplitude";
15
+ import { orgUIConfigAtom } from "src/atoms/org/orgUIConfig";
16
+ import { createAppLoadedEvent, createVisitUserEvent } from "src/hooks/utils";
17
+ import { queueUserEventAtom } from "src/atoms/chat/messageQueue";
18
+ import { UserEvent } from "src/application/models";
19
+ import { UserEventCategory } from "@spiffy-ai/commerce-api-client";
14
20
 
15
21
  // consider putting this in the org config
16
22
  const DEBOUNCE_DELAY_MS = 300;
@@ -26,7 +32,10 @@ const debounce = (func: () => void, delay: number): (() => void) => {
26
32
  };
27
33
  };
28
34
 
29
- const isUserEventEqual = (event1: UserEvent | null, event2: UserEvent | null) => {
35
+ const isUserEventEqual = (
36
+ event1: UserEvent | null,
37
+ event2: UserEvent | null
38
+ ) => {
30
39
  if (!event1 || !event2) {
31
40
  return false;
32
41
  }
@@ -48,8 +57,8 @@ const isUserEventEqual = (event1: UserEvent | null, event2: UserEvent | null) =>
48
57
  if (
49
58
  event1.category === UserEventCategory.PlpVisit &&
50
59
  event2.category === UserEventCategory.PlpVisit &&
51
- 'id' in event1.attributes.attributes &&
52
- 'id' in event2.attributes.attributes
60
+ "id" in event1.attributes.attributes &&
61
+ "id" in event2.attributes.attributes
53
62
  ) {
54
63
  return event1.attributes.attributes.id === event2.attributes.attributes.id;
55
64
  }
@@ -68,14 +77,17 @@ export const useDynamicVariants = () => {
68
77
  const setVariantInfo = useSetAtom(variantInfoAtom);
69
78
  const setSupportedEvent = useSetAtom(supportedEventAtom);
70
79
  const queueUserEvent = useSetAtom(queueUserEventAtom);
71
- const [mostRecentUserEvent, setMostRecentUserEvent] = useState<UserEvent | null>(null);
80
+ const [mostRecentUserEvent, setMostRecentUserEvent] =
81
+ useState<UserEvent | null>(null);
72
82
 
73
83
  const orgPageConfig = useAtomValue(orgPageConfigAtom);
74
84
  const debouncedFunc = useRef<(() => void) | null>(null);
75
85
  // we need to fetch org info before we can get the variant info. this prevents the rest of the application
76
86
  // logic from running before that happens. More specifically, we want to have all org and variant states
77
87
  // settled before mounting the ChatContextProvider which will start the session.
78
- const [hasParsedVariantInfo, setHasParsedVariantInfo] = useAtom(hasParsedVariantInfoAtom);
88
+ const [hasParsedVariantInfo, setHasParsedVariantInfo] = useAtom(
89
+ hasParsedVariantInfoAtom
90
+ );
79
91
  const animationFrameRef = useRef<number | null>(null);
80
92
  const isBeforeUnload = useRef(false);
81
93
 
@@ -98,16 +110,17 @@ export const useDynamicVariants = () => {
98
110
 
99
111
  if (!orgPageConfig) {
100
112
  Logger.logWarn(
101
- '[spiffy-ai] orgPageConfig not found. skipping page change handling',
102
- undefined,
113
+ "[spiffy-ai] orgPageConfig not found. skipping page change handling",
114
+ undefined
103
115
  );
104
116
  return;
105
117
  }
106
118
 
107
- const parsedVariantInfo = await PageVariantService.getVariantInfoWithPageConfig(orgPageConfig);
119
+ const parsedVariantInfo =
120
+ await PageVariantService.getVariantInfoWithPageConfig(orgPageConfig);
108
121
 
109
122
  if (parsedVariantInfo) {
110
- Logger.logDebug('[spiffy-ai] variantInfo changed', parsedVariantInfo);
123
+ Logger.logDebug("[spiffy-ai] variantInfo changed", parsedVariantInfo);
111
124
  const [newVariantInfo, pageVariantConfig] = parsedVariantInfo;
112
125
 
113
126
  setVariantInfo(newVariantInfo);
@@ -120,8 +133,10 @@ export const useDynamicVariants = () => {
120
133
  queueUserEvent(visitEvent);
121
134
  }
122
135
 
123
- const supportedEvent = await PageVariantService.checkSupportedEvent(pageVariantConfig);
124
- console.log('useDynamicVariants - supportedEvent', supportedEvent);
136
+ const supportedEvent = await PageVariantService.checkSupportedEvent(
137
+ pageVariantConfig
138
+ );
139
+ console.log("useDynamicVariants - supportedEvent", supportedEvent);
125
140
  setSupportedEvent(supportedEvent);
126
141
  AmplitudeAdapter.trackEvent({
127
142
  eventName: SpiffyMetricsEventName.SupportedEvent,
@@ -164,14 +179,14 @@ export const useDynamicVariants = () => {
164
179
  isBeforeUnload.current = true;
165
180
  };
166
181
 
167
- window.addEventListener('click', handleLocationChange);
168
- window.addEventListener('popstate', handleLocationChange);
169
- window.addEventListener('beforeunload', handleBeforeUnload);
182
+ window.addEventListener("click", handleLocationChange);
183
+ window.addEventListener("popstate", handleLocationChange);
184
+ window.addEventListener("beforeunload", handleBeforeUnload);
170
185
 
171
186
  return () => {
172
- window.removeEventListener('click', handleLocationChange);
173
- window.removeEventListener('popstate', handleLocationChange);
174
- window.removeEventListener('beforeunload', handleBeforeUnload);
187
+ window.removeEventListener("click", handleLocationChange);
188
+ window.removeEventListener("popstate", handleLocationChange);
189
+ window.removeEventListener("beforeunload", handleBeforeUnload);
175
190
  // TODO: this is causing the supportedEvent to be undefined for Magento customers
176
191
  // Why is unclear however...
177
192
  // setSupportedEvent(undefined);
@@ -191,10 +206,11 @@ export const useDynamicVariants = () => {
191
206
 
192
207
  useEffect(() => {
193
208
  let windowInterval: number | null = null;
194
- const { merchantVariantSettings } = orgUIConfig;
209
+ const merchantVariantSettings = orgUIConfig?.merchantVariantSettings;
195
210
 
196
211
  if (merchantVariantSettings?.dynamicVariants?.enabled) {
197
- const refreshInterval = merchantVariantSettings?.dynamicVariants?.refreshInterval;
212
+ const refreshInterval =
213
+ merchantVariantSettings?.dynamicVariants?.refreshInterval;
198
214
  windowInterval = window.setInterval(() => {
199
215
  handleLocationChange();
200
216
  }, refreshInterval);
@@ -13,7 +13,7 @@ export const useFileUpload = () => {
13
13
  const [error, setError] = useState("");
14
14
 
15
15
  const isValidFile = (file?: File) => {
16
- const maxSize = customerServiceImpl.maxfileUploadSize;
16
+ const maxSize = customerServiceImpl?.maxfileUploadSize;
17
17
  if (maxSize && (file?.size || 0) > maxSize) {
18
18
  const strFileSize = `${(maxSize / 1000000).toFixed(1)}MB`;
19
19
  setError(`Exceeded file size of ${strFileSize}`);
@@ -1,18 +1,19 @@
1
- import Logger from 'src/application/logging/logger';
2
- import { SelectorFactory } from 'src/application/utils/nodeSelector';
3
- import { useEffect, useRef, useState } from 'react';
4
- import { useAtomValue } from 'jotai';
5
- import { SpiffyEventName } from 'src/application/models/events';
6
- import { ElementObserver } from 'src/application/utils/elementObserver';
7
- import { DOMObserver } from 'src/application/utils/domObserver';
8
- import { orgUIConfigAtom } from 'src/atoms/org/orgUIConfig';
1
+ import Logger from "src/application/logging/logger";
2
+ import { SelectorFactory } from "src/application/utils/nodeSelector";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { useAtomValue } from "jotai";
5
+ import { SpiffyEventName } from "src/application/models/events";
6
+ import { ElementObserver } from "src/application/utils/elementObserver";
7
+ import { DOMObserver } from "src/application/utils/domObserver";
8
+ import { orgUIConfigAtom } from "src/atoms/org/orgUIConfig";
9
9
 
10
10
  /**
11
11
  * This hook hides/shows elements that could overlap with the chat when the chat is opened/closed.
12
12
  */
13
13
  export const useHideElements = () => {
14
14
  const orgUIConfig = useAtomValue(orgUIConfigAtom);
15
- const [hasRegisteredEventListeners, setHasRegisteredEventListeners] = useState(false);
15
+ const [hasRegisteredEventListeners, setHasRegisteredEventListeners] =
16
+ useState(false);
16
17
  const elementObservers = useRef<ElementObserver[]>([]);
17
18
 
18
19
  const hideElements = (elements: ElementObserver[]) => {
@@ -29,8 +30,10 @@ export const useHideElements = () => {
29
30
 
30
31
  useEffect(() => {
31
32
  elementObservers.current = [];
32
- orgUIConfig.hiddenElementSelectors?.forEach((selector) => {
33
- elementObservers.current.push(DOMObserver.add(SelectorFactory.query(selector)));
33
+ orgUIConfig?.hiddenElementSelectors?.forEach((selector) => {
34
+ elementObservers.current.push(
35
+ DOMObserver.add(SelectorFactory.query(selector))
36
+ );
34
37
  });
35
38
  // since we're not using useElementObserver, we need to manually start the observer
36
39
  elementObservers.current.forEach((element) => {
@@ -44,22 +47,22 @@ export const useHideElements = () => {
44
47
  });
45
48
  elementObservers.current = [];
46
49
  };
47
- }, [orgUIConfig.hiddenElementSelectors]);
50
+ }, [orgUIConfig?.hiddenElementSelectors]);
48
51
 
49
52
  useEffect(() => {
50
53
  if (elementObservers.current.length > 0 && !hasRegisteredEventListeners) {
51
54
  Logger.logDebug(
52
- `Registering ${SpiffyEventName.WidgetOpen} event for ${elementObservers.current.length} elements`,
55
+ `Registering ${SpiffyEventName.WidgetOpen} event for ${elementObservers.current.length} elements`
53
56
  );
54
57
  window.addEventListener(SpiffyEventName.WidgetOpen, () =>
55
- hideElements(elementObservers.current),
58
+ hideElements(elementObservers.current)
56
59
  );
57
60
 
58
61
  Logger.logDebug(
59
- `Registering ${SpiffyEventName.WidgetClose} event for ${elementObservers.current.length} elements`,
62
+ `Registering ${SpiffyEventName.WidgetClose} event for ${elementObservers.current.length} elements`
60
63
  );
61
64
  window.addEventListener(SpiffyEventName.WidgetClose, () =>
62
- showElements(elementObservers.current),
65
+ showElements(elementObservers.current)
63
66
  );
64
67
 
65
68
  setHasRegisteredEventListeners(true);
@@ -68,11 +71,11 @@ export const useHideElements = () => {
68
71
  return () => {
69
72
  if (elementObservers.current.length > 0 && hasRegisteredEventListeners) {
70
73
  window.removeEventListener(SpiffyEventName.WidgetOpen, () =>
71
- hideElements(elementObservers.current),
74
+ hideElements(elementObservers.current)
72
75
  );
73
76
 
74
77
  window.removeEventListener(SpiffyEventName.WidgetClose, () =>
75
- showElements(elementObservers.current),
78
+ showElements(elementObservers.current)
76
79
  );
77
80
 
78
81
  setHasRegisteredEventListeners(false);
@@ -1,6 +1,6 @@
1
- import { useAtomValue } from 'jotai';
2
- import { OrgShortName } from 'src/application/models';
3
- import { orgUIConfigAtom } from 'src/atoms/org/orgUIConfig';
1
+ import { useAtomValue } from "jotai";
2
+ import { OrgShortName } from "src/application/models";
3
+ import { orgUIConfigAtom } from "src/atoms/org/orgUIConfig";
4
4
 
5
5
  abstract class ImageResolver {
6
6
  abstract resolve(url: string, size: number): string;
@@ -12,8 +12,14 @@ class MerchantImageResolver {
12
12
  private static loadMapping() {
13
13
  if (this.imageResolverMap.size === 0) {
14
14
  this.imageResolverMap.set(OrgShortName.Spanx, new ShopifyImageResolver());
15
- this.imageResolverMap.set(OrgShortName.SpanxStaging, new ShopifyImageResolver());
16
- this.imageResolverMap.set(OrgShortName.UniqueVintage, new ShopifyImageResolver());
15
+ this.imageResolverMap.set(
16
+ OrgShortName.SpanxStaging,
17
+ new ShopifyImageResolver()
18
+ );
19
+ this.imageResolverMap.set(
20
+ OrgShortName.UniqueVintage,
21
+ new ShopifyImageResolver()
22
+ );
17
23
  }
18
24
  return this.imageResolverMap;
19
25
  }
@@ -31,15 +37,17 @@ class ShopifyImageResolver extends ImageResolver {
31
37
  if (urlHasPrefix) {
32
38
  return url.replace(pattern, newSizePrefix);
33
39
  }
34
- return url.replace('.jpg', newSizePrefix);
40
+ return url.replace(".jpg", newSizePrefix);
35
41
  }
36
42
  }
37
43
 
38
44
  export const useImageResolver = () => {
39
45
  const orgUIConfig = useAtomValue(orgUIConfigAtom);
40
46
  const resolve = (image?: string, size?: number) => {
41
- if (image && size) {
42
- const newImagePath = MerchantImageResolver.get(orgUIConfig.shortName)?.resolve(image, size);
47
+ if (image && size && orgUIConfig?.shortName) {
48
+ const newImagePath = MerchantImageResolver.get(
49
+ orgUIConfig.shortName
50
+ )?.resolve(image, size);
43
51
  return newImagePath || image;
44
52
  }
45
53
  return image;
@@ -0,0 +1,80 @@
1
+ import { GraphQLClient } from "src/adapters/spiffy/commerce/graphql";
2
+ import Logger from "src/application/logging/logger";
3
+ import { AtomStore, getAtomStore } from "../atoms/atomStore";
4
+ import { ColorMapping } from "src/contexts";
5
+
6
+ import { useAtomValue } from "jotai";
7
+ import { useEffect, useState } from "react";
8
+ import { orgShortNameAtom } from "../atoms/org/org";
9
+ import {
10
+ BasicOrgInfoType,
11
+ getOrgInfo,
12
+ } from "src/application/models/supportedOrgs";
13
+ import { FrontendConfig } from "src/application/models";
14
+
15
+ type newConfigResponse = {
16
+ colorsConfig: ColorMapping | undefined;
17
+ frontendConfig: FrontendConfig | undefined;
18
+ };
19
+
20
+ async function fetchGraphQLConfig(
21
+ atomStore: AtomStore
22
+ ): Promise<newConfigResponse> {
23
+ try {
24
+ Logger.logDebug("GraphQLConfigService: Starting GraphQL client fetch");
25
+
26
+ const { colorsConfig, frontendConfig } =
27
+ (await GraphQLClient.getColorsAndFrontendConfig()) ?? {};
28
+
29
+ Logger.logDebug("GraphQL config fetch completed", {
30
+ hasColorsConfig: !!colorsConfig,
31
+ hasFrontendConfig: !!frontendConfig,
32
+ frontendConfigKeys: frontendConfig ? Object.keys(frontendConfig) : [],
33
+ });
34
+
35
+ return {
36
+ colorsConfig,
37
+ frontendConfig,
38
+ };
39
+ } catch (error) {
40
+ Logger.logError(
41
+ "GraphQLConfigService: Error during GraphQL config fetch",
42
+ error
43
+ );
44
+ throw error; // Re-throw to be caught by the caller
45
+ }
46
+ }
47
+
48
+ export const useNewOrgConfig = () => {
49
+ const [oldConfig, setOldConfig] = useState<BasicOrgInfoType | undefined>();
50
+
51
+ const [newConfig, setNewConfig] = useState<newConfigResponse | undefined>();
52
+
53
+ const [combinedConfig, setCombinedConfig] = useState<
54
+ newConfigResponse & BasicOrgInfoType
55
+ >();
56
+ const orgShortName = useAtomValue(orgShortNameAtom);
57
+
58
+ useEffect(() => {
59
+ if (orgShortName) {
60
+ getOrgInfo(orgShortName).then((oldConfigData) => {
61
+ setOldConfig(oldConfigData);
62
+ });
63
+ fetchGraphQLConfig(getAtomStore()).then((newConfigData) => {
64
+ setNewConfig(newConfigData);
65
+ });
66
+ }
67
+ }, [orgShortName]);
68
+
69
+ useEffect(() => {
70
+ if (oldConfig && newConfig) {
71
+ setCombinedConfig;
72
+ }
73
+ }, [oldConfig, newConfig]);
74
+
75
+ if (!orgShortName || !combinedConfig) {
76
+ return null;
77
+ }
78
+
79
+ return combinedConfig;
80
+ };
@@ -122,6 +122,14 @@ export const useSearch = (): SearchResultsHocProps => {
122
122
  const dynamicFilters = searchData?.filters || [];
123
123
  const { productCardConfig, shortName: merchantShortName } = orgUIConfig || {};
124
124
 
125
+ // Provide fallback values when orgUIConfig is not yet available
126
+ const safeProductCardConfig = productCardConfig || {
127
+ variant: "minimal",
128
+ hoverVariant: "none",
129
+ layoutVariant: "square",
130
+ };
131
+ const safeMerchantShortName = merchantShortName || "";
132
+
125
133
  const availableDynamicFilters = useMemo(() => {
126
134
  return dynamicFilters
127
135
  .filter(
@@ -399,12 +407,8 @@ export const useSearch = (): SearchResultsHocProps => {
399
407
  return {
400
408
  searchData,
401
409
  searchResponseId: searchData?.searchResponseId ?? "",
402
- merchantShortName,
403
- productCardConfig: productCardConfig || {
404
- variant: "minimal",
405
- hoverVariant: "none",
406
- layoutVariant: "square",
407
- },
410
+ merchantShortName: safeMerchantShortName,
411
+ productCardConfig: safeProductCardConfig,
408
412
  productList,
409
413
  autocompleteResults,
410
414
  searchFilters: filters,
@@ -133,7 +133,7 @@ export const isWithinBusinessHours = (
133
133
  return now >= start && now <= end;
134
134
  };
135
135
 
136
- export const enum SearchResultsState {
136
+ export enum SearchResultsState {
137
137
  Loading,
138
138
  Results,
139
139
  NoResults,
@@ -1,16 +1,17 @@
1
- import { FormType, ResponseCategory } from '@spiffy-ai/commerce-api-client';
2
- import { useAtomValue, useSetAtom } from 'jotai';
3
- import { Response } from 'src/application/models';
4
- import { handleFormSubmittedAtom } from 'src/atoms/chat';
5
- import { apiKeyAtom, endpointURLAtom } from 'src/atoms/org/org';
6
- import { orgCustomerServiceService } from 'src/atoms/org/orgUIConfig';
7
- import { MessageInterceptor } from './types';
1
+ import { FormType, ResponseCategory } from "@spiffy-ai/commerce-api-client";
2
+ import { useAtomValue, useSetAtom } from "jotai";
3
+ import { Response } from "src/application/models";
4
+ import { handleFormSubmittedAtom } from "src/atoms/chat";
5
+ import { apiKeyAtom } from "src/atoms/org/org";
6
+ import { orgCustomerServiceService } from "src/atoms/org/orgUIConfig";
7
+ import { MessageInterceptor } from "./types";
8
+ import { baseUrlAtom } from "src/atoms/envive/enviveConfig";
8
9
 
9
10
  export const useFormEscalation = (): MessageInterceptor => {
10
11
  const handleFormSubmitted = useSetAtom(handleFormSubmittedAtom);
11
12
  const customerServiceIntegration = useAtomValue(orgCustomerServiceService);
12
13
  const apiKey = useAtomValue(apiKeyAtom);
13
- const apiEndpoint = useAtomValue(endpointURLAtom);
14
+ const apiEndpoint = useAtomValue(baseUrlAtom);
14
15
 
15
16
  const blockExecution = () => true;
16
17
 
@@ -19,8 +20,24 @@ export const useFormEscalation = (): MessageInterceptor => {
19
20
  response.category === ResponseCategory.Form &&
20
21
  response.attributes.formCategory?.formType === FormType.Escalation
21
22
  ) {
23
+ if (!customerServiceIntegration) {
24
+ // Handle case where customer service integration is not available
25
+ handleFormSubmitted({
26
+ formResponseId: response.id,
27
+ formType: FormType.Escalation,
28
+ filledSchema: {
29
+ is_in_business_hours: false,
30
+ is_integration_enabled: false,
31
+ },
32
+ });
33
+ return;
34
+ }
35
+
22
36
  const isEnabled = customerServiceIntegration.isEnabled();
23
- const isBusinessHours = await customerServiceIntegration.isBusinessHours(apiKey, apiEndpoint);
37
+ const isBusinessHours = await customerServiceIntegration.isBusinessHours(
38
+ apiKey,
39
+ apiEndpoint
40
+ );
24
41
 
25
42
  handleFormSubmitted({
26
43
  formResponseId: response.id,
package/src/types.ts CHANGED
@@ -3,7 +3,6 @@
3
3
  import { AmplitudeAdapter } from "./adapters/amplitude";
4
4
  import { VariantInfo } from "./application/models/variantInfo";
5
5
  import { OrgPageConfig } from "./contexts/types";
6
- import { ExtensionInfo } from "./extension";
7
6
 
8
7
  // Export the type for use in tests
9
8
  export type SpiffyInit = {
@@ -11,7 +10,6 @@ export type SpiffyInit = {
11
10
  getOrgInfo: (apiKey: string) => Promise<OrgInfo>;
12
11
  refresh: () => Promise<void>;
13
12
  isInitialized?: boolean;
14
- extensionInfo: ExtensionInfo;
15
13
  setVariantInfoOverride: (variantInfo: VariantInfo) => void;
16
14
  // TODO: Other functions to invoke page loads, record checkout events etc
17
15
  _amplitudeAdapter?: AmplitudeAdapter;