@envive-ai/react-hooks 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/amplitudeContext-CHzas7Cf.d.cts +52 -0
- package/dist/amplitudeContext-D-7fmVh1.cjs +356 -0
- package/dist/amplitudeContext-hY3caPC6.js +322 -0
- package/dist/amplitudeContext-tJ4y-SzX.d.ts +52 -0
- package/dist/api-DjeZXxl_.js +207 -0
- package/dist/api-_JaUnIUj.cjs +292 -0
- package/dist/app-CjsQ2_n-.js +132 -0
- package/dist/app-CnKRZ9RW.cjs +178 -0
- package/dist/application/models/graphql/index.cjs +3 -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 +1 -10
- package/dist/application/models/guards/api/index.cjs +1 -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 +1 -2
- package/dist/application/models/index.cjs +48 -54
- package/dist/application/models/index.d.cts +7 -9
- package/dist/application/models/index.d.ts +7 -9
- package/dist/application/models/index.js +7 -11
- 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/utils/index.cjs +40 -37
- package/dist/application/utils/index.d.cts +18 -14
- package/dist/application/utils/index.d.ts +17 -13
- package/dist/application/utils/index.js +13 -10
- package/dist/{atomStore-JwGb7pcy.cjs → atomStore-B4jIaDPd.cjs} +1 -1
- package/dist/{atomStore-B1cgmbP0.js → atomStore-D8pjE1vL.js} +1 -1
- package/dist/atoms/app/index.cjs +14 -16
- package/dist/atoms/app/index.d.cts +20 -19
- package/dist/atoms/app/index.d.ts +20 -19
- package/dist/atoms/app/index.js +10 -11
- package/dist/atoms/atomStore/index.cjs +2 -1
- package/dist/atoms/atomStore/index.d.cts +1 -1
- package/dist/atoms/atomStore/index.js +2 -1
- package/dist/atoms/chat/index.cjs +44 -40
- package/dist/atoms/chat/index.d.cts +35 -36
- package/dist/atoms/chat/index.d.ts +35 -36
- package/dist/atoms/chat/index.js +14 -10
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +5 -5
- package/dist/atoms/globalSearch/index.d.ts +5 -5
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/index.cjs +26 -37
- package/dist/atoms/org/index.d.cts +37 -47
- package/dist/atoms/org/index.d.ts +37 -47
- package/dist/atoms/org/index.js +11 -11
- package/dist/atoms/search/index.cjs +47 -41
- package/dist/atoms/search/index.d.cts +7 -9
- package/dist/atoms/search/index.d.ts +7 -9
- package/dist/atoms/search/index.js +16 -10
- package/dist/bandolier-DYEz4-8C.js +1229 -0
- package/dist/bandolier-o_-xrbOV.cjs +1229 -0
- package/dist/carpe-CsG5jCcl.cjs +607 -0
- package/dist/carpe-DONk00bZ.js +605 -0
- package/dist/cdnUtils-32v8bDX9.cjs +16 -0
- package/dist/cdnUtils-E4tLBt2g.js +11 -0
- package/dist/{chat-BgONoYU7.cjs → chat-BubCW1as.cjs} +1 -1
- package/dist/chat-CO7cRkaq.cjs +506 -0
- package/dist/{chat-CLJ4NWcN.js → chat-CV6MXeID.js} +1 -1
- package/dist/chat-hcRc4RRd.js +285 -0
- package/dist/{components-CV1fhAkj.js → components-B4T3Uzth.js} +1 -1
- package/dist/{components-BKZbet67.cjs → components-Cw9WjA6g.cjs} +1 -1
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.d.cts +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.d.ts +1 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.d.cts +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/index.cjs +4 -4
- package/dist/config/locators/index.d.cts +2 -2
- package/dist/config/locators/index.d.ts +3 -3
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/index.cjs +45 -14
- package/dist/contexts/index.d.cts +10 -78
- package/dist/contexts/index.d.ts +10 -78
- package/dist/contexts/index.js +22 -11
- package/dist/contexts-B4ihTBsV.cjs +2980 -0
- package/dist/contexts-DGlr7M1o.js +2596 -0
- package/dist/coterie-CKB93qfz.cjs +239 -0
- package/dist/{coterie-yQ-_JXSw.cjs → coterie-DHcj2fRE.js} +64 -65
- package/dist/{custservice-types-C83itZmy.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
- package/dist/{custservice-types-DPQ-4TI6.js → custservice-types-mnIunabv.js} +1 -1
- package/dist/default-BnB4p0Se.cjs +234 -0
- package/dist/default-D6f5Dyt7.js +199 -0
- package/dist/default-ZKkE5zT4.cjs +4 -0
- package/dist/default-legGZJwI.js +4 -0
- package/dist/{divIds-DEL_-qU0.cjs → divIds-2dJlU3z8.cjs} +1 -15
- package/dist/{divIds-CWkntTsx.js → divIds-BUrN2vY-.js} +2 -4
- package/dist/dreamlandBaby-BiRYYFav.js +346 -0
- package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
- package/dist/{embedded-C5uJqmuD.js → embedded-BJLWIriJ.js} +1 -1
- package/dist/{embedded--2L0F4b5.cjs → embedded-Dl79TJLC.cjs} +1 -1
- package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
- package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
- package/dist/enviveConfig-BccuzS2a.cjs +240 -0
- package/dist/enviveConfig-CzhTz8Aa.js +152 -0
- package/dist/events/index.cjs +1 -1
- package/dist/events/index.d.cts +1 -1
- package/dist/events/index.js +1 -1
- package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
- package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
- package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
- package/dist/fiveCbd-Dz2NouOF.js +613 -0
- package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
- package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
- package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
- package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
- package/dist/graphql-BNW60InJ.cjs +128 -0
- package/dist/graphql-CjB8wHzm.js +74 -0
- package/dist/graphqlConfig-CYt6tWII.js +30 -0
- package/dist/graphqlConfig-DicykC-o.cjs +61 -0
- package/dist/greenpan-B_EbPkSP.js +397 -0
- package/dist/greenpan-kPE4fJgd.cjs +397 -0
- package/dist/grooveLife-Ckuir319.js +342 -0
- package/dist/grooveLife-DKSEQp1F.cjs +342 -0
- package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
- package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
- package/dist/hooks/index.cjs +40 -16
- package/dist/hooks/index.d.cts +122 -95
- package/dist/hooks/index.d.ts +122 -95
- package/dist/hooks/index.js +22 -11
- package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
- package/dist/{index-jBATkcc_.d.cts → index-BDPWBU3h.d.cts} +1 -1
- package/dist/index-BMPtlgac.d.ts +191 -0
- package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
- package/dist/{index-C62lPpy4.d.cts → index-Byb45OPg.d.cts} +1 -1
- package/dist/{index-DPx8s5YH.d.ts → index-C6KdON7d.d.ts} +1 -1
- package/dist/index-C7pGDl1A.d.ts +1609 -0
- package/dist/{index-CYtsPztZ.d.cts → index-C9lgsCWp.d.cts} +32 -32
- package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
- package/dist/{index-C_C0tLeD.d.ts → index-Cc-wBCn6.d.ts} +32 -32
- package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
- package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
- package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
- package/dist/{index-CExtydIH.d.ts → index-DOii3C6b.d.ts} +1 -1
- package/dist/index-DTu2X-YS.d.cts +1609 -0
- package/dist/index-OEifcBsm.d.cts +191 -0
- package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
- package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
- package/dist/interceptors/index.cjs +2 -12
- package/dist/interceptors/index.d.cts +8 -13
- package/dist/interceptors/index.d.ts +8 -13
- package/dist/interceptors/index.js +2 -11
- package/dist/jackArcher-B39OEIj6.cjs +727 -0
- package/dist/{jackArcher-CXf_IAmC.js → jackArcher-BwkWGybC.js} +24 -25
- package/dist/jordanCraig-CxRH_jLi.js +1786 -0
- package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
- package/dist/kindredBravely-D78VwL20.cjs +490 -0
- package/dist/kindredBravely-DQDpAzdl.js +490 -0
- package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
- package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
- package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
- package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
- package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
- package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
- package/dist/longevityrx-DdV3v26F.cjs +320 -0
- package/dist/longevityrx-DfPDfvAt.js +320 -0
- package/dist/lookOptic-DgXFGBPP.cjs +282 -0
- package/dist/{lookOptic-BGhU4910.js → lookOptic-FgVW1afF.js} +19 -20
- package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
- package/dist/{mantraBrand-DrqG9uqO.js → mantraBrand-uV8HCDR8.js} +22 -23
- package/dist/medterra-BtDpr1Hw.cjs +583 -0
- package/dist/medterra-DgzE7-mj.js +583 -0
- package/dist/modells-CJjsxOIR.js +484 -0
- package/dist/modells-Ck5KbRFj.cjs +484 -0
- package/dist/models-BkXg5eIP.cjs +1534 -0
- package/dist/models-UZ6HszfZ.js +1281 -0
- package/dist/{nodeSelector-BiCDowlK.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
- package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
- package/dist/org-C2RrBVQR.cjs +81 -0
- package/dist/org-xMytX--e.js +38 -0
- package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
- package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
- package/dist/pressedFloral-Bteoboms.js +661 -0
- package/dist/pressedFloral-CexgV-xy.cjs +661 -0
- package/dist/search-BMOAmrmY.js +459 -0
- package/dist/search-Df0Ifneg.cjs +672 -0
- package/dist/{search-filter-types-BNTLVXqQ.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
- package/dist/{search-filter-types-DkmH1TxJ.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
- package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
- package/dist/skinPerfection-BlvcEcUE.js +334 -0
- package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
- package/dist/snapSupplements-kcsPAOm9.js +285 -0
- package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
- package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
- package/dist/spanx-B4WFA_rI.js +661 -0
- package/dist/spanx-BWoE4F8b.cjs +663 -0
- package/dist/spanxStaging-BOrOjhXn.js +845 -0
- package/dist/spanxStaging-BfdfIug4.cjs +848 -0
- package/dist/{suggestionBarV2-types-CwOXzIKq.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
- package/dist/{suggestionBarV2-types-Dc4-zJlV.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
- package/dist/supergoop-22dd5_BS.js +323 -0
- package/dist/supergoop-B-a4cku2.cjs +323 -0
- package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
- package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
- 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--pr1GQQx.js +154 -0
- package/dist/types-BVSyY3Hk.cjs +196 -0
- package/dist/{uniqueVintage-Cui74mlJ.js → uniqueVintage-CJXiNNe7.js} +19 -20
- package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
- package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
- package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
- package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
- package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
- package/dist/utils-C9ZSCx12.js +888 -0
- package/dist/utils-D5HO61hG.cjs +1016 -0
- package/dist/variantInfo-DbVxA1yE.js +1 -0
- package/dist/variantInfo-orXoPBCU.cjs +0 -0
- package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
- package/dist/venaCbd-CanovPS_.js +365 -0
- package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
- package/dist/{westonJonBoucher-C95EuCl-.js → westonJonBoucher-BUu1_wP1.js} +19 -20
- package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
- package/dist/{wineEnthusiast-DeTFY8Gm.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
- package/dist/wolfMattress-D9Mjq-HP.js +372 -0
- package/dist/wolfMattress-JssghhC-.cjs +372 -0
- package/dist/wolfTactical-C6exYhL7.cjs +349 -0
- package/dist/wolfTactical-CnV3KQdI.js +349 -0
- package/package.json +101 -19
- package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
- package/src/application/models/colorsConfig.ts +18 -18
- package/src/application/models/frontendConfig.ts +3 -3
- package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
- package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
- package/src/application/models/index.ts +0 -2
- package/src/application/models/localStorageEventListener.ts +2 -2
- package/src/application/models/supportedOrgs.ts +1 -1
- package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
- package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
- package/src/application/utils/analyticsUtils.ts +53 -22
- package/src/application/utils/cdnUtils.ts +11 -0
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
- package/src/atoms/app/index.ts +7 -17
- package/src/atoms/app/variant.ts +13 -4
- package/src/atoms/chat/chatState.ts +28 -18
- package/src/atoms/chat/messageQueue.ts +36 -5
- package/src/atoms/chat/replies.ts +45 -37
- package/src/atoms/envive/enviveConfig.ts +10 -6
- package/src/atoms/org/graphqlConfig.ts +21 -4
- package/src/atoms/org/index.ts +7 -7
- package/src/atoms/org/newOrgConfigAtom.ts +8 -0
- package/src/atoms/org/orgPageConfig.ts +6 -5
- package/src/atoms/search/chatSearch.ts +11 -5
- package/src/atoms/search/searchAPI.ts +68 -48
- package/src/atoms/search/searchServiceAdapter.ts +25 -0
- package/src/contexts/amplitudeContext.tsx +466 -0
- package/src/contexts/cdnContext.tsx +48 -0
- package/src/contexts/chatContext.tsx +15 -12
- package/src/contexts/enviveConfigContext.tsx +22 -17
- package/src/contexts/enviveCssContext.tsx +34 -5
- package/src/contexts/featureFlagContext.tsx +193 -0
- package/src/contexts/featureFlagServiceContext.tsx +87 -0
- package/src/contexts/graphqlContext.tsx +165 -0
- package/src/contexts/index.ts +13 -3
- package/src/contexts/localStorageContext.tsx +159 -0
- package/src/contexts/newOrgConfigContext.tsx +104 -0
- package/src/contexts/orgConfigContext.tsx +92 -92
- package/src/contexts/searchContext.tsx +187 -0
- package/src/contexts/sessionStorageContext.tsx +80 -0
- package/src/contexts/shopifyUrlContext.tsx +97 -0
- package/src/contexts/types.ts +12 -8
- package/src/contexts/userIdentityContext.tsx +197 -0
- package/src/events/registerAnalyticsListeners.ts +32 -38
- package/src/hooks/index.ts +10 -6
- package/src/hooks/useAmplitudeOperations.ts +35 -0
- package/src/hooks/useAppDetails.ts +49 -0
- package/src/hooks/useCdnOperations.ts +16 -0
- package/src/hooks/useChatToggle.ts +5 -4
- package/src/hooks/useChatToggleAnalytics.ts +15 -0
- package/src/hooks/useGraphQLConfig.ts +63 -0
- package/src/hooks/useIdentifyUser.ts +33 -0
- package/src/hooks/useImageResolver.ts +18 -10
- package/src/hooks/useLocalStorageOperations.ts +92 -0
- package/src/hooks/useNewOrgConfig.ts +7 -0
- package/src/hooks/useSearch.tsx +21 -18
- package/src/hooks/useSearchOperations.ts +97 -0
- package/src/hooks/useSessionStorageOperations.ts +28 -0
- package/src/hooks/useShopifyUrlOperations.ts +45 -0
- package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
- package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
- package/src/interceptors/index.ts +0 -1
- package/src/interceptors/useMessageInterceptor.ts +5 -8
- package/src/merchants/bandolier/bandolier.ts +10 -28
- package/src/merchants/carpe/carpe.ts +5 -8
- package/src/merchants/coterie/coterie.ts +3 -6
- package/src/merchants/default.ts +73 -70
- package/src/merchants/domInsertion.ts +30 -0
- package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
- package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
- package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
- package/src/merchants/greenpan/greenpan.ts +6 -12
- package/src/merchants/gridInsertion.ts +19 -0
- package/src/merchants/grooveLife/grooveLife.ts +13 -7
- package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
- package/src/merchants/jackArcher/jackArcher.ts +26 -11
- package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
- package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
- package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
- package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
- package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
- package/src/merchants/longevityrx/longevityrx.ts +14 -8
- package/src/merchants/lookOptic/lookOptic.ts +6 -6
- package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
- package/src/merchants/medterra/medterra.ts +14 -11
- package/src/merchants/modells/modells.ts +6 -9
- package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
- package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
- package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
- package/src/merchants/spanx/spanx.ts +6 -6
- package/src/merchants/spanx/spanxStaging.ts +6 -12
- package/src/merchants/supergoop/supergoop.ts +11 -12
- package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
- package/src/merchants/venaCbd/venaCbd.ts +6 -9
- package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
- package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
- package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
- package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
- package/src/types/config-versions.ts +6 -0
- package/src/types.ts +0 -53
- package/dist/adapters/amplitude/index.cjs +0 -14
- package/dist/adapters/amplitude/index.d.cts +0 -6
- package/dist/adapters/amplitude/index.d.ts +0 -6
- package/dist/adapters/amplitude/index.js +0 -12
- package/dist/api-B2euFL-5.cjs +0 -269
- package/dist/api-XRr_lAG6.js +0 -190
- package/dist/application/config/index.cjs +0 -43
- package/dist/application/config/index.d.cts +0 -15
- package/dist/application/config/index.d.ts +0 -15
- package/dist/application/config/index.js +0 -41
- package/dist/application/service/customerService/index.cjs +0 -4
- package/dist/application/service/customerService/index.d.cts +0 -3
- package/dist/application/service/customerService/index.d.ts +0 -3
- package/dist/application/service/customerService/index.js +0 -4
- package/dist/application/service/index.cjs +0 -41
- package/dist/application/service/index.d.cts +0 -399
- package/dist/application/service/index.d.ts +0 -399
- package/dist/application/service/index.js +0 -12
- package/dist/bandolier-B76-OE75.cjs +0 -1230
- package/dist/bandolier-DRn_x1g1.js +0 -1230
- package/dist/carpe-kHi4RLB5.cjs +0 -608
- package/dist/carpe-qrSU99gq.js +0 -606
- package/dist/contexts-CQDwe3rK.cjs +0 -14333
- package/dist/contexts-e2sM-B9g.js +0 -12919
- package/dist/coterie-mMirPcHP.js +0 -240
- package/dist/customerService-BG1uNZZ1.cjs +0 -36
- package/dist/customerService-BHQRnLhC.js +0 -23
- package/dist/default-8Jfv8ehQ.cjs +0 -199
- package/dist/default-C8PQf-38.js +0 -176
- package/dist/default-LukSiCz1.js +0 -4
- package/dist/default-rJSJ887P.cjs +0 -4
- package/dist/dreamlandBaby-DHltv12Z.cjs +0 -347
- package/dist/dreamlandBaby-cG0HM9bt.js +0 -347
- package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
- package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
- package/dist/fiveCbd-Cvnwh03g.cjs +0 -614
- package/dist/fiveCbd-DhYMlsf9.js +0 -614
- package/dist/forLoveAndLemons-C8DuUexW.js +0 -666
- package/dist/forLoveAndLemons-DR6a1zjJ.cjs +0 -668
- package/dist/greenpan-B4Pu65kV.js +0 -398
- package/dist/greenpan-BL5p6j7f.cjs +0 -398
- package/dist/grooveLife-DjKWHoN3.cjs +0 -343
- package/dist/grooveLife-JK0TyaPz.js +0 -343
- package/dist/homegrownCannabis-DxqSDkmS.js +0 -411
- package/dist/homegrownCannabis-ZnfCqW-m.cjs +0 -411
- package/dist/index-BfuO9b0Q.d.ts +0 -749
- package/dist/index-CNsGWfS6.d.cts +0 -749
- package/dist/index-DFL1dIT_.d.ts +0 -7
- package/dist/index-MFbPQ8Ji.d.ts +0 -95
- package/dist/index-VSFakgAI.d.cts +0 -95
- package/dist/index-zZjcds15.d.cts +0 -7
- package/dist/jackArcher-mGkojXek.cjs +0 -728
- package/dist/jordanCraig-BvCvPRoR.js +0 -1787
- package/dist/jordanCraig-Dv8pVCiS.cjs +0 -1787
- package/dist/kindredBravely-UQP7wiNu.cjs +0 -491
- package/dist/kindredBravely-X8F_LNph.js +0 -491
- package/dist/kutFromTheKloth-BhYKk3CN.cjs +0 -370
- package/dist/kutFromTheKloth-D1xsTSJr.js +0 -370
- package/dist/larryAndSerges-1411NuZa.cjs +0 -262
- package/dist/larryAndSerges-DVIRLItu.js +0 -262
- package/dist/leapsAndRebounds-BJ8mwr33.js +0 -361
- package/dist/leapsAndRebounds-UcP9EJVO.cjs +0 -361
- package/dist/logger-Dln20ans.cjs +0 -26
- package/dist/logger-pdEEY8T2.js +0 -20
- package/dist/longevityrx-BFSv9GF5.cjs +0 -321
- package/dist/longevityrx-Cp6wleWr.js +0 -321
- package/dist/lookOptic-KieSqskd.cjs +0 -283
- package/dist/mantraBrand-CHQw-0nw.cjs +0 -751
- package/dist/medterra-CLG6Co1C.cjs +0 -584
- package/dist/medterra-D8ZX9NZC.js +0 -584
- package/dist/modells-BzyPwN2m.cjs +0 -485
- package/dist/modells-CAfqOCW4.js +0 -485
- package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
- package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
- package/dist/pressedFloral-DULBuQwR.cjs +0 -662
- package/dist/pressedFloral-Dp-7Fk3S.js +0 -662
- package/dist/skinPerfection-BxuYCeJX.js +0 -335
- package/dist/skinPerfection-Cd3XZ6By.cjs +0 -335
- package/dist/snapSupplements-Bf6htPM0.js +0 -286
- package/dist/snapSupplements-ZFnXyMuZ.cjs +0 -286
- package/dist/spanx-CwDPQaGj.js +0 -662
- package/dist/spanx-Cyd4qDlK.cjs +0 -664
- package/dist/spanxStaging-D43nyAGy.js +0 -846
- package/dist/spanxStaging-ijbYnHzr.cjs +0 -849
- package/dist/supergoop-BnbFG7hm.cjs +0 -338
- package/dist/supergoop-CY043wIg.js +0 -336
- package/dist/types-BF_CJeck.js +0 -177
- package/dist/types-CD4LFta-.d.cts +0 -33
- package/dist/types-CNH4sfF-.cjs +0 -231
- package/dist/types-DBdI0j89.d.ts +0 -33
- package/dist/uniqueVintage-R2Jcu1y1.cjs +0 -1214
- package/dist/variant-CKVRF2-W.d.ts +0 -13
- package/dist/variant-raYuOP4L.d.cts +0 -13
- package/dist/venaCbd-o5_vOp4e.js +0 -366
- package/dist/venaCbd-r-IxEVc1.cjs +0 -366
- package/dist/westonJonBoucher-DjGEW3ZB.cjs +0 -423
- package/dist/wineEnthusiast-DvfcV5B3.cjs +0 -941
- package/dist/wolfMattress-6xPfOJt3.js +0 -373
- package/dist/wolfMattress-BjGnGKjP.cjs +0 -373
- package/dist/wolfTactical-Bi3WZu0m.cjs +0 -350
- package/dist/wolfTactical-C_F9-oPX.js +0 -350
- package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
- package/src/adapters/amplitude/index.ts +0 -2
- package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
- package/src/adapters/spiffy/commerce/graphql.ts +0 -219
- package/src/application/config/generalStaticConfig.ts +0 -40
- package/src/application/config/index.ts +0 -1
- package/src/application/models/domMutationContinuation.ts +0 -7
- package/src/application/models/domObservationStrategy.ts +0 -9
- package/src/application/service/cachingService.ts +0 -84
- package/src/application/service/cdnService.ts +0 -20
- package/src/application/service/customerService/index.ts +0 -8
- package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
- package/src/application/service/domMutationObserver.ts +0 -320
- package/src/application/service/domMutations/GridInsertionService.ts +0 -123
- package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
- package/src/application/service/domMutations/domInsertionService.ts +0 -90
- package/src/application/service/domMutations/domMutationListener.ts +0 -15
- package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
- package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
- package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
- package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
- package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
- package/src/application/service/featureFlagService.ts +0 -130
- package/src/application/service/index.ts +0 -31
- package/src/application/service/kustomerIntegrationService.ts +0 -111
- package/src/application/service/localStorageService.ts +0 -77
- package/src/application/service/pageVariantService.ts +0 -866
- package/src/application/service/searchService.ts +0 -147
- package/src/application/service/sessionStorageService.ts +0 -27
- package/src/application/service/shopifyUrlService.ts +0 -63
- package/src/application/service/userIdentityService.ts +0 -114
- package/src/application/service/windowChatToggleService.ts +0 -80
- package/src/application/service/windowDataLayerService.ts +0 -181
- package/src/application/service/windowFrontendConfigService.ts +0 -129
- package/src/atoms/org/merchantCss.ts +0 -158
- package/src/atoms/org/org.ts +0 -291
- package/src/atoms/org/orgUIConfig.ts +0 -142
- package/src/enabled-features.ts +0 -83
- package/src/hooks/useDynamicVariants.ts +0 -210
- package/src/hooks/useFileUpload.ts +0 -63
- package/src/hooks/useHideElements.ts +0 -82
- package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
- package/src/hooks/useReducedMotionWithOverride.ts +0 -15
- package/src/hooks/useSnapControl.ts +0 -155
- package/src/interceptors/useFormEscalation.ts +0 -57
- /package/dist/{variantInfo-CzhR5W6h.js → atomStore-CZnUUsrr.js} +0 -0
- /package/dist/{variantInfo-CNRTY0gH.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
- /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
- /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
- /package/dist/{locators-Dc5ZT0aF.js → utilityTypes-8sETsYPk.js} +0 -0
- /package/dist/{locators-lQMJj830.cjs → utilityTypes-COShxVir.cjs} +0 -0
- /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
|
@@ -1,51 +1,59 @@
|
|
|
1
|
-
import { atom } from
|
|
2
|
-
import { Message, MessageType } from
|
|
1
|
+
import { atom } from "jotai";
|
|
2
|
+
import { Message, MessageType } from "src/application/models";
|
|
3
3
|
import {
|
|
4
4
|
userHasRepliedAtom,
|
|
5
5
|
messagesAtom,
|
|
6
6
|
userQueryAtom,
|
|
7
7
|
replyEventCategoryAtom,
|
|
8
|
-
} from
|
|
9
|
-
import { UserEventCategory } from
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
8
|
+
} from "src/atoms/chat";
|
|
9
|
+
import { UserEventCategory } from "@spiffy-ai/commerce-api-client";
|
|
10
|
+
import { queueUserEventAtom } from "./messageQueue";
|
|
11
|
+
import { SpiffyMetricsEventName } from "src/contexts/amplitudeContext";
|
|
12
|
+
import { amplitudeTrackEventAtom } from "src/atoms/amplitude/amplitudeTrackEventAtom";
|
|
12
13
|
|
|
13
14
|
type HandleReplyParams = {
|
|
14
15
|
message: Message;
|
|
15
16
|
userTyped: boolean;
|
|
16
17
|
};
|
|
17
18
|
|
|
18
|
-
export const handleReplyAtom = atom(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
export const handleReplyAtom = atom(
|
|
20
|
+
null,
|
|
21
|
+
(get, set, { message, userTyped }: HandleReplyParams) => {
|
|
22
|
+
if (message.type !== MessageType.QueryTyped) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
const trackEvent = get(amplitudeTrackEventAtom);
|
|
27
|
+
const queryTyped = message.metadata.content;
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
AmplitudeAdapter.trackEvent({
|
|
38
|
-
eventName: SpiffyMetricsEventName.ChatUserMessageInput,
|
|
39
|
-
eventProps: {
|
|
40
|
-
message_id: message.id,
|
|
41
|
-
message_role: message.role,
|
|
42
|
-
message_type: message.type,
|
|
43
|
-
message_metadata: {
|
|
44
|
-
content: AmplitudeAdapter.amplitudeSafeString(message?.metadata?.content),
|
|
45
|
-
created_at: message.createdAt,
|
|
46
|
-
user_typed: userTyped,
|
|
29
|
+
set(replyEventCategoryAtom, UserEventCategory.QueryTyped);
|
|
30
|
+
set(userQueryAtom, queryTyped);
|
|
31
|
+
set(messagesAtom, [...get(messagesAtom), [message]]);
|
|
32
|
+
set(userHasRepliedAtom, true);
|
|
33
|
+
set(queueUserEventAtom, {
|
|
34
|
+
eventId: message.id,
|
|
35
|
+
createdAt: message.createdAt,
|
|
36
|
+
category: UserEventCategory.QueryTyped,
|
|
37
|
+
attributes: {
|
|
38
|
+
query: queryTyped,
|
|
47
39
|
},
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (trackEvent) {
|
|
43
|
+
trackEvent({
|
|
44
|
+
eventName: SpiffyMetricsEventName.ChatUserMessageInput,
|
|
45
|
+
eventProps: {
|
|
46
|
+
message_id: message.id,
|
|
47
|
+
message_role: message.role,
|
|
48
|
+
message_type: message.type,
|
|
49
|
+
message_metadata: {
|
|
50
|
+
content: message?.metadata?.content, // Removed amplitudeSafeString
|
|
51
|
+
created_at: message.createdAt,
|
|
52
|
+
user_typed: userTyped,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
alsoSendToGoogleAnalytics: true,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
);
|
|
@@ -2,7 +2,7 @@ import Logger from "src/application/logging/logger";
|
|
|
2
2
|
import { atom } from "jotai";
|
|
3
3
|
import { EnviveConfig } from "src/contexts/types";
|
|
4
4
|
import { ContextSourceEnum } from "@spiffy-ai/commerce-api-client";
|
|
5
|
-
import {
|
|
5
|
+
import { LocalStorageKeys } from "src/contexts/localStorageContext";
|
|
6
6
|
|
|
7
7
|
const internalEnviveConfigAtom = atom<EnviveConfig | undefined>(undefined);
|
|
8
8
|
|
|
@@ -48,15 +48,13 @@ export const cdnUrlAtom = atom((get) => {
|
|
|
48
48
|
export const contextSourceAtom = atom((get) => {
|
|
49
49
|
const config = get(enviveConfigAtom);
|
|
50
50
|
|
|
51
|
-
if (window.IS_STORYBOOK) {
|
|
52
|
-
return ContextSourceEnum.Test;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
51
|
if (config?.contextSource) {
|
|
56
52
|
return config.contextSource as ContextSourceEnum;
|
|
57
53
|
}
|
|
58
54
|
|
|
59
|
-
const spiffyOnFeatureFlagSet =
|
|
55
|
+
const spiffyOnFeatureFlagSet = window.localStorage.getItem(
|
|
56
|
+
LocalStorageKeys.SpiffyOnOverride
|
|
57
|
+
);
|
|
60
58
|
if (spiffyOnFeatureFlagSet === "true") {
|
|
61
59
|
return ContextSourceEnum.Playground;
|
|
62
60
|
}
|
|
@@ -79,3 +77,9 @@ export const identifyingPrefixAtom = atom((get) => {
|
|
|
79
77
|
Logger.logDebug("enviveConfig.ts: Accessing identifyingPrefix", config);
|
|
80
78
|
return config?.identifyingPrefix || "spiffy";
|
|
81
79
|
});
|
|
80
|
+
|
|
81
|
+
export const publicKeyAtom = atom((get) => {
|
|
82
|
+
const config = get(enviveConfigAtom);
|
|
83
|
+
Logger.logDebug("enviveConfig.ts: Accessing publicKey", config);
|
|
84
|
+
return config?.publicKey;
|
|
85
|
+
});
|
|
@@ -2,15 +2,21 @@ import { atom } from "jotai";
|
|
|
2
2
|
import { ColorMapping } from "src/application/models/colorsConfig";
|
|
3
3
|
import { FrontendConfig } from "src/application/models/frontendConfig";
|
|
4
4
|
import { getOrgInfo } from "src/application/models/supportedOrgs";
|
|
5
|
-
import { orgShortNameAtom } from "
|
|
5
|
+
import { orgShortNameAtom } from "../envive/enviveConfig";
|
|
6
|
+
import { FeatureFlagContextType } from "src/contexts/featureFlagServiceContext"; // Import FeatureFlagContextType from new context
|
|
6
7
|
|
|
7
|
-
const internalGraphQLColorsConfigAtom = atom<ColorMapping | undefined>(
|
|
8
|
+
export const internalGraphQLColorsConfigAtom = atom<ColorMapping | undefined>(
|
|
8
9
|
undefined
|
|
9
10
|
);
|
|
10
11
|
const internalGraphQLFrontendConfigAtom = atom<FrontendConfig | undefined>(
|
|
11
12
|
undefined
|
|
12
13
|
);
|
|
13
14
|
|
|
15
|
+
export const orgIdAtom = atom<string | undefined>(undefined); // New atom for orgId
|
|
16
|
+
export const featureFlagServiceAtom = atom<FeatureFlagContextType | undefined>(
|
|
17
|
+
undefined
|
|
18
|
+
); // New atom for FeatureFlagService
|
|
19
|
+
|
|
14
20
|
export const colorsConfigAtom = atom(
|
|
15
21
|
async (get) => {
|
|
16
22
|
const colors = get(internalGraphQLColorsConfigAtom);
|
|
@@ -21,7 +27,7 @@ export const colorsConfigAtom = atom(
|
|
|
21
27
|
const orgInfo = await getOrgInfo(orgShortName);
|
|
22
28
|
const orgUIConfigColors = orgInfo.orgColors();
|
|
23
29
|
|
|
24
|
-
//
|
|
30
|
+
// If we have GraphQL colors, merge them with org colors (GraphQL takes priority)
|
|
25
31
|
if (
|
|
26
32
|
colors &&
|
|
27
33
|
orgUIConfigColors &&
|
|
@@ -30,7 +36,18 @@ export const colorsConfigAtom = atom(
|
|
|
30
36
|
return { ...orgUIConfigColors, ...colors } as ColorMapping;
|
|
31
37
|
}
|
|
32
38
|
|
|
33
|
-
return colors
|
|
39
|
+
// If we have GraphQL colors but no org colors, return GraphQL colors
|
|
40
|
+
if (colors) {
|
|
41
|
+
return colors;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// If we have org colors but no GraphQL colors, return org colors
|
|
45
|
+
if (orgUIConfigColors && Object.keys(orgUIConfigColors).length > 0) {
|
|
46
|
+
return orgUIConfigColors as ColorMapping;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Fallback to undefined if neither are available
|
|
50
|
+
return undefined;
|
|
34
51
|
},
|
|
35
52
|
(_, set, value: ColorMapping | undefined) => {
|
|
36
53
|
set(internalGraphQLColorsConfigAtom, value);
|
package/src/atoms/org/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
1
|
+
export * from "./customerService";
|
|
2
|
+
export * from "./graphqlConfig";
|
|
3
|
+
// export * from "./org";
|
|
4
|
+
export * from "./orgAnalyticsConfig";
|
|
5
|
+
export * from "./orgPageConfig";
|
|
6
|
+
export * from "./newOrgConfigAtom";
|
|
7
|
+
// export * from "./orgUIConfig";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { atom } from "jotai";
|
|
2
|
+
import { BasicOrgInfoType } from "src/application/models";
|
|
3
|
+
import { GraphQlConfigValues } from "src/contexts";
|
|
4
|
+
import { NewOrgConfigContextType } from "src/contexts/newOrgConfigContext";
|
|
5
|
+
|
|
6
|
+
export const newOrgConfigAtom = atom<
|
|
7
|
+
(GraphQlConfigValues & BasicOrgInfoType) | null
|
|
8
|
+
>(null);
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { atom } from "jotai";
|
|
2
2
|
import { getOrgInfo } from "src/application/models";
|
|
3
3
|
import { frontendConfigAtom } from "src/atoms/org/graphqlConfig";
|
|
4
|
-
import {
|
|
4
|
+
import { enviveConfigAtom } from "src/atoms/envive/enviveConfig";
|
|
5
5
|
import { PageVariantConfig } from "src/contexts/types";
|
|
6
6
|
|
|
7
7
|
const internalInjectedPageVariantsAtom = atom<PageVariantConfig[]>([]);
|
|
8
8
|
|
|
9
9
|
export const orgPageConfigAtom = atom(
|
|
10
10
|
async (get) => {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const enviveConfig = get(enviveConfigAtom);
|
|
12
|
+
const orgShortName = enviveConfig?.orgShortName;
|
|
13
|
+
if (!orgShortName) {
|
|
14
|
+
throw new Error("orgShortName is not available from enviveConfig");
|
|
14
15
|
}
|
|
15
|
-
const orgInfo = await getOrgInfo(
|
|
16
|
+
const orgInfo = await getOrgInfo(orgShortName);
|
|
16
17
|
const frontendConfig = get(frontendConfigAtom);
|
|
17
18
|
const injectedPageVariants = get(internalInjectedPageVariantsAtom);
|
|
18
19
|
const localOrgPageConfig = orgInfo.orgPageConfig();
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
userQueryAtom,
|
|
15
15
|
} from "src/atoms/chat";
|
|
16
16
|
import { queueUserEventAtom } from "../chat/messageQueue";
|
|
17
|
-
import {
|
|
17
|
+
import { newOrgConfigAtom } from "../org";
|
|
18
18
|
import { ProductFilters } from "./productFilters";
|
|
19
19
|
import { ProductSorter } from "./productSorter";
|
|
20
20
|
import { ChatSearchStateType, ProductSorting } from "./types";
|
|
@@ -75,8 +75,11 @@ const buildChatSearchTurn = (
|
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
const chatSearchFilterConfigAtom = atom((get) => {
|
|
78
|
-
const
|
|
79
|
-
return
|
|
78
|
+
const newOrgConfig = get(newOrgConfigAtom);
|
|
79
|
+
return (
|
|
80
|
+
newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig?.searchFilterConfig ||
|
|
81
|
+
[]
|
|
82
|
+
);
|
|
80
83
|
});
|
|
81
84
|
|
|
82
85
|
const searchMapAtom = atom((get) => {
|
|
@@ -107,8 +110,11 @@ export const selectedFilterOptionsAtom = atom<SelectedChatSearchFilterOption[]>(
|
|
|
107
110
|
);
|
|
108
111
|
|
|
109
112
|
export const additiveDynamicFiltersAtom = atom((get) => {
|
|
110
|
-
const
|
|
111
|
-
return
|
|
113
|
+
const newOrgConfig = get(newOrgConfigAtom);
|
|
114
|
+
return (
|
|
115
|
+
newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
|
|
116
|
+
?.additiveDynamicFilters ?? false
|
|
117
|
+
);
|
|
112
118
|
});
|
|
113
119
|
|
|
114
120
|
export const createChatSearchFilterOption = (
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { atom } from
|
|
2
|
-
import { SearchResult, SearchParams } from
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { atom } from "jotai";
|
|
2
|
+
import { SearchResult, SearchParams } from "src/application/models/api/search";
|
|
3
|
+
import { ProductSorting } from "./types";
|
|
4
|
+
import { ProductFilters } from "./productFilters";
|
|
5
|
+
import { ProductSorter } from "./productSorter";
|
|
6
|
+
import { newOrgConfigAtom } from "../org";
|
|
7
|
+
import { getSearchServiceFunction } from "./searchServiceAdapter";
|
|
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,29 +77,33 @@ 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) => {
|
|
89
91
|
const searchData = get(searchAtom).data;
|
|
90
92
|
const sorting = get(searchProductSortingAtom);
|
|
91
93
|
const selectedFilters = get(searchSelectedFiltersAtom);
|
|
92
|
-
const
|
|
94
|
+
const newOrgConfig = get(newOrgConfigAtom);
|
|
93
95
|
|
|
94
|
-
if (
|
|
96
|
+
if (
|
|
97
|
+
!searchData?.products ||
|
|
98
|
+
!newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
|
|
99
|
+
)
|
|
100
|
+
return [];
|
|
95
101
|
|
|
96
102
|
const filteredProducts = ProductFilters.filterProducts(
|
|
97
103
|
searchData.products,
|
|
98
|
-
|
|
104
|
+
newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig,
|
|
99
105
|
selectedFilters,
|
|
100
|
-
|
|
106
|
+
newOrgConfig.frontendConfig.uiConfigs.searchConfig.additiveDynamicFilters
|
|
101
107
|
);
|
|
102
108
|
|
|
103
109
|
return ProductSorter.sort(filteredProducts, sorting);
|
|
@@ -106,31 +112,41 @@ export const filteredSearchProductsAtom = atom((get) => {
|
|
|
106
112
|
export const searchFiltersAtom = atom((get) => {
|
|
107
113
|
const searchData = get(searchAtom).data;
|
|
108
114
|
const selectedFilters = get(searchSelectedFiltersAtom);
|
|
109
|
-
const
|
|
115
|
+
const newOrgConfig = get(newOrgConfigAtom);
|
|
110
116
|
|
|
111
|
-
if (
|
|
117
|
+
if (
|
|
118
|
+
!searchData?.products ||
|
|
119
|
+
!newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
|
|
120
|
+
)
|
|
121
|
+
return [];
|
|
112
122
|
|
|
113
123
|
return ProductFilters.getFiltersForProducts(
|
|
114
124
|
searchData.products,
|
|
115
|
-
|
|
116
|
-
selectedFilters
|
|
125
|
+
newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig,
|
|
126
|
+
selectedFilters
|
|
117
127
|
);
|
|
118
128
|
});
|
|
119
129
|
|
|
120
|
-
export const addSearchFilterAtom = atom(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
130
|
+
export const addSearchFilterAtom = atom(
|
|
131
|
+
null,
|
|
132
|
+
(get, set, filter: SelectedFilterOption) => {
|
|
133
|
+
const current = get(searchSelectedFiltersAtom);
|
|
134
|
+
if (!current.some((f) => f.id === filter.id)) {
|
|
135
|
+
set(searchSelectedFiltersAtom, [...current, filter]);
|
|
136
|
+
}
|
|
124
137
|
}
|
|
125
|
-
|
|
138
|
+
);
|
|
126
139
|
|
|
127
|
-
export const removeSearchFilterAtom = atom(
|
|
128
|
-
|
|
129
|
-
set
|
|
130
|
-
searchSelectedFiltersAtom
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
140
|
+
export const removeSearchFilterAtom = atom(
|
|
141
|
+
null,
|
|
142
|
+
(get, set, filterId: string) => {
|
|
143
|
+
const current = get(searchSelectedFiltersAtom);
|
|
144
|
+
set(
|
|
145
|
+
searchSelectedFiltersAtom,
|
|
146
|
+
current.filter((f) => f.id !== filterId)
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
);
|
|
134
150
|
|
|
135
151
|
export const clearSearchFiltersAtom = atom(null, (_, set) => {
|
|
136
152
|
set(searchSelectedFiltersAtom, []);
|
|
@@ -140,29 +156,31 @@ export const performSearchAtom = atom(
|
|
|
140
156
|
null,
|
|
141
157
|
async (get, set, params: SearchParams, allowRedirect = false) => {
|
|
142
158
|
const currentState = get(searchAtom);
|
|
143
|
-
const
|
|
144
|
-
const redirectSearchResultsUrl =
|
|
159
|
+
const newOrgConfig = get(newOrgConfigAtom);
|
|
160
|
+
const redirectSearchResultsUrl =
|
|
161
|
+
newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
|
|
162
|
+
?.redirectSearchResultsUrl;
|
|
145
163
|
|
|
146
164
|
if (allowRedirect && redirectSearchResultsUrl) {
|
|
147
165
|
const redirectUrl = new URL(redirectSearchResultsUrl);
|
|
148
|
-
redirectUrl.searchParams.set(
|
|
149
|
-
redirectUrl.searchParams.set(
|
|
166
|
+
redirectUrl.searchParams.set("es", "true");
|
|
167
|
+
redirectUrl.searchParams.set("esq", params.query);
|
|
150
168
|
window.location.href = redirectUrl.toString();
|
|
151
169
|
} else {
|
|
152
170
|
// Update URL and manually trigger state change (since pushState doesn't trigger popstate)
|
|
153
171
|
const url = new URL(window.location.href);
|
|
154
|
-
url.searchParams.set(
|
|
155
|
-
url.searchParams.set(
|
|
156
|
-
window.history.pushState({},
|
|
172
|
+
url.searchParams.set("es", "true");
|
|
173
|
+
url.searchParams.set("esq", params.query);
|
|
174
|
+
window.history.pushState({}, "", url);
|
|
157
175
|
|
|
158
176
|
// Manually trigger page variant re-evaluation by dispatching a popstate event
|
|
159
177
|
// This ensures the page variant system detects the URL change and mounts search results
|
|
160
|
-
window.dispatchEvent(new PopStateEvent(
|
|
178
|
+
window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
|
|
161
179
|
}
|
|
162
180
|
|
|
163
181
|
// Manually trigger page variant re-evaluation by dispatching a popstate event
|
|
164
182
|
// This ensures the page variant system detects the URL change and mounts search results
|
|
165
|
-
window.dispatchEvent(new PopStateEvent(
|
|
183
|
+
window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
|
|
166
184
|
if (currentState.loading) {
|
|
167
185
|
return; // Prevent concurrent searches
|
|
168
186
|
}
|
|
@@ -174,7 +192,8 @@ export const performSearchAtom = atom(
|
|
|
174
192
|
lastQuery: params.query,
|
|
175
193
|
});
|
|
176
194
|
try {
|
|
177
|
-
const
|
|
195
|
+
const searchServiceFunction = getSearchServiceFunction();
|
|
196
|
+
const result = await searchServiceFunction(params);
|
|
178
197
|
set(searchAtom, {
|
|
179
198
|
data: result,
|
|
180
199
|
loading: false,
|
|
@@ -182,7 +201,8 @@ export const performSearchAtom = atom(
|
|
|
182
201
|
lastQuery: params.query,
|
|
183
202
|
});
|
|
184
203
|
} catch (error: unknown) {
|
|
185
|
-
const errorMessage =
|
|
204
|
+
const errorMessage =
|
|
205
|
+
error instanceof Error ? error.message : "An unknown error occurred";
|
|
186
206
|
set(searchAtom, {
|
|
187
207
|
data: null,
|
|
188
208
|
loading: false,
|
|
@@ -190,5 +210,5 @@ export const performSearchAtom = atom(
|
|
|
190
210
|
lastQuery: params.query,
|
|
191
211
|
});
|
|
192
212
|
}
|
|
193
|
-
}
|
|
213
|
+
}
|
|
194
214
|
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SearchResult, SearchParams } from "src/application/models/api/search";
|
|
2
|
+
|
|
3
|
+
// This will be set by the SearchProvider when it initializes
|
|
4
|
+
let searchServiceFunction:
|
|
5
|
+
| ((params: SearchParams) => Promise<SearchResult>)
|
|
6
|
+
| null = null;
|
|
7
|
+
|
|
8
|
+
export const setSearchServiceFunction = (
|
|
9
|
+
fn: (params: SearchParams) => Promise<SearchResult>
|
|
10
|
+
) => {
|
|
11
|
+
searchServiceFunction = fn;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const getSearchServiceFunction = () => {
|
|
15
|
+
if (!searchServiceFunction) {
|
|
16
|
+
throw new Error(
|
|
17
|
+
"Search service function not initialized. Make sure SearchProvider is mounted."
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
return searchServiceFunction;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const clearSearchServiceFunction = () => {
|
|
24
|
+
searchServiceFunction = null;
|
|
25
|
+
};
|