@envive-ai/react-hooks 0.1.5 → 0.1.6

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 (491) hide show
  1. package/dist/amplitudeContext-CHzas7Cf.d.cts +52 -0
  2. package/dist/amplitudeContext-D-7fmVh1.cjs +356 -0
  3. package/dist/amplitudeContext-hY3caPC6.js +322 -0
  4. package/dist/amplitudeContext-tJ4y-SzX.d.ts +52 -0
  5. package/dist/api-DjeZXxl_.js +207 -0
  6. package/dist/api-_JaUnIUj.cjs +292 -0
  7. package/dist/app-CjsQ2_n-.js +132 -0
  8. package/dist/app-CnKRZ9RW.cjs +178 -0
  9. package/dist/application/models/graphql/index.cjs +3 -12
  10. package/dist/application/models/graphql/index.d.cts +1 -1
  11. package/dist/application/models/graphql/index.d.ts +1 -1
  12. package/dist/application/models/graphql/index.js +1 -10
  13. package/dist/application/models/guards/api/index.cjs +1 -2
  14. package/dist/application/models/guards/api/index.d.cts +2 -2
  15. package/dist/application/models/guards/api/index.d.ts +2 -2
  16. package/dist/application/models/guards/api/index.js +1 -2
  17. package/dist/application/models/index.cjs +48 -54
  18. package/dist/application/models/index.d.cts +7 -9
  19. package/dist/application/models/index.d.ts +7 -9
  20. package/dist/application/models/index.js +7 -11
  21. package/dist/application/models/utilityTypes/index.cjs +1 -1
  22. package/dist/application/models/utilityTypes/index.d.cts +1 -1
  23. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  24. package/dist/application/models/utilityTypes/index.js +1 -1
  25. package/dist/application/models/variantInfo/index.cjs +1 -1
  26. package/dist/application/models/variantInfo/index.d.cts +1 -1
  27. package/dist/application/models/variantInfo/index.d.ts +1 -1
  28. package/dist/application/models/variantInfo/index.js +1 -1
  29. package/dist/application/utils/index.cjs +40 -37
  30. package/dist/application/utils/index.d.cts +18 -14
  31. package/dist/application/utils/index.d.ts +19 -15
  32. package/dist/application/utils/index.js +13 -10
  33. package/dist/{atomStore-JwGb7pcy.cjs → atomStore-B4jIaDPd.cjs} +1 -1
  34. package/dist/{atomStore-B1cgmbP0.js → atomStore-D8pjE1vL.js} +1 -1
  35. package/dist/atoms/app/index.cjs +14 -16
  36. package/dist/atoms/app/index.d.cts +20 -19
  37. package/dist/atoms/app/index.d.ts +20 -19
  38. package/dist/atoms/app/index.js +10 -11
  39. package/dist/atoms/atomStore/index.cjs +2 -1
  40. package/dist/atoms/atomStore/index.d.cts +24 -2
  41. package/dist/atoms/atomStore/index.d.ts +24 -2
  42. package/dist/atoms/atomStore/index.js +2 -1
  43. package/dist/atoms/chat/index.cjs +44 -40
  44. package/dist/atoms/chat/index.d.cts +35 -36
  45. package/dist/atoms/chat/index.d.ts +35 -36
  46. package/dist/atoms/chat/index.js +14 -10
  47. package/dist/atoms/globalSearch/index.cjs +1 -1
  48. package/dist/atoms/globalSearch/index.d.cts +5 -5
  49. package/dist/atoms/globalSearch/index.d.ts +6 -6
  50. package/dist/atoms/globalSearch/index.js +1 -1
  51. package/dist/atoms/org/index.cjs +26 -38
  52. package/dist/atoms/org/index.d.cts +35 -48
  53. package/dist/atoms/org/index.d.ts +35 -48
  54. package/dist/atoms/org/index.js +11 -11
  55. package/dist/atoms/search/index.cjs +47 -41
  56. package/dist/atoms/search/index.d.cts +7 -9
  57. package/dist/atoms/search/index.d.ts +7 -9
  58. package/dist/atoms/search/index.js +16 -10
  59. package/dist/bandolier-DYEz4-8C.js +1229 -0
  60. package/dist/bandolier-o_-xrbOV.cjs +1229 -0
  61. package/dist/carpe-CsG5jCcl.cjs +607 -0
  62. package/dist/carpe-DONk00bZ.js +605 -0
  63. package/dist/cdnUtils-32v8bDX9.cjs +16 -0
  64. package/dist/cdnUtils-E4tLBt2g.js +11 -0
  65. package/dist/{chat-_NzpO_Hn.cjs → chat-BubCW1as.cjs} +1 -1
  66. package/dist/chat-CO7cRkaq.cjs +506 -0
  67. package/dist/{chat-CHmD79E1.js → chat-CV6MXeID.js} +1 -1
  68. package/dist/chat-hcRc4RRd.js +285 -0
  69. package/dist/{components-Dl-TMD9k.js → components-B4T3Uzth.js} +1 -1
  70. package/dist/{components-D0XDRcaN.cjs → components-Cw9WjA6g.cjs} +1 -1
  71. package/dist/config/locators/components/chat/index.cjs +1 -1
  72. package/dist/config/locators/components/chat/index.d.cts +1 -1
  73. package/dist/config/locators/components/chat/index.d.ts +1 -1
  74. package/dist/config/locators/components/chat/index.js +1 -1
  75. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  76. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  77. package/dist/config/locators/components/index.cjs +1 -1
  78. package/dist/config/locators/components/index.d.cts +1 -1
  79. package/dist/config/locators/components/index.d.ts +1 -1
  80. package/dist/config/locators/components/index.js +1 -1
  81. package/dist/config/locators/components/search/index.d.ts +1 -1
  82. package/dist/config/locators/index.cjs +4 -4
  83. package/dist/config/locators/index.d.cts +2 -2
  84. package/dist/config/locators/index.d.ts +2 -2
  85. package/dist/config/locators/index.js +4 -4
  86. package/dist/contexts/index.cjs +45 -14
  87. package/dist/contexts/index.d.cts +10 -10
  88. package/dist/contexts/index.d.ts +10 -10
  89. package/dist/contexts/index.js +22 -11
  90. package/dist/contexts-B4ihTBsV.cjs +2980 -0
  91. package/dist/contexts-DGlr7M1o.js +2596 -0
  92. package/dist/coterie-CKB93qfz.cjs +239 -0
  93. package/dist/{coterie--MGvWeVh.cjs → coterie-DHcj2fRE.js} +64 -65
  94. package/dist/{custservice-types-C8-9vKWb.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
  95. package/dist/{custservice-types-CamCiXjq.js → custservice-types-mnIunabv.js} +1 -1
  96. package/dist/default-BnB4p0Se.cjs +234 -0
  97. package/dist/default-D6f5Dyt7.js +199 -0
  98. package/dist/default-ZKkE5zT4.cjs +4 -0
  99. package/dist/default-legGZJwI.js +4 -0
  100. package/dist/{divIds-CjceLRD9.cjs → divIds-2dJlU3z8.cjs} +1 -15
  101. package/dist/{divIds-0Vj9g-fM.js → divIds-BUrN2vY-.js} +2 -4
  102. package/dist/dreamlandBaby-BiRYYFav.js +346 -0
  103. package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
  104. package/dist/{embedded-_cLpd6FK.js → embedded-BJLWIriJ.js} +1 -1
  105. package/dist/{embedded-B5Wi9g0T.cjs → embedded-Dl79TJLC.cjs} +1 -1
  106. package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
  107. package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
  108. package/dist/enviveConfig-BccuzS2a.cjs +240 -0
  109. package/dist/enviveConfig-CzhTz8Aa.js +152 -0
  110. package/dist/events/index.cjs +1 -1
  111. package/dist/events/index.js +1 -1
  112. package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
  113. package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
  114. package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
  115. package/dist/fiveCbd-Dz2NouOF.js +613 -0
  116. package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
  117. package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
  118. package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
  119. package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
  120. package/dist/graphql-BNW60InJ.cjs +128 -0
  121. package/dist/graphql-CjB8wHzm.js +74 -0
  122. package/dist/graphqlConfig-CYt6tWII.js +30 -0
  123. package/dist/graphqlConfig-DicykC-o.cjs +61 -0
  124. package/dist/greenpan-B_EbPkSP.js +397 -0
  125. package/dist/greenpan-kPE4fJgd.cjs +397 -0
  126. package/dist/grooveLife-Ckuir319.js +342 -0
  127. package/dist/grooveLife-DKSEQp1F.cjs +342 -0
  128. package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
  129. package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
  130. package/dist/hooks/index.cjs +39 -13
  131. package/dist/hooks/index.d.cts +127 -45
  132. package/dist/hooks/index.d.ts +124 -42
  133. package/dist/hooks/index.js +22 -11
  134. package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
  135. package/dist/{index-BdNKc2ix.d.cts → index-BDPWBU3h.d.cts} +1 -1
  136. package/dist/index-BMPtlgac.d.ts +191 -0
  137. package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
  138. package/dist/{index-BrXuc_Ck.d.cts → index-Byb45OPg.d.cts} +1 -1
  139. package/dist/{index-CSIOQD-A.d.ts → index-C6KdON7d.d.ts} +1 -1
  140. package/dist/index-C7pGDl1A.d.ts +1609 -0
  141. package/dist/{index-K2kNsOTw.d.cts → index-C9lgsCWp.d.cts} +32 -32
  142. package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
  143. package/dist/{index-CbJZOEU4.d.ts → index-Cc-wBCn6.d.ts} +32 -32
  144. package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
  145. package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
  146. package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
  147. package/dist/{index-Cr2y08f1.d.ts → index-DOii3C6b.d.ts} +1 -1
  148. package/dist/index-DTu2X-YS.d.cts +1609 -0
  149. package/dist/index-OEifcBsm.d.cts +191 -0
  150. package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
  151. package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
  152. package/dist/interceptors/index.cjs +2 -12
  153. package/dist/interceptors/index.d.cts +8 -13
  154. package/dist/interceptors/index.d.ts +8 -13
  155. package/dist/interceptors/index.js +2 -11
  156. package/dist/jackArcher-B39OEIj6.cjs +727 -0
  157. package/dist/{jackArcher-sO9EbgrZ.js → jackArcher-BwkWGybC.js} +24 -25
  158. package/dist/jordanCraig-CxRH_jLi.js +1786 -0
  159. package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
  160. package/dist/kindredBravely-D78VwL20.cjs +490 -0
  161. package/dist/kindredBravely-DQDpAzdl.js +490 -0
  162. package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
  163. package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
  164. package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
  165. package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
  166. package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
  167. package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
  168. package/dist/longevityrx-DdV3v26F.cjs +320 -0
  169. package/dist/longevityrx-DfPDfvAt.js +320 -0
  170. package/dist/lookOptic-DgXFGBPP.cjs +282 -0
  171. package/dist/{lookOptic-Jwf7EAU8.js → lookOptic-FgVW1afF.js} +19 -20
  172. package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
  173. package/dist/{mantraBrand-DoaVj837.js → mantraBrand-uV8HCDR8.js} +22 -23
  174. package/dist/medterra-BtDpr1Hw.cjs +583 -0
  175. package/dist/medterra-DgzE7-mj.js +583 -0
  176. package/dist/modells-CJjsxOIR.js +484 -0
  177. package/dist/modells-Ck5KbRFj.cjs +484 -0
  178. package/dist/models-BkXg5eIP.cjs +1534 -0
  179. package/dist/models-UZ6HszfZ.js +1281 -0
  180. package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
  181. package/dist/{nodeSelector-vKB44CDB.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
  182. package/dist/org-C2RrBVQR.cjs +81 -0
  183. package/dist/org-xMytX--e.js +38 -0
  184. package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
  185. package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
  186. package/dist/pressedFloral-Bteoboms.js +661 -0
  187. package/dist/pressedFloral-CexgV-xy.cjs +661 -0
  188. package/dist/search-BMOAmrmY.js +459 -0
  189. package/dist/search-Df0Ifneg.cjs +672 -0
  190. package/dist/{search-filter-types-9rTb3jMj.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
  191. package/dist/{search-filter-types-C-zZSpGo.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
  192. package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
  193. package/dist/skinPerfection-BlvcEcUE.js +334 -0
  194. package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
  195. package/dist/snapSupplements-kcsPAOm9.js +285 -0
  196. package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
  197. package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
  198. package/dist/spanx-B4WFA_rI.js +661 -0
  199. package/dist/spanx-BWoE4F8b.cjs +663 -0
  200. package/dist/spanxStaging-BOrOjhXn.js +845 -0
  201. package/dist/spanxStaging-BfdfIug4.cjs +848 -0
  202. package/dist/{suggestionBarV2-types-Penx3Y67.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
  203. package/dist/{suggestionBarV2-types-B3lwrENK.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
  204. package/dist/supergoop-22dd5_BS.js +323 -0
  205. package/dist/supergoop-B-a4cku2.cjs +323 -0
  206. package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
  207. package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
  208. package/dist/types/index.cjs +2 -2
  209. package/dist/types/index.d.cts +2 -2
  210. package/dist/types/index.d.ts +2 -2
  211. package/dist/types/index.js +2 -2
  212. package/dist/types--pr1GQQx.js +154 -0
  213. package/dist/types-BVSyY3Hk.cjs +196 -0
  214. package/dist/{uniqueVintage-BWkDgt1z.js → uniqueVintage-CJXiNNe7.js} +19 -20
  215. package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
  216. package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
  217. package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
  218. package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
  219. package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
  220. package/dist/utils-C9ZSCx12.js +888 -0
  221. package/dist/utils-D5HO61hG.cjs +1016 -0
  222. package/dist/variantInfo-DbVxA1yE.js +1 -0
  223. package/dist/variantInfo-orXoPBCU.cjs +0 -0
  224. package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
  225. package/dist/venaCbd-CanovPS_.js +365 -0
  226. package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
  227. package/dist/{westonJonBoucher-BAGXegsX.js → westonJonBoucher-BUu1_wP1.js} +19 -20
  228. package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
  229. package/dist/{wineEnthusiast-EJbhMeKQ.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
  230. package/dist/wolfMattress-D9Mjq-HP.js +372 -0
  231. package/dist/wolfMattress-JssghhC-.cjs +372 -0
  232. package/dist/wolfTactical-C6exYhL7.cjs +349 -0
  233. package/dist/wolfTactical-CnV3KQdI.js +349 -0
  234. package/package.json +100 -19
  235. package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
  236. package/src/application/models/colorsConfig.ts +18 -18
  237. package/src/application/models/frontendConfig.ts +3 -3
  238. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
  239. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
  240. package/src/application/models/index.ts +0 -2
  241. package/src/application/models/localStorageEventListener.ts +2 -2
  242. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  243. package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
  244. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
  245. package/src/application/utils/analyticsUtils.ts +53 -22
  246. package/src/application/utils/cdnUtils.ts +11 -0
  247. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
  248. package/src/atoms/app/index.ts +7 -17
  249. package/src/atoms/app/variant.ts +13 -4
  250. package/src/atoms/chat/chatState.ts +28 -18
  251. package/src/atoms/chat/messageQueue.ts +36 -5
  252. package/src/atoms/chat/replies.ts +45 -37
  253. package/src/atoms/envive/enviveConfig.ts +10 -6
  254. package/src/atoms/org/graphqlConfig.ts +7 -1
  255. package/src/atoms/org/index.ts +3 -3
  256. package/src/atoms/org/newOrgConfigAtom.ts +8 -0
  257. package/src/atoms/org/orgPageConfig.ts +6 -5
  258. package/src/atoms/search/chatSearch.ts +11 -5
  259. package/src/atoms/search/searchAPI.ts +22 -12
  260. package/src/atoms/search/searchServiceAdapter.ts +25 -0
  261. package/src/contexts/amplitudeContext.tsx +466 -0
  262. package/src/contexts/cdnContext.tsx +48 -0
  263. package/src/contexts/chatContext.tsx +15 -12
  264. package/src/contexts/enviveConfigContext.tsx +22 -17
  265. package/src/contexts/enviveCssContext.tsx +34 -5
  266. package/src/contexts/featureFlagContext.tsx +193 -0
  267. package/src/contexts/featureFlagServiceContext.tsx +87 -0
  268. package/src/contexts/graphqlContext.tsx +165 -0
  269. package/src/contexts/index.ts +13 -3
  270. package/src/contexts/localStorageContext.tsx +159 -0
  271. package/src/contexts/newOrgConfigContext.tsx +104 -0
  272. package/src/contexts/orgConfigContext.tsx +92 -92
  273. package/src/contexts/searchContext.tsx +187 -0
  274. package/src/contexts/sessionStorageContext.tsx +80 -0
  275. package/src/contexts/shopifyUrlContext.tsx +97 -0
  276. package/src/contexts/types.ts +12 -8
  277. package/src/contexts/userIdentityContext.tsx +197 -0
  278. package/src/events/registerAnalyticsListeners.ts +32 -38
  279. package/src/hooks/index.ts +10 -4
  280. package/src/hooks/useAmplitudeOperations.ts +35 -0
  281. package/src/hooks/useAppDetails.ts +49 -0
  282. package/src/hooks/useCdnOperations.ts +16 -0
  283. package/src/hooks/useChatToggle.ts +5 -4
  284. package/src/hooks/useChatToggleAnalytics.ts +15 -0
  285. package/src/hooks/useGraphQLConfig.ts +63 -0
  286. package/src/hooks/useIdentifyUser.ts +33 -0
  287. package/src/hooks/useImageResolver.ts +7 -7
  288. package/src/hooks/useLocalStorageOperations.ts +92 -0
  289. package/src/hooks/useNewOrgConfig.ts +3 -76
  290. package/src/hooks/useSearch.tsx +21 -18
  291. package/src/hooks/useSearchOperations.ts +97 -0
  292. package/src/hooks/useSessionStorageOperations.ts +28 -0
  293. package/src/hooks/useShopifyUrlOperations.ts +45 -0
  294. package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
  295. package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
  296. package/src/interceptors/index.ts +0 -1
  297. package/src/interceptors/useMessageInterceptor.ts +5 -8
  298. package/src/merchants/bandolier/bandolier.ts +10 -28
  299. package/src/merchants/carpe/carpe.ts +5 -8
  300. package/src/merchants/coterie/coterie.ts +3 -6
  301. package/src/merchants/default.ts +73 -70
  302. package/src/merchants/domInsertion.ts +30 -0
  303. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
  304. package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
  305. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
  306. package/src/merchants/greenpan/greenpan.ts +6 -12
  307. package/src/merchants/gridInsertion.ts +19 -0
  308. package/src/merchants/grooveLife/grooveLife.ts +13 -7
  309. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
  310. package/src/merchants/jackArcher/jackArcher.ts +26 -11
  311. package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
  312. package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
  313. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
  314. package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
  315. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
  316. package/src/merchants/longevityrx/longevityrx.ts +14 -8
  317. package/src/merchants/lookOptic/lookOptic.ts +6 -6
  318. package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
  319. package/src/merchants/medterra/medterra.ts +14 -11
  320. package/src/merchants/modells/modells.ts +6 -9
  321. package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
  322. package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
  323. package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
  324. package/src/merchants/spanx/spanx.ts +6 -6
  325. package/src/merchants/spanx/spanxStaging.ts +6 -12
  326. package/src/merchants/supergoop/supergoop.ts +11 -12
  327. package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
  328. package/src/merchants/venaCbd/venaCbd.ts +6 -9
  329. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
  330. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
  331. package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
  332. package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
  333. package/src/types/config-versions.ts +6 -0
  334. package/src/types.ts +0 -53
  335. package/dist/adapters/amplitude/index.cjs +0 -14
  336. package/dist/adapters/amplitude/index.d.cts +0 -6
  337. package/dist/adapters/amplitude/index.d.ts +0 -6
  338. package/dist/adapters/amplitude/index.js +0 -12
  339. package/dist/api-B2euFL-5.cjs +0 -269
  340. package/dist/api-XRr_lAG6.js +0 -190
  341. package/dist/application/config/index.cjs +0 -43
  342. package/dist/application/config/index.d.cts +0 -15
  343. package/dist/application/config/index.d.ts +0 -15
  344. package/dist/application/config/index.js +0 -41
  345. package/dist/application/service/customerService/index.cjs +0 -4
  346. package/dist/application/service/customerService/index.d.cts +0 -3
  347. package/dist/application/service/customerService/index.d.ts +0 -3
  348. package/dist/application/service/customerService/index.js +0 -4
  349. package/dist/application/service/index.cjs +0 -42
  350. package/dist/application/service/index.d.cts +0 -413
  351. package/dist/application/service/index.d.ts +0 -413
  352. package/dist/application/service/index.js +0 -12
  353. package/dist/atomStore-ONYy0XuA.d.cts +0 -24
  354. package/dist/atomStore-kOKiEcNl.d.ts +0 -24
  355. package/dist/bandolier-Da4wt6sm.cjs +0 -1230
  356. package/dist/bandolier-DzEmYWcz.js +0 -1230
  357. package/dist/carpe-AXipz0Xl.cjs +0 -608
  358. package/dist/carpe-CaUKwcEa.js +0 -606
  359. package/dist/contexts-CtRlNXaS.js +0 -7674
  360. package/dist/contexts-CtgmnYNn.cjs +0 -9088
  361. package/dist/coterie-oKHAT0lx.js +0 -240
  362. package/dist/customerService-BG1uNZZ1.cjs +0 -36
  363. package/dist/customerService-BHQRnLhC.js +0 -23
  364. package/dist/default-B4fINY5_.cjs +0 -4
  365. package/dist/default-BrTQxA0c.js +0 -4
  366. package/dist/default-C3LrcbZB.cjs +0 -199
  367. package/dist/default-CXkYrLEr.js +0 -176
  368. package/dist/dreamlandBaby-BEqt0eKF.js +0 -347
  369. package/dist/dreamlandBaby-DBDjEJCc.cjs +0 -347
  370. package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
  371. package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
  372. package/dist/fiveCbd-CdqNt16h.cjs +0 -614
  373. package/dist/fiveCbd-D6B-sgnX.js +0 -614
  374. package/dist/forLoveAndLemons-C7GsJG7f.cjs +0 -668
  375. package/dist/forLoveAndLemons-gNDlMtPR.js +0 -666
  376. package/dist/greenpan-B5AaW4M_.js +0 -398
  377. package/dist/greenpan-DrORpYms.cjs +0 -398
  378. package/dist/grooveLife-BJqsfH2H.cjs +0 -343
  379. package/dist/grooveLife-xIUmDM8s.js +0 -343
  380. package/dist/homegrownCannabis-8TZ21u6L.cjs +0 -411
  381. package/dist/homegrownCannabis-BtMuEvbZ.js +0 -411
  382. package/dist/index-CKUpnyJQ.d.ts +0 -72
  383. package/dist/index-DFL1dIT_.d.ts +0 -7
  384. package/dist/index-DXpgMVpp.d.ts +0 -749
  385. package/dist/index-MFbPQ8Ji.d.ts +0 -95
  386. package/dist/index-VHFMGkO-.d.cts +0 -72
  387. package/dist/index-VSFakgAI.d.cts +0 -95
  388. package/dist/index-aNW5V9fh.d.cts +0 -749
  389. package/dist/index-zZjcds15.d.cts +0 -7
  390. package/dist/jackArcher-WtkbLBZj.cjs +0 -728
  391. package/dist/jordanCraig-471FcgqF.cjs +0 -1787
  392. package/dist/jordanCraig-DNOncplU.js +0 -1787
  393. package/dist/kindredBravely-BlLyHGMX.cjs +0 -491
  394. package/dist/kindredBravely-cqZ4OvXp.js +0 -491
  395. package/dist/kutFromTheKloth-3mOIryvt.cjs +0 -370
  396. package/dist/kutFromTheKloth-DtVNCMKa.js +0 -370
  397. package/dist/larryAndSerges-88Bvq-Us.cjs +0 -262
  398. package/dist/larryAndSerges-cvak6May.js +0 -262
  399. package/dist/leapsAndRebounds-Dmf8eUPq.js +0 -361
  400. package/dist/leapsAndRebounds-iWKc923H.cjs +0 -361
  401. package/dist/logger-Dln20ans.cjs +0 -26
  402. package/dist/logger-pdEEY8T2.js +0 -20
  403. package/dist/longevityrx-BTMI9vn-.js +0 -321
  404. package/dist/longevityrx-CobPyigd.cjs +0 -321
  405. package/dist/lookOptic-C4H_c0JZ.cjs +0 -283
  406. package/dist/mantraBrand-CySGqbn6.cjs +0 -751
  407. package/dist/medterra-BnZ5p27n.cjs +0 -584
  408. package/dist/medterra-DaICcPPp.js +0 -584
  409. package/dist/modells-CZ1L6dD_.js +0 -485
  410. package/dist/modells-DF0SndHr.cjs +0 -485
  411. package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
  412. package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
  413. package/dist/pressedFloral-B3t2cYzs.cjs +0 -662
  414. package/dist/pressedFloral-Dsws2Kfb.js +0 -662
  415. package/dist/skinPerfection-CILQM2bR.cjs +0 -335
  416. package/dist/skinPerfection-DmQCntRf.js +0 -335
  417. package/dist/snapSupplements--X_v0KRM.js +0 -286
  418. package/dist/snapSupplements-Djuzl0Ed.cjs +0 -286
  419. package/dist/spanx-Bo81yXSF.cjs +0 -664
  420. package/dist/spanx-DauxB8KE.js +0 -662
  421. package/dist/spanxStaging-BucYQvR1.cjs +0 -849
  422. package/dist/spanxStaging-CfXUukdP.js +0 -846
  423. package/dist/supergoop-8qa_NV3F.cjs +0 -338
  424. package/dist/supergoop-DOaui-A6.js +0 -336
  425. package/dist/types-CD4LFta-.d.cts +0 -33
  426. package/dist/types-CGC6Oozp.cjs +0 -231
  427. package/dist/types-CnTCkyvK.js +0 -177
  428. package/dist/types-DBdI0j89.d.ts +0 -33
  429. package/dist/uniqueVintage-DAne8XcL.cjs +0 -1214
  430. package/dist/variant-CC1nrywd.d.ts +0 -13
  431. package/dist/variant-CQTuQQSq.d.cts +0 -13
  432. package/dist/venaCbd-B1HO_Pkr.cjs +0 -366
  433. package/dist/venaCbd-CnByO-5R.js +0 -366
  434. package/dist/westonJonBoucher-BRfHWMbs.cjs +0 -423
  435. package/dist/wineEnthusiast-DW8JVwV8.cjs +0 -941
  436. package/dist/wolfMattress-B6INZNRJ.cjs +0 -373
  437. package/dist/wolfMattress-D9P7ErH_.js +0 -373
  438. package/dist/wolfTactical-C5Pupi3J.js +0 -350
  439. package/dist/wolfTactical-TMthZM93.cjs +0 -350
  440. package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
  441. package/src/adapters/amplitude/index.ts +0 -2
  442. package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
  443. package/src/adapters/spiffy/commerce/graphql.ts +0 -219
  444. package/src/application/config/generalStaticConfig.ts +0 -40
  445. package/src/application/config/index.ts +0 -1
  446. package/src/application/models/domMutationContinuation.ts +0 -7
  447. package/src/application/models/domObservationStrategy.ts +0 -9
  448. package/src/application/service/cachingService.ts +0 -84
  449. package/src/application/service/cdnService.ts +0 -20
  450. package/src/application/service/customerService/index.ts +0 -8
  451. package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
  452. package/src/application/service/domMutationObserver.ts +0 -320
  453. package/src/application/service/domMutations/GridInsertionService.ts +0 -123
  454. package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
  455. package/src/application/service/domMutations/domInsertionService.ts +0 -90
  456. package/src/application/service/domMutations/domMutationListener.ts +0 -15
  457. package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
  458. package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
  459. package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
  460. package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
  461. package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
  462. package/src/application/service/featureFlagService.ts +0 -130
  463. package/src/application/service/graphqlConfigService.ts +0 -59
  464. package/src/application/service/index.ts +0 -32
  465. package/src/application/service/kustomerIntegrationService.ts +0 -111
  466. package/src/application/service/localStorageService.ts +0 -77
  467. package/src/application/service/pageVariantService.ts +0 -866
  468. package/src/application/service/searchService.ts +0 -147
  469. package/src/application/service/sessionStorageService.ts +0 -27
  470. package/src/application/service/shopifyUrlService.ts +0 -63
  471. package/src/application/service/userIdentityService.ts +0 -114
  472. package/src/application/service/windowChatToggleService.ts +0 -80
  473. package/src/application/service/windowDataLayerService.ts +0 -181
  474. package/src/application/service/windowFrontendConfigService.ts +0 -129
  475. package/src/atoms/org/merchantCss.ts +0 -161
  476. package/src/atoms/org/org.ts +0 -251
  477. package/src/atoms/org/orgUIConfig.ts +0 -142
  478. package/src/enabled-features.ts +0 -83
  479. package/src/hooks/useDynamicVariants.ts +0 -226
  480. package/src/hooks/useFileUpload.ts +0 -63
  481. package/src/hooks/useHideElements.ts +0 -85
  482. package/src/interceptors/useFormEscalation.ts +0 -57
  483. /package/dist/{locators-DnKpajbY.js → atomStore-CZnUUsrr.js} +0 -0
  484. /package/dist/{locators-CugndTUM.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
  485. /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
  486. /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
  487. /package/dist/{variantInfo-CzhR5W6h.js → utilityTypes-8sETsYPk.js} +0 -0
  488. /package/dist/{variantInfo-CNRTY0gH.cjs → utilityTypes-COShxVir.cjs} +0 -0
  489. /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
  490. /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
  491. /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
@@ -1,83 +0,0 @@
1
- import Logger from 'src/application/logging/logger';
2
- import { LocalStorageService } from 'src/application/service/localStorageService';
3
- import { getOrgInfo } from 'src/application/models';
4
- import { OrgConfig } from 'src/application/models/api/orgConfigResults';
5
- import { FeatureFlagService } from 'src/application/service/featureFlagService';
6
-
7
-
8
- type EnabledFeaturesValues = {
9
- envive: boolean;
10
- salesAgent: boolean;
11
- };
12
- class EnabledFeatures {
13
- private static values: EnabledFeaturesValues | undefined = undefined;
14
-
15
- static async get(
16
- orgConfig: OrgConfig,
17
- featureFlagService: FeatureFlagService,
18
- ): Promise<EnabledFeaturesValues> {
19
- if (this.values !== undefined) {
20
- return this.values;
21
- }
22
-
23
- const isSpiffyEnabled = async (orgConfig: OrgConfig, featureFlagService: FeatureFlagService): Promise<boolean> => {
24
- // "spiffy_on" is the highest precedence override and typically used for development/testing
25
- // skip all other checks if it is "true"
26
- if (LocalStorageService.getSpiffyOnFeatureFlag() === 'true') {
27
- Logger.logDebug(`[spiffy-ai] spiffy enabled by "spiffy_on" override`);
28
- return true;
29
- }
30
-
31
- if (LocalStorageService.getSpiffyOnFeatureFlag() === 'false') {
32
- Logger.logDebug(`[spiffy-ai] envive disabled by "envive_on" override`);
33
- return false;
34
- }
35
-
36
- if (window._spiffy?.show != null && !window._spiffy.show) {
37
- Logger.logDebug(`[spiffy-ai] spiffy disabled by window._spiffy.show`);
38
- return false;
39
- }
40
-
41
- if (!featureFlagService.isClientSessionEnabled()) {
42
- Logger.logDebug(`[spiffy-ai] spiffy disabled by feature flag`);
43
- return false;
44
- }
45
-
46
- // this is for when visibility is controlled by the merchant
47
- if (window._spiffy?.show != null && window._spiffy.show) {
48
- Logger.logDebug(`[spiffy-ai] spiffy enabled by window._spiffy.show`);
49
- return true;
50
- }
51
-
52
- // otherwise, spiffy controls the visibility of the experience through a feature flag
53
- const orgInfo = await getOrgInfo(orgConfig.org.org.shortName);
54
- if (orgInfo.alwaysEnabledMerchants) {
55
- Logger.logDebug(`[spiffy-ai] spiffy enabled by org config and feature flag`);
56
- return true;
57
- }
58
-
59
- if (featureFlagService.isClientSessionEnabled()) {
60
- Logger.logDebug(`[spiffy-ai] spiffy is enabled by feature flag`);
61
- return true;
62
- }
63
-
64
- Logger.logDebug(`[spiffy-ai] spiffy is disabled because not all checks have passed`);
65
- return false;
66
- };
67
-
68
- const isSalesAgentEnabled = isSpiffyEnabled;
69
-
70
- this.values = {
71
- envive: await isSpiffyEnabled(orgConfig, featureFlagService),
72
- salesAgent: await isSalesAgentEnabled(orgConfig, featureFlagService),
73
- };
74
-
75
- return this.values;
76
- }
77
-
78
- static reset() {
79
- this.values = undefined;
80
- }
81
- }
82
-
83
- export { EnabledFeatures };
@@ -1,226 +0,0 @@
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";
20
-
21
- // consider putting this in the org config
22
- const DEBOUNCE_DELAY_MS = 300;
23
-
24
- // a debounced function that sets the location href to prevent rapidly changing urls from
25
- // causing the variant info to be changed too early
26
- const debounce = (func: () => void, delay: number): (() => void) => {
27
- let timeoutId: NodeJS.Timeout;
28
-
29
- return () => {
30
- clearTimeout(timeoutId);
31
- timeoutId = setTimeout(() => func(), delay);
32
- };
33
- };
34
-
35
- const isUserEventEqual = (
36
- event1: UserEvent | null,
37
- event2: UserEvent | null
38
- ) => {
39
- if (!event1 || !event2) {
40
- return false;
41
- }
42
- if (event1.category !== event2.category) {
43
- return false;
44
- }
45
- if (
46
- event1.category === UserEventCategory.Search &&
47
- event2.category === UserEventCategory.Search
48
- ) {
49
- return event1.attributes.searchTerm === event2.attributes.searchTerm;
50
- }
51
- if (
52
- event1.category === UserEventCategory.PdpVisit &&
53
- event2.category === UserEventCategory.PdpVisit
54
- ) {
55
- return event1.attributes.productId === event2.attributes.productId;
56
- }
57
- if (
58
- event1.category === UserEventCategory.PlpVisit &&
59
- event2.category === UserEventCategory.PlpVisit &&
60
- "id" in event1.attributes.attributes &&
61
- "id" in event2.attributes.attributes
62
- ) {
63
- return event1.attributes.attributes.id === event2.attributes.attributes.id;
64
- }
65
- if (
66
- event1.category === UserEventCategory.PageVisit &&
67
- event2.category === UserEventCategory.PageVisit
68
- ) {
69
- return event1.attributes.url === event2.attributes.url;
70
- }
71
- return false;
72
- };
73
-
74
- export const useDynamicVariants = () => {
75
- const orgUIConfig = useAtomValue(orgUIConfigAtom);
76
- const locationHrefRef = useRef<string>(window.location.href);
77
- const setVariantInfo = useSetAtom(variantInfoAtom);
78
- const setSupportedEvent = useSetAtom(supportedEventAtom);
79
- const queueUserEvent = useSetAtom(queueUserEventAtom);
80
- const [mostRecentUserEvent, setMostRecentUserEvent] =
81
- useState<UserEvent | null>(null);
82
-
83
- const orgPageConfig = useAtomValue(orgPageConfigAtom);
84
- const debouncedFunc = useRef<(() => void) | null>(null);
85
- // we need to fetch org info before we can get the variant info. this prevents the rest of the application
86
- // logic from running before that happens. More specifically, we want to have all org and variant states
87
- // settled before mounting the ChatContextProvider which will start the session.
88
- const [hasParsedVariantInfo, setHasParsedVariantInfo] = useAtom(
89
- hasParsedVariantInfoAtom
90
- );
91
- const animationFrameRef = useRef<number | null>(null);
92
- const isBeforeUnload = useRef(false);
93
-
94
- const handleLocationChange = () => {
95
- if (animationFrameRef.current) {
96
- cancelAnimationFrame(animationFrameRef.current);
97
- }
98
-
99
- animationFrameRef.current = requestAnimationFrame(() => {
100
- if (locationHrefRef.current !== window.location.href) {
101
- debouncedFunc.current?.();
102
- }
103
- });
104
- };
105
-
106
- const handlePageChange = useCallback(async () => {
107
- if (isBeforeUnload.current) {
108
- return;
109
- }
110
-
111
- if (!orgPageConfig) {
112
- Logger.logWarn(
113
- "[spiffy-ai] orgPageConfig not found. skipping page change handling",
114
- undefined
115
- );
116
- return;
117
- }
118
-
119
- const parsedVariantInfo =
120
- await PageVariantService.getVariantInfoWithPageConfig(orgPageConfig);
121
-
122
- if (parsedVariantInfo) {
123
- Logger.logDebug("[spiffy-ai] variantInfo changed", parsedVariantInfo);
124
- const [newVariantInfo, pageVariantConfig] = parsedVariantInfo;
125
-
126
- setVariantInfo(newVariantInfo);
127
- setHasParsedVariantInfo(true);
128
-
129
- const visitEvent = createVisitUserEvent({ variantInfo: newVariantInfo });
130
- if (visitEvent && !isUserEventEqual(mostRecentUserEvent, visitEvent)) {
131
- setMostRecentUserEvent(visitEvent);
132
- queueUserEvent(createAppLoadedEvent());
133
- queueUserEvent(visitEvent);
134
- }
135
-
136
- const supportedEvent = await PageVariantService.checkSupportedEvent(
137
- pageVariantConfig
138
- );
139
- console.log("useDynamicVariants - supportedEvent", supportedEvent);
140
- setSupportedEvent(supportedEvent);
141
- AmplitudeAdapter.trackEvent({
142
- eventName: SpiffyMetricsEventName.SupportedEvent,
143
- eventProps: {
144
- ...supportedEvent,
145
- },
146
- });
147
- } else {
148
- setHasParsedVariantInfo(false);
149
- }
150
- }, [
151
- orgPageConfig,
152
- setVariantInfo,
153
- setHasParsedVariantInfo,
154
- setSupportedEvent,
155
- queueUserEvent,
156
- mostRecentUserEvent,
157
- setMostRecentUserEvent,
158
- ]);
159
-
160
- useEffect(() => {
161
- debouncedFunc.current = debounce(() => {
162
- locationHrefRef.current = window.location.href;
163
- handlePageChange();
164
- }, DEBOUNCE_DELAY_MS);
165
-
166
- return () => {
167
- debouncedFunc.current = null;
168
- };
169
- }, [handlePageChange]);
170
-
171
- useEffect(() => {
172
- // when navigation happens, the url is updated before the page is unloaded & reloaded
173
- // this causes the variant info to be changed first and triggering the hook that fetches
174
- // next responses. On non-SPA's, this handler prevents variant info from being updated
175
- // and lets the usual initialization sequence update it instead. On SPA's, this is not called
176
- // and handleLocationChange is called instead
177
- const handleBeforeUnload = () => {
178
- setSupportedEvent(undefined);
179
- isBeforeUnload.current = true;
180
- };
181
-
182
- window.addEventListener("click", handleLocationChange);
183
- window.addEventListener("popstate", handleLocationChange);
184
- window.addEventListener("beforeunload", handleBeforeUnload);
185
-
186
- return () => {
187
- window.removeEventListener("click", handleLocationChange);
188
- window.removeEventListener("popstate", handleLocationChange);
189
- window.removeEventListener("beforeunload", handleBeforeUnload);
190
- // TODO: this is causing the supportedEvent to be undefined for Magento customers
191
- // Why is unclear however...
192
- // setSupportedEvent(undefined);
193
-
194
- if (animationFrameRef.current) {
195
- cancelAnimationFrame(animationFrameRef.current);
196
- }
197
- };
198
- }, [handlePageChange, setSupportedEvent]);
199
-
200
- useEffect(() => {
201
- // handle the initial page load and when the variant info is overridden
202
- if (!hasParsedVariantInfo) {
203
- handlePageChange();
204
- }
205
- }, [hasParsedVariantInfo, handlePageChange]);
206
-
207
- useEffect(() => {
208
- let windowInterval: number | null = null;
209
- const merchantVariantSettings = orgUIConfig?.merchantVariantSettings;
210
-
211
- if (merchantVariantSettings?.dynamicVariants?.enabled) {
212
- const refreshInterval =
213
- merchantVariantSettings?.dynamicVariants?.refreshInterval;
214
- windowInterval = window.setInterval(() => {
215
- handleLocationChange();
216
- }, refreshInterval);
217
- }
218
-
219
- return () => {
220
- if (windowInterval) {
221
- window.clearInterval(windowInterval);
222
- }
223
- };
224
- // eslint-disable-next-line react-hooks/exhaustive-deps
225
- }, []);
226
- };
@@ -1,63 +0,0 @@
1
- import { AttachmentRequest } from "@spiffy-ai/commerce-api-client";
2
- import { useAtom, useAtomValue } from "jotai";
3
- import { useRef, useState } from "react";
4
- import {
5
- orgCustomerServiceService,
6
- customerServiceAttachment,
7
- } from "src/atoms/org";
8
-
9
- export const useFileUpload = () => {
10
- const fileInputRef = useRef(null);
11
- const [attachment, setAttachment] = useAtom(customerServiceAttachment);
12
- const customerServiceImpl = useAtomValue(orgCustomerServiceService);
13
- const [error, setError] = useState("");
14
-
15
- const isValidFile = (file?: File) => {
16
- const maxSize = customerServiceImpl?.maxfileUploadSize;
17
- if (maxSize && (file?.size || 0) > maxSize) {
18
- const strFileSize = `${(maxSize / 1000000).toFixed(1)}MB`;
19
- setError(`Exceeded file size of ${strFileSize}`);
20
- return false;
21
- }
22
- return true;
23
- };
24
-
25
- const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {
26
- const file = event?.target?.files?.[0];
27
-
28
- if (file && isValidFile(file)) {
29
- const reader = new FileReader();
30
- reader.readAsDataURL(file);
31
- reader.onloadend = () => {
32
- const base64 = reader?.result as string;
33
- setAttachment({
34
- base64_content: base64,
35
- content_type: file.type,
36
- file_name: file.name,
37
- });
38
- };
39
- }
40
- };
41
-
42
- const prepareAttachment = (): AttachmentRequest | undefined => {
43
- if (attachment) {
44
- return {
45
- ...attachment,
46
- base64_content: attachment?.base64_content.split(",")[1],
47
- } as AttachmentRequest;
48
- }
49
- };
50
-
51
- const handleFileRemove = () => {
52
- setAttachment(undefined);
53
- };
54
-
55
- return {
56
- error,
57
- fileInputRef,
58
- attachment,
59
- handleFileSelect,
60
- handleFileRemove,
61
- prepareAttachment,
62
- };
63
- };
@@ -1,85 +0,0 @@
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
-
10
- /**
11
- * This hook hides/shows elements that could overlap with the chat when the chat is opened/closed.
12
- */
13
- export const useHideElements = () => {
14
- const orgUIConfig = useAtomValue(orgUIConfigAtom);
15
- const [hasRegisteredEventListeners, setHasRegisteredEventListeners] =
16
- useState(false);
17
- const elementObservers = useRef<ElementObserver[]>([]);
18
-
19
- const hideElements = (elements: ElementObserver[]) => {
20
- elements.forEach((element) => {
21
- element.hide();
22
- });
23
- };
24
-
25
- const showElements = (elements: ElementObserver[]) => {
26
- elements.forEach((element) => {
27
- element.show();
28
- });
29
- };
30
-
31
- useEffect(() => {
32
- elementObservers.current = [];
33
- orgUIConfig?.hiddenElementSelectors?.forEach((selector) => {
34
- elementObservers.current.push(
35
- DOMObserver.add(SelectorFactory.query(selector))
36
- );
37
- });
38
- // since we're not using useElementObserver, we need to manually start the observer
39
- elementObservers.current.forEach((element) => {
40
- element.init();
41
- });
42
- DOMObserver.observe();
43
-
44
- return () => {
45
- elementObservers.current.forEach((element) => {
46
- element.destroy();
47
- });
48
- elementObservers.current = [];
49
- };
50
- }, [orgUIConfig?.hiddenElementSelectors]);
51
-
52
- useEffect(() => {
53
- if (elementObservers.current.length > 0 && !hasRegisteredEventListeners) {
54
- Logger.logDebug(
55
- `Registering ${SpiffyEventName.WidgetOpen} event for ${elementObservers.current.length} elements`
56
- );
57
- window.addEventListener(SpiffyEventName.WidgetOpen, () =>
58
- hideElements(elementObservers.current)
59
- );
60
-
61
- Logger.logDebug(
62
- `Registering ${SpiffyEventName.WidgetClose} event for ${elementObservers.current.length} elements`
63
- );
64
- window.addEventListener(SpiffyEventName.WidgetClose, () =>
65
- showElements(elementObservers.current)
66
- );
67
-
68
- setHasRegisteredEventListeners(true);
69
- }
70
-
71
- return () => {
72
- if (elementObservers.current.length > 0 && hasRegisteredEventListeners) {
73
- window.removeEventListener(SpiffyEventName.WidgetOpen, () =>
74
- hideElements(elementObservers.current)
75
- );
76
-
77
- window.removeEventListener(SpiffyEventName.WidgetClose, () =>
78
- showElements(elementObservers.current)
79
- );
80
-
81
- setHasRegisteredEventListeners(false);
82
- }
83
- };
84
- }, [hasRegisteredEventListeners]);
85
- };
@@ -1,57 +0,0 @@
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";
9
-
10
- export const useFormEscalation = (): MessageInterceptor => {
11
- const handleFormSubmitted = useSetAtom(handleFormSubmittedAtom);
12
- const customerServiceIntegration = useAtomValue(orgCustomerServiceService);
13
- const apiKey = useAtomValue(apiKeyAtom);
14
- const apiEndpoint = useAtomValue(baseUrlAtom);
15
-
16
- const blockExecution = () => true;
17
-
18
- const execute = async (response: Response) => {
19
- if (
20
- response.category === ResponseCategory.Form &&
21
- response.attributes.formCategory?.formType === FormType.Escalation
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
-
36
- const isEnabled = customerServiceIntegration.isEnabled();
37
- const isBusinessHours = await customerServiceIntegration.isBusinessHours(
38
- apiKey,
39
- apiEndpoint
40
- );
41
-
42
- handleFormSubmitted({
43
- formResponseId: response.id,
44
- formType: FormType.Escalation,
45
- filledSchema: {
46
- is_in_business_hours: isBusinessHours,
47
- is_integration_enabled: isEnabled,
48
- },
49
- });
50
- }
51
- };
52
-
53
- return {
54
- execute,
55
- blockExecution,
56
- };
57
- };