@envive-ai/react-hooks 0.3.3 → 0.3.4
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/_virtual/rolldown_runtime.cjs +2 -0
- package/dist/_virtual/rolldown_runtime.js +29 -0
- package/dist/application/commerce-api.cjs +11 -3
- package/dist/application/commerce-api.js +11 -3
- package/dist/application/models/api/userEvent.d.cts +4 -2
- package/dist/application/models/api/userEvent.d.ts +4 -2
- package/dist/application/models/chatElementDisplayLocationV3.cjs +18 -0
- package/dist/application/models/chatElementDisplayLocationV3.d.cts +15 -0
- package/dist/application/models/chatElementDisplayLocationV3.d.ts +15 -0
- package/dist/application/models/chatElementDisplayLocationV3.js +17 -0
- package/dist/application/models/colorsConfigV3.cjs +26 -0
- package/dist/application/models/colorsConfigV3.d.cts +22 -0
- package/dist/application/models/colorsConfigV3.d.ts +22 -0
- package/dist/application/models/colorsConfigV3.js +24 -0
- package/dist/application/models/featureGates.cjs +2 -1
- package/dist/application/models/featureGates.d.cts +2 -1
- package/dist/application/models/featureGates.d.ts +2 -1
- package/dist/application/models/featureGates.js +2 -1
- package/dist/application/models/frontendConfig.d.cts +4 -2
- package/dist/application/models/frontendConfig.d.ts +4 -2
- package/dist/application/models/frontendConfigV3.d.cts +14 -0
- package/dist/application/models/frontendConfigV3.d.ts +14 -0
- package/dist/application/models/index.cjs +3 -0
- package/dist/application/models/index.d.cts +4 -3
- package/dist/application/models/index.d.ts +4 -3
- package/dist/application/models/index.js +3 -2
- package/dist/application/models/utils/snakeToCamelTransformer.cjs +2 -1
- package/dist/application/models/utils/snakeToCamelTransformer.d.cts +7 -2
- package/dist/application/models/utils/snakeToCamelTransformer.d.ts +7 -2
- package/dist/application/models/utils/snakeToCamelTransformer.js +2 -2
- package/dist/application/utils/analyticsUtils.cjs +5 -4
- package/dist/application/utils/analyticsUtils.d.cts +1 -1
- package/dist/application/utils/analyticsUtils.d.ts +1 -1
- package/dist/application/utils/analyticsUtils.js +3 -2
- package/dist/application/utils/elementObserver.cjs +1 -1
- package/dist/application/utils/elementObserver.js +1 -1
- package/dist/application/utils/index.d.cts +1 -1
- package/dist/application/utils/index.d.ts +1 -1
- package/dist/application/utils/widgetTextFromApiWidgetTextResponse.cjs +14 -0
- package/dist/application/utils/widgetTextFromApiWidgetTextResponse.js +13 -0
- package/dist/application/utils/widgetTextRequestToApiRequest.cjs +30 -0
- package/dist/application/utils/widgetTextRequestToApiRequest.js +29 -0
- package/dist/atoms/amplitude/amplitudeTrackEventAtom.cjs +1 -1
- package/dist/atoms/amplitude/amplitudeTrackEventAtom.js +1 -1
- package/dist/atoms/app/index.cjs +4 -3
- package/dist/atoms/app/index.d.cts +3 -3
- package/dist/atoms/app/index.d.ts +9 -9
- package/dist/atoms/app/index.js +4 -5
- package/dist/atoms/app/variant.cjs +5 -1
- package/dist/atoms/app/variant.d.cts +11 -4
- package/dist/atoms/app/variant.d.ts +11 -4
- package/dist/atoms/app/variant.js +4 -2
- package/dist/atoms/chat/chatState.cjs +9 -4
- package/dist/atoms/chat/chatState.d.cts +25 -18
- package/dist/atoms/chat/chatState.d.ts +25 -18
- package/dist/atoms/chat/chatState.js +6 -3
- package/dist/atoms/chat/form.cjs +4 -4
- package/dist/atoms/chat/form.d.cts +2 -2
- package/dist/atoms/chat/form.d.ts +2 -2
- package/dist/atoms/chat/index.cjs +32 -30
- package/dist/atoms/chat/index.d.cts +4 -4
- package/dist/atoms/chat/index.d.ts +5 -5
- package/dist/atoms/chat/index.js +2 -2
- package/dist/atoms/chat/lastMessage.cjs +4 -4
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
- package/dist/atoms/chat/replies.cjs +9 -8
- package/dist/atoms/chat/replies.d.cts +3 -3
- package/dist/atoms/chat/replies.d.ts +3 -3
- package/dist/atoms/chat/replies.js +3 -2
- package/dist/atoms/chat/suggestions.cjs +6 -6
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/envive/enviveConfig.cjs +5 -2
- package/dist/atoms/envive/enviveConfig.js +5 -2
- package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
- package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
- package/dist/atoms/org/customerService.d.cts +6 -6
- package/dist/atoms/org/customerService.d.ts +6 -6
- package/dist/atoms/org/graphqlConfig.cjs +1 -3
- package/dist/atoms/org/graphqlConfig.d.cts +6 -9
- package/dist/atoms/org/graphqlConfig.d.ts +6 -9
- package/dist/atoms/org/graphqlConfig.js +2 -3
- package/dist/atoms/org/index.cjs +2 -3
- package/dist/atoms/org/index.d.cts +2 -2
- package/dist/atoms/org/index.d.ts +2 -2
- package/dist/atoms/org/index.js +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
- package/dist/atoms/search/chatSearch.cjs +7 -7
- package/dist/atoms/search/chatSearch.d.cts +20 -18
- package/dist/atoms/search/chatSearch.d.ts +20 -18
- package/dist/atoms/search/searchAPI.cjs +1 -1
- package/dist/atoms/search/searchAPI.d.cts +15 -14
- package/dist/atoms/search/searchAPI.d.ts +15 -14
- package/dist/atoms/search/searchAPI.js +1 -1
- package/dist/atoms/search/utils.d.cts +1 -1
- package/dist/atoms/widget/chatPreviewLoading.cjs +23 -0
- package/dist/atoms/widget/chatPreviewLoading.d.cts +26 -0
- package/dist/atoms/widget/chatPreviewLoading.d.ts +26 -0
- package/dist/atoms/widget/chatPreviewLoading.js +22 -0
- package/dist/atoms/widget/index.cjs +3 -0
- package/dist/atoms/widget/index.d.cts +2 -0
- package/dist/atoms/widget/index.d.ts +2 -0
- package/dist/atoms/widget/index.js +3 -0
- package/dist/contexts/amplitudeContext/amplitudeContext.cjs +40 -227
- package/dist/contexts/amplitudeContext/amplitudeContext.d.cts +4 -39
- package/dist/contexts/amplitudeContext/amplitudeContext.d.ts +4 -39
- package/dist/contexts/amplitudeContext/amplitudeContext.js +44 -230
- package/dist/contexts/amplitudeContext/index.cjs +2 -1
- package/dist/contexts/amplitudeContext/index.d.cts +2 -1
- package/dist/contexts/amplitudeContext/index.d.ts +2 -1
- package/dist/contexts/amplitudeContext/index.js +2 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +3 -2
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +2 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +2 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.js +3 -2
- package/dist/contexts/enviveContext/enviveContext.cjs +67 -16
- package/dist/contexts/enviveContext/enviveContext.d.cts +9 -1
- package/dist/contexts/enviveContext/enviveContext.d.ts +9 -1
- package/dist/contexts/enviveContext/enviveContext.js +69 -18
- package/dist/contexts/enviveCssContext/enviveCssContext.cjs +96 -24
- package/dist/contexts/enviveCssContext/enviveCssContext.js +96 -24
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +5 -7
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +5 -7
- package/dist/contexts/graphqlContext/graphqlContext.cjs +69 -7
- package/dist/contexts/graphqlContext/graphqlContext.d.cts +17 -5
- package/dist/contexts/graphqlContext/graphqlContext.d.ts +17 -5
- package/dist/contexts/graphqlContext/graphqlContext.js +69 -7
- package/dist/contexts/graphqlContext/index.d.cts +2 -2
- package/dist/contexts/graphqlContext/index.d.ts +2 -2
- package/dist/contexts/graphqlContext/mockV3Config.cjs +208 -0
- package/dist/contexts/graphqlContext/mockV3Config.js +207 -0
- package/dist/contexts/hardcopyContext/hardcopyContext.cjs +119 -12
- package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +3 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +3 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.js +120 -13
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +7 -8
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +8 -9
- package/dist/contexts/pageContext/mapping.cjs +5 -1
- package/dist/contexts/pageContext/mapping.d.cts +1 -1
- package/dist/contexts/pageContext/mapping.d.ts +1 -1
- package/dist/contexts/pageContext/mapping.js +5 -1
- package/dist/contexts/pageContext/pageContext.cjs +29 -9
- package/dist/contexts/pageContext/pageContext.d.cts +5 -2
- package/dist/contexts/pageContext/pageContext.d.ts +5 -2
- package/dist/contexts/pageContext/pageContext.js +30 -10
- package/dist/contexts/pageContext/types.d.cts +5 -1
- package/dist/contexts/pageContext/types.d.ts +5 -1
- package/dist/contexts/salesAgentContext/chatAPI.cjs +6 -3
- package/dist/contexts/salesAgentContext/chatAPI.js +6 -3
- package/dist/contexts/salesAgentContext/salesAgentContext.cjs +65 -25
- package/dist/contexts/salesAgentContext/salesAgentContext.js +64 -24
- package/dist/contexts/salesAgentContext/salesAgentService.cjs +43 -7
- package/dist/contexts/salesAgentContext/salesAgentService.js +42 -6
- package/dist/contexts/salesAgentContext/statusCodeError.cjs +14 -0
- package/dist/contexts/salesAgentContext/statusCodeError.js +13 -0
- package/dist/contexts/searchContext/searchContext.cjs +1 -1
- package/dist/contexts/searchContext/searchContext.js +1 -1
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
- package/dist/contexts/types.cjs +2 -13
- package/dist/contexts/types.d.cts +12 -16
- package/dist/contexts/types.d.ts +12 -16
- package/dist/contexts/types.js +3 -13
- package/dist/contexts/typesV3.cjs +125 -0
- package/dist/contexts/typesV3.d.cts +246 -0
- package/dist/contexts/typesV3.d.ts +246 -0
- package/dist/contexts/typesV3.js +113 -0
- package/dist/contexts/uiConfigContext/index.cjs +4 -0
- package/dist/contexts/uiConfigContext/index.d.cts +2 -0
- package/dist/contexts/uiConfigContext/index.d.ts +2 -0
- package/dist/contexts/uiConfigContext/index.js +3 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.cjs +44 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.d.cts +15 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.d.ts +15 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.js +42 -0
- package/dist/contexts/userIdentityContext/userIdentityContext.cjs +1 -1
- package/dist/contexts/userIdentityContext/userIdentityContext.js +1 -1
- package/dist/contexts/widgetConfigContext/index.cjs +4 -0
- package/dist/contexts/widgetConfigContext/index.d.cts +2 -0
- package/dist/contexts/widgetConfigContext/index.d.ts +2 -0
- package/dist/contexts/widgetConfigContext/index.js +3 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +67 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.d.cts +19 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.d.ts +19 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.js +65 -0
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.cts +1 -1
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.ts +1 -1
- package/dist/hooks/AppDetails/useAppDetails.cjs +2 -4
- package/dist/hooks/AppDetails/useAppDetails.js +3 -5
- package/dist/hooks/ChatToggle/useChatToggle.cjs +6 -5
- package/dist/hooks/ChatToggle/useChatToggle.js +3 -2
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.cjs +3 -3
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +3 -3
- package/dist/hooks/GraphQLConfig/index.cjs +1 -1
- package/dist/hooks/GraphQLConfig/index.d.cts +2 -2
- package/dist/hooks/GraphQLConfig/index.d.ts +2 -2
- package/dist/hooks/GraphQLConfig/index.js +2 -2
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +27 -24
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.cts +5 -4
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.ts +5 -4
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +27 -24
- package/dist/hooks/Search/useSearch.cjs +10 -9
- package/dist/hooks/Search/useSearch.js +6 -5
- package/dist/hooks/Search/useSearchInput.cjs +4 -4
- package/dist/hooks/Search/useSearchInput.js +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +5 -4
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +3 -2
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.cjs +3 -2
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.js +3 -2
- package/dist/hooks/utils.d.cts +1 -1
- package/dist/node_modules/classnames/index.cjs +52 -0
- package/dist/node_modules/classnames/index.js +49 -0
- package/dist/packages/components-v3/dist/Container/Container.cjs +11 -0
- package/dist/packages/components-v3/dist/Container/Container.js +12 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.js +3 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.js +3 -0
- package/dist/packages/components-v3/dist/Container/index.cjs +1 -0
- package/dist/packages/components-v3/dist/Container/index.js +3 -0
- package/dist/packages/components-v3/dist/Image/Image.cjs +16 -0
- package/dist/packages/components-v3/dist/Image/Image.js +17 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.js +3 -0
- package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.cjs +2 -0
- package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.cjs +2 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/Layout.cjs +15 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/Layout.js +16 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.cjs +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.cjs +1 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.js +3 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/index.cjs +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/index.js +6 -0
- package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.js +3 -0
- package/dist/packages/components-v3/dist/ImageGallery/index.cjs +2 -0
- package/dist/packages/components-v3/dist/ImageGallery/index.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/types/types.cjs +13 -0
- package/dist/packages/components-v3/dist/ImageGallery/types/types.js +12 -0
- package/dist/packages/components-v3/dist/PromptButton/PromptButton.cjs +12 -0
- package/dist/packages/components-v3/dist/PromptButton/PromptButton.js +13 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Icon.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Icon.js +3 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Label.cjs +3 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Label.js +5 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Layout.cjs +12 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Layout.js +13 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Loading.cjs +9 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Loading.js +10 -0
- package/dist/packages/components-v3/dist/PromptButton/components/index.cjs +4 -0
- package/dist/packages/components-v3/dist/PromptButton/components/index.js +6 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.js +3 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.cjs +8 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.js +9 -0
- package/dist/packages/components-v3/dist/PromptButton/index.cjs +2 -0
- package/dist/packages/components-v3/dist/PromptButton/index.js +4 -0
- package/dist/packages/components-v3/dist/PromptButton/types/index.cjs +13 -0
- package/dist/packages/components-v3/dist/PromptButton/types/index.js +12 -0
- package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.cjs +12 -0
- package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.js +14 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.cjs +9 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.js +10 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.cjs +11 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.js +12 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.cjs +4 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.js +6 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.cjs +4 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.js +6 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/index.cjs +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/index.js +5 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.cjs +5 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.js +7 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.cjs +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.js +5 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/index.cjs +2 -0
- package/dist/packages/components-v3/dist/PromptCarousel/index.js +4 -0
- package/dist/packages/components-v3/dist/PromptCarousel/types/types.cjs +19 -0
- package/dist/packages/components-v3/dist/PromptCarousel/types/types.js +17 -0
- package/dist/packages/components-v3/dist/Stack/Stack.cjs +36 -0
- package/dist/packages/components-v3/dist/Stack/Stack.js +36 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.cjs +27 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.js +26 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.cjs +20 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.js +19 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.cjs +19 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.js +18 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.cjs +16 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.js +15 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.cjs +21 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.js +20 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.cjs +38 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.js +38 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.cjs +13 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.js +12 -0
- package/dist/packages/components-v3/dist/Stack/index.cjs +1 -0
- package/dist/packages/components-v3/dist/Stack/index.js +3 -0
- package/dist/packages/components-v3/dist/Stack/utils/constants.cjs +42 -0
- package/dist/packages/components-v3/dist/Stack/utils/constants.js +41 -0
- package/dist/packages/components-v3/dist/Typography/Typography.cjs +15 -0
- package/dist/packages/components-v3/dist/Typography/Typography.js +16 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/index.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/index.js +3 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.cjs +12 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.js +13 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.js +3 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/index.cjs +2 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/index.js +4 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/types/types.cjs +13 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/types/types.js +12 -0
- package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.cjs +25 -0
- package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.js +23 -0
- package/dist/packages/components-v3/dist/utils/useCheckIsMobile.cjs +1 -0
- package/dist/packages/components-v3/dist/utils/useCheckIsMobile.js +3 -0
- package/dist/packages/components-v3/dist/utils/useResponsiveValue.cjs +57 -0
- package/dist/packages/components-v3/dist/utils/useResponsiveValue.js +56 -0
- package/dist/packages/icons/dist/FourPointStar.cjs +8 -0
- package/dist/packages/icons/dist/FourPointStar.js +9 -0
- package/dist/packages/icons/dist/_virtual/rolldown_runtime.cjs +28 -0
- package/dist/packages/icons/dist/_virtual/rolldown_runtime.js +26 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs +697 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.js +697 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs +44 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js +44 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.development.cjs +1529 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.development.js +1529 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.cjs +330 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.js +330 -0
- package/dist/packages/icons/dist/node_modules/react/index.cjs +14 -0
- package/dist/packages/icons/dist/node_modules/react/index.js +14 -0
- package/dist/packages/icons/dist/node_modules/react/jsx-runtime.cjs +14 -0
- package/dist/packages/icons/dist/node_modules/react/jsx-runtime.js +14 -0
- package/dist/services/amplitudeService/amplitudeService.cjs +204 -0
- package/dist/services/amplitudeService/amplitudeService.d.cts +75 -0
- package/dist/services/amplitudeService/amplitudeService.d.ts +75 -0
- package/dist/services/amplitudeService/amplitudeService.js +202 -0
- package/dist/services/amplitudeService/index.cjs +4 -0
- package/dist/services/amplitudeService/index.d.cts +2 -0
- package/dist/services/amplitudeService/index.d.ts +2 -0
- package/dist/services/amplitudeService/index.js +3 -0
- package/dist/services/enviveConfigService/enviveConfigService.cjs +36 -0
- package/dist/services/enviveConfigService/enviveConfigService.d.cts +43 -0
- package/dist/services/enviveConfigService/enviveConfigService.d.ts +43 -0
- package/dist/services/enviveConfigService/enviveConfigService.js +36 -0
- package/dist/services/enviveConfigService/index.cjs +3 -0
- package/dist/services/enviveConfigService/index.d.cts +2 -0
- package/dist/services/enviveConfigService/index.d.ts +2 -0
- package/dist/services/enviveConfigService/index.js +3 -0
- package/dist/types/enviveConfig.d.cts +29 -0
- package/dist/types/enviveConfig.d.ts +29 -0
- package/dist/types/index.d.cts +2 -1
- package/dist/types/index.d.ts +2 -1
- package/package.json +36 -4
- package/src/application/commerce-api.ts +14 -1
- package/src/application/models/api/userEvent.ts +3 -1
- package/src/application/models/api/widgetText.ts +9 -0
- package/src/application/models/api/widgetTextRequest.ts +10 -0
- package/src/application/models/chatElementDisplayLocationV3.ts +12 -0
- package/src/application/models/colorsConfigV3.ts +26 -0
- package/src/application/models/featureGates.ts +1 -0
- package/src/application/models/frontendConfig.ts +5 -0
- package/src/application/models/frontendConfigV3.ts +10 -0
- package/src/application/models/index.ts +1 -0
- package/src/application/models/utils/snakeToCamelTransformer.ts +1 -1
- package/src/application/utils/elementObserver.ts +2 -2
- package/src/application/utils/widgetTextFromApiWidgetTextResponse.ts +30 -0
- package/src/application/utils/widgetTextRequestToApiRequest.ts +45 -0
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +1 -8
- package/src/atoms/app/index.ts +3 -3
- package/src/atoms/app/variant.ts +5 -0
- package/src/atoms/chat/chatState.ts +10 -2
- package/src/atoms/envive/enviveConfig.ts +5 -0
- package/src/atoms/org/graphqlConfig.ts +0 -1
- package/src/atoms/widget/chatPreviewLoading.ts +36 -0
- package/src/atoms/widget/index.ts +1 -0
- package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +197 -187
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +56 -334
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -0
- package/src/contexts/enviveContext/enviveContext.tsx +101 -27
- package/src/contexts/enviveCssContext/enviveCssContext.tsx +121 -22
- package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +12 -11
- package/src/contexts/graphqlContext/graphqlContext.tsx +131 -13
- package/src/contexts/graphqlContext/mockV3Config.ts +209 -0
- package/src/contexts/hardcopyContext/hardcopyContext.tsx +136 -14
- package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +6 -6
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +5 -13
- package/src/contexts/pageContext/__tests__/pageContext.test.tsx +24 -8
- package/src/contexts/pageContext/mapping.ts +4 -0
- package/src/contexts/pageContext/pageContext.tsx +41 -12
- package/src/contexts/pageContext/types.ts +4 -0
- package/src/contexts/salesAgentContext/chatAPI.ts +1 -0
- package/src/contexts/salesAgentContext/salesAgentContext.tsx +94 -42
- package/src/contexts/salesAgentContext/salesAgentService.ts +78 -3
- package/src/contexts/salesAgentContext/statusCodeError.ts +10 -0
- package/src/contexts/searchContext/__tests__/searchContext.test.tsx +8 -2
- package/src/contexts/types.ts +15 -19
- package/src/contexts/typesV3.ts +316 -0
- package/src/contexts/uiConfigContext/__tests__/uiConfigContext.test.tsx +321 -0
- package/src/contexts/uiConfigContext/index.ts +1 -0
- package/src/contexts/uiConfigContext/uiConfigContext.tsx +44 -0
- package/src/contexts/widgetConfigContext/__tests__/widgetConfigContext.test.tsx +512 -0
- package/src/contexts/widgetConfigContext/index.ts +1 -0
- package/src/contexts/widgetConfigContext/widgetConfigContext.tsx +84 -0
- package/src/hooks/AppDetails/useAppDetails.ts +2 -2
- package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +22 -21
- package/src/hooks/Search/__tests__/useSearch.test.tsx +15 -6
- package/src/hooks/Search/useSearch.tsx +6 -5
- package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +558 -0
- package/src/services/amplitudeService/amplitudeService.ts +324 -0
- package/src/services/amplitudeService/index.ts +1 -0
- package/src/services/enviveConfigService/enviveConfigService.ts +72 -0
- package/src/services/enviveConfigService/index.ts +1 -0
- package/src/types/enviveConfig.ts +27 -0
- package/src/types/index.ts +1 -0
|
@@ -7,49 +7,45 @@ import {
|
|
|
7
7
|
} from 'src/contexts/userIdentityContext/userIdentityContext';
|
|
8
8
|
import { LocalStorageProvider } from 'src/contexts/localStorageContext';
|
|
9
9
|
import { EnviveConfigProvider } from 'src/contexts/enviveConfigContext/enviveConfigContext';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
FeatureFlagService,
|
|
12
|
+
FeatureFlagServiceProvider,
|
|
13
|
+
} from 'src/contexts/featureFlagServiceContext/featureFlagServiceContext';
|
|
11
14
|
import { userIdAtom } from 'src/atoms/app';
|
|
12
|
-
import
|
|
15
|
+
import { AmplitudeService } from 'src/services/amplitudeService/amplitudeService';
|
|
13
16
|
import { AmplitudeProvider, SpiffyMetricsEventName, useAmplitude } from '../amplitudeContext';
|
|
14
17
|
|
|
15
|
-
// Mock
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Object.defineProperty(global, 'crypto', {
|
|
47
|
-
value: {
|
|
48
|
-
subtle: {
|
|
49
|
-
digest: mockDigest,
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
writable: true,
|
|
18
|
+
// Mock AmplitudeService
|
|
19
|
+
const mockTrackEvent = vi.fn().mockResolvedValue(undefined);
|
|
20
|
+
const mockSetSupplementalDefaultProps = vi.fn();
|
|
21
|
+
const mockIsReady = vi.fn().mockReturnValue(true);
|
|
22
|
+
|
|
23
|
+
vi.mock('src/services/amplitudeService/amplitudeService', async () => {
|
|
24
|
+
const actual = await vi.importActual<
|
|
25
|
+
typeof import('src/services/amplitudeService/amplitudeService')
|
|
26
|
+
>('src/services/amplitudeService/amplitudeService');
|
|
27
|
+
|
|
28
|
+
class MockAmplitudeService {
|
|
29
|
+
trackEvent = mockTrackEvent;
|
|
30
|
+
|
|
31
|
+
setSupplementalDefaultProps = mockSetSupplementalDefaultProps;
|
|
32
|
+
|
|
33
|
+
get isReady(): boolean {
|
|
34
|
+
// eslint-disable-next-line class-methods-use-this
|
|
35
|
+
return mockIsReady();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function MockAmplitudeServiceConstructor() {
|
|
40
|
+
return new MockAmplitudeService();
|
|
41
|
+
}
|
|
42
|
+
MockAmplitudeServiceConstructor.prototype = MockAmplitudeService.prototype;
|
|
43
|
+
const mockAmplitudeServiceConstructor = vi.fn(MockAmplitudeServiceConstructor);
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
...actual,
|
|
47
|
+
AmplitudeService: mockAmplitudeServiceConstructor,
|
|
48
|
+
};
|
|
53
49
|
});
|
|
54
50
|
|
|
55
51
|
// Component that uses the useAmplitude hook
|
|
@@ -125,13 +121,23 @@ const CombinedContextComponent: React.FC = () => {
|
|
|
125
121
|
);
|
|
126
122
|
};
|
|
127
123
|
|
|
124
|
+
// FeatureFlagService
|
|
125
|
+
const testFeatureFlagService = new FeatureFlagService([]);
|
|
126
|
+
|
|
128
127
|
// Wrapper component with all required providers
|
|
129
128
|
const TestWrapper: React.FC<{
|
|
130
129
|
children: React.ReactNode;
|
|
131
130
|
amplitudeApiKey?: string;
|
|
132
131
|
userIdOverride?: string;
|
|
133
132
|
userIdDefault?: string;
|
|
134
|
-
|
|
133
|
+
externalAmplitudeService?: AmplitudeService;
|
|
134
|
+
}> = ({
|
|
135
|
+
children,
|
|
136
|
+
amplitudeApiKey = 'test-amplitude-key',
|
|
137
|
+
userIdOverride,
|
|
138
|
+
userIdDefault,
|
|
139
|
+
externalAmplitudeService,
|
|
140
|
+
}) => {
|
|
135
141
|
// Set up localStorage with user IDs if provided
|
|
136
142
|
React.useEffect(() => {
|
|
137
143
|
if (userIdOverride) {
|
|
@@ -155,8 +161,10 @@ const TestWrapper: React.FC<{
|
|
|
155
161
|
>
|
|
156
162
|
<LocalStorageProvider>
|
|
157
163
|
<UserIdentityProvider>
|
|
158
|
-
<FeatureFlagServiceProvider
|
|
159
|
-
<AmplitudeProvider
|
|
164
|
+
<FeatureFlagServiceProvider featureFlagService={testFeatureFlagService}>
|
|
165
|
+
<AmplitudeProvider externalAmplitudeService={externalAmplitudeService}>
|
|
166
|
+
{children}
|
|
167
|
+
</AmplitudeProvider>
|
|
160
168
|
</FeatureFlagServiceProvider>
|
|
161
169
|
</UserIdentityProvider>
|
|
162
170
|
</LocalStorageProvider>
|
|
@@ -165,17 +173,19 @@ const TestWrapper: React.FC<{
|
|
|
165
173
|
);
|
|
166
174
|
};
|
|
167
175
|
|
|
168
|
-
describe('AmplitudeProvider
|
|
176
|
+
describe('AmplitudeProvider - React Context Integration', () => {
|
|
169
177
|
beforeEach(() => {
|
|
170
178
|
vi.clearAllMocks();
|
|
171
179
|
if (typeof localStorage !== 'undefined') {
|
|
172
180
|
localStorage.clear();
|
|
173
181
|
}
|
|
174
182
|
// Reset mocks
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
183
|
+
mockTrackEvent.mockClear();
|
|
184
|
+
mockSetSupplementalDefaultProps.mockClear();
|
|
185
|
+
mockIsReady.mockReturnValue(true);
|
|
186
|
+
if (AmplitudeService && typeof AmplitudeService === 'function') {
|
|
187
|
+
(AmplitudeService as unknown as ReturnType<typeof vi.fn>).mockClear();
|
|
188
|
+
}
|
|
179
189
|
});
|
|
180
190
|
|
|
181
191
|
describe('Integration with UserIdentityContext - userIdAtom', () => {
|
|
@@ -209,10 +219,12 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
209
219
|
});
|
|
210
220
|
|
|
211
221
|
await waitFor(() => {
|
|
212
|
-
expect(
|
|
213
|
-
const callArgs =
|
|
214
|
-
expect(callArgs[0]).
|
|
215
|
-
|
|
222
|
+
expect(mockTrackEvent).toHaveBeenCalled();
|
|
223
|
+
const callArgs = mockTrackEvent.mock.calls[0];
|
|
224
|
+
expect(callArgs[0]).toEqual({
|
|
225
|
+
eventName: SpiffyMetricsEventName.ChatUserMessageInput,
|
|
226
|
+
eventProps: { message: 'test message' },
|
|
227
|
+
});
|
|
216
228
|
});
|
|
217
229
|
});
|
|
218
230
|
|
|
@@ -233,9 +245,12 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
233
245
|
});
|
|
234
246
|
|
|
235
247
|
await waitFor(() => {
|
|
236
|
-
expect(
|
|
237
|
-
const callArgs =
|
|
238
|
-
expect(callArgs[
|
|
248
|
+
expect(mockTrackEvent).toHaveBeenCalled();
|
|
249
|
+
const callArgs = mockTrackEvent.mock.calls[0];
|
|
250
|
+
expect(callArgs[0]).toEqual({
|
|
251
|
+
eventName: SpiffyMetricsEventName.ChatUserMessageInput,
|
|
252
|
+
eventProps: { message: 'test message' },
|
|
253
|
+
});
|
|
239
254
|
});
|
|
240
255
|
});
|
|
241
256
|
|
|
@@ -260,14 +275,16 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
260
275
|
});
|
|
261
276
|
|
|
262
277
|
await waitFor(() => {
|
|
263
|
-
expect(
|
|
264
|
-
const callArgs =
|
|
265
|
-
expect(callArgs[
|
|
266
|
-
|
|
278
|
+
expect(mockTrackEvent).toHaveBeenCalled();
|
|
279
|
+
const callArgs = mockTrackEvent.mock.calls[0];
|
|
280
|
+
expect(callArgs[0]).toEqual({
|
|
281
|
+
eventName: SpiffyMetricsEventName.ChatUserMessageInput,
|
|
282
|
+
eventProps: { message: 'test message' },
|
|
283
|
+
});
|
|
267
284
|
});
|
|
268
285
|
});
|
|
269
286
|
|
|
270
|
-
it('should initialize
|
|
287
|
+
it('should initialize AmplitudeService with userId from UserIdentityContext', async () => {
|
|
271
288
|
const testUserId = 'init-user-id-345';
|
|
272
289
|
render(
|
|
273
290
|
<TestWrapper userIdOverride={testUserId}>
|
|
@@ -276,9 +293,10 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
276
293
|
);
|
|
277
294
|
|
|
278
295
|
await waitFor(() => {
|
|
279
|
-
expect(
|
|
280
|
-
const
|
|
281
|
-
|
|
296
|
+
expect(AmplitudeService).toHaveBeenCalled();
|
|
297
|
+
const serviceCallArgs = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
|
|
298
|
+
.calls[0];
|
|
299
|
+
expect(serviceCallArgs[0]).toHaveProperty('userId', testUserId);
|
|
282
300
|
});
|
|
283
301
|
});
|
|
284
302
|
});
|
|
@@ -305,105 +323,6 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
305
323
|
});
|
|
306
324
|
});
|
|
307
325
|
|
|
308
|
-
describe('Event tracking with UserIdentityContext userId', () => {
|
|
309
|
-
it('should include user.id in all tracked events', async () => {
|
|
310
|
-
const testUserId = 'event-user-id-901';
|
|
311
|
-
render(
|
|
312
|
-
<TestWrapper userIdOverride={testUserId}>
|
|
313
|
-
<MockAmplitudeComponent />
|
|
314
|
-
</TestWrapper>,
|
|
315
|
-
);
|
|
316
|
-
|
|
317
|
-
await waitFor(() => {
|
|
318
|
-
expect(screen.getByTestId('is-ready').textContent).toBe('true');
|
|
319
|
-
});
|
|
320
|
-
|
|
321
|
-
await act(async () => {
|
|
322
|
-
screen.getByTestId('track-event-button').click();
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
await waitFor(() => {
|
|
326
|
-
expect(mockTrack).toHaveBeenCalled();
|
|
327
|
-
const callArgs = mockTrack.mock.calls[0];
|
|
328
|
-
expect(callArgs[1]).toHaveProperty('user.id', testUserId);
|
|
329
|
-
});
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
it('should include user.id in default tracking props', async () => {
|
|
333
|
-
const testUserId = 'default-props-user-id';
|
|
334
|
-
render(
|
|
335
|
-
<TestWrapper userIdOverride={testUserId}>
|
|
336
|
-
<MockAmplitudeComponent />
|
|
337
|
-
</TestWrapper>,
|
|
338
|
-
);
|
|
339
|
-
|
|
340
|
-
await waitFor(() => {
|
|
341
|
-
expect(screen.getByTestId('is-ready').textContent).toBe('true');
|
|
342
|
-
});
|
|
343
|
-
|
|
344
|
-
await act(async () => {
|
|
345
|
-
screen.getByTestId('track-event-button').click();
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
await waitFor(() => {
|
|
349
|
-
expect(mockTrack).toHaveBeenCalled();
|
|
350
|
-
const callArgs = mockTrack.mock.calls[0];
|
|
351
|
-
const eventProps = callArgs[1];
|
|
352
|
-
expect(eventProps['user.id']).toBe(testUserId);
|
|
353
|
-
expect(eventProps['cdp.user_id']).toBe(null);
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
it('should track multiple events with correct userId', async () => {
|
|
358
|
-
const testUserId = 'multi-event-user-id';
|
|
359
|
-
const MultiEventComponent: React.FC = () => {
|
|
360
|
-
const amplitude = useAmplitude();
|
|
361
|
-
|
|
362
|
-
const trackMultiple = () => {
|
|
363
|
-
amplitude.trackEvent({
|
|
364
|
-
eventName: SpiffyMetricsEventName.ChatUserMessageInput,
|
|
365
|
-
eventProps: { event1: true },
|
|
366
|
-
});
|
|
367
|
-
amplitude.trackEvent({
|
|
368
|
-
eventName: SpiffyMetricsEventName.ChatSuggestionClicked,
|
|
369
|
-
eventProps: { event2: true },
|
|
370
|
-
});
|
|
371
|
-
};
|
|
372
|
-
|
|
373
|
-
return (
|
|
374
|
-
<button
|
|
375
|
-
data-testid="track-multiple"
|
|
376
|
-
type="button"
|
|
377
|
-
onClick={trackMultiple}
|
|
378
|
-
>
|
|
379
|
-
Track Multiple
|
|
380
|
-
</button>
|
|
381
|
-
);
|
|
382
|
-
};
|
|
383
|
-
|
|
384
|
-
render(
|
|
385
|
-
<TestWrapper userIdOverride={testUserId}>
|
|
386
|
-
<MultiEventComponent />
|
|
387
|
-
</TestWrapper>,
|
|
388
|
-
);
|
|
389
|
-
|
|
390
|
-
await waitFor(() => {
|
|
391
|
-
expect(screen.getByTestId('track-multiple')).toBeInTheDocument();
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
await act(async () => {
|
|
395
|
-
screen.getByTestId('track-multiple').click();
|
|
396
|
-
});
|
|
397
|
-
|
|
398
|
-
await waitFor(() => {
|
|
399
|
-
expect(mockTrack).toHaveBeenCalledTimes(2);
|
|
400
|
-
mockTrack.mock.calls.forEach((call: any[]) => {
|
|
401
|
-
expect(call[1]).toHaveProperty('user.id', testUserId);
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
});
|
|
405
|
-
});
|
|
406
|
-
|
|
407
326
|
describe('Context readiness and initialization', () => {
|
|
408
327
|
it('should wait for UserIdentityContext to be ready before becoming ready', async () => {
|
|
409
328
|
render(
|
|
@@ -419,7 +338,7 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
419
338
|
});
|
|
420
339
|
});
|
|
421
340
|
|
|
422
|
-
it('should initialize
|
|
341
|
+
it('should initialize AmplitudeService with correct config from UserIdentityContext', async () => {
|
|
423
342
|
const testUserId = 'init-client-user-id';
|
|
424
343
|
render(
|
|
425
344
|
<TestWrapper userIdOverride={testUserId}>
|
|
@@ -428,13 +347,14 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
428
347
|
);
|
|
429
348
|
|
|
430
349
|
await waitFor(() => {
|
|
431
|
-
expect(
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
350
|
+
expect(AmplitudeService).toHaveBeenCalled();
|
|
351
|
+
const serviceCallArgs = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
|
|
352
|
+
.calls[0];
|
|
353
|
+
expect(serviceCallArgs[0]).toMatchObject({
|
|
354
|
+
userId: testUserId,
|
|
355
|
+
amplitudeApiKey: 'test-amplitude-key',
|
|
356
|
+
dataResidency: 'US',
|
|
357
|
+
});
|
|
438
358
|
});
|
|
439
359
|
});
|
|
440
360
|
|
|
@@ -451,7 +371,7 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
451
371
|
>
|
|
452
372
|
<LocalStorageProvider>
|
|
453
373
|
<UserIdentityProvider>
|
|
454
|
-
<FeatureFlagServiceProvider
|
|
374
|
+
<FeatureFlagServiceProvider featureFlagService={testFeatureFlagService}>
|
|
455
375
|
<AmplitudeProvider>{children}</AmplitudeProvider>
|
|
456
376
|
</FeatureFlagServiceProvider>
|
|
457
377
|
</UserIdentityProvider>
|
|
@@ -461,7 +381,7 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
461
381
|
);
|
|
462
382
|
};
|
|
463
383
|
|
|
464
|
-
|
|
384
|
+
render(
|
|
465
385
|
<IncompleteWrapper>
|
|
466
386
|
<div data-testid="should-not-render">Should not render</div>
|
|
467
387
|
</IncompleteWrapper>,
|
|
@@ -474,17 +394,20 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
474
394
|
});
|
|
475
395
|
});
|
|
476
396
|
|
|
477
|
-
describe('
|
|
478
|
-
it('should
|
|
479
|
-
const
|
|
480
|
-
|
|
481
|
-
|
|
397
|
+
describe('External service injection', () => {
|
|
398
|
+
it('should use external AmplitudeService when provided', async () => {
|
|
399
|
+
const externalService = new AmplitudeService({
|
|
400
|
+
userId: 'external-user-id',
|
|
401
|
+
amplitudeApiKey: 'external-api-key',
|
|
402
|
+
dataResidency: 'EU',
|
|
403
|
+
featureFlagService: new FeatureFlagService([]),
|
|
404
|
+
env: 'test', // Provide required fields to match AmplitudeServiceConfig
|
|
405
|
+
contextSource: 'test-source',
|
|
406
|
+
orgShortName: 'test-org',
|
|
482
407
|
});
|
|
483
408
|
|
|
484
|
-
const logErrorSpy = vi.spyOn(Logger, 'logError');
|
|
485
|
-
|
|
486
409
|
render(
|
|
487
|
-
<TestWrapper
|
|
410
|
+
<TestWrapper externalAmplitudeService={externalService}>
|
|
488
411
|
<MockAmplitudeComponent />
|
|
489
412
|
</TestWrapper>,
|
|
490
413
|
);
|
|
@@ -498,13 +421,100 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
|
|
|
498
421
|
});
|
|
499
422
|
|
|
500
423
|
await waitFor(() => {
|
|
501
|
-
expect(
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
424
|
+
expect(mockTrackEvent).toHaveBeenCalled();
|
|
425
|
+
const callArgs = mockTrackEvent.mock.calls[0];
|
|
426
|
+
expect(callArgs[0]).toEqual({
|
|
427
|
+
eventName: SpiffyMetricsEventName.ChatUserMessageInput,
|
|
428
|
+
eventProps: { message: 'test message' },
|
|
429
|
+
});
|
|
430
|
+
});
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
it('should not create new service when external service is provided', async () => {
|
|
434
|
+
// Provide all required fields to match AmplitudeServiceConfig
|
|
435
|
+
const externalService = new AmplitudeService({
|
|
436
|
+
userId: 'external-user-id',
|
|
437
|
+
amplitudeApiKey: 'external-api-key',
|
|
438
|
+
dataResidency: 'EU',
|
|
439
|
+
featureFlagService: new FeatureFlagService([]),
|
|
440
|
+
env: 'test',
|
|
441
|
+
contextSource: 'test-source',
|
|
442
|
+
orgShortName: 'test-org',
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
const serviceCallCountBefore = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
|
|
446
|
+
.calls.length;
|
|
447
|
+
|
|
448
|
+
render(
|
|
449
|
+
<TestWrapper externalAmplitudeService={externalService}>
|
|
450
|
+
<MockAmplitudeComponent />
|
|
451
|
+
</TestWrapper>,
|
|
452
|
+
);
|
|
453
|
+
|
|
454
|
+
await waitFor(() => {
|
|
455
|
+
expect(screen.getByTestId('is-ready').textContent).toBe('true');
|
|
456
|
+
});
|
|
457
|
+
|
|
458
|
+
// Should not have created an additional service instance
|
|
459
|
+
// The provider should use the external service directly
|
|
460
|
+
const serviceCallCountAfter = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
|
|
461
|
+
.calls.length;
|
|
462
|
+
expect(serviceCallCountAfter).toBe(serviceCallCountBefore);
|
|
463
|
+
});
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
describe('useAmplitude hook', () => {
|
|
467
|
+
it('should throw error when used outside provider', () => {
|
|
468
|
+
// Suppress console.error for this test
|
|
469
|
+
const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {});
|
|
470
|
+
|
|
471
|
+
expect(() => {
|
|
472
|
+
render(<MockAmplitudeComponent />);
|
|
473
|
+
}).toThrow('useAmplitude must be used within AmplitudeProvider');
|
|
474
|
+
|
|
475
|
+
consoleError.mockRestore();
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
it('should provide amplitude context when used within provider', async () => {
|
|
479
|
+
render(
|
|
480
|
+
<TestWrapper>
|
|
481
|
+
<MockAmplitudeComponent />
|
|
482
|
+
</TestWrapper>,
|
|
483
|
+
);
|
|
484
|
+
|
|
485
|
+
await waitFor(() => {
|
|
486
|
+
expect(screen.getByTestId('amplitude-component')).toBeInTheDocument();
|
|
487
|
+
expect(screen.getByTestId('is-ready')).toBeInTheDocument();
|
|
488
|
+
});
|
|
489
|
+
});
|
|
490
|
+
});
|
|
491
|
+
|
|
492
|
+
describe('Service instance management', () => {
|
|
493
|
+
it('should update service when dependencies change', async () => {
|
|
494
|
+
const { rerender } = render(
|
|
495
|
+
<TestWrapper amplitudeApiKey="initial-key">
|
|
496
|
+
<MockAmplitudeComponent />
|
|
497
|
+
</TestWrapper>,
|
|
498
|
+
);
|
|
499
|
+
|
|
500
|
+
await waitFor(() => {
|
|
501
|
+
expect(screen.getByTestId('is-ready').textContent).toBe('true');
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
const initialServiceCalls = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
|
|
505
|
+
.calls.length;
|
|
506
|
+
|
|
507
|
+
rerender(
|
|
508
|
+
<TestWrapper amplitudeApiKey="updated-key">
|
|
509
|
+
<MockAmplitudeComponent />
|
|
510
|
+
</TestWrapper>,
|
|
511
|
+
);
|
|
512
|
+
|
|
513
|
+
// Service should be recreated with new config
|
|
514
|
+
await waitFor(() => {
|
|
515
|
+
const serviceCallCount = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
|
|
516
|
+
.calls.length;
|
|
517
|
+
expect(serviceCallCount).toBeGreaterThan(initialServiceCalls);
|
|
508
518
|
});
|
|
509
519
|
});
|
|
510
520
|
});
|