@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
@@ -1,51 +0,0 @@
1
- import { ContextSourceEnum } from "@spiffy-ai/commerce-api-client";
2
- import { LocalStorageService } from "./localStorageService";
3
- import { useEnviveConfig } from "src/contexts/enviveConfigContext";
4
-
5
- class EnvironmentService {
6
- static getApiEndpoint() {
7
- const { baseUrl } = useEnviveConfig();
8
- return baseUrl || "https://commerce-api.dev.spiffy.ai";
9
- }
10
-
11
- static getContextSource(): ContextSourceEnum {
12
- // detect if we're in a storybook context. this is set up in preview.ts
13
- if (window.IS_STORYBOOK) {
14
- return ContextSourceEnum.Test;
15
- }
16
-
17
- const { contextSource } = useEnviveConfig();
18
- if (contextSource) {
19
- return contextSource as ContextSourceEnum;
20
- }
21
-
22
- const spiffyOnFeatureFlagSet = LocalStorageService.getSpiffyOnFeatureFlag();
23
- if (spiffyOnFeatureFlagSet === "true") {
24
- return ContextSourceEnum.Playground;
25
- }
26
-
27
- return ContextSourceEnum.App;
28
- }
29
-
30
- static getIdentifyingPrefix(): string {
31
- return "spiffy";
32
- }
33
-
34
- static getEnvironment = () => {
35
- const { env } = useEnviveConfig();
36
-
37
- if (!env) {
38
- return "dev";
39
- }
40
-
41
- switch (env.toLowerCase()) {
42
- case "production":
43
- case "prod":
44
- return "prod";
45
- default:
46
- return "dev";
47
- }
48
- };
49
- }
50
-
51
- export { EnvironmentService };
package/src/extension.ts DELETED
@@ -1,63 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- import Logger from './application/logging/logger';
4
-
5
- export type ExtensionInfo = {
6
- isLoading: boolean;
7
- isInjected: boolean;
8
- error?: string | null;
9
- };
10
-
11
- enum MessageTypes {
12
- ExtensionInfoUpdate = 'spiffy-extension-info-update',
13
- }
14
-
15
- export const EXTENSION_ID = 'ohickcjdalobhoohmnpjnmgaalphmdje';
16
-
17
- const sendMessageToExtensionHost = (type: MessageTypes, payload: ExtensionInfo) => {
18
- if (!window.chrome?.runtime) {
19
- return Logger.logDebug(
20
- '[spiffy-ai] Extension runtime is not exposed, so not sending message',
21
- undefined,
22
- );
23
- }
24
-
25
- return window.chrome.runtime
26
- .sendMessage(EXTENSION_ID, { msg: type, ...payload })
27
- .then((_response: any) => {
28
- if (window.chrome.runtime.lastError) {
29
- Logger.logError(window.chrome.runtime.lastError, undefined);
30
- } else {
31
- Logger.logDebug('[spiffy-ai] Received response from extension host');
32
- }
33
- })
34
- .catch(() => {
35
- Logger.logDebug('[spiffy-ai] Unable to log extension message', type, payload);
36
- });
37
- };
38
-
39
- export const tellExtensionInjectionIsLoading = () => {
40
- return sendMessageToExtensionHost(MessageTypes.ExtensionInfoUpdate, {
41
- isLoading: true,
42
- isInjected: false,
43
- error: null,
44
- });
45
- };
46
-
47
- // This is being used in the dynamic script we build and run in the browser.
48
- export const tellExtensionAboutInjectionError = (error: Error) => {
49
- return sendMessageToExtensionHost(MessageTypes.ExtensionInfoUpdate, {
50
- isLoading: false,
51
- isInjected: false,
52
- error: error.message,
53
- });
54
- };
55
-
56
- // This is being used in the dynamic script we build and run in the browser.
57
- export const tellExtensionAboutSuccessfullInjection = () => {
58
- return sendMessageToExtensionHost(MessageTypes.ExtensionInfoUpdate, {
59
- isLoading: false,
60
- isInjected: true,
61
- error: null,
62
- });
63
- };
@@ -1,115 +0,0 @@
1
- import { useEffect, RefObject, useRef } from 'react';
2
- import { useReducedMotionWithOverride } from 'src/hooks/useReducedMotionWithOverride';
3
-
4
- // IMPORTANT: All refs passed to this hook must be mutable (not Readonly)
5
- interface UseHorizontalScrollAnimationOptions {
6
- scrollContainerRef: RefObject<HTMLDivElement>;
7
- animationSpeed?: 'standard' | 'slow' | 'none';
8
- }
9
-
10
- // When using this hook, ensure that scrouuContainerRef is not undefined. It is allowed to
11
- // prevent issued elsewhere in the codebase, but it should be dealt with whenever you use this hook.
12
- export function useHorizontalScrollAnimation({
13
- scrollContainerRef,
14
- animationSpeed = 'standard',
15
- }: UseHorizontalScrollAnimationOptions): void {
16
- const reducedMotion = useReducedMotionWithOverride();
17
- const resumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);
18
- const scrollAnimationRef = useRef<number | null>(null);
19
-
20
- const pauseOnHover = true; // This is unlikely to need to be configurable but I'm throwing it up here just in case.
21
-
22
- // Animation constants: time-based
23
- let PIXELS_PER_SECOND = 40;
24
- switch (animationSpeed) {
25
- case 'standard':
26
- PIXELS_PER_SECOND = 40;
27
- break;
28
- case 'slow':
29
- PIXELS_PER_SECOND = 25;
30
- break;
31
- case 'none':
32
- PIXELS_PER_SECOND = 0;
33
- break;
34
- default:
35
- PIXELS_PER_SECOND = 40;
36
- }
37
- const RESUME_DELAY_MS = 2000;
38
- const isAnimated = animationSpeed !== 'none';
39
-
40
- useEffect(() => {
41
- if (!isAnimated || reducedMotion || !scrollContainerRef) return;
42
-
43
- const container = scrollContainerRef.current;
44
- if (!container) return;
45
- if (container.scrollWidth <= container.clientWidth) return;
46
-
47
- let isPaused = false;
48
- let lastTimestamp: number | null = null;
49
- let accumulatedScroll = 0; // Accumulate fractional pixels
50
-
51
- const step = (timestamp: number) => {
52
- if (lastTimestamp === null) lastTimestamp = timestamp;
53
- if (!isPaused) {
54
- const delta = timestamp - lastTimestamp;
55
- lastTimestamp = timestamp;
56
-
57
- // Accumulate the scroll amount (including fractional pixels)
58
- accumulatedScroll += PIXELS_PER_SECOND * (delta / 1000);
59
-
60
- // Only apply whole pixel movements
61
- const pixelsToScroll = Math.floor(accumulatedScroll);
62
- if (pixelsToScroll > 0) {
63
- container.scrollLeft += pixelsToScroll;
64
- accumulatedScroll -= pixelsToScroll; // Keep the fractional remainder
65
-
66
- if (container.scrollLeft >= container.scrollWidth - container.clientWidth) {
67
- container.scrollLeft = 0; // Reset scroll to create a looping effect
68
- accumulatedScroll = 0; // Reset accumulated scroll when looping
69
- }
70
- }
71
- }
72
- scrollAnimationRef.current = requestAnimationFrame(step);
73
- };
74
-
75
- // Start animation
76
- scrollAnimationRef.current = requestAnimationFrame(step);
77
-
78
- // Pause/resume logic
79
- const pauseAnimation = () => {
80
- isPaused = true;
81
- if (resumeTimeoutRef.current) {
82
- clearTimeout(resumeTimeoutRef.current);
83
- resumeTimeoutRef.current = null;
84
- }
85
- };
86
- const scheduleResumeAnimation = () => {
87
- resumeTimeoutRef.current = setTimeout(() => {
88
- isPaused = false;
89
- lastTimestamp = null; // Reset timestamp so delta is correct after pause
90
- }, RESUME_DELAY_MS);
91
- };
92
-
93
- if (pauseOnHover) {
94
- container.addEventListener('mouseenter', pauseAnimation);
95
- container.addEventListener('mouseleave', scheduleResumeAnimation);
96
- container.addEventListener('touchstart', pauseAnimation);
97
- container.addEventListener('touchend', scheduleResumeAnimation);
98
- }
99
-
100
- return () => {
101
- if (scrollAnimationRef.current) {
102
- cancelAnimationFrame(scrollAnimationRef.current);
103
- }
104
- if (pauseOnHover) {
105
- container.removeEventListener('mouseenter', pauseAnimation);
106
- container.removeEventListener('mouseleave', scheduleResumeAnimation);
107
- container.removeEventListener('touchstart', pauseAnimation);
108
- container.removeEventListener('touchend', scheduleResumeAnimation);
109
- }
110
- if (resumeTimeoutRef.current) {
111
- clearTimeout(resumeTimeoutRef.current);
112
- }
113
- };
114
- }, [isAnimated, reducedMotion, PIXELS_PER_SECOND, pauseOnHover, scrollContainerRef]);
115
- }
@@ -1,15 +0,0 @@
1
- import { useReducedMotionConfig } from 'framer-motion';
2
- import { useMemo } from 'react';
3
-
4
- export const useReducedMotionWithOverride = () => {
5
- const reducedMotionConfig = useReducedMotionConfig();
6
- const reducedMotion = useMemo(() => {
7
- if (window?._spiffy?.reducedMotionOverride) {
8
- return window?._spiffy?.reducedMotionOverride;
9
- }
10
-
11
- return reducedMotionConfig;
12
- }, [reducedMotionConfig]);
13
-
14
- return reducedMotion;
15
- };
@@ -1,155 +0,0 @@
1
- import {
2
- MotionValue,
3
- transform,
4
- useAnimate,
5
- useMotionValue,
6
- useTransform,
7
- ValueAnimationTransition,
8
- } from 'framer-motion';
9
- import { useMemo, useState } from 'react';
10
- import { Unit, useSnapCalculator } from './useSnapCalculator';
11
-
12
- type SnapControl = {
13
- animationKey?: MotionValue;
14
- animation: ValueAnimationTransition;
15
- height: number;
16
- unit: Unit;
17
- snaps: number[];
18
- initSnap: number;
19
- threshold?: number;
20
- overlayOpacity: number;
21
- onSnapComplete: (currentSnap: number, nextSnap: number, collapsed: boolean) => void;
22
- };
23
-
24
- const MIDDLE_SNAP_OFFSET = 5;
25
- const SNAP_DISTANCE_OFFSET = 50;
26
-
27
- export const useSnapControl = ({
28
- animationKey,
29
- animation,
30
- height,
31
- unit,
32
- snaps,
33
- initSnap,
34
- onSnapComplete,
35
- overlayOpacity,
36
- }: SnapControl) => {
37
- const [scope, animate] = useAnimate();
38
- const animatedY = animationKey || useMotionValue(-1);
39
-
40
- const { swipeviewHeightPx, snapsToPixels, viewportHeightPx, getPixelToSnap, getSnapToPixel } =
41
- useSnapCalculator(snaps, height, unit);
42
-
43
- const contentHeight = useTransform(animatedY, [0, swipeviewHeightPx], [swipeviewHeightPx, 0]);
44
-
45
- const snapOverlayReference = useMemo(
46
- () => [
47
- getSnapToPixel(snaps[0]),
48
- getSnapToPixel(snaps[1]) - MIDDLE_SNAP_OFFSET,
49
- getSnapToPixel(snaps[2]),
50
- ],
51
- [],
52
- );
53
-
54
- const displayOverlay = useTransform(() =>
55
- animatedY.get() === -1
56
- ? 'none'
57
- : transform(animatedY.get(), snapOverlayReference, ['none', 'none', 'block']),
58
- );
59
-
60
- const opacityOverlay = useTransform(() =>
61
- animatedY.get() === -1
62
- ? 0
63
- : transform(animatedY.get(), snapOverlayReference, [0, 0, overlayOpacity]),
64
- );
65
-
66
- const initSnapInPixels = snapsToPixels?.[initSnap];
67
- const getInitSnap = () => snaps?.[initSnap];
68
- const [currentSnap, setCurrentSnap] = useState<number>(getInitSnap());
69
- const between = (x: number, min: number, max: number) => x >= min && x <= max;
70
-
71
- const defineNextSnapByPosition = () => {
72
- const scopeEl = scope.current;
73
- const currentSnapRef = Math.abs(
74
- viewportHeightPx - (swipeviewHeightPx - getSnapToPixel(currentSnap)),
75
- );
76
-
77
- const realGestureY =
78
- scopeEl.getBoundingClientRect().y +
79
- scopeEl.getBoundingClientRect().height -
80
- (window.innerHeight - document.documentElement.clientHeight);
81
-
82
- const isGoingUp = realGestureY < currentSnapRef;
83
-
84
- const snapsToPixelsClone = Array.from(snapsToPixels);
85
- isGoingUp
86
- ? snapsToPixelsClone.sort((a, b) => b - a) /* desc*/
87
- : snapsToPixelsClone.sort((a, b) => a - b); /* asc */
88
-
89
- if (realGestureY != currentSnapRef) {
90
- const snapReference = snapsToPixelsClone.find((snap) => {
91
- const current = Math.abs(viewportHeightPx - (swipeviewHeightPx - snap));
92
- return isGoingUp ? current < realGestureY : current > realGestureY;
93
- });
94
-
95
- if (snapReference === undefined) {
96
- return snapsToPixelsClone.slice(-1)[0];
97
- }
98
-
99
- const prevSnapIndex = snapsToPixelsClone.indexOf(snapReference ?? -1);
100
- const prevSnap = snapsToPixelsClone[prevSnapIndex - 1];
101
- const prevSnapPx = Math.abs(viewportHeightPx - (swipeviewHeightPx - prevSnap));
102
- const adjacentSnap = between(
103
- realGestureY,
104
- prevSnapPx - SNAP_DISTANCE_OFFSET,
105
- prevSnapPx + SNAP_DISTANCE_OFFSET,
106
- );
107
-
108
- return adjacentSnap ? prevSnap : snapReference;
109
- }
110
-
111
- return getSnapToPixel(currentSnap);
112
- };
113
-
114
- const jumpTo = (snapPx: number) => {
115
- const collapsed = snapPx === swipeviewHeightPx;
116
- const nextSnap = getPixelToSnap(snapPx);
117
- animate(
118
- scope.current,
119
- { y: snapPx },
120
- {
121
- ...animation,
122
- onComplete: () => {
123
- onSnapComplete(currentSnap, nextSnap, collapsed);
124
- setCurrentSnap(nextSnap);
125
- },
126
- },
127
- );
128
-
129
- return {
130
- nextSnap,
131
- collapsed,
132
- };
133
- };
134
-
135
- const resetControls = () => {
136
- setCurrentSnap(getInitSnap());
137
- return 0;
138
- };
139
-
140
- return {
141
- scope,
142
- animatedY,
143
- animate,
144
- swipeviewHeightPx,
145
- initSnapInPixels,
146
- contentHeight,
147
- currentSnap,
148
- displayOverlay,
149
- opacityOverlay,
150
- getSnapToPixel,
151
- jumpTo,
152
- defineNextSnapByPosition,
153
- resetControls,
154
- };
155
- };
package/src/initialize.ts DELETED
@@ -1,163 +0,0 @@
1
- import Logger from "src/application/logging/logger";
2
- // this import brings in amplitude and a bunch of other large libraries
3
- import { EnvironmentService } from "src/application/service/environmentService";
4
- import {
5
- LocalStorageKeys,
6
- LocalStorageService,
7
- } from "src/application/service/localStorageService";
8
- import { UserIdentityService } from "src/application/service/userIdentityService";
9
- import { initWindowFrontendConfigOverridesApplyFunction } from "src/application/service/windowFrontendConfigService";
10
- import {
11
- initAmplitude,
12
- initDataLayerWrapper,
13
- } from "src/application/utils/analyticsUtils";
14
- import { getAtomStore } from "src/atoms/atomStore/atomStore";
15
- import {
16
- apiKeyAtom,
17
- featureFlagServiceAtom,
18
- getAsyncOrgConfig,
19
- } from "src/atoms/org/org";
20
- import { EnabledFeatures } from "src/enabled-features";
21
- import {
22
- EXTENSION_ID,
23
- tellExtensionAboutInjectionError,
24
- tellExtensionInjectionIsLoading,
25
- } from "src/extension";
26
-
27
- const handleSpiffyOn = () => {
28
- const spiffyOn = new URLSearchParams(window.location.search).get(
29
- LocalStorageKeys.SpiffyOnOverride
30
- );
31
- const enviveOn = new URLSearchParams(window.location.search).get(
32
- LocalStorageKeys.EnviveOnOverride
33
- );
34
-
35
- const isOn = spiffyOn === "true" || enviveOn === "true";
36
- if (spiffyOn == null && enviveOn == null) {
37
- return;
38
- }
39
-
40
- if (isOn === true) {
41
- LocalStorageService.setSpiffyOnFeatureFlag(true);
42
- return;
43
- }
44
-
45
- LocalStorageService.setSpiffyOnFeatureFlag(false);
46
- // Do nothing for missing or other values
47
- };
48
-
49
- const getEntryPoint = (): string => {
50
- // If `spiffy_main_file` query param is set - use an alternate file for injection
51
- const queryParamName = `${EnvironmentService.getIdentifyingPrefix()}_main_file`;
52
- const overrideParam = new URLSearchParams(window.location.search).get(
53
- queryParamName
54
- );
55
- if (overrideParam) {
56
- return overrideParam;
57
- }
58
- // #if (VITE_IS_LOCAL_ENV=="true")
59
- return "/src/main.tsx";
60
- // #else
61
- return new URL("./main.js", import.meta.url).toString();
62
- // #endif
63
- };
64
-
65
- const loadAndInit = async () => {
66
- // #if (VITE_SPLIT_BUILD=="true")
67
- const script = document.createElement("script");
68
- script.innerHTML = `
69
- import('${getEntryPoint()}').then(async ({ initApp, tellExtensionAboutInjectionError }) => {
70
- try {
71
- if (document.readyState === 'loading') {
72
- console.log('[spiffy-ai] document.body is not defined, waiting for DOMContentLoaded');
73
- document.addEventListener('DOMContentLoaded', initApp);
74
- } else {
75
- await initApp();
76
- }
77
- } catch (e) {
78
- await tellExtensionAboutInjectionError(e);
79
- }
80
- }).catch(async (e) => {
81
- if (window.chrome && window.chrome.runtime) {
82
- await window.chrome.runtime.sendMessage(
83
- '${EXTENSION_ID}',
84
- { msg: "spiffy-extension-info-update", error: e.message, isLoading: false, isInjected: false },
85
- );
86
- }
87
- })`;
88
- script.type = "module";
89
- script.id = "spiffy-injection-script";
90
- document.head.appendChild(script);
91
- // #else
92
- const { initApp } = await import("./main");
93
- await initApp();
94
- // #endif
95
- };
96
-
97
- /**
98
- * Checks if Spiffy is enabled for the current merchant and initializes the main bundle.
99
- * If Spiffy is disabled, it initializes analytics only.
100
- *
101
- * @param apiKeyOverride - Optional API key to use instead of the key configured for the
102
- * merchant. This should only be used for local development to toggle between different
103
- * merchants.
104
- *
105
- * @returns True if Spiffy is enabled, false otherwise.
106
- */
107
- export const init = async (apiKeyOverride?: string) => {
108
- if (window[EnvironmentService.getIdentifyingPrefix()]?.isInitialized) {
109
- Logger.logDebug(`[spiffy-ai] Spiffy is already initialized`);
110
- return true;
111
- }
112
-
113
- try {
114
- await tellExtensionInjectionIsLoading();
115
-
116
- handleSpiffyOn();
117
- const atomStore = getAtomStore();
118
- const apiKey = apiKeyOverride ?? atomStore.get(apiKeyAtom);
119
- const orgConfig = await getAsyncOrgConfig(apiKey);
120
-
121
- if (!orgConfig.org) {
122
- throw new Error("orgConfig is required but is undefined");
123
- }
124
-
125
- if (!window._spiffy) {
126
- window._spiffy = {};
127
- }
128
-
129
- const featureFlagService = atomStore.get(featureFlagServiceAtom);
130
-
131
- const enabledFeatures = await EnabledFeatures.get(
132
- orgConfig,
133
- featureFlagService
134
- );
135
-
136
- // Force initialization of the AmplitudeAdapter now,
137
- // so that we automatically immediately send a Page Viewed event,
138
- // regardless of whether Spiffy is enabled or not.
139
- initAmplitude();
140
- initDataLayerWrapper();
141
- // Attach a function so callers can explicitly apply overrides to FrontendConfig
142
- initWindowFrontendConfigOverridesApplyFunction();
143
- await UserIdentityService.identifyUser();
144
-
145
- if (enabledFeatures.envive) {
146
- // #if (VITE_IS_CODE_SPLIT_BUILD=="true")
147
- const { initApp } = await import("./main");
148
- await initApp();
149
- // #else
150
- await loadAndInit();
151
- // #endif
152
- return true;
153
- }
154
-
155
- await tellExtensionAboutInjectionError({
156
- message: "Spiffy is disabled",
157
- } as Error);
158
- return false;
159
- } catch (error: any) {
160
- await tellExtensionAboutInjectionError(error);
161
- throw error;
162
- }
163
- };
package/src/main.tsx DELETED
@@ -1,108 +0,0 @@
1
- import ReactDOM from "react-dom/client";
2
- import Logger from "./application/logging/logger";
3
- import { EventsDispatcher, SpiffyEvent } from "./events";
4
- import { PerfMetricsEvents, logPerfMetricAtom } from "./atoms/chat";
5
- import { getAtomStore } from "./atoms/atomStore/atomStore";
6
- import { getAsyncOrgConfig } from "./atoms/org";
7
- import {
8
- getOrgInfo as getOrgInfoFromSupportedOrgs,
9
- VariantInfo,
10
- } from "./application/models";
11
- import { EnvironmentService } from "./application/service/environmentService";
12
- import { OrgInfo } from "./types";
13
- import { prepareMerchantPage } from "./application/utils/merchantUtils";
14
- import { CONTAINER_ID } from "./config/divIds";
15
- import { hasParsedVariantInfoAtom } from "./atoms/app/variant";
16
- import { EnviveConfigProvider } from "./contexts/enviveConfigContext";
17
- import React from "react";
18
-
19
- declare global {
20
- interface Window {
21
- dataLayer: any;
22
- gtag: (...args: any[]) => void;
23
- }
24
- }
25
-
26
- const createReactRoot = () => {
27
- const containerRoot = document.createElement("div");
28
- containerRoot.id = CONTAINER_ID;
29
- containerRoot.style.display = "none";
30
- document.body.appendChild(containerRoot);
31
- const reactContainerRoot = ReactDOM.createRoot(containerRoot);
32
- return reactContainerRoot;
33
- };
34
-
35
- const getOrgInfo = async (): Promise<OrgInfo> => {
36
- const orgConfig = await getAsyncOrgConfig();
37
-
38
- if (!orgConfig.org) {
39
- throw new Error("orgConfig.org is required but is undefined");
40
- }
41
-
42
- const orgShortName = orgConfig.org.org.shortName;
43
-
44
- if (!orgShortName) {
45
- throw new Error("orgShortName is required but is undefined");
46
- }
47
-
48
- const orgInfo = await getOrgInfoFromSupportedOrgs(orgShortName);
49
-
50
- if (!orgInfo) {
51
- throw new Error(
52
- `no matching OrgInfo found for orgShortName=${orgShortName}`
53
- );
54
- }
55
-
56
- return {
57
- name: orgInfo.name,
58
- domain: orgInfo.domain,
59
- defaultProductId: orgInfo.defaultProductId,
60
- alwaysEnabledMerchants: orgInfo.alwaysEnabledMerchants,
61
- orgPageConfig: orgInfo.orgPageConfig,
62
- };
63
- };
64
-
65
- const RootApp: React.FC = () => {
66
- const atomStore = getAtomStore();
67
- atomStore.set(logPerfMetricAtom, PerfMetricsEvents.MainBundleLoaded);
68
- EventsDispatcher.dispatch(SpiffyEvent.APP_INITIALIZED);
69
- EventsDispatcher.dispatch(SpiffyEvent.CALL_MERCHANT_APP);
70
- prepareMerchantPage();
71
- getAsyncOrgConfig();
72
-
73
- const existing = window[EnvironmentService.getIdentifyingPrefix()] || {};
74
- window[EnvironmentService.getIdentifyingPrefix()] = {
75
- ...existing,
76
- getOrgInfo,
77
- isInitialized: true,
78
- refresh: async () => {
79
- Logger.logDebug("[spiffy-ai] window._spiffy.refresh called");
80
- },
81
- setVariantInfoOverride: (variantInfo: VariantInfo) => {
82
- window._spiffy.variantInfoOverride = variantInfo;
83
- // Reset the variant info to force a re-parse
84
- atomStore.set(hasParsedVariantInfoAtom, false);
85
- },
86
- };
87
-
88
- return null; // This component primarily sets up global state and side effects
89
- };
90
-
91
- export const initApp = async () => {
92
- const reactContainerRoot = createReactRoot();
93
- reactContainerRoot.render(
94
- <EnviveConfigProvider
95
- amplitudeApiKey={process.env.VITE_AMPLITUDE_API_KEY || ""}
96
- dataResidency={process.env.VITE_DATA_RESIDENCY || ""}
97
- env={process.env.VITE_ENV || ""}
98
- baseUrl={process.env.VITE_BASE_URL || ""}
99
- reactAppName={process.env.VITE_REACT_APP_NAME || ""}
100
- cdnUrl={process.env.VITE_SPIFFY_CDN_URL || ""}
101
- contextSource={process.env.VITE_CONTEXT_SOURCE || ""}
102
- orgLevelApiKey={process.env.VITE_SPIFFY_ORG_LEVEL_API_KEY || ""}
103
- orgShortName={process.env.VITE_ORG_SHORT_NAME || ""}
104
- >
105
- <RootApp />
106
- </EnviveConfigProvider>
107
- );
108
- };