@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.
- package/dist/adapters/amplitude/index.cjs +13 -13
- package/dist/adapters/amplitude/index.d.cts +5 -3
- package/dist/adapters/amplitude/index.d.ts +5 -3
- package/dist/adapters/amplitude/index.js +10 -10
- package/dist/api-B2euFL-5.cjs +269 -0
- package/dist/api-XRr_lAG6.js +190 -0
- package/dist/application/config/index.cjs +14 -5
- package/dist/application/config/index.d.cts +2 -1
- package/dist/application/config/index.d.ts +2 -1
- package/dist/application/config/index.js +14 -5
- package/dist/application/models/graphql/index.cjs +12 -12
- package/dist/application/models/graphql/index.d.cts +1 -1
- package/dist/application/models/graphql/index.d.ts +1 -1
- package/dist/application/models/graphql/index.js +10 -10
- package/dist/application/models/guards/api/index.cjs +2 -2
- package/dist/application/models/guards/api/index.d.cts +2 -2
- package/dist/application/models/guards/api/index.d.ts +2 -2
- package/dist/application/models/guards/api/index.js +2 -2
- package/dist/application/models/index.cjs +54 -54
- package/dist/application/models/index.d.cts +8 -9
- package/dist/application/models/index.d.ts +8 -9
- package/dist/application/models/index.js +10 -10
- package/dist/application/models/utilityTypes/index.cjs +1 -1
- package/dist/application/models/utilityTypes/index.d.cts +1 -1
- package/dist/application/models/utilityTypes/index.d.ts +1 -1
- package/dist/application/models/utilityTypes/index.js +1 -1
- package/dist/application/models/variantInfo/index.cjs +1 -1
- package/dist/application/models/variantInfo/index.d.cts +1 -1
- package/dist/application/models/variantInfo/index.d.ts +1 -1
- package/dist/application/models/variantInfo/index.js +1 -1
- package/dist/application/service/customerService/index.cjs +2 -2
- package/dist/application/service/customerService/index.d.cts +2 -2
- package/dist/application/service/customerService/index.d.ts +2 -2
- package/dist/application/service/customerService/index.js +2 -2
- package/dist/application/service/index.cjs +38 -757
- package/dist/application/service/index.d.cts +26 -20
- package/dist/application/service/index.d.ts +26 -20
- package/dist/application/service/index.js +12 -727
- package/dist/application/utils/index.cjs +37 -37
- package/dist/application/utils/index.d.cts +12 -12
- package/dist/application/utils/index.d.ts +14 -14
- package/dist/application/utils/index.js +10 -10
- package/dist/atomStore-B1cgmbP0.js +32 -0
- package/dist/atomStore-JwGb7pcy.cjs +58 -0
- package/dist/atomStore-ONYy0XuA.d.cts +24 -0
- package/dist/atomStore-kOKiEcNl.d.ts +24 -0
- package/dist/atoms/app/index.cjs +16 -16
- package/dist/atoms/app/index.d.cts +11 -11
- package/dist/atoms/app/index.d.ts +12 -12
- package/dist/atoms/app/index.js +10 -10
- package/dist/atoms/atomStore/index.cjs +1 -2
- package/dist/atoms/atomStore/index.d.cts +1 -22
- package/dist/atoms/atomStore/index.d.ts +1 -22
- package/dist/atoms/atomStore/index.js +1 -2
- package/dist/atoms/chat/index.cjs +40 -40
- package/dist/atoms/chat/index.d.cts +37 -37
- package/dist/atoms/chat/index.d.ts +38 -38
- package/dist/atoms/chat/index.js +10 -10
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +7 -6
- package/dist/atoms/globalSearch/index.d.ts +2 -1
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/index.cjs +38 -40
- package/dist/atoms/org/index.d.cts +35 -53
- package/dist/atoms/org/index.d.ts +34 -52
- package/dist/atoms/org/index.js +11 -12
- package/dist/atoms/search/index.cjs +41 -43
- package/dist/atoms/search/index.d.cts +9 -10
- package/dist/atoms/search/index.d.ts +9 -10
- package/dist/atoms/search/index.js +10 -12
- package/dist/bandolier-Da4wt6sm.cjs +1230 -0
- package/dist/bandolier-DzEmYWcz.js +1230 -0
- package/dist/carpe-AXipz0Xl.cjs +608 -0
- package/dist/carpe-CaUKwcEa.js +606 -0
- package/dist/chat-CHmD79E1.js +26 -0
- package/dist/{chat-CCgyDehy.cjs → chat-_NzpO_Hn.cjs} +2 -1
- package/dist/{components-CScS7Ii-.cjs → components-D0XDRcaN.cjs} +2 -1
- package/dist/components-Dl-TMD9k.js +11 -0
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.d.ts +1 -1
- package/dist/config/locators/components/chat/index.js +1 -1
- package/dist/config/locators/components/chat/variants/index.cjs +2 -1
- package/dist/config/locators/components/chat/variants/index.d.cts +2 -1
- package/dist/config/locators/components/chat/variants/index.d.ts +2 -1
- package/dist/config/locators/components/chat/variants/index.js +2 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.d.ts +1 -1
- package/dist/config/locators/components/index.js +1 -1
- package/dist/config/locators/components/search/index.cjs +2 -1
- package/dist/config/locators/components/search/index.d.cts +2 -1
- package/dist/config/locators/components/search/index.d.ts +2 -1
- package/dist/config/locators/components/search/index.js +2 -1
- package/dist/config/locators/index.cjs +4 -4
- package/dist/config/locators/index.d.cts +2 -1
- package/dist/config/locators/index.d.ts +4 -3
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/index.cjs +20 -23
- package/dist/contexts/index.d.cts +10 -59
- package/dist/contexts/index.d.ts +10 -59
- package/dist/contexts/index.js +11 -17
- package/dist/contexts-CtRlNXaS.js +7674 -0
- package/dist/contexts-CtgmnYNn.cjs +9088 -0
- package/dist/coterie--MGvWeVh.cjs +240 -0
- package/dist/coterie-oKHAT0lx.js +240 -0
- package/dist/customerService-BG1uNZZ1.cjs +36 -0
- package/dist/customerService-BHQRnLhC.js +23 -0
- package/dist/custservice-types-C8-9vKWb.cjs +35 -0
- package/dist/custservice-types-CamCiXjq.js +23 -0
- package/dist/default-B4fINY5_.cjs +4 -0
- package/dist/default-BrTQxA0c.js +4 -0
- package/dist/default-C3LrcbZB.cjs +199 -0
- package/dist/default-CXkYrLEr.js +176 -0
- package/dist/divIds-0Vj9g-fM.js +23 -0
- package/dist/{divIds-CFyAjjp3.cjs → divIds-CjceLRD9.cjs} +2 -1
- package/dist/dreamlandBaby-BEqt0eKF.js +347 -0
- package/dist/dreamlandBaby-DBDjEJCc.cjs +347 -0
- package/dist/{embedded-BlXJUbik.cjs → embedded-B5Wi9g0T.cjs} +2 -1
- package/dist/embedded-_cLpd6FK.js +23 -0
- package/dist/entrypoints-CNUvSgnk.js +7 -0
- package/dist/entrypoints-DM9Sm18O.cjs +19 -0
- package/dist/events/index.cjs +1 -1
- package/dist/events/index.d.cts +2 -1
- package/dist/events/index.d.ts +2 -1
- package/dist/events/index.js +1 -1
- package/dist/events-ClCDFK7t.js +78 -0
- package/dist/events-Da7gpmGv.cjs +90 -0
- package/dist/featureFlagService-5wdmW02z.d.ts +18 -0
- package/dist/featureFlagService-DaelrXEk.d.cts +18 -0
- package/dist/fiveCbd-CdqNt16h.cjs +614 -0
- package/dist/fiveCbd-D6B-sgnX.js +614 -0
- package/dist/forLoveAndLemons-C7GsJG7f.cjs +668 -0
- package/dist/forLoveAndLemons-gNDlMtPR.js +666 -0
- package/dist/{globalSearch-hxbXekus.cjs → globalSearch-BTeZxvk1.cjs} +2 -1
- package/dist/globalSearch-b0wC7ZEO.js +14 -0
- package/dist/greenpan-B5AaW4M_.js +398 -0
- package/dist/greenpan-DrORpYms.cjs +398 -0
- package/dist/grooveLife-BJqsfH2H.cjs +343 -0
- package/dist/grooveLife-xIUmDM8s.js +343 -0
- package/dist/homegrownCannabis-8TZ21u6L.cjs +411 -0
- package/dist/homegrownCannabis-BtMuEvbZ.js +411 -0
- package/dist/hooks/index.cjs +36 -38
- package/dist/hooks/index.d.cts +36 -82
- package/dist/hooks/index.d.ts +38 -84
- package/dist/hooks/index.js +11 -17
- package/dist/index-BTK5uzs6.d.cts +98 -0
- package/dist/index-BdNKc2ix.d.cts +2 -1
- package/dist/index-BrXuc_Ck.d.cts +2 -1
- package/dist/index-BzgkfbNO.d.cts +228 -0
- package/dist/index-CKKkTsms.d.ts +39 -0
- package/dist/index-CKUpnyJQ.d.ts +72 -0
- package/dist/index-CSIOQD-A.d.ts +25 -0
- package/dist/index-CbJZOEU4.d.ts +203 -0
- package/dist/index-ClJ0nMsR.d.cts +184 -0
- package/dist/index-Cr2y08f1.d.ts +9 -0
- package/dist/index-Cx9e-fRi.d.ts +184 -0
- package/dist/index-D2VaMPA3.d.ts +98 -0
- package/dist/index-D46Rd0io.d.cts +39 -0
- package/dist/index-DFL1dIT_.d.ts +7 -0
- package/dist/index-DXpgMVpp.d.ts +749 -0
- package/dist/index-Dxpscrvz.d.ts +228 -0
- package/dist/index-K2kNsOTw.d.cts +203 -0
- package/dist/index-MFbPQ8Ji.d.ts +95 -0
- package/dist/index-VHFMGkO-.d.cts +72 -0
- package/dist/index-VSFakgAI.d.cts +95 -0
- package/dist/index-aNW5V9fh.d.cts +749 -0
- package/dist/index-zZjcds15.d.cts +7 -0
- package/dist/interceptors/index.cjs +12 -13
- package/dist/interceptors/index.d.cts +10 -10
- package/dist/interceptors/index.d.ts +10 -10
- package/dist/interceptors/index.js +10 -11
- package/dist/jackArcher-WtkbLBZj.cjs +728 -0
- package/dist/jackArcher-sO9EbgrZ.js +728 -0
- package/dist/jordanCraig-471FcgqF.cjs +1787 -0
- package/dist/jordanCraig-DNOncplU.js +1787 -0
- package/dist/kindredBravely-BlLyHGMX.cjs +491 -0
- package/dist/kindredBravely-cqZ4OvXp.js +491 -0
- package/dist/kutFromTheKloth-3mOIryvt.cjs +370 -0
- package/dist/kutFromTheKloth-DtVNCMKa.js +370 -0
- package/dist/larryAndSerges-88Bvq-Us.cjs +262 -0
- package/dist/larryAndSerges-cvak6May.js +262 -0
- package/dist/leapsAndRebounds-Dmf8eUPq.js +361 -0
- package/dist/leapsAndRebounds-iWKc923H.cjs +361 -0
- package/dist/logger-Dln20ans.cjs +26 -0
- package/dist/logger-pdEEY8T2.js +20 -0
- package/dist/longevityrx-BTMI9vn-.js +321 -0
- package/dist/longevityrx-CobPyigd.cjs +321 -0
- package/dist/lookOptic-C4H_c0JZ.cjs +283 -0
- package/dist/lookOptic-Jwf7EAU8.js +283 -0
- package/dist/mantraBrand-CySGqbn6.cjs +751 -0
- package/dist/mantraBrand-DoaVj837.js +751 -0
- package/dist/medterra-BnZ5p27n.cjs +584 -0
- package/dist/medterra-DaICcPPp.js +584 -0
- package/dist/modells-CZ1L6dD_.js +485 -0
- package/dist/modells-DF0SndHr.cjs +485 -0
- package/dist/nodeSelector-DybpVr-i.d.ts +31 -0
- package/dist/nodeSelector-vKB44CDB.d.cts +2 -1
- package/dist/orgConfigResults--dAwtw3W.d.ts +881 -0
- package/dist/orgConfigResults-BL0XBA6x.d.cts +881 -0
- package/dist/pressedFloral-B3t2cYzs.cjs +662 -0
- package/dist/pressedFloral-Dsws2Kfb.js +662 -0
- package/dist/search-filter-types-9rTb3jMj.d.cts +102 -0
- package/dist/search-filter-types-C-zZSpGo.d.ts +102 -0
- package/dist/skinPerfection-CILQM2bR.cjs +335 -0
- package/dist/skinPerfection-DmQCntRf.js +335 -0
- package/dist/snapSupplements--X_v0KRM.js +286 -0
- package/dist/snapSupplements-Djuzl0Ed.cjs +286 -0
- package/dist/socialProofClasses-DdzG1tZy.js +10 -0
- package/dist/socialProofClasses-ky69yppk.cjs +40 -0
- package/dist/spanx-Bo81yXSF.cjs +664 -0
- package/dist/spanx-DauxB8KE.js +662 -0
- package/dist/spanxStaging-BucYQvR1.cjs +849 -0
- package/dist/spanxStaging-CfXUukdP.js +846 -0
- package/dist/{suggestionBarV2-types-DG3Ekk44.cjs → suggestionBarV2-types-B3lwrENK.cjs} +2 -1
- package/dist/suggestionBarV2-types-Penx3Y67.js +10 -0
- package/dist/supergoop-8qa_NV3F.cjs +338 -0
- package/dist/supergoop-DOaui-A6.js +336 -0
- package/dist/test-types-CXVJxTeu.d.ts +40 -0
- package/dist/test-types-CuOq25VT.d.cts +40 -0
- package/dist/types/index.cjs +2 -2
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/types-CD4LFta-.d.cts +33 -0
- package/dist/types-CGC6Oozp.cjs +231 -0
- package/dist/types-CnTCkyvK.js +177 -0
- package/dist/types-DBdI0j89.d.ts +33 -0
- package/dist/uniqueVintage-BWkDgt1z.js +1212 -0
- package/dist/uniqueVintage-DAne8XcL.cjs +1214 -0
- package/dist/variant-CC1nrywd.d.ts +13 -0
- package/dist/variant-CQTuQQSq.d.cts +13 -0
- package/dist/venaCbd-B1HO_Pkr.cjs +366 -0
- package/dist/venaCbd-CnByO-5R.js +366 -0
- package/dist/westonJonBoucher-BAGXegsX.js +423 -0
- package/dist/westonJonBoucher-BRfHWMbs.cjs +423 -0
- package/dist/wineEnthusiast-DW8JVwV8.cjs +941 -0
- package/dist/wineEnthusiast-EJbhMeKQ.js +941 -0
- package/dist/wolfMattress-B6INZNRJ.cjs +373 -0
- package/dist/wolfMattress-D9P7ErH_.js +373 -0
- package/dist/wolfTactical-C5Pupi3J.js +350 -0
- package/dist/wolfTactical-TMthZM93.cjs +350 -0
- package/package.json +2 -1
- package/src/adapters/amplitude/amplitudeAdapter.ts +32 -9
- package/src/adapters/spiffy/commerce/api.ts +17 -8
- package/src/adapters/spiffy/commerce/graphql.ts +16 -5
- package/src/application/config/generalStaticConfig.ts +5 -2
- package/src/application/models/api/orgConfigResults.ts +6 -2
- package/src/application/models/supportedOrgs.ts +1 -1
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +23 -21
- package/src/application/service/cdnService.ts +4 -2
- package/src/application/service/graphqlConfigService.ts +59 -0
- package/src/application/service/index.ts +1 -1
- package/src/application/service/pageVariantService.ts +5 -5
- package/src/application/service/searchService.ts +9 -2
- package/src/application/service/windowChatToggleService.ts +28 -19
- package/src/application/service/windowFrontendConfigService.ts +7 -4
- package/src/atoms/app/index.ts +26 -17
- package/src/atoms/app/variant.ts +1 -0
- package/src/atoms/chat/messageQueue.ts +1 -1
- package/src/atoms/envive/enviveConfig.ts +81 -0
- package/src/atoms/org/graphqlConfig.ts +40 -11
- package/src/atoms/org/index.ts +7 -7
- package/src/atoms/org/merchantCss.ts +119 -2
- package/src/atoms/org/org.ts +67 -70
- package/src/atoms/org/orgPageConfig.ts +9 -6
- package/src/atoms/org/orgUIConfig.ts +22 -9
- package/src/atoms/search/chatSearch.ts +85 -67
- package/src/atoms/search/searchAPI.ts +52 -42
- package/src/contexts/chatContext.tsx +4 -1
- package/src/contexts/enviveConfigContext.tsx +37 -26
- package/src/contexts/enviveCssContext.tsx +20 -0
- package/src/contexts/index.ts +2 -0
- package/src/contexts/orgConfigContext.tsx +106 -0
- package/src/contexts/systemSettingsContext.tsx +2 -2
- package/src/contexts/types.ts +12 -9
- package/src/hooks/index.ts +2 -3
- package/src/hooks/useDynamicVariants.ts +48 -32
- package/src/hooks/useFileUpload.ts +1 -1
- package/src/hooks/useHideElements.ts +21 -18
- package/src/hooks/useImageResolver.ts +16 -8
- package/src/hooks/useNewOrgConfig.ts +80 -0
- package/src/hooks/useSearch.tsx +10 -6
- package/src/hooks/utils.ts +1 -1
- package/src/interceptors/useFormEscalation.ts +26 -9
- package/src/types.ts +0 -2
- package/dist/api-BtzLHcfU.cjs +0 -268
- package/dist/api-kpPTZhV9.js +0 -189
- package/dist/atomStore-BNQyGmU_.cjs +0 -57
- package/dist/atomStore-TnLPtYns.js +0 -31
- package/dist/bandolier-CQrxBHsk.cjs +0 -1230
- package/dist/bandolier-Di9DpZ8e.js +0 -1230
- package/dist/carpe-3NJOR-Rj.cjs +0 -608
- package/dist/carpe-DmWKaIQq.js +0 -606
- package/dist/cdnService-BNreZjqy.js +0 -18
- package/dist/cdnService-vLxePdrU.cjs +0 -23
- package/dist/chat-CCQMmhc1.cjs +0 -5057
- package/dist/chat-Dk6KPb1K.js +0 -25
- package/dist/chat-H6YcCS4I.js +0 -4113
- package/dist/components-DAQxVIn9.js +0 -10
- package/dist/coterie-D0UFsFC5.cjs +0 -240
- package/dist/coterie-JblRmIZL.js +0 -240
- package/dist/customerService-C4wc0glQ.js +0 -22
- package/dist/customerService-zsDlp7g2.cjs +0 -35
- package/dist/custservice-types-D8Npo-5Z.js +0 -22
- package/dist/custservice-types-E9_OSaZ7.cjs +0 -34
- package/dist/default-C5ZTV8HA.cjs +0 -4
- package/dist/default-DPv8m-eQ.js +0 -175
- package/dist/default-DRKBosow.cjs +0 -198
- package/dist/default-ao0vRl0W.js +0 -4
- package/dist/divIds-BWvq-i6I.js +0 -22
- package/dist/dreamlandBaby-CyS8oW8X.js +0 -347
- package/dist/dreamlandBaby-y7kSvwH2.cjs +0 -347
- package/dist/embedded-C1jvFj3v.js +0 -22
- package/dist/entrypoints-CmmOszXO.js +0 -6
- package/dist/entrypoints-fowCLUT2.cjs +0 -18
- package/dist/enviveConfigContext-Bs8kepnO.cjs +0 -48
- package/dist/enviveConfigContext-CWVdVWKW.js +0 -34
- package/dist/events-DgFzlVJR.js +0 -77
- package/dist/events-bH-24eRW.cjs +0 -89
- package/dist/featureFlagService-CroFRxvD.d.cts +0 -17
- package/dist/featureFlagService-NkJ2fuEj.d.ts +0 -17
- package/dist/featureGates-BMWXU0dS.d.ts +0 -90
- package/dist/featureGates-N_gyHCTn.d.cts +0 -90
- package/dist/fiveCbd-CXVuIBiZ.cjs +0 -614
- package/dist/fiveCbd-Cyc3-Ab9.js +0 -614
- package/dist/forLoveAndLemons-CxQS0USq.cjs +0 -668
- package/dist/forLoveAndLemons-D8mcgmdk.js +0 -666
- package/dist/frontendConfig-KeNqU1wa.d.cts +0 -790
- package/dist/frontendConfig-cPvCTWm6.d.ts +0 -790
- package/dist/globalSearch-BC0rOX3E.js +0 -13
- package/dist/greenpan-JM6SHcqO.js +0 -398
- package/dist/greenpan-eIzyxVsn.cjs +0 -398
- package/dist/grooveLife-BmsUc2cD.js +0 -343
- package/dist/grooveLife-KdTizVUn.cjs +0 -343
- package/dist/homegrownCannabis-C0GDai4r.cjs +0 -411
- package/dist/homegrownCannabis-a9udocBT.js +0 -411
- package/dist/hooks-DjOa7ihH.cjs +0 -7331
- package/dist/hooks-fneW8SWw.js +0 -7152
- package/dist/index-BQErGgfM.d.cts +0 -202
- package/dist/index-C4zjAR1c.d.cts +0 -227
- package/dist/index-CGB6CAmr.d.ts +0 -6
- package/dist/index-CIco0cCQ.d.ts +0 -183
- package/dist/index-COG1kOZG.d.ts +0 -749
- package/dist/index-CVxe7FpL.d.cts +0 -6
- package/dist/index-Cn1SeI5y.d.cts +0 -183
- package/dist/index-CnqHN_jz.d.ts +0 -202
- package/dist/index-Cqg6ltII.d.ts +0 -38
- package/dist/index-DE_7Q8qK.d.ts +0 -94
- package/dist/index-Da0UzyI9.d.ts +0 -24
- package/dist/index-DbWWcYax.d.cts +0 -749
- package/dist/index-DtoVXd6O.d.cts +0 -97
- package/dist/index-JClBRnSX.d.cts +0 -94
- package/dist/index-ghzD_356.d.ts +0 -8
- package/dist/index-hdbCEjYy.d.cts +0 -38
- package/dist/index-luJrHgPN.d.ts +0 -97
- package/dist/index-tfRj22E1.d.ts +0 -227
- package/dist/jackArcher-B6OJ0N3a.cjs +0 -728
- package/dist/jackArcher-B9fe4Hv8.js +0 -728
- package/dist/jordanCraig-0CB_m_ts.cjs +0 -1787
- package/dist/jordanCraig-DNm1iw1L.js +0 -1787
- package/dist/kindredBravely-CZgt7DJA.js +0 -491
- package/dist/kindredBravely-KvYPbckZ.cjs +0 -491
- package/dist/kutFromTheKloth-BxgtWZs9.cjs +0 -370
- package/dist/kutFromTheKloth-SmteSZjk.js +0 -370
- package/dist/larryAndSerges-6O_u3L90.cjs +0 -261
- package/dist/larryAndSerges-DO-zG8ES.js +0 -261
- package/dist/leapsAndRebounds-BK62AmXw.js +0 -361
- package/dist/leapsAndRebounds-gPsWVUmQ.cjs +0 -361
- package/dist/logger-Be0NyKaY.cjs +0 -25
- package/dist/logger-BexDfK3W.js +0 -19
- package/dist/longevityrx-DjKbwJo3.cjs +0 -321
- package/dist/longevityrx-eq5TeUcy.js +0 -321
- package/dist/lookOptic-BPPqms_j.cjs +0 -283
- package/dist/lookOptic-jRpBXQCN.js +0 -283
- package/dist/mantraBrand-BZOZfkUK.js +0 -751
- package/dist/mantraBrand-Cp8zptkj.cjs +0 -751
- package/dist/medterra-BHYCBgvQ.cjs +0 -584
- package/dist/medterra-CShe6CLY.js +0 -584
- package/dist/modells-DE7-gmjK.cjs +0 -485
- package/dist/modells-DFyJxNwT.js +0 -485
- package/dist/nodeSelector-DpKXszfU.d.ts +0 -30
- package/dist/org-Bkn6fl6I.cjs +0 -106
- package/dist/org-CX8HFbc9.js +0 -63
- package/dist/pressedFloral-BMkCVs8c.cjs +0 -662
- package/dist/pressedFloral-aK9br-LF.js +0 -662
- package/dist/search-DtIFZeMA.cjs +0 -743
- package/dist/search-eWwg8pNn.js +0 -542
- package/dist/search-filter-types-ByJnFPc4.d.cts +0 -101
- package/dist/search-filter-types-DPgeG8FS.d.ts +0 -101
- package/dist/skinPerfection-B9G6yLM2.js +0 -335
- package/dist/skinPerfection-BBC1q65Z.cjs +0 -335
- package/dist/snapSupplements-D7hx6Kgj.cjs +0 -286
- package/dist/snapSupplements-DKvJl__T.js +0 -286
- package/dist/socialProofClasses-BYLiEXpU.cjs +0 -39
- package/dist/socialProofClasses-CkJufEGb.js +0 -9
- package/dist/spanx-D-ZKkxjM.cjs +0 -664
- package/dist/spanx-yl7YfVrf.js +0 -662
- package/dist/spanxStaging-CXeIg6zI.cjs +0 -849
- package/dist/spanxStaging-DzGXL9wD.js +0 -846
- package/dist/suggestionBarV2-types-B0RbMStE.js +0 -9
- package/dist/supergoop-CSpDPOpl.cjs +0 -337
- package/dist/supergoop-D0UkuRiA.js +0 -335
- package/dist/test-types-C9b_OdfO.d.ts +0 -39
- package/dist/test-types-CpKCxk8U.d.cts +0 -39
- package/dist/types-BE4faOO_.d.cts +0 -32
- package/dist/types-C3S1H4hl.js +0 -176
- package/dist/types-TD8g7LnH.d.ts +0 -32
- package/dist/types-lcjuhDBt.cjs +0 -230
- package/dist/uniqueVintage-DygVpCqU.cjs +0 -1214
- package/dist/uniqueVintage-_n0FZFVj.js +0 -1212
- package/dist/useMessageInterceptor-BP6gzo8a.js +0 -57
- package/dist/useMessageInterceptor-BnUG2Pzt.cjs +0 -72
- package/dist/variant-DH4zusMi.d.cts +0 -12
- package/dist/variant-DTEqSBHd.d.ts +0 -12
- package/dist/variantInfo-BTvC6CQh.js +0 -1
- package/dist/variantInfo-Cz2YXraO.cjs +0 -0
- package/dist/venaCbd-BS0dvdBm.js +0 -366
- package/dist/venaCbd-Pqg0bj-P.cjs +0 -366
- package/dist/westonJonBoucher-CLw8Hy6u.js +0 -423
- package/dist/westonJonBoucher-CeA0jwxe.cjs +0 -423
- package/dist/wineEnthusiast-M9P18d1w.js +0 -941
- package/dist/wineEnthusiast-gHBaQMbe.cjs +0 -941
- package/dist/wolfMattress-BQHjoQYu.js +0 -373
- package/dist/wolfMattress-CdmN-Evm.cjs +0 -373
- package/dist/wolfTactical-Cc2ZLBRh.js +0 -350
- package/dist/wolfTactical-dObnPgAG.cjs +0 -350
- package/src/application/service/environmentService.ts +0 -51
- package/src/extension.ts +0 -63
- package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
- package/src/hooks/useReducedMotionWithOverride.ts +0 -15
- package/src/hooks/useSnapControl.ts +0 -155
- package/src/initialize.ts +0 -163
- package/src/main.tsx +0 -108
- package/src/merchants/uniqueVintage/views/useUniqueVintageChatSearch.ts +0 -147
- /package/dist/{atomStore-B3tsg6mF.cjs → locators-CugndTUM.cjs} +0 -0
- /package/dist/{atomStore-FSZd_20F.js → locators-DnKpajbY.js} +0 -0
- /package/dist/{locators-C2DX_nX6.js → utilityTypes-BVikejDo.js} +0 -0
- /package/dist/{locators-CUpyd9Wt.cjs → utilityTypes-C4h2wgAK.cjs} +0 -0
- /package/dist/{utilityTypes-DMdsI0DG.cjs → variantInfo-CNRTY0gH.cjs} +0 -0
- /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
|
-
};
|