@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,55 +1,63 @@
|
|
|
1
|
-
import { UserEventCategory } from
|
|
2
|
-
import { v4 as uuid } from
|
|
3
|
-
import { atom } from
|
|
1
|
+
import { UserEventCategory } from "@spiffy-ai/commerce-api-client";
|
|
2
|
+
import { v4 as uuid } from "uuid";
|
|
3
|
+
import { atom } from "jotai";
|
|
4
4
|
import {
|
|
5
5
|
Message,
|
|
6
6
|
MessageRole,
|
|
7
7
|
MessageType,
|
|
8
8
|
ProductResponseAttributes,
|
|
9
|
-
} from
|
|
9
|
+
} from "src/application/models";
|
|
10
10
|
import {
|
|
11
11
|
messagesAtom,
|
|
12
12
|
replyEventCategoryAtom,
|
|
13
13
|
userHasRepliedAtom,
|
|
14
14
|
userQueryAtom,
|
|
15
|
-
} from
|
|
16
|
-
import { queueUserEventAtom } from
|
|
17
|
-
import { orgUIConfigAtom } from
|
|
18
|
-
import { ProductFilters } from
|
|
19
|
-
import { ProductSorter } from
|
|
20
|
-
import { ChatSearchStateType, ProductSorting } from
|
|
15
|
+
} from "src/atoms/chat";
|
|
16
|
+
import { queueUserEventAtom } from "../chat/messageQueue";
|
|
17
|
+
import { orgUIConfigAtom } from "../org";
|
|
18
|
+
import { ProductFilters } from "./productFilters";
|
|
19
|
+
import { ProductSorter } from "./productSorter";
|
|
20
|
+
import { ChatSearchStateType, ProductSorting } from "./types";
|
|
21
21
|
|
|
22
22
|
// NOTE:
|
|
23
23
|
// This is a legacy version of search that needs to be decoupled and removed.
|
|
24
24
|
// the new search.ts file in this directory is likely what you're looking for.
|
|
25
25
|
|
|
26
|
-
export const chatSearchStateAtom = atom<ChatSearchStateType>(
|
|
26
|
+
export const chatSearchStateAtom = atom<ChatSearchStateType>("entrypoint");
|
|
27
27
|
export const chatSearchHasProductsAtom = atom<boolean>(false);
|
|
28
|
-
export const chatSearchProductSortingAtom = atom<ProductSorting>(
|
|
28
|
+
export const chatSearchProductSortingAtom = atom<ProductSorting>(
|
|
29
|
+
ProductSorting.FEATURED
|
|
30
|
+
);
|
|
29
31
|
|
|
30
32
|
const filterProductList = (message: Message) =>
|
|
31
33
|
message.type === MessageType.Product && message.metadata.isForGrid === true;
|
|
32
|
-
const filterFilterList = (message: Message) =>
|
|
34
|
+
const filterFilterList = (message: Message) =>
|
|
35
|
+
message.type === MessageType.ProductSearchFilter;
|
|
33
36
|
|
|
34
37
|
export type ChatSearchTurn = {
|
|
35
38
|
id: string;
|
|
36
39
|
generatedQuery?: string;
|
|
37
40
|
productCount: number;
|
|
38
|
-
productList: ProductResponseAttributes[
|
|
41
|
+
productList: ProductResponseAttributes["attributes"][];
|
|
39
42
|
filterList: string[];
|
|
40
43
|
messages: Message[];
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
export const chatSearchIsLoadingAtom = atom(false);
|
|
44
47
|
|
|
45
|
-
const buildChatSearchTurn = (
|
|
46
|
-
|
|
48
|
+
const buildChatSearchTurn = (
|
|
49
|
+
messages: Message[]
|
|
50
|
+
): [string, ChatSearchTurn] | null => {
|
|
51
|
+
const queryMessage = messages.find(
|
|
52
|
+
(message) => message.type === MessageType.ProductSearch
|
|
53
|
+
);
|
|
47
54
|
if (!queryMessage) {
|
|
48
55
|
return null;
|
|
49
56
|
}
|
|
50
57
|
const { generatedQuery, productCount } = queryMessage.metadata ?? {};
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
const productList = messages
|
|
59
|
+
.filter(filterProductList)
|
|
60
|
+
.map((message) => (message as any).metadata);
|
|
53
61
|
const filterList = messages
|
|
54
62
|
.filter(filterFilterList)
|
|
55
63
|
.map((message) => message.metadata.filterName);
|
|
@@ -67,13 +75,15 @@ const buildChatSearchTurn = (messages: Message[]): [string, ChatSearchTurn] | nu
|
|
|
67
75
|
};
|
|
68
76
|
|
|
69
77
|
const chatSearchFilterConfigAtom = atom((get) => {
|
|
70
|
-
const
|
|
71
|
-
return searchConfig
|
|
78
|
+
const orgUIConfig = get(orgUIConfigAtom);
|
|
79
|
+
return orgUIConfig?.searchConfig?.searchFilterConfig || [];
|
|
72
80
|
});
|
|
73
81
|
|
|
74
82
|
const searchMapAtom = atom((get) => {
|
|
75
83
|
const messages = get(messagesAtom);
|
|
76
|
-
return Object.fromEntries(
|
|
84
|
+
return Object.fromEntries(
|
|
85
|
+
messages.map(buildChatSearchTurn).filter((v) => v !== null)
|
|
86
|
+
);
|
|
77
87
|
});
|
|
78
88
|
|
|
79
89
|
const internalChatSearchParamsAtom = atom<{
|
|
@@ -92,17 +102,19 @@ export type SelectedChatSearchFilterOption = {
|
|
|
92
102
|
filterItemId: string; // Filter value
|
|
93
103
|
};
|
|
94
104
|
|
|
95
|
-
export const selectedFilterOptionsAtom = atom<SelectedChatSearchFilterOption[]>(
|
|
105
|
+
export const selectedFilterOptionsAtom = atom<SelectedChatSearchFilterOption[]>(
|
|
106
|
+
[]
|
|
107
|
+
);
|
|
96
108
|
|
|
97
109
|
export const additiveDynamicFiltersAtom = atom((get) => {
|
|
98
|
-
const
|
|
99
|
-
return searchConfig
|
|
110
|
+
const orgUIConfig = get(orgUIConfigAtom);
|
|
111
|
+
return orgUIConfig?.searchConfig?.additiveDynamicFilters ?? false;
|
|
100
112
|
});
|
|
101
113
|
|
|
102
114
|
export const createChatSearchFilterOption = (
|
|
103
115
|
filterId: string,
|
|
104
116
|
filterItemId: string,
|
|
105
|
-
displayName: string
|
|
117
|
+
displayName: string
|
|
106
118
|
): SelectedChatSearchFilterOption => ({
|
|
107
119
|
id: `${filterId}:${filterItemId}`,
|
|
108
120
|
displayName,
|
|
@@ -138,7 +150,7 @@ export const chatSearchParamsAtom = atom(
|
|
|
138
150
|
(get) => get(internalChatSearchParamsAtom),
|
|
139
151
|
(_, set, value: { id: string | null; query: string | null }) => {
|
|
140
152
|
set(internalChatSearchParamsAtom, value);
|
|
141
|
-
}
|
|
153
|
+
}
|
|
142
154
|
);
|
|
143
155
|
|
|
144
156
|
export const chatSearchQueryAtom = atom(
|
|
@@ -146,7 +158,7 @@ export const chatSearchQueryAtom = atom(
|
|
|
146
158
|
(get, set, value: string | null) => {
|
|
147
159
|
const searchParams = get(chatSearchParamsAtom);
|
|
148
160
|
set(chatSearchParamsAtom, { id: searchParams.id, query: value });
|
|
149
|
-
}
|
|
161
|
+
}
|
|
150
162
|
);
|
|
151
163
|
|
|
152
164
|
export const chatSearchIdAtom = atom(
|
|
@@ -154,7 +166,7 @@ export const chatSearchIdAtom = atom(
|
|
|
154
166
|
(get, set, value: string | null) => {
|
|
155
167
|
const searchParams = get(chatSearchParamsAtom);
|
|
156
168
|
set(chatSearchParamsAtom, { id: value, query: searchParams.query });
|
|
157
|
-
}
|
|
169
|
+
}
|
|
158
170
|
);
|
|
159
171
|
|
|
160
172
|
export const ChatSearchTurnAtom = atom((get) => {
|
|
@@ -175,10 +187,13 @@ export const ChatSearchTurnAtom = atom((get) => {
|
|
|
175
187
|
ChatSearchTurn.productList,
|
|
176
188
|
searchFilterConfig,
|
|
177
189
|
selectedFilterOptions,
|
|
178
|
-
additiveDynamicFilters
|
|
190
|
+
additiveDynamicFilters
|
|
179
191
|
);
|
|
180
192
|
|
|
181
|
-
const filteredAndSortedProducts = ProductSorter.sort(
|
|
193
|
+
const filteredAndSortedProducts = ProductSorter.sort(
|
|
194
|
+
filteredProducts,
|
|
195
|
+
productSorting
|
|
196
|
+
);
|
|
182
197
|
|
|
183
198
|
return {
|
|
184
199
|
...searchMap[chatSearchId],
|
|
@@ -204,7 +219,7 @@ export const chatSearchFiltersAtom = atom((get) => {
|
|
|
204
219
|
return ProductFilters.getFiltersForProducts(
|
|
205
220
|
products,
|
|
206
221
|
searchFilterConfig,
|
|
207
|
-
selectedFilterOptions
|
|
222
|
+
selectedFilterOptions
|
|
208
223
|
);
|
|
209
224
|
}
|
|
210
225
|
return [];
|
|
@@ -217,16 +232,16 @@ export const chatSearchFiltersAtom = atom((get) => {
|
|
|
217
232
|
|
|
218
233
|
export const setSearchParams = (query: string) => {
|
|
219
234
|
const url = new URL(window.location.href);
|
|
220
|
-
url.searchParams.set(
|
|
221
|
-
url.searchParams.set(
|
|
222
|
-
window.history.pushState({},
|
|
235
|
+
url.searchParams.set("es", "true");
|
|
236
|
+
url.searchParams.set("esq", query);
|
|
237
|
+
window.history.pushState({}, "", url);
|
|
223
238
|
};
|
|
224
239
|
|
|
225
240
|
export const getSearchParamsAtom = atom(() => {
|
|
226
241
|
const params = new URLSearchParams(window.location.search);
|
|
227
242
|
return {
|
|
228
|
-
es: params.get(
|
|
229
|
-
esq: params.get(
|
|
243
|
+
es: params.get("es"),
|
|
244
|
+
esq: params.get("esq"),
|
|
230
245
|
};
|
|
231
246
|
});
|
|
232
247
|
|
|
@@ -234,13 +249,13 @@ export const initiateChatSearchAtom = atom(null, (_, set, query: string) => {
|
|
|
234
249
|
set(chatSearchIsLoadingAtom, true);
|
|
235
250
|
// Update URL and manually trigger state change (since pushState doesn't trigger popstate)
|
|
236
251
|
const url = new URL(window.location.href);
|
|
237
|
-
url.searchParams.set(
|
|
238
|
-
url.searchParams.set(
|
|
239
|
-
window.history.pushState({},
|
|
252
|
+
url.searchParams.set("es", "true");
|
|
253
|
+
url.searchParams.set("esq", query);
|
|
254
|
+
window.history.pushState({}, "", url);
|
|
240
255
|
|
|
241
256
|
// Manually trigger page variant re-evaluation by dispatching a popstate event
|
|
242
257
|
// This ensures the page variant system detects the URL change and mounts search results
|
|
243
|
-
window.dispatchEvent(new PopStateEvent(
|
|
258
|
+
window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
|
|
244
259
|
|
|
245
260
|
set(chatSearchParamsAtom, { id: null, query });
|
|
246
261
|
set(handleSearchAtom, {
|
|
@@ -256,38 +271,41 @@ export const initiateChatSearchAtom = atom(null, (_, set, query: string) => {
|
|
|
256
271
|
});
|
|
257
272
|
});
|
|
258
273
|
|
|
259
|
-
export const handleSearchResultsAtom = atom(
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
274
|
+
export const handleSearchResultsAtom = atom(
|
|
275
|
+
null,
|
|
276
|
+
(get, set, message: Message | undefined) => {
|
|
277
|
+
if (!message || message.type !== MessageType.ProductSearch) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
263
280
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
const { productCount, generatedQuery } = message.metadata;
|
|
282
|
+
if (productCount !== 0) {
|
|
283
|
+
// Clear the filter options when we get new products
|
|
284
|
+
set(selectedFilterOptionsAtom, []);
|
|
285
|
+
// TODO: Should we still do any of these things?
|
|
286
|
+
set(chatSearchStateAtom, "product-page");
|
|
287
|
+
const currentSearchParams = get(chatSearchParamsAtom);
|
|
288
|
+
const url = new URL(window.location.href);
|
|
289
|
+
url.searchParams.set("es", "true");
|
|
290
|
+
url.searchParams.set("esq", generatedQuery);
|
|
291
|
+
url.searchParams.set("esi", message.id);
|
|
292
|
+
window.history.pushState({}, "", url);
|
|
293
|
+
if (currentSearchParams.id === null) {
|
|
294
|
+
// If the id is null, we need to replace the state
|
|
295
|
+
window.history.replaceState(null, "", url);
|
|
296
|
+
} else {
|
|
297
|
+
// If the query is different, we need to push a new state
|
|
298
|
+
window.history.pushState(null, "", url);
|
|
299
|
+
}
|
|
300
|
+
set(chatSearchParamsAtom, { id: message.id, query: generatedQuery });
|
|
282
301
|
}
|
|
283
|
-
set(chatSearchParamsAtom, { id: message.id, query: generatedQuery });
|
|
284
302
|
}
|
|
285
|
-
|
|
303
|
+
);
|
|
286
304
|
|
|
287
305
|
export const setChatSearchParamsAtom = atom(null, (_, set, query: string) => {
|
|
288
306
|
const url = new URL(window.location.href);
|
|
289
|
-
url.searchParams.set(
|
|
290
|
-
url.searchParams.set(
|
|
291
|
-
window.history.pushState({},
|
|
307
|
+
url.searchParams.set("es", "true");
|
|
308
|
+
url.searchParams.set("esq", query);
|
|
309
|
+
window.history.pushState({}, "", url);
|
|
292
310
|
set(chatSearchParamsAtom, { id: null, query });
|
|
293
311
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { atom } from
|
|
2
|
-
import { SearchResult, SearchParams } from
|
|
3
|
-
import SearchService from
|
|
4
|
-
import { ProductSorting } from
|
|
5
|
-
import { ProductFilters } from
|
|
6
|
-
import { ProductSorter } from
|
|
7
|
-
import { orgUIConfigAtom } from
|
|
1
|
+
import { atom } from "jotai";
|
|
2
|
+
import { SearchResult, SearchParams } from "src/application/models/api/search";
|
|
3
|
+
import SearchService from "src/application/service/searchService";
|
|
4
|
+
import { ProductSorting } from "./types";
|
|
5
|
+
import { ProductFilters } from "./productFilters";
|
|
6
|
+
import { ProductSorter } from "./productSorter";
|
|
7
|
+
import { orgUIConfigAtom } from "../org";
|
|
8
8
|
|
|
9
9
|
export type SelectedFilterOption = {
|
|
10
10
|
id: string; // "filterId:filterItemId" - maintains backward compatibility for comparisons
|
|
@@ -27,13 +27,15 @@ export const searchAtom = atom<SearchState>({
|
|
|
27
27
|
lastQuery: null,
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
export const searchProductSortingAtom = atom<ProductSorting>(
|
|
30
|
+
export const searchProductSortingAtom = atom<ProductSorting>(
|
|
31
|
+
ProductSorting.FEATURED
|
|
32
|
+
);
|
|
31
33
|
export const searchSelectedFiltersAtom = atom<SelectedFilterOption[]>([]);
|
|
32
34
|
|
|
33
35
|
export const createFilterOption = (
|
|
34
36
|
filterId: string,
|
|
35
37
|
filterItemId: string,
|
|
36
|
-
displayName: string
|
|
38
|
+
displayName: string
|
|
37
39
|
): SelectedFilterOption => ({
|
|
38
40
|
id: `${filterId}:${filterItemId}`,
|
|
39
41
|
displayName,
|
|
@@ -53,7 +55,7 @@ export const searchParamsAtom = atom(
|
|
|
53
55
|
(get) => get(internalSearchParamsAtom),
|
|
54
56
|
(_, set, value: { id: string | null; query: string | null }) => {
|
|
55
57
|
set(internalSearchParamsAtom, value);
|
|
56
|
-
}
|
|
58
|
+
}
|
|
57
59
|
);
|
|
58
60
|
export const internalSearchSystemStateAtom = atom<boolean>(false);
|
|
59
61
|
|
|
@@ -65,9 +67,9 @@ export const searchSystemAtom = atom(
|
|
|
65
67
|
}
|
|
66
68
|
const stateChangeHandler = () => {
|
|
67
69
|
const params = new URLSearchParams(window.location.search);
|
|
68
|
-
if (params.get(
|
|
69
|
-
const id = params.get(
|
|
70
|
-
const query = params.get(
|
|
70
|
+
if (params.get("es") === "true") {
|
|
71
|
+
const id = params.get("esi");
|
|
72
|
+
const query = params.get("esq");
|
|
71
73
|
set(searchParamsAtom, { id, query });
|
|
72
74
|
} else {
|
|
73
75
|
set(searchParamsAtom, { id: null, query: null });
|
|
@@ -75,14 +77,14 @@ export const searchSystemAtom = atom(
|
|
|
75
77
|
};
|
|
76
78
|
if (value) {
|
|
77
79
|
set(internalSearchSystemStateAtom, true);
|
|
78
|
-
window.addEventListener(
|
|
80
|
+
window.addEventListener("popstate", stateChangeHandler);
|
|
79
81
|
// Also trigger the hash change handler to set the initial state
|
|
80
82
|
stateChangeHandler();
|
|
81
83
|
} else {
|
|
82
84
|
set(internalSearchSystemStateAtom, false);
|
|
83
|
-
window.removeEventListener(
|
|
85
|
+
window.removeEventListener("popstate", stateChangeHandler);
|
|
84
86
|
}
|
|
85
|
-
}
|
|
87
|
+
}
|
|
86
88
|
);
|
|
87
89
|
|
|
88
90
|
export const filteredSearchProductsAtom = atom((get) => {
|
|
@@ -91,13 +93,13 @@ export const filteredSearchProductsAtom = atom((get) => {
|
|
|
91
93
|
const selectedFilters = get(searchSelectedFiltersAtom);
|
|
92
94
|
const orgConfig = get(orgUIConfigAtom);
|
|
93
95
|
|
|
94
|
-
if (!searchData?.products) return [];
|
|
96
|
+
if (!searchData?.products || !orgConfig?.searchConfig) return [];
|
|
95
97
|
|
|
96
98
|
const filteredProducts = ProductFilters.filterProducts(
|
|
97
99
|
searchData.products,
|
|
98
100
|
orgConfig.searchConfig.searchFilterConfig,
|
|
99
101
|
selectedFilters,
|
|
100
|
-
orgConfig.searchConfig.additiveDynamicFilters
|
|
102
|
+
orgConfig.searchConfig.additiveDynamicFilters
|
|
101
103
|
);
|
|
102
104
|
|
|
103
105
|
return ProductSorter.sort(filteredProducts, sorting);
|
|
@@ -108,29 +110,35 @@ export const searchFiltersAtom = atom((get) => {
|
|
|
108
110
|
const selectedFilters = get(searchSelectedFiltersAtom);
|
|
109
111
|
const orgConfig = get(orgUIConfigAtom);
|
|
110
112
|
|
|
111
|
-
if (!searchData?.products) return [];
|
|
113
|
+
if (!searchData?.products || !orgConfig?.searchConfig) return [];
|
|
112
114
|
|
|
113
115
|
return ProductFilters.getFiltersForProducts(
|
|
114
116
|
searchData.products,
|
|
115
117
|
orgConfig.searchConfig.searchFilterConfig,
|
|
116
|
-
selectedFilters
|
|
118
|
+
selectedFilters
|
|
117
119
|
);
|
|
118
120
|
});
|
|
119
121
|
|
|
120
|
-
export const addSearchFilterAtom = atom(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
export const addSearchFilterAtom = atom(
|
|
123
|
+
null,
|
|
124
|
+
(get, set, filter: SelectedFilterOption) => {
|
|
125
|
+
const current = get(searchSelectedFiltersAtom);
|
|
126
|
+
if (!current.some((f) => f.id === filter.id)) {
|
|
127
|
+
set(searchSelectedFiltersAtom, [...current, filter]);
|
|
128
|
+
}
|
|
124
129
|
}
|
|
125
|
-
|
|
130
|
+
);
|
|
126
131
|
|
|
127
|
-
export const removeSearchFilterAtom = atom(
|
|
128
|
-
|
|
129
|
-
set
|
|
130
|
-
searchSelectedFiltersAtom
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
export const removeSearchFilterAtom = atom(
|
|
133
|
+
null,
|
|
134
|
+
(get, set, filterId: string) => {
|
|
135
|
+
const current = get(searchSelectedFiltersAtom);
|
|
136
|
+
set(
|
|
137
|
+
searchSelectedFiltersAtom,
|
|
138
|
+
current.filter((f) => f.id !== filterId)
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
);
|
|
134
142
|
|
|
135
143
|
export const clearSearchFiltersAtom = atom(null, (_, set) => {
|
|
136
144
|
set(searchSelectedFiltersAtom, []);
|
|
@@ -141,28 +149,29 @@ export const performSearchAtom = atom(
|
|
|
141
149
|
async (get, set, params: SearchParams, allowRedirect = false) => {
|
|
142
150
|
const currentState = get(searchAtom);
|
|
143
151
|
const orgUIConfig = get(orgUIConfigAtom);
|
|
144
|
-
const redirectSearchResultsUrl =
|
|
152
|
+
const redirectSearchResultsUrl =
|
|
153
|
+
orgUIConfig?.searchConfig?.redirectSearchResultsUrl;
|
|
145
154
|
|
|
146
155
|
if (allowRedirect && redirectSearchResultsUrl) {
|
|
147
156
|
const redirectUrl = new URL(redirectSearchResultsUrl);
|
|
148
|
-
redirectUrl.searchParams.set(
|
|
149
|
-
redirectUrl.searchParams.set(
|
|
157
|
+
redirectUrl.searchParams.set("es", "true");
|
|
158
|
+
redirectUrl.searchParams.set("esq", params.query);
|
|
150
159
|
window.location.href = redirectUrl.toString();
|
|
151
160
|
} else {
|
|
152
161
|
// Update URL and manually trigger state change (since pushState doesn't trigger popstate)
|
|
153
162
|
const url = new URL(window.location.href);
|
|
154
|
-
url.searchParams.set(
|
|
155
|
-
url.searchParams.set(
|
|
156
|
-
window.history.pushState({},
|
|
163
|
+
url.searchParams.set("es", "true");
|
|
164
|
+
url.searchParams.set("esq", params.query);
|
|
165
|
+
window.history.pushState({}, "", url);
|
|
157
166
|
|
|
158
167
|
// Manually trigger page variant re-evaluation by dispatching a popstate event
|
|
159
168
|
// This ensures the page variant system detects the URL change and mounts search results
|
|
160
|
-
window.dispatchEvent(new PopStateEvent(
|
|
169
|
+
window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
|
|
161
170
|
}
|
|
162
171
|
|
|
163
172
|
// Manually trigger page variant re-evaluation by dispatching a popstate event
|
|
164
173
|
// This ensures the page variant system detects the URL change and mounts search results
|
|
165
|
-
window.dispatchEvent(new PopStateEvent(
|
|
174
|
+
window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
|
|
166
175
|
if (currentState.loading) {
|
|
167
176
|
return; // Prevent concurrent searches
|
|
168
177
|
}
|
|
@@ -182,7 +191,8 @@ export const performSearchAtom = atom(
|
|
|
182
191
|
lastQuery: params.query,
|
|
183
192
|
});
|
|
184
193
|
} catch (error: unknown) {
|
|
185
|
-
const errorMessage =
|
|
194
|
+
const errorMessage =
|
|
195
|
+
error instanceof Error ? error.message : "An unknown error occurred";
|
|
186
196
|
set(searchAtom, {
|
|
187
197
|
data: null,
|
|
188
198
|
loading: false,
|
|
@@ -190,5 +200,5 @@ export const performSearchAtom = atom(
|
|
|
190
200
|
lastQuery: params.query,
|
|
191
201
|
});
|
|
192
202
|
}
|
|
193
|
-
}
|
|
203
|
+
}
|
|
194
204
|
);
|
|
@@ -421,6 +421,9 @@ const ChatContextProvider = ({ children }: { children: ReactNode }) => {
|
|
|
421
421
|
`[spiffy-ai] initializeWidget is_currently_streaming=${responseStreaming} is_initialized=${widgetInitialized}`
|
|
422
422
|
);
|
|
423
423
|
// on mount, try to get the responses from an active session if one exists
|
|
424
|
+
if (!orgId) {
|
|
425
|
+
throw new Error("orgId is not available");
|
|
426
|
+
}
|
|
424
427
|
const { messages: existingMessages, userEvents } =
|
|
425
428
|
await CommerceApiClient.getResponses(orgId, chatId, userId);
|
|
426
429
|
setMessages([...existingMessages]);
|
|
@@ -455,7 +458,7 @@ const ChatContextProvider = ({ children }: { children: ReactNode }) => {
|
|
|
455
458
|
|
|
456
459
|
const onFocus = useCallback(async () => {
|
|
457
460
|
try {
|
|
458
|
-
if (!responseStreaming && !suggestionsLoading) {
|
|
461
|
+
if (!responseStreaming && !suggestionsLoading && orgId) {
|
|
459
462
|
const { messages: existingMessages } =
|
|
460
463
|
await CommerceApiClient.getResponses(orgId, chatId, userId);
|
|
461
464
|
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import React, { createContext, useContext, ReactNode } from "react";
|
|
1
|
+
import React, { createContext, useContext, ReactNode, useEffect } from "react";
|
|
2
|
+
import { useSetAtom, useAtomValue } from "jotai";
|
|
2
3
|
import type { EnviveConfig } from "./types";
|
|
4
|
+
import { enviveConfigAtom } from "src/atoms/envive/enviveConfig";
|
|
5
|
+
import Logger from "src/application/logging/logger";
|
|
3
6
|
|
|
4
7
|
const EnviveConfigContext = createContext<EnviveConfig | undefined>(undefined);
|
|
5
8
|
|
|
6
9
|
interface EnviveConfigProviderProps {
|
|
7
10
|
children: ReactNode;
|
|
8
|
-
amplitudeApiKey
|
|
9
|
-
dataResidency
|
|
10
|
-
env
|
|
11
|
-
baseUrl
|
|
12
|
-
reactAppName
|
|
13
|
-
cdnUrl
|
|
14
|
-
contextSource
|
|
15
|
-
orgLevelApiKey
|
|
16
|
-
orgShortName
|
|
11
|
+
amplitudeApiKey?: string;
|
|
12
|
+
dataResidency?: string;
|
|
13
|
+
env?: string;
|
|
14
|
+
baseUrl?: string;
|
|
15
|
+
reactAppName?: string;
|
|
16
|
+
cdnUrl?: string;
|
|
17
|
+
contextSource?: string;
|
|
18
|
+
orgLevelApiKey?: string;
|
|
19
|
+
orgShortName?: string;
|
|
20
|
+
identifyingPrefix: string;
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
@@ -27,7 +31,9 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
|
27
31
|
contextSource,
|
|
28
32
|
orgLevelApiKey,
|
|
29
33
|
orgShortName,
|
|
34
|
+
identifyingPrefix,
|
|
30
35
|
}) => {
|
|
36
|
+
const setEnviveConfig = useSetAtom(enviveConfigAtom);
|
|
31
37
|
const config: EnviveConfig = {
|
|
32
38
|
amplitudeApiKey,
|
|
33
39
|
dataResidency,
|
|
@@ -38,19 +44,13 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
|
38
44
|
contextSource,
|
|
39
45
|
orgLevelApiKey,
|
|
40
46
|
orgShortName,
|
|
47
|
+
identifyingPrefix,
|
|
41
48
|
};
|
|
42
49
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (value === undefined || value === null || value === "") {
|
|
48
|
-
throw new Error(
|
|
49
|
-
`EnviveConfigProvider: Missing required configuration value for '${key}'`
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
setEnviveConfig(config);
|
|
52
|
+
Logger.logDebug("EnviveConfigProvider: Setting EnviveConfig", config);
|
|
53
|
+
}, [setEnviveConfig, config]);
|
|
54
54
|
|
|
55
55
|
return (
|
|
56
56
|
<EnviveConfigContext.Provider value={config}>
|
|
@@ -60,11 +60,22 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
export const useEnviveConfig = (): EnviveConfig => {
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
const config = useAtomValue(enviveConfigAtom);
|
|
64
|
+
Logger.logDebug("useEnviveConfig: Accessing EnviveConfig", config);
|
|
65
|
+
|
|
66
|
+
// During initial render, the atom might not be set yet, so we need to be more patient
|
|
67
|
+
// The EnviveConfigProvider will set it in its useEffect
|
|
68
|
+
if (!config) {
|
|
69
|
+
// Instead of throwing immediately, let's return a default/empty config
|
|
70
|
+
// This prevents the error during initial render
|
|
71
|
+
Logger.logWarn(
|
|
72
|
+
"EnviveConfig not yet available, returning default config",
|
|
73
|
+
undefined
|
|
67
74
|
);
|
|
75
|
+
return {
|
|
76
|
+
identifyingPrefix: "spiffy", // This is required, so provide a default
|
|
77
|
+
} as EnviveConfig;
|
|
68
78
|
}
|
|
69
|
-
|
|
79
|
+
|
|
80
|
+
return config;
|
|
70
81
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { useAtomValue } from "jotai";
|
|
3
|
+
import { orgMerchantCssAtom } from "src/atoms/org/merchantCss";
|
|
4
|
+
|
|
5
|
+
interface EnviveCssProviderProps {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const EnviveCssProvider: React.FC<EnviveCssProviderProps> = ({
|
|
10
|
+
children,
|
|
11
|
+
}) => {
|
|
12
|
+
const enviveCss = useAtomValue(orgMerchantCssAtom);
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<>
|
|
16
|
+
{enviveCss && <style id="merchant-css-styles">{enviveCss}</style>}
|
|
17
|
+
{children}
|
|
18
|
+
</>
|
|
19
|
+
);
|
|
20
|
+
};
|