@envive-ai/react-hooks 0.2.10 → 0.3.0
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/README.md +0 -33
- package/dist/{chunk-CUT6urMc.cjs → _virtual/rolldown_runtime.cjs} +11 -12
- package/dist/application/commerce-api.cjs +319 -0
- package/dist/application/commerce-api.js +318 -0
- package/dist/application/logging/logger.cjs +21 -0
- package/dist/application/logging/logger.js +20 -0
- package/dist/application/models/api/context.d.cts +8 -0
- package/dist/application/models/api/context.d.ts +8 -0
- package/dist/application/models/api/generationParams.d.cts +8 -0
- package/dist/application/models/api/generationParams.d.ts +8 -0
- package/dist/application/models/api/nextMessageRequest.d.cts +15 -0
- package/dist/application/models/api/nextMessageRequest.d.ts +15 -0
- package/dist/application/models/api/orgAnalyticsConfig.d.cts +20 -0
- package/dist/application/models/api/orgAnalyticsConfig.d.ts +20 -0
- package/dist/application/models/api/orgConfigResults.d.cts +43 -0
- package/dist/application/models/api/orgConfigResults.d.ts +43 -0
- package/dist/application/models/api/organizationConfig.d.cts +16 -0
- package/dist/application/models/api/organizationConfig.d.ts +16 -0
- package/dist/application/models/api/response.d.cts +94 -0
- package/dist/application/models/api/response.d.ts +94 -0
- package/dist/application/models/api/responseGenerics.d.cts +60 -0
- package/dist/application/models/api/responseGenerics.d.ts +60 -0
- package/dist/{search-6RrxBXD6.d.cts → application/models/api/search.d.cts} +2 -2
- package/dist/{search-DrJiCT7d.d.ts → application/models/api/search.d.ts} +2 -2
- package/dist/application/models/api/suggestion.d.cts +8 -0
- package/dist/application/models/api/suggestion.d.ts +8 -0
- package/dist/application/models/api/supportedEventRequest.d.cts +12 -0
- package/dist/application/models/api/supportedEventRequest.d.ts +12 -0
- package/dist/application/models/api/userEvent.d.cts +57 -0
- package/dist/application/models/api/userEvent.d.ts +57 -0
- package/dist/application/models/cachedValue.d.cts +8 -0
- package/dist/application/models/cachedValue.d.ts +8 -0
- package/dist/application/models/chatElementDisplayLocation.cjs +29 -0
- package/dist/application/models/chatElementDisplayLocation.d.cts +26 -0
- package/dist/application/models/chatElementDisplayLocation.d.ts +26 -0
- package/dist/application/models/chatElementDisplayLocation.js +28 -0
- package/dist/application/models/clientDetails.d.cts +18 -0
- package/dist/application/models/clientDetails.d.ts +18 -0
- package/dist/application/models/colorsConfig.cjs +29 -0
- package/dist/application/models/colorsConfig.d.cts +26 -0
- package/dist/application/models/colorsConfig.d.ts +26 -0
- package/dist/application/models/colorsConfig.js +27 -0
- package/dist/application/models/conversationalSearchIds.d.cts +9 -0
- package/dist/application/models/conversationalSearchIds.d.ts +9 -0
- package/dist/application/models/dataLayer.d.cts +45 -0
- package/dist/application/models/dataLayer.d.ts +45 -0
- package/dist/application/models/events.cjs +11 -0
- package/dist/application/models/events.d.cts +8 -0
- package/dist/application/models/events.d.ts +8 -0
- package/dist/application/models/events.js +10 -0
- package/dist/application/models/featureGates.cjs +27 -0
- package/dist/application/models/featureGates.d.cts +24 -0
- package/dist/application/models/featureGates.d.ts +24 -0
- package/dist/application/models/featureGates.js +26 -0
- package/dist/application/models/frontendConfig.d.cts +13 -0
- package/dist/application/models/frontendConfig.d.ts +13 -0
- package/dist/application/models/googleAnalyticsEvents.cjs +11 -0
- package/dist/application/models/googleAnalyticsEvents.d.cts +8 -0
- package/dist/application/models/googleAnalyticsEvents.d.ts +8 -0
- package/dist/application/models/googleAnalyticsEvents.js +10 -0
- package/dist/application/models/graphql/index.cjs +6 -5
- package/dist/application/models/graphql/index.d.cts +3 -1
- package/dist/application/models/graphql/index.d.ts +3 -1
- package/dist/application/models/graphql/index.js +3 -2
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.cjs +18 -0
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.d.cts +25 -0
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.d.ts +25 -0
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.js +18 -0
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.cjs +18 -0
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.d.cts +75 -0
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.d.ts +75 -0
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.js +18 -0
- package/dist/application/models/graphql/queries/getMerchantOrgIdQuery.cjs +15 -0
- package/dist/application/models/graphql/queries/getMerchantOrgIdQuery.d.cts +5 -0
- package/dist/application/models/graphql/queries/getMerchantOrgIdQuery.d.ts +5 -0
- package/dist/application/models/graphql/queries/getMerchantOrgIdQuery.js +14 -0
- package/dist/application/models/guards/api/index.cjs +24 -15
- package/dist/application/models/guards/api/index.d.cts +12 -3
- package/dist/application/models/guards/api/index.d.ts +12 -3
- package/dist/application/models/guards/api/index.js +12 -3
- package/dist/application/models/guards/api/isApiFormResponse.cjs +51 -0
- package/dist/application/models/guards/api/isApiFormResponse.d.cts +16 -0
- package/dist/application/models/guards/api/isApiFormResponse.d.ts +16 -0
- package/dist/application/models/guards/api/isApiFormResponse.js +50 -0
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +29 -0
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +28 -0
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +82 -0
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.d.cts +17 -0
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.d.ts +17 -0
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +82 -0
- package/dist/application/models/guards/api/isApiOrgConfigResults.cjs +130 -0
- package/dist/application/models/guards/api/isApiOrgConfigResults.d.cts +19 -0
- package/dist/application/models/guards/api/isApiOrgConfigResults.d.ts +19 -0
- package/dist/application/models/guards/api/isApiOrgConfigResults.js +129 -0
- package/dist/application/models/guards/api/isApiOrganizationConfig.cjs +116 -0
- package/dist/application/models/guards/api/isApiOrganizationConfig.d.cts +31 -0
- package/dist/application/models/guards/api/isApiOrganizationConfig.d.ts +31 -0
- package/dist/application/models/guards/api/isApiOrganizationConfig.js +116 -0
- package/dist/application/models/guards/api/isApiPDPEventAttributes.cjs +13 -0
- package/dist/application/models/guards/api/isApiPDPEventAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiPDPEventAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiPDPEventAttributes.js +12 -0
- package/dist/application/models/guards/api/isApiPLPEventAttributes.cjs +20 -0
- package/dist/application/models/guards/api/isApiPLPEventAttributes.d.cts +8 -0
- package/dist/application/models/guards/api/isApiPLPEventAttributes.d.ts +8 -0
- package/dist/application/models/guards/api/isApiPLPEventAttributes.js +18 -0
- package/dist/application/models/guards/api/isApiPageResponseAttributes.cjs +13 -0
- package/dist/application/models/guards/api/isApiPageResponseAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiPageResponseAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiPageResponseAttributes.js +12 -0
- package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +51 -0
- package/dist/application/models/guards/api/isApiProductResponseAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiProductResponseAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiProductResponseAttributes.js +51 -0
- package/dist/application/models/guards/api/isApiProductSearchAttributes.cjs +12 -0
- package/dist/application/models/guards/api/isApiProductSearchAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiProductSearchAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiProductSearchAttributes.js +11 -0
- package/dist/application/models/guards/api/isApiProductSearchFilterAttributes.cjs +11 -0
- package/dist/application/models/guards/api/isApiProductSearchFilterAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiProductSearchFilterAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiProductSearchFilterAttributes.js +10 -0
- package/dist/application/models/guards/api/isApiQueryTypedEventAttributes.cjs +7 -0
- package/dist/application/models/guards/api/isApiQueryTypedEventAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiQueryTypedEventAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiQueryTypedEventAttributes.js +6 -0
- package/dist/application/models/guards/api/isApiResponse.cjs +33 -0
- package/dist/application/models/guards/api/isApiResponse.d.cts +7 -0
- package/dist/application/models/guards/api/isApiResponse.d.ts +7 -0
- package/dist/application/models/guards/api/isApiResponse.js +32 -0
- package/dist/application/models/guards/api/isApiReviewResponseAttributes.cjs +16 -0
- package/dist/application/models/guards/api/isApiReviewResponseAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiReviewResponseAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiReviewResponseAttributes.js +16 -0
- package/dist/application/models/guards/api/isApiReviewRichInformation.cjs +15 -0
- package/dist/application/models/guards/api/isApiReviewRichInformation.d.cts +7 -0
- package/dist/application/models/guards/api/isApiReviewRichInformation.d.ts +7 -0
- package/dist/application/models/guards/api/isApiReviewRichInformation.js +14 -0
- package/dist/application/models/guards/api/isApiSearchEventAttributes.cjs +14 -0
- package/dist/application/models/guards/api/isApiSearchEventAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiSearchEventAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiSearchEventAttributes.js +13 -0
- package/dist/application/models/guards/api/isApiSuggestion.cjs +17 -0
- package/dist/application/models/guards/api/isApiSuggestion.d.cts +7 -0
- package/dist/application/models/guards/api/isApiSuggestion.d.ts +7 -0
- package/dist/application/models/guards/api/isApiSuggestion.js +16 -0
- package/dist/application/models/guards/api/isApiSuggestionClickedEventAttributes.cjs +7 -0
- package/dist/application/models/guards/api/isApiSuggestionClickedEventAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiSuggestionClickedEventAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiSuggestionClickedEventAttributes.js +6 -0
- package/dist/application/models/guards/api/isApiTextResponseAttributes.cjs +7 -0
- package/dist/application/models/guards/api/isApiTextResponseAttributes.d.cts +7 -0
- package/dist/application/models/guards/api/isApiTextResponseAttributes.d.ts +7 -0
- package/dist/application/models/guards/api/isApiTextResponseAttributes.js +6 -0
- package/dist/application/models/guards/api/isApiUserEvent.cjs +15 -0
- package/dist/application/models/guards/api/isApiUserEvent.d.cts +7 -0
- package/dist/application/models/guards/api/isApiUserEvent.d.ts +7 -0
- package/dist/application/models/guards/api/isApiUserEvent.js +14 -0
- package/dist/application/models/guards/graphQL/isGraphQLColorsConfig.cjs +46 -0
- package/dist/application/models/guards/graphQL/isGraphQLColorsConfig.d.cts +7 -0
- package/dist/application/models/guards/graphQL/isGraphQLColorsConfig.d.ts +7 -0
- package/dist/application/models/guards/graphQL/isGraphQLColorsConfig.js +46 -0
- package/dist/application/models/guards/isBaseEcommerceEvent.cjs +14 -0
- package/dist/application/models/guards/isBaseEcommerceEvent.d.cts +15 -0
- package/dist/application/models/guards/isBaseEcommerceEvent.d.ts +15 -0
- package/dist/application/models/guards/isBaseEcommerceEvent.js +13 -0
- package/dist/application/models/guards/isGA4EcommerceEvent.cjs +14 -0
- package/dist/application/models/guards/isGA4EcommerceEvent.d.cts +15 -0
- package/dist/application/models/guards/isGA4EcommerceEvent.d.ts +15 -0
- package/dist/application/models/guards/isGA4EcommerceEvent.js +13 -0
- package/dist/application/models/guards/isLegacyUAEcommerceEvent.cjs +14 -0
- package/dist/application/models/guards/isLegacyUAEcommerceEvent.d.cts +15 -0
- package/dist/application/models/guards/isLegacyUAEcommerceEvent.d.ts +15 -0
- package/dist/application/models/guards/isLegacyUAEcommerceEvent.js +13 -0
- package/dist/application/models/guards/isMobilePLPChatPlacementParameter.cjs +7 -0
- package/dist/application/models/guards/isMobilePLPChatPlacementParameter.d.cts +8 -0
- package/dist/application/models/guards/isMobilePLPChatPlacementParameter.d.ts +8 -0
- package/dist/application/models/guards/isMobilePLPChatPlacementParameter.js +6 -0
- package/dist/application/models/guards/isSpanxTakeAQuizCtaParameter.cjs +7 -0
- package/dist/application/models/guards/isSpanxTakeAQuizCtaParameter.d.cts +7 -0
- package/dist/application/models/guards/isSpanxTakeAQuizCtaParameter.d.ts +7 -0
- package/dist/application/models/guards/isSpanxTakeAQuizCtaParameter.js +6 -0
- package/dist/application/models/guards/isVariantInfo.cjs +19 -0
- package/dist/application/models/guards/isVariantInfo.d.cts +15 -0
- package/dist/application/models/guards/isVariantInfo.d.ts +15 -0
- package/dist/application/models/guards/isVariantInfo.js +18 -0
- package/dist/application/models/guards/utils.cjs +27 -2
- package/dist/application/models/guards/utils.d.cts +15 -2
- package/dist/application/models/guards/utils.d.ts +15 -2
- package/dist/application/models/guards/utils.js +26 -2
- package/dist/application/models/index.cjs +111 -67
- package/dist/application/models/index.d.cts +84 -12
- package/dist/application/models/index.d.ts +84 -12
- package/dist/application/models/index.js +54 -10
- package/dist/application/models/localStorageEventListener.d.cts +8 -0
- package/dist/application/models/localStorageEventListener.d.ts +8 -0
- package/dist/application/models/message.cjs +29 -0
- package/dist/application/models/message.d.cts +107 -0
- package/dist/application/models/message.d.ts +107 -0
- package/dist/application/models/message.js +27 -0
- package/dist/application/models/mobilePLPChatPlacementParameter.d.cts +7 -0
- package/dist/application/models/mobilePLPChatPlacementParameter.d.ts +7 -0
- package/dist/application/models/orgsEnum.cjs +41 -0
- package/dist/application/models/orgsEnum.d.cts +39 -0
- package/dist/application/models/orgsEnum.d.ts +39 -0
- package/dist/application/models/orgsEnum.js +40 -0
- package/dist/application/models/productExperiment.cjs +10 -0
- package/dist/application/models/productExperiment.d.cts +7 -0
- package/dist/application/models/productExperiment.d.ts +7 -0
- package/dist/application/models/productExperiment.js +9 -0
- package/dist/application/models/spanxTakeAQuizCtaParameter.d.cts +8 -0
- package/dist/application/models/spanxTakeAQuizCtaParameter.d.ts +8 -0
- package/dist/application/models/spiffyWidgets.cjs +24 -0
- package/dist/application/models/spiffyWidgets.d.cts +21 -0
- package/dist/application/models/spiffyWidgets.d.ts +21 -0
- package/dist/application/models/spiffyWidgets.js +23 -0
- package/dist/application/models/utilityTypes/camelCase.d.cts +70 -0
- package/dist/application/models/utilityTypes/camelCase.d.ts +70 -0
- package/dist/application/models/utilityTypes/camelCasedPropertiesDeep.d.cts +56 -0
- package/dist/application/models/utilityTypes/camelCasedPropertiesDeep.d.ts +56 -0
- package/dist/application/models/utilityTypes/delimiterCase.d.cts +67 -0
- package/dist/application/models/utilityTypes/delimiterCase.d.ts +67 -0
- package/dist/application/models/utilityTypes/delimiterCasedPropertiesDeep.d.cts +55 -0
- package/dist/application/models/utilityTypes/delimiterCasedPropertiesDeep.d.ts +55 -0
- package/dist/application/models/utilityTypes/index.cjs +0 -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 +0 -2
- package/dist/application/models/utilityTypes/internal.d.cts +33 -0
- package/dist/application/models/utilityTypes/internal.d.ts +33 -0
- package/dist/application/models/utilityTypes/primitive.d.cts +10 -0
- package/dist/application/models/utilityTypes/primitive.d.ts +10 -0
- package/dist/application/models/utilityTypes/snakeCasedPropertiesDeep.d.cts +52 -0
- package/dist/application/models/utilityTypes/snakeCasedPropertiesDeep.d.ts +52 -0
- package/dist/application/models/utilityTypes/splitWords.d.cts +29 -0
- package/dist/application/models/utilityTypes/splitWords.d.ts +29 -0
- package/dist/application/models/utilityTypes/trim.d.cts +29 -0
- package/dist/application/models/utilityTypes/trim.d.ts +29 -0
- package/dist/application/models/utilityTypes/unknownArray.d.cts +29 -0
- package/dist/application/models/utilityTypes/unknownArray.d.ts +29 -0
- package/dist/application/models/utils/snakeToCamelTransformer.cjs +66 -0
- package/dist/application/models/utils/snakeToCamelTransformer.d.cts +16 -0
- package/dist/application/models/utils/snakeToCamelTransformer.d.ts +16 -0
- package/dist/application/models/utils/snakeToCamelTransformer.js +64 -0
- package/dist/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.cjs +46 -0
- package/dist/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.d.cts +16 -0
- package/dist/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.d.ts +16 -0
- package/dist/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.js +45 -0
- package/dist/application/models/validators/validateGraphQLColorsConfig.cjs +10 -0
- package/dist/application/models/validators/validateGraphQLColorsConfig.d.cts +7 -0
- package/dist/application/models/validators/validateGraphQLColorsConfig.d.ts +7 -0
- package/dist/application/models/validators/validateGraphQLColorsConfig.js +10 -0
- package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +231 -0
- package/dist/application/models/validators/validateGraphQLFrontendConfig.d.cts +11 -0
- package/dist/application/models/validators/validateGraphQLFrontendConfig.d.ts +11 -0
- package/dist/application/models/validators/validateGraphQLFrontendConfig.js +228 -0
- package/dist/application/models/validators/validateGraphQLOrgId.cjs +10 -0
- package/dist/application/models/validators/validateGraphQLOrgId.d.cts +5 -0
- package/dist/application/models/validators/validateGraphQLOrgId.d.ts +5 -0
- package/dist/application/models/validators/validateGraphQLOrgId.js +9 -0
- package/dist/application/models/validators/validateMobilePLPChatPlacementParameter.cjs +11 -0
- package/dist/application/models/validators/validateMobilePLPChatPlacementParameter.d.cts +7 -0
- package/dist/application/models/validators/validateMobilePLPChatPlacementParameter.d.ts +7 -0
- package/dist/application/models/validators/validateMobilePLPChatPlacementParameter.js +11 -0
- package/dist/application/models/validators/validateOrgConfigResults.cjs +44 -0
- package/dist/application/models/validators/validateOrgConfigResults.d.cts +13 -0
- package/dist/application/models/validators/validateOrgConfigResults.d.ts +13 -0
- package/dist/application/models/validators/validateOrgConfigResults.js +44 -0
- package/dist/application/models/validators/validateOrganizationConfig.cjs +28 -0
- package/dist/application/models/validators/validateOrganizationConfig.d.cts +7 -0
- package/dist/application/models/validators/validateOrganizationConfig.d.ts +7 -0
- package/dist/application/models/validators/validateOrganizationConfig.js +28 -0
- package/dist/application/models/validators/validateResponse.cjs +136 -0
- package/dist/application/models/validators/validateResponse.d.cts +7 -0
- package/dist/application/models/validators/validateResponse.d.ts +7 -0
- package/dist/application/models/validators/validateResponse.js +135 -0
- package/dist/application/models/validators/validateSuggestion.cjs +17 -0
- package/dist/application/models/validators/validateSuggestion.d.cts +7 -0
- package/dist/application/models/validators/validateSuggestion.d.ts +7 -0
- package/dist/application/models/validators/validateSuggestion.js +17 -0
- package/dist/application/models/validators/validateUserEvent.cjs +75 -0
- package/dist/application/models/validators/validateUserEvent.d.cts +7 -0
- package/dist/application/models/validators/validateUserEvent.d.ts +7 -0
- package/dist/application/models/validators/validateUserEvent.js +74 -0
- 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/models/variantInfo/pageVisitInfo.d.cts +10 -0
- package/dist/application/models/variantInfo/pageVisitInfo.d.ts +10 -0
- package/dist/application/models/variantInfo/plpInfo.d.cts +7 -0
- package/dist/application/models/variantInfo/plpInfo.d.ts +7 -0
- package/dist/application/models/variantInfo/productInfo.d.cts +9 -0
- package/dist/application/models/variantInfo/productInfo.d.ts +9 -0
- package/dist/{variantInfo-DpLn4nHz.cjs → application/models/variantInfo/variantInfo.cjs} +2 -7
- package/dist/application/models/variantInfo/variantInfo.d.cts +28 -0
- package/dist/application/models/variantInfo/variantInfo.d.ts +28 -0
- package/dist/{variantInfo-BfKlkaWU.js → application/models/variantInfo/variantInfo.js} +1 -1
- package/dist/application/utils/analyticsUtils.cjs +88 -0
- package/dist/application/utils/analyticsUtils.d.cts +17 -0
- package/dist/application/utils/analyticsUtils.d.ts +17 -0
- package/dist/application/utils/analyticsUtils.js +87 -0
- package/dist/application/utils/coreContextToApiContext.cjs +14 -0
- package/dist/application/utils/coreContextToApiContext.d.cts +8 -0
- package/dist/application/utils/coreContextToApiContext.d.ts +8 -0
- package/dist/application/utils/coreContextToApiContext.js +13 -0
- package/dist/application/utils/coreUserEventToApiUserEvent.cjs +74 -0
- package/dist/application/utils/coreUserEventToApiUserEvent.d.cts +8 -0
- package/dist/application/utils/coreUserEventToApiUserEvent.d.ts +8 -0
- package/dist/application/utils/coreUserEventToApiUserEvent.js +73 -0
- package/dist/application/utils/divideArray.cjs +11 -0
- package/dist/application/utils/divideArray.d.cts +5 -0
- package/dist/application/utils/divideArray.d.ts +5 -0
- package/dist/application/utils/divideArray.js +10 -0
- package/dist/application/utils/domObserver.cjs +87 -0
- package/dist/application/utils/domObserver.d.cts +39 -0
- package/dist/application/utils/domObserver.d.ts +39 -0
- package/dist/application/utils/domObserver.js +87 -0
- package/dist/application/utils/elementObserver.cjs +176 -0
- package/dist/application/utils/elementObserver.d.cts +68 -0
- package/dist/application/utils/elementObserver.d.ts +68 -0
- package/dist/application/utils/elementObserver.js +175 -0
- package/dist/application/utils/imageFilter.cjs +12 -0
- package/dist/application/utils/imageFilter.d.cts +7 -0
- package/dist/application/utils/imageFilter.d.ts +7 -0
- package/dist/application/utils/imageFilter.js +12 -0
- package/dist/application/utils/index.cjs +40 -41
- package/dist/application/utils/index.d.cts +22 -264
- package/dist/application/utils/index.d.ts +22 -264
- package/dist/application/utils/index.js +20 -21
- package/dist/application/utils/merchantUtils.cjs +18 -0
- package/dist/application/utils/merchantUtils.d.cts +5 -0
- package/dist/application/utils/merchantUtils.d.ts +5 -0
- package/dist/application/utils/merchantUtils.js +17 -0
- package/dist/application/utils/messageFromFormSubmittedEvent.cjs +21 -0
- package/dist/application/utils/messageFromFormSubmittedEvent.d.cts +9 -0
- package/dist/application/utils/messageFromFormSubmittedEvent.d.ts +9 -0
- package/dist/application/utils/messageFromFormSubmittedEvent.js +20 -0
- package/dist/application/utils/messageFromQueryEvent.cjs +36 -0
- package/dist/application/utils/messageFromQueryEvent.d.cts +16 -0
- package/dist/application/utils/messageFromQueryEvent.d.ts +16 -0
- package/dist/application/utils/messageFromQueryEvent.js +35 -0
- package/dist/application/utils/messageFromResponse.cjs +97 -0
- package/dist/application/utils/messageFromResponse.d.cts +16 -0
- package/dist/application/utils/messageFromResponse.d.ts +16 -0
- package/dist/application/utils/messageFromResponse.js +96 -0
- package/dist/application/utils/messageFromSuggestionEvent.cjs +33 -0
- package/dist/application/utils/messageFromSuggestionEvent.d.cts +18 -0
- package/dist/application/utils/messageFromSuggestionEvent.d.ts +18 -0
- package/dist/application/utils/messageFromSuggestionEvent.js +32 -0
- package/dist/application/utils/mouseEventTypes.d.cts +5 -0
- package/dist/application/utils/mouseEventTypes.d.ts +5 -0
- package/dist/application/utils/mutationHelper.cjs +31 -0
- package/dist/application/utils/mutationHelper.d.cts +12 -0
- package/dist/application/utils/mutationHelper.d.ts +12 -0
- package/dist/application/utils/mutationHelper.js +30 -0
- package/dist/application/utils/nextMessageRequestToApiRequest.cjs +32 -0
- package/dist/application/utils/nextMessageRequestToApiRequest.d.cts +8 -0
- package/dist/application/utils/nextMessageRequestToApiRequest.d.ts +8 -0
- package/dist/application/utils/nextMessageRequestToApiRequest.js +32 -0
- package/dist/application/utils/nodeSelector.cjs +92 -0
- package/dist/application/utils/nodeSelector.d.cts +28 -0
- package/dist/application/utils/nodeSelector.d.ts +28 -0
- package/dist/application/utils/nodeSelector.js +90 -0
- package/dist/application/utils/overrides.cjs +95 -0
- package/dist/application/utils/overrides.d.cts +37 -0
- package/dist/application/utils/overrides.d.ts +37 -0
- package/dist/application/utils/overrides.js +94 -0
- package/dist/application/utils/stringUtils.cjs +35 -0
- package/dist/application/utils/stringUtils.d.cts +18 -0
- package/dist/application/utils/stringUtils.d.ts +18 -0
- package/dist/application/utils/stringUtils.js +34 -0
- package/dist/application/utils/supportedEventRequestToApiRequest.cjs +13 -0
- package/dist/application/utils/supportedEventRequestToApiRequest.d.cts +8 -0
- package/dist/application/utils/supportedEventRequestToApiRequest.d.ts +8 -0
- package/dist/application/utils/supportedEventRequestToApiRequest.js +13 -0
- package/dist/application/utils/urlsParser.cjs +47 -0
- package/dist/application/utils/urlsParser.d.cts +23 -0
- package/dist/application/utils/urlsParser.d.ts +23 -0
- package/dist/application/utils/urlsParser.js +41 -0
- package/dist/application/utils/validation.cjs +7 -0
- package/dist/application/utils/validation.d.cts +5 -0
- package/dist/application/utils/validation.d.ts +5 -0
- package/dist/application/utils/validation.js +6 -0
- package/dist/atoms/amplitude/amplitudeTrackEventAtom.cjs +9 -0
- package/dist/atoms/amplitude/amplitudeTrackEventAtom.js +8 -0
- package/dist/atoms/app/index.cjs +27 -19
- package/dist/atoms/app/index.d.cts +10 -24
- package/dist/atoms/app/index.d.ts +10 -24
- package/dist/atoms/app/index.js +22 -15
- package/dist/atoms/app/variant.cjs +98 -0
- package/dist/atoms/app/variant.d.cts +10 -0
- package/dist/atoms/app/variant.d.ts +10 -0
- package/dist/atoms/app/variant.js +95 -0
- package/dist/atoms/atomStore/atomStore.cjs +36 -0
- package/dist/atoms/atomStore/atomStore.d.cts +24 -0
- package/dist/atoms/atomStore/atomStore.d.ts +24 -0
- package/dist/atoms/atomStore/atomStore.js +32 -0
- package/dist/atoms/atomStore/index.cjs +1 -1
- package/dist/atoms/atomStore/index.d.cts +2 -24
- package/dist/atoms/atomStore/index.d.ts +2 -24
- package/dist/atoms/atomStore/index.js +1 -1
- package/dist/atoms/chat/chatState.cjs +48 -0
- package/dist/atoms/chat/chatState.d.cts +54 -0
- package/dist/atoms/chat/chatState.d.ts +54 -0
- package/dist/atoms/chat/chatState.js +34 -0
- package/dist/atoms/chat/form.cjs +23 -0
- package/dist/atoms/chat/form.d.cts +10 -0
- package/dist/atoms/chat/form.d.ts +10 -0
- package/dist/atoms/chat/form.js +22 -0
- package/dist/atoms/chat/index.cjs +43 -38
- package/dist/atoms/chat/index.d.cts +13 -146
- package/dist/atoms/chat/index.d.ts +13 -146
- package/dist/atoms/chat/index.js +27 -23
- package/dist/atoms/chat/lastMessage.cjs +16 -0
- package/dist/atoms/chat/lastMessage.d.cts +8 -0
- package/dist/atoms/chat/lastMessage.d.ts +8 -0
- package/dist/atoms/chat/lastMessage.js +15 -0
- package/dist/atoms/chat/messageQueue.cjs +75 -0
- package/dist/atoms/chat/messageQueue.js +69 -0
- package/dist/atoms/chat/performanceMetrics.cjs +74 -0
- package/dist/atoms/chat/performanceMetrics.d.cts +50 -0
- package/dist/atoms/chat/performanceMetrics.d.ts +50 -0
- package/dist/atoms/chat/performanceMetrics.js +65 -0
- package/dist/atoms/chat/renderedWidgetRefs.cjs +32 -0
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +21 -0
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +21 -0
- package/dist/atoms/chat/renderedWidgetRefs.js +30 -0
- package/dist/atoms/chat/replies.cjs +45 -0
- package/dist/atoms/chat/replies.d.cts +14 -0
- package/dist/atoms/chat/replies.d.ts +14 -0
- package/dist/atoms/chat/replies.js +44 -0
- package/dist/atoms/chat/suggestions.cjs +36 -0
- package/dist/atoms/chat/suggestions.d.cts +10 -0
- package/dist/atoms/chat/suggestions.d.ts +10 -0
- package/dist/atoms/chat/suggestions.js +35 -0
- package/dist/atoms/envive/enviveConfig.cjs +74 -0
- package/dist/atoms/envive/enviveConfig.js +63 -0
- package/dist/atoms/globalSearch/globalSearch.cjs +18 -0
- package/dist/atoms/globalSearch/globalSearch.d.cts +24 -0
- package/dist/atoms/globalSearch/globalSearch.d.ts +24 -0
- package/dist/atoms/globalSearch/globalSearch.js +14 -0
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +2 -24
- package/dist/atoms/globalSearch/index.d.ts +2 -24
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/customerService.cjs +17 -0
- package/dist/atoms/org/customerService.d.cts +23 -0
- package/dist/atoms/org/customerService.d.ts +23 -0
- package/dist/atoms/org/customerService.js +12 -0
- package/dist/atoms/org/graphqlConfig.cjs +18 -0
- package/dist/atoms/org/graphqlConfig.d.cts +19 -0
- package/dist/atoms/org/graphqlConfig.d.ts +19 -0
- package/dist/atoms/org/graphqlConfig.js +14 -0
- package/dist/atoms/org/index.cjs +9 -9
- package/dist/atoms/org/index.d.cts +5 -60
- package/dist/atoms/org/index.d.ts +5 -60
- package/dist/atoms/org/index.js +4 -4
- package/dist/atoms/org/newOrgConfigAtom.cjs +9 -0
- package/dist/atoms/org/newOrgConfigAtom.d.cts +10 -0
- package/dist/atoms/org/newOrgConfigAtom.d.ts +10 -0
- package/dist/atoms/org/newOrgConfigAtom.js +8 -0
- package/dist/atoms/org/orgAnalyticsConfig.cjs +18 -0
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +11 -0
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +11 -0
- package/dist/atoms/org/orgAnalyticsConfig.js +14 -0
- package/dist/atoms/search/chatSearch.cjs +208 -0
- package/dist/atoms/search/chatSearch.d.cts +115 -0
- package/dist/atoms/search/chatSearch.d.ts +115 -0
- package/dist/atoms/search/chatSearch.js +190 -0
- package/dist/atoms/search/index.cjs +15 -42
- package/dist/atoms/search/index.d.cts +2 -14
- package/dist/atoms/search/index.d.ts +2 -14
- package/dist/atoms/search/index.js +2 -29
- package/dist/atoms/search/productFilters.cjs +99 -0
- package/dist/atoms/search/productFilters.js +99 -0
- package/dist/atoms/search/productRetrievalAPI.cjs +50 -0
- package/dist/atoms/search/productRetrievalAPI.js +47 -0
- package/dist/atoms/search/productRetrievalAdapter.cjs +11 -0
- package/dist/atoms/search/productRetrievalAdapter.js +10 -0
- package/dist/atoms/search/productSorter.cjs +16 -0
- package/dist/atoms/search/productSorter.js +16 -0
- package/dist/atoms/search/searchAPI.cjs +135 -0
- package/dist/atoms/search/searchAPI.d.cts +76 -0
- package/dist/atoms/search/searchAPI.d.ts +76 -0
- package/dist/atoms/search/searchAPI.js +122 -0
- package/dist/atoms/search/searchServiceAdapter.cjs +19 -0
- package/dist/atoms/search/searchServiceAdapter.js +16 -0
- package/dist/atoms/search/types.cjs +32 -4
- package/dist/atoms/search/types.d.cts +60 -4
- package/dist/atoms/search/types.d.ts +60 -4
- package/dist/atoms/search/types.js +29 -2
- package/dist/atoms/search/utils.cjs +23 -2
- package/dist/atoms/search/utils.d.ts +1 -1
- package/dist/atoms/search/utils.js +22 -2
- package/dist/config/index.cjs +74 -70
- package/dist/config/index.d.cts +8 -4
- package/dist/config/index.d.ts +8 -4
- package/dist/config/index.js +8 -4
- package/dist/config/locators/components/chat/index.cjs +44 -21
- package/dist/config/locators/components/chat/index.d.cts +24 -2
- package/dist/config/locators/components/chat/index.d.ts +24 -2
- package/dist/config/locators/components/chat/index.js +24 -2
- package/dist/config/locators/components/chat/variants/index.cjs +1 -1
- package/dist/config/locators/components/chat/variants/index.js +1 -1
- package/dist/config/locators/components/common/buttons.cjs +17 -0
- package/dist/config/locators/components/common/buttons.d.cts +10 -0
- package/dist/config/locators/components/common/buttons.d.ts +10 -0
- package/dist/config/locators/components/common/buttons.js +11 -0
- package/dist/config/locators/components/common/cards.cjs +39 -0
- package/dist/config/locators/components/common/cards.d.cts +21 -0
- package/dist/config/locators/components/common/cards.d.ts +21 -0
- package/dist/config/locators/components/common/cards.js +22 -0
- package/dist/config/locators/components/common/index.cjs +29 -26
- package/dist/config/locators/components/common/index.d.cts +4 -1
- package/dist/config/locators/components/common/index.d.ts +4 -1
- package/dist/config/locators/components/common/index.js +4 -1
- package/dist/config/locators/components/common/links.cjs +7 -0
- package/dist/config/locators/components/common/links.d.cts +5 -0
- package/dist/config/locators/components/common/links.d.ts +5 -0
- package/dist/config/locators/components/common/links.js +6 -0
- package/dist/config/locators/components/common/tables.cjs +7 -0
- package/dist/config/locators/components/common/tables.d.cts +5 -0
- package/dist/config/locators/components/common/tables.d.ts +5 -0
- package/dist/config/locators/components/common/tables.js +6 -0
- package/dist/config/locators/components/floating-button.cjs +9 -0
- package/dist/config/locators/components/floating-button.d.cts +6 -0
- package/dist/config/locators/components/floating-button.d.ts +6 -0
- package/dist/config/locators/components/floating-button.js +7 -0
- package/dist/config/locators/components/index.cjs +5 -4
- package/dist/config/locators/components/index.d.cts +2 -1
- package/dist/config/locators/components/index.d.ts +2 -1
- package/dist/config/locators/components/index.js +2 -1
- package/dist/config/locators/components/shadow-dom.cjs +7 -0
- package/dist/config/locators/components/shadow-dom.d.cts +5 -0
- package/dist/config/locators/components/shadow-dom.d.ts +5 -0
- package/dist/config/locators/components/shadow-dom.js +6 -0
- package/dist/config/locators/embedded.cjs +41 -0
- package/dist/{index-COXkY78t.d.cts → config/locators/embedded.d.cts} +1 -1
- package/dist/{index-BKvFVPUX.d.ts → config/locators/embedded.d.ts} +1 -1
- package/dist/{locators-BMQGmGLq.js → config/locators/embedded.js} +1 -1
- package/dist/config/locators/index.cjs +74 -70
- package/dist/config/locators/index.d.cts +8 -4
- package/dist/config/locators/index.d.ts +8 -4
- package/dist/config/locators/index.js +8 -4
- package/dist/contexts/amplitudeContext/amplitudeContext.cjs +275 -0
- package/dist/contexts/amplitudeContext/amplitudeContext.d.cts +52 -0
- package/dist/contexts/amplitudeContext/amplitudeContext.d.ts +52 -0
- package/dist/contexts/amplitudeContext/amplitudeContext.js +271 -0
- package/dist/contexts/amplitudeContext/index.cjs +1 -20
- package/dist/contexts/amplitudeContext/index.d.cts +1 -1
- package/dist/contexts/amplitudeContext/index.d.ts +1 -1
- package/dist/contexts/amplitudeContext/index.js +1 -20
- package/dist/contexts/cdnContext/cdnContext.cjs +41 -0
- package/dist/contexts/cdnContext/cdnContext.d.cts +15 -0
- package/dist/contexts/cdnContext/cdnContext.d.ts +15 -0
- package/dist/contexts/cdnContext/cdnContext.js +38 -0
- package/dist/contexts/cdnContext/index.cjs +1 -4
- package/dist/contexts/cdnContext/index.d.cts +2 -15
- package/dist/contexts/cdnContext/index.d.ts +2 -15
- package/dist/contexts/cdnContext/index.js +1 -4
- package/dist/contexts/chatContext/chatContext.cjs +306 -0
- package/dist/contexts/chatContext/chatContext.d.cts +15 -0
- package/dist/contexts/chatContext/chatContext.d.ts +15 -0
- package/dist/contexts/chatContext/chatContext.js +304 -0
- package/dist/contexts/chatContext/index.cjs +3 -330
- package/dist/contexts/chatContext/index.d.cts +2 -15
- package/dist/contexts/chatContext/index.d.ts +2 -15
- package/dist/contexts/chatContext/index.js +2 -323
- package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +48 -0
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +29 -0
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +29 -0
- package/dist/contexts/enviveConfigContext/enviveConfigContext.js +45 -0
- package/dist/contexts/enviveConfigContext/index.cjs +1 -4
- package/dist/contexts/enviveConfigContext/index.d.cts +2 -30
- package/dist/contexts/enviveConfigContext/index.d.ts +2 -30
- package/dist/contexts/enviveConfigContext/index.js +1 -4
- package/dist/contexts/enviveCssContext/enviveCssContext.cjs +49 -0
- package/dist/contexts/enviveCssContext/enviveCssContext.d.cts +10 -0
- package/dist/contexts/enviveCssContext/enviveCssContext.d.ts +10 -0
- package/dist/contexts/enviveCssContext/enviveCssContext.js +47 -0
- package/dist/contexts/enviveCssContext/index.cjs +2 -65
- package/dist/contexts/enviveCssContext/index.d.cts +2 -10
- package/dist/contexts/enviveCssContext/index.d.ts +2 -10
- package/dist/contexts/enviveCssContext/index.js +2 -62
- package/dist/contexts/featureFlagContext/featureFlagContext.cjs +105 -0
- package/dist/contexts/featureFlagContext/featureFlagContext.d.cts +19 -0
- package/dist/contexts/featureFlagContext/featureFlagContext.d.ts +19 -0
- package/dist/contexts/featureFlagContext/featureFlagContext.js +102 -0
- package/dist/contexts/featureFlagContext/index.cjs +3 -106
- package/dist/contexts/featureFlagContext/index.d.cts +2 -20
- package/dist/contexts/featureFlagContext/index.d.ts +2 -20
- package/dist/contexts/featureFlagContext/index.js +2 -102
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +46 -0
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +24 -0
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +24 -0
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +42 -0
- package/dist/contexts/featureFlagServiceContext/index.cjs +1 -3
- package/dist/contexts/featureFlagServiceContext/index.d.cts +1 -4
- package/dist/contexts/featureFlagServiceContext/index.d.ts +1 -4
- package/dist/contexts/featureFlagServiceContext/index.js +1 -3
- package/dist/contexts/graphqlContext/graphqlContext.cjs +99 -0
- package/dist/contexts/graphqlContext/graphqlContext.d.cts +29 -0
- package/dist/contexts/graphqlContext/graphqlContext.d.ts +29 -0
- package/dist/contexts/graphqlContext/graphqlContext.js +96 -0
- package/dist/contexts/graphqlContext/index.cjs +1 -13
- package/dist/contexts/graphqlContext/index.d.cts +1 -14
- package/dist/contexts/graphqlContext/index.d.ts +1 -14
- package/dist/contexts/graphqlContext/index.js +1 -13
- package/dist/contexts/localStorageContext/index.cjs +1 -2
- package/dist/contexts/localStorageContext/index.d.cts +2 -30
- package/dist/contexts/localStorageContext/index.d.ts +2 -30
- package/dist/contexts/localStorageContext/index.js +1 -2
- package/dist/contexts/localStorageContext/localStorageContext.cjs +99 -0
- package/dist/contexts/localStorageContext/localStorageContext.d.cts +25 -0
- package/dist/contexts/localStorageContext/localStorageContext.d.ts +25 -0
- package/dist/contexts/localStorageContext/localStorageContext.js +95 -0
- package/dist/contexts/newOrgConfigContext/index.cjs +1 -17
- package/dist/contexts/newOrgConfigContext/index.d.cts +1 -15
- package/dist/contexts/newOrgConfigContext/index.d.ts +1 -15
- package/dist/contexts/newOrgConfigContext/index.js +1 -17
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +56 -0
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.d.cts +16 -0
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.d.ts +16 -0
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +53 -0
- package/dist/contexts/searchContext/index.cjs +1 -21
- package/dist/contexts/searchContext/index.d.cts +2 -16
- package/dist/contexts/searchContext/index.d.ts +2 -16
- package/dist/contexts/searchContext/index.js +1 -21
- package/dist/contexts/searchContext/searchContext.cjs +132 -0
- package/dist/contexts/searchContext/searchContext.d.cts +15 -0
- package/dist/contexts/searchContext/searchContext.d.ts +15 -0
- package/dist/contexts/searchContext/searchContext.js +129 -0
- package/dist/contexts/sessionStorageContext/index.cjs +1 -2
- package/dist/contexts/sessionStorageContext/index.d.cts +2 -15
- package/dist/contexts/sessionStorageContext/index.d.ts +2 -15
- package/dist/contexts/sessionStorageContext/index.js +1 -2
- package/dist/contexts/sessionStorageContext/sessionStorageContext.cjs +55 -0
- package/dist/contexts/sessionStorageContext/sessionStorageContext.d.cts +15 -0
- package/dist/contexts/sessionStorageContext/sessionStorageContext.d.ts +15 -0
- package/dist/contexts/sessionStorageContext/sessionStorageContext.js +52 -0
- package/dist/contexts/shopifyUrlContext/index.cjs +1 -2
- package/dist/contexts/shopifyUrlContext/index.d.cts +2 -20
- package/dist/contexts/shopifyUrlContext/index.d.ts +2 -20
- package/dist/contexts/shopifyUrlContext/index.js +1 -2
- package/dist/contexts/shopifyUrlContext/shopifyUrlContext.cjs +64 -0
- package/dist/contexts/shopifyUrlContext/shopifyUrlContext.d.cts +18 -0
- package/dist/contexts/shopifyUrlContext/shopifyUrlContext.d.ts +18 -0
- package/dist/contexts/shopifyUrlContext/shopifyUrlContext.js +61 -0
- package/dist/contexts/systemSettingsContext/index.cjs +1 -4
- package/dist/contexts/systemSettingsContext/index.d.cts +2 -38
- package/dist/contexts/systemSettingsContext/index.d.ts +2 -38
- package/dist/contexts/systemSettingsContext/index.js +1 -4
- package/dist/contexts/systemSettingsContext/systemSettingsContext.cjs +42 -0
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +27 -0
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.ts +27 -0
- package/dist/contexts/systemSettingsContext/systemSettingsContext.js +39 -0
- package/dist/contexts/types.cjs +56 -6
- package/dist/contexts/types.d.cts +696 -4
- package/dist/contexts/types.d.ts +696 -4
- package/dist/contexts/types.js +52 -2
- package/dist/contexts/userIdentityContext/index.cjs +1 -25
- package/dist/contexts/userIdentityContext/index.d.cts +1 -1
- package/dist/contexts/userIdentityContext/index.d.ts +1 -1
- package/dist/contexts/userIdentityContext/index.js +1 -25
- package/dist/contexts/userIdentityContext/userIdentityContext.cjs +131 -0
- package/dist/contexts/userIdentityContext/userIdentityContext.d.cts +20 -0
- package/dist/contexts/userIdentityContext/userIdentityContext.d.ts +20 -0
- package/dist/contexts/userIdentityContext/userIdentityContext.js +127 -0
- package/dist/events/event-types.cjs +18 -0
- package/dist/events/event-types.d.cts +15 -0
- package/dist/events/event-types.d.ts +15 -0
- package/dist/events/event-types.js +17 -0
- package/dist/events/index.cjs +65 -3
- package/dist/events/index.d.cts +4 -14
- package/dist/events/index.d.ts +4 -14
- package/dist/events/index.js +64 -2
- package/dist/hooks/AmplitudeOperations/index.cjs +1 -21
- package/dist/hooks/AmplitudeOperations/index.d.cts +2 -12
- package/dist/hooks/AmplitudeOperations/index.d.ts +2 -12
- package/dist/hooks/AmplitudeOperations/index.js +1 -21
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.cjs +35 -0
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.cts +12 -0
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.ts +12 -0
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.js +34 -0
- package/dist/hooks/AppDetails/index.cjs +1 -17
- package/dist/hooks/AppDetails/index.d.cts +2 -28
- package/dist/hooks/AppDetails/index.d.ts +2 -28
- package/dist/hooks/AppDetails/index.js +1 -17
- package/dist/hooks/AppDetails/useAppDetails.cjs +25 -0
- package/dist/hooks/AppDetails/useAppDetails.d.cts +17 -0
- package/dist/hooks/AppDetails/useAppDetails.d.ts +17 -0
- package/dist/hooks/AppDetails/useAppDetails.js +24 -0
- package/dist/hooks/BlockBackButton/index.cjs +2 -28
- package/dist/hooks/BlockBackButton/index.d.cts +2 -5
- package/dist/hooks/BlockBackButton/index.d.ts +2 -5
- package/dist/hooks/BlockBackButton/index.js +2 -26
- package/dist/hooks/BlockBackButton/useBlockBackButton.cjs +28 -0
- package/dist/hooks/BlockBackButton/useBlockBackButton.d.cts +5 -0
- package/dist/hooks/BlockBackButton/useBlockBackButton.d.ts +5 -0
- package/dist/hooks/BlockBackButton/useBlockBackButton.js +27 -0
- package/dist/hooks/CdnOperations/index.cjs +4 -23
- package/dist/hooks/CdnOperations/index.d.cts +2 -7
- package/dist/hooks/CdnOperations/index.d.ts +2 -7
- package/dist/hooks/CdnOperations/index.js +2 -21
- package/dist/hooks/CdnOperations/useCdnOperations.cjs +22 -0
- package/dist/hooks/CdnOperations/useCdnOperations.d.cts +7 -0
- package/dist/hooks/CdnOperations/useCdnOperations.d.ts +7 -0
- package/dist/hooks/CdnOperations/useCdnOperations.js +20 -0
- package/dist/hooks/ChatToggle/index.cjs +2 -64
- package/dist/hooks/ChatToggle/index.d.cts +2 -12
- package/dist/hooks/ChatToggle/index.d.ts +2 -12
- package/dist/hooks/ChatToggle/index.js +2 -62
- package/dist/hooks/ChatToggle/useChatToggle.cjs +45 -0
- package/dist/hooks/ChatToggle/useChatToggle.d.cts +12 -0
- package/dist/hooks/ChatToggle/useChatToggle.d.ts +12 -0
- package/dist/hooks/ChatToggle/useChatToggle.js +44 -0
- package/dist/hooks/ChatToggleAnalytics/index.cjs +2 -38
- package/dist/hooks/ChatToggleAnalytics/index.d.cts +2 -9
- package/dist/hooks/ChatToggleAnalytics/index.d.ts +2 -9
- package/dist/hooks/ChatToggleAnalytics/index.js +2 -36
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.cjs +19 -0
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.d.cts +9 -0
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.d.ts +9 -0
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.js +18 -0
- package/dist/hooks/CustomerSupportHandoff/index.cjs +2 -35
- package/dist/hooks/CustomerSupportHandoff/index.d.cts +2 -16
- package/dist/hooks/CustomerSupportHandoff/index.d.ts +2 -16
- package/dist/hooks/CustomerSupportHandoff/index.js +2 -33
- package/dist/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.cjs +35 -0
- package/dist/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.d.cts +16 -0
- package/dist/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.d.ts +16 -0
- package/dist/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.js +34 -0
- package/dist/hooks/Debounce/index.cjs +2 -20
- package/dist/hooks/Debounce/index.d.cts +2 -5
- package/dist/hooks/Debounce/index.d.ts +2 -5
- package/dist/hooks/Debounce/index.js +2 -18
- package/dist/hooks/Debounce/useDebounce.cjs +20 -0
- package/dist/hooks/Debounce/useDebounce.d.cts +5 -0
- package/dist/hooks/Debounce/useDebounce.d.ts +5 -0
- package/dist/hooks/Debounce/useDebounce.js +19 -0
- package/dist/hooks/ElementObserver/index.cjs +2 -178
- package/dist/hooks/ElementObserver/index.d.cts +2 -29
- package/dist/hooks/ElementObserver/index.d.ts +2 -29
- package/dist/hooks/ElementObserver/index.js +2 -176
- package/dist/hooks/ElementObserver/useElementObserver.cjs +178 -0
- package/dist/hooks/ElementObserver/useElementObserver.d.cts +30 -0
- package/dist/hooks/ElementObserver/useElementObserver.d.ts +30 -0
- package/dist/hooks/ElementObserver/useElementObserver.js +177 -0
- package/dist/hooks/GrabAndScroll/index.cjs +2 -98
- package/dist/hooks/GrabAndScroll/index.d.cts +2 -14
- package/dist/hooks/GrabAndScroll/index.d.ts +2 -14
- package/dist/hooks/GrabAndScroll/index.js +2 -96
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.cjs +96 -0
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +14 -0
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +14 -0
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.js +95 -0
- package/dist/hooks/GraphQLConfig/index.cjs +1 -14
- package/dist/hooks/GraphQLConfig/index.d.cts +2 -29
- package/dist/hooks/GraphQLConfig/index.d.ts +2 -29
- package/dist/hooks/GraphQLConfig/index.js +1 -14
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +63 -0
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.cts +17 -0
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.ts +17 -0
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +61 -0
- package/dist/hooks/IdentifyUser/index.cjs +2 -60
- package/dist/hooks/IdentifyUser/index.d.cts +2 -10
- package/dist/hooks/IdentifyUser/index.d.ts +2 -10
- package/dist/hooks/IdentifyUser/index.js +2 -58
- package/dist/hooks/IdentifyUser/useIdentifyUser.cjs +35 -0
- package/dist/hooks/IdentifyUser/useIdentifyUser.d.cts +10 -0
- package/dist/hooks/IdentifyUser/useIdentifyUser.d.ts +10 -0
- package/dist/hooks/IdentifyUser/useIdentifyUser.js +34 -0
- package/dist/hooks/ImageResolver/index.cjs +2 -54
- package/dist/hooks/ImageResolver/index.d.cts +2 -7
- package/dist/hooks/ImageResolver/index.d.ts +2 -7
- package/dist/hooks/ImageResolver/index.js +2 -52
- package/dist/hooks/ImageResolver/useImageResolver.cjs +45 -0
- package/dist/hooks/ImageResolver/useImageResolver.d.cts +7 -0
- package/dist/hooks/ImageResolver/useImageResolver.d.ts +7 -0
- package/dist/hooks/ImageResolver/useImageResolver.js +44 -0
- package/dist/hooks/Intersection/index.cjs +1 -1
- package/dist/hooks/Intersection/index.d.cts +2 -7
- package/dist/hooks/Intersection/index.d.ts +2 -7
- package/dist/hooks/Intersection/index.js +1 -1
- package/dist/hooks/Intersection/useIntersection.cjs +22 -0
- package/dist/hooks/Intersection/useIntersection.d.cts +7 -0
- package/dist/hooks/Intersection/useIntersection.d.ts +7 -0
- package/dist/hooks/Intersection/useIntersection.js +21 -0
- package/dist/hooks/IsSmallScreen/index.cjs +2 -21
- package/dist/hooks/IsSmallScreen/index.d.cts +2 -5
- package/dist/hooks/IsSmallScreen/index.d.ts +2 -5
- package/dist/hooks/IsSmallScreen/index.js +2 -19
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.cjs +21 -0
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.d.cts +5 -0
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.d.ts +5 -0
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.js +20 -0
- package/dist/hooks/LocalStorageOperations/index.cjs +5 -78
- package/dist/hooks/LocalStorageOperations/index.d.cts +2 -17
- package/dist/hooks/LocalStorageOperations/index.d.ts +2 -17
- package/dist/hooks/LocalStorageOperations/index.js +2 -73
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +77 -0
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.d.cts +17 -0
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.d.ts +17 -0
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +73 -0
- package/dist/hooks/MessageFilter/index.cjs +2 -53
- package/dist/hooks/MessageFilter/index.d.cts +2 -31
- package/dist/hooks/MessageFilter/index.d.ts +2 -31
- package/dist/hooks/MessageFilter/index.js +2 -53
- package/dist/hooks/MessageFilter/useMessageFilter.cjs +43 -0
- package/dist/hooks/MessageFilter/useMessageFilter.d.cts +20 -0
- package/dist/hooks/MessageFilter/useMessageFilter.d.ts +20 -0
- package/dist/hooks/MessageFilter/useMessageFilter.js +43 -0
- package/dist/hooks/MessageScrollObserver/index.cjs +2 -35
- package/dist/hooks/MessageScrollObserver/index.d.cts +2 -5
- package/dist/hooks/MessageScrollObserver/index.d.ts +2 -5
- package/dist/hooks/MessageScrollObserver/index.js +2 -33
- package/dist/hooks/MessageScrollObserver/useMessageScrollObserver.cjs +33 -0
- package/dist/hooks/MessageScrollObserver/useMessageScrollObserver.d.cts +5 -0
- package/dist/hooks/MessageScrollObserver/useMessageScrollObserver.d.ts +5 -0
- package/dist/hooks/MessageScrollObserver/useMessageScrollObserver.js +32 -0
- package/dist/hooks/NewOrgConfig/index.cjs +2 -19
- package/dist/hooks/NewOrgConfig/index.d.cts +2 -21
- package/dist/hooks/NewOrgConfig/index.d.ts +2 -21
- package/dist/hooks/NewOrgConfig/index.js +1 -18
- package/dist/hooks/NewOrgConfig/useNewOrgConfig.cjs +10 -0
- package/dist/hooks/NewOrgConfig/useNewOrgConfig.d.cts +7 -0
- package/dist/hooks/NewOrgConfig/useNewOrgConfig.d.ts +7 -0
- package/dist/hooks/NewOrgConfig/useNewOrgConfig.js +10 -0
- package/dist/hooks/Search/index.cjs +2 -502
- package/dist/hooks/Search/index.d.cts +2 -72
- package/dist/hooks/Search/index.d.ts +2 -72
- package/dist/hooks/Search/index.js +2 -498
- package/dist/hooks/Search/useRecommendedProducts.cjs +41 -0
- package/dist/hooks/Search/useRecommendedProducts.js +40 -0
- package/dist/hooks/Search/useSearch.cjs +232 -0
- package/dist/hooks/Search/useSearch.d.cts +62 -0
- package/dist/hooks/Search/useSearch.d.ts +62 -0
- package/dist/hooks/Search/useSearch.js +231 -0
- package/dist/hooks/Search/useSearchInput.cjs +173 -0
- package/dist/hooks/Search/useSearchInput.js +171 -0
- package/dist/hooks/SearchOperations/index.cjs +3 -101
- package/dist/hooks/SearchOperations/index.d.cts +2 -22
- package/dist/hooks/SearchOperations/index.d.ts +2 -22
- package/dist/hooks/SearchOperations/index.js +2 -98
- package/dist/hooks/SearchOperations/useSearchOperations.cjs +77 -0
- package/dist/hooks/SearchOperations/useSearchOperations.d.cts +21 -0
- package/dist/hooks/SearchOperations/useSearchOperations.d.ts +21 -0
- package/dist/hooks/SearchOperations/useSearchOperations.js +75 -0
- package/dist/hooks/SessionStorageOperations/index.cjs +2 -29
- package/dist/hooks/SessionStorageOperations/index.d.cts +2 -8
- package/dist/hooks/SessionStorageOperations/index.d.ts +2 -8
- package/dist/hooks/SessionStorageOperations/index.js +2 -27
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.cjs +28 -0
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.d.cts +8 -0
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.d.ts +8 -0
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.js +27 -0
- package/dist/hooks/ShopifyUrlOperations/index.cjs +4 -52
- package/dist/hooks/ShopifyUrlOperations/index.d.cts +2 -23
- package/dist/hooks/ShopifyUrlOperations/index.d.ts +2 -23
- package/dist/hooks/ShopifyUrlOperations/index.js +2 -48
- package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.cjs +51 -0
- package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.d.cts +21 -0
- package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.d.ts +21 -0
- package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.js +48 -0
- package/dist/hooks/SnapCalculator/index.cjs +2 -28
- package/dist/hooks/SnapCalculator/index.d.cts +2 -12
- package/dist/hooks/SnapCalculator/index.d.ts +2 -12
- package/dist/hooks/SnapCalculator/index.js +2 -26
- package/dist/hooks/SnapCalculator/useSnapCalculator.cjs +28 -0
- package/dist/hooks/SnapCalculator/useSnapCalculator.d.cts +12 -0
- package/dist/hooks/SnapCalculator/useSnapCalculator.d.ts +12 -0
- package/dist/hooks/SnapCalculator/useSnapCalculator.js +27 -0
- package/dist/hooks/SystemSettingsContext/index.cjs +2 -6
- package/dist/hooks/SystemSettingsContext/index.d.cts +2 -24
- package/dist/hooks/SystemSettingsContext/index.d.ts +2 -24
- package/dist/hooks/SystemSettingsContext/index.js +1 -5
- package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.cjs +15 -0
- package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +13 -0
- package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.ts +13 -0
- package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.js +14 -0
- package/dist/hooks/TrackComponentVisibleEvent/index.cjs +2 -22
- package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -18
- package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -18
- package/dist/hooks/TrackComponentVisibleEvent/index.js +1 -21
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +53 -0
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +18 -0
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +18 -0
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +52 -0
- package/dist/hooks/UpdateAnalyticsProps/index.cjs +2 -62
- package/dist/hooks/UpdateAnalyticsProps/index.d.cts +2 -9
- package/dist/hooks/UpdateAnalyticsProps/index.d.ts +2 -9
- package/dist/hooks/UpdateAnalyticsProps/index.js +2 -59
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.cjs +44 -0
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.d.cts +9 -0
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.d.ts +9 -0
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.js +43 -0
- package/dist/hooks/utils.cjs +97 -7
- package/dist/hooks/utils.d.cts +22 -14
- package/dist/hooks/utils.d.ts +22 -14
- package/dist/hooks/utils.js +91 -2
- package/dist/interceptors/index.cjs +1 -2
- package/dist/interceptors/index.d.cts +3 -21
- package/dist/interceptors/index.d.ts +3 -21
- package/dist/interceptors/index.js +1 -2
- package/dist/interceptors/types.cjs +0 -1
- package/dist/interceptors/types.d.cts +10 -14
- package/dist/interceptors/types.d.ts +10 -14
- package/dist/interceptors/types.js +0 -2
- package/dist/interceptors/useMessageInterceptor.cjs +26 -0
- package/dist/interceptors/useMessageInterceptor.d.cts +9 -0
- package/dist/interceptors/useMessageInterceptor.d.ts +9 -0
- package/dist/interceptors/useMessageInterceptor.js +25 -0
- package/dist/merchants/domInsertion.cjs +17 -0
- package/dist/merchants/domInsertion.d.cts +14 -0
- package/dist/merchants/domInsertion.d.ts +14 -0
- package/dist/merchants/domInsertion.js +16 -0
- package/dist/merchants/gridInsertion.cjs +24 -0
- package/dist/merchants/gridInsertion.d.cts +21 -0
- package/dist/merchants/gridInsertion.d.ts +21 -0
- package/dist/merchants/gridInsertion.js +23 -0
- package/dist/types/OrgInfo.d.cts +13 -0
- package/dist/types/OrgInfo.d.ts +13 -0
- package/dist/types/config-versions.cjs +8 -0
- package/dist/types/config-versions.js +8 -0
- package/dist/types/customerService.d.cts +22 -0
- package/dist/types/customerService.d.ts +24 -0
- package/dist/types/custservice-types.cjs +25 -0
- package/dist/types/custservice-types.d.cts +29 -0
- package/dist/types/custservice-types.d.ts +29 -0
- package/dist/types/custservice-types.js +23 -0
- package/dist/types/exceptions/sessionExceptions.cjs +12 -0
- package/dist/types/exceptions/sessionExceptions.js +11 -0
- package/dist/types/exceptions/unsupportedProductExceptions.cjs +12 -0
- package/dist/types/exceptions/unsupportedProductExceptions.js +11 -0
- package/dist/types/index.cjs +5 -33
- package/dist/types/index.d.cts +6 -3
- package/dist/types/index.d.ts +6 -3
- package/dist/types/index.js +3 -30
- package/dist/types/search-filter-types.d.cts +102 -0
- package/dist/types/search-filter-types.d.ts +102 -0
- package/dist/types/suggestionBarV2-types.cjs +11 -0
- package/dist/types/suggestionBarV2-types.d.cts +8 -0
- package/dist/types/suggestionBarV2-types.d.ts +8 -0
- package/dist/types/suggestionBarV2-types.js +10 -0
- package/dist/types/test-types.d.cts +7 -0
- package/dist/types/test-types.d.ts +7 -0
- package/package.json +4 -5
- package/src/application/commerce-api.ts +123 -176
- package/src/application/logging/logger.ts +2 -10
- package/src/application/models/api/orgConfigResults.ts +4 -4
- package/src/application/models/cachedValue.ts +1 -3
- package/src/application/models/clientDetails.ts +1 -3
- package/src/application/models/colorsConfig.ts +18 -18
- package/src/application/models/frontendConfig.ts +2 -2
- package/src/application/models/googleAnalyticsEvents.ts +1 -3
- package/src/application/models/graphql/index.ts +1 -1
- package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
- package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
- package/src/application/models/guards/api/isApiOrgConfigResults.ts +3 -3
- package/src/application/models/guards/api/isApiOrganizationConfig.ts +1 -4
- package/src/application/models/guards/api/isApiProductResponseAttributes.ts +1 -3
- package/src/application/models/guards/api/isApiReviewRichInformation.ts +2 -2
- package/src/application/models/guards/api/isApiSearchEventAttributes.ts +1 -1
- package/src/application/models/guards/graphQL/isGraphQLColorsConfig.ts +1 -1
- package/src/application/models/guards/isSpanxTakeAQuizCtaParameter.ts +1 -1
- package/src/application/models/index.ts +87 -87
- package/src/application/models/spanxTakeAQuizCtaParameter.ts +1 -1
- package/src/application/models/spiffyWidgets.ts +0 -1
- package/src/application/models/utils/snakeToCamelTransformer.ts +10 -10
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +3 -5
- package/src/application/models/validators/validateOrgConfigResults.ts +3 -3
- package/src/application/models/validators/validateResponse.ts +1 -1
- package/src/application/utils/analyticsUtils.ts +17 -33
- package/src/application/utils/cdnUtils.ts +4 -7
- package/src/application/utils/domObserver.ts +8 -8
- package/src/application/utils/elementObserver.ts +3 -3
- package/src/application/utils/imageFilter.ts +9 -6
- package/src/application/utils/index.ts +21 -21
- package/src/application/utils/merchantUtils.ts +8 -8
- package/src/application/utils/messageFromSuggestionEvent.ts +1 -1
- package/src/application/utils/mutationHelper.ts +3 -3
- package/src/application/utils/nextMessageRequestToApiRequest.ts +1 -1
- package/src/application/utils/stringUtils.ts +0 -2
- package/src/application/utils/urlsParser.ts +1 -1
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +5 -5
- package/src/atoms/app/index.ts +21 -26
- package/src/atoms/app/variant.ts +8 -8
- package/src/atoms/atomStore/index.ts +1 -1
- package/src/atoms/chat/chatState.ts +9 -19
- package/src/atoms/chat/index.ts +1 -1
- package/src/atoms/chat/lastMessage.ts +1 -1
- package/src/atoms/chat/messageQueue.ts +27 -52
- package/src/atoms/chat/performanceMetrics.ts +38 -51
- package/src/atoms/chat/renderedWidgetRefs.ts +3 -3
- package/src/atoms/chat/replies.ts +40 -43
- package/src/atoms/envive/enviveConfig.ts +27 -32
- package/src/atoms/globalSearch/index.ts +1 -1
- package/src/atoms/org/customerService.ts +4 -8
- package/src/atoms/org/graphqlConfig.ts +10 -16
- package/src/atoms/org/index.ts +4 -4
- package/src/atoms/org/newOrgConfigAtom.ts +2 -2
- package/src/atoms/org/orgAnalyticsConfig.ts +4 -4
- package/src/atoms/search/chatSearch.ts +74 -101
- package/src/atoms/search/productFilters.ts +15 -15
- package/src/atoms/search/productRetrievalAPI.ts +9 -11
- package/src/atoms/search/productRetrievalAdapter.ts +4 -4
- package/src/atoms/search/searchAPI.ts +46 -64
- package/src/atoms/search/searchServiceAdapter.ts +4 -8
- package/src/atoms/search/types.ts +2 -2
- package/src/atoms/search/utils.ts +1 -1
- package/src/config/divIds.ts +8 -4
- package/src/config/index.ts +1 -1
- package/src/config/locators/components/chat/variants/index.ts +12 -13
- package/src/config/locators/components/floating-button.ts +2 -2
- package/src/config/locators/components/shadow-dom.ts +1 -1
- package/src/config/locators/embedded.ts +2 -1
- package/src/config/socialProofClasses.ts +9 -14
- package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +107 -122
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +112 -143
- package/src/contexts/amplitudeContext/index.ts +1 -1
- package/src/contexts/cdnContext/cdnContext.tsx +8 -10
- package/src/contexts/cdnContext/index.ts +1 -1
- package/src/contexts/chatContext/chatContext.tsx +77 -123
- package/src/contexts/chatContext/index.ts +1 -1
- package/src/contexts/enviveConfigContext/__tests__/enviveConfigContext.test.tsx +125 -153
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +7 -7
- package/src/contexts/enviveConfigContext/index.ts +1 -1
- package/src/contexts/enviveCssContext/enviveCssContext.tsx +4 -8
- package/src/contexts/enviveCssContext/index.ts +1 -1
- package/src/contexts/featureFlagContext/featureFlagContext.tsx +28 -41
- package/src/contexts/featureFlagContext/index.ts +1 -1
- package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +15 -25
- package/src/contexts/featureFlagServiceContext/index.ts +1 -1
- package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +142 -170
- package/src/contexts/graphqlContext/graphqlContext.tsx +40 -60
- package/src/contexts/graphqlContext/index.ts +1 -1
- package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +155 -161
- package/src/contexts/localStorageContext/index.ts +1 -1
- package/src/contexts/localStorageContext/localStorageContext.tsx +25 -47
- package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +119 -153
- package/src/contexts/newOrgConfigContext/index.ts +1 -1
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +11 -17
- package/src/contexts/searchContext/__tests__/searchContext.test.tsx +290 -227
- package/src/contexts/searchContext/index.ts +1 -1
- package/src/contexts/searchContext/searchContext.tsx +31 -45
- package/src/contexts/sessionStorageContext/index.ts +1 -1
- package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +11 -27
- package/src/contexts/shopifyUrlContext/index.ts +1 -1
- package/src/contexts/shopifyUrlContext/shopifyUrlContext.tsx +21 -30
- package/src/contexts/systemSettingsContext/__tests__/systemSettingsContext.test.tsx +130 -133
- package/src/contexts/systemSettingsContext/index.ts +1 -1
- package/src/contexts/systemSettingsContext/systemSettingsContext.tsx +8 -21
- package/src/contexts/types.ts +166 -221
- package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +116 -130
- package/src/contexts/userIdentityContext/index.ts +1 -1
- package/src/contexts/userIdentityContext/userIdentityContext.tsx +29 -64
- package/src/events/index.ts +7 -3
- package/src/events/registerAnalyticsListeners.ts +10 -13
- package/src/hooks/AmplitudeOperations/index.ts +1 -1
- package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +5 -8
- package/src/hooks/AppDetails/index.ts +1 -1
- package/src/hooks/AppDetails/useAppDetails.ts +10 -14
- package/src/hooks/BlockBackButton/index.ts +1 -1
- package/src/hooks/BlockBackButton/useBlockBackButton.ts +10 -13
- package/src/hooks/CdnOperations/index.ts +1 -1
- package/src/hooks/CdnOperations/useCdnOperations.ts +1 -1
- package/src/hooks/ChatToggle/index.ts +1 -1
- package/src/hooks/ChatToggle/useChatToggle.ts +7 -16
- package/src/hooks/ChatToggleAnalytics/index.ts +1 -1
- package/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts +4 -4
- package/src/hooks/CustomerSupportHandoff/index.ts +1 -1
- package/src/hooks/Debounce/index.ts +1 -1
- package/src/hooks/ElementObserver/index.ts +1 -1
- package/src/hooks/GrabAndScroll/index.ts +1 -1
- package/src/hooks/GrabAndScroll/useGrabAndScroll.ts +131 -119
- package/src/hooks/GraphQLConfig/index.ts +1 -1
- package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +4 -7
- package/src/hooks/IdentifyUser/index.ts +1 -1
- package/src/hooks/IdentifyUser/useIdentifyUser.ts +4 -8
- package/src/hooks/ImageResolver/index.ts +1 -1
- package/src/hooks/ImageResolver/useImageResolver.ts +7 -16
- package/src/hooks/Intersection/index.ts +1 -1
- package/src/hooks/IsSmallScreen/index.ts +1 -1
- package/src/hooks/LocalStorageOperations/index.ts +1 -1
- package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +12 -19
- package/src/hooks/MessageFilter/index.ts +1 -1
- package/src/hooks/MessageFilter/useMessageFilter.ts +1 -1
- package/src/hooks/MessageScrollObserver/index.ts +1 -1
- package/src/hooks/MessageScrollObserver/useMessageScrollObserver.ts +35 -37
- package/src/hooks/NewOrgConfig/index.ts +1 -1
- package/src/hooks/NewOrgConfig/useNewOrgConfig.ts +1 -1
- package/src/hooks/Search/__tests__/useSearch.test.tsx +214 -247
- package/src/hooks/Search/index.ts +1 -1
- package/src/hooks/Search/useRecommendedProducts.ts +27 -33
- package/src/hooks/Search/useSearch.tsx +65 -53
- package/src/hooks/Search/useSearchInput.ts +23 -33
- package/src/hooks/SearchOperations/index.ts +1 -1
- package/src/hooks/SearchOperations/useSearchOperations.ts +8 -12
- package/src/hooks/SessionStorageOperations/index.ts +1 -1
- package/src/hooks/SessionStorageOperations/useSessionStorageOperations.ts +5 -5
- package/src/hooks/ShopifyUrlOperations/index.ts +1 -1
- package/src/hooks/ShopifyUrlOperations/useShopifyUrlOperations.ts +8 -14
- package/src/hooks/SnapCalculator/index.ts +1 -1
- package/src/hooks/SnapCalculator/useSnapCalculator.ts +1 -1
- package/src/hooks/SystemSettingsContext/index.ts +1 -1
- package/src/hooks/SystemSettingsContext/useSystemSettingsContext.ts +3 -5
- package/src/hooks/TrackComponentVisibleEvent/index.ts +1 -1
- package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +6 -6
- package/src/hooks/UpdateAnalyticsProps/index.ts +1 -1
- package/src/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.ts +10 -22
- package/src/hooks/utils.ts +20 -29
- package/src/interceptors/index.ts +2 -2
- package/src/interceptors/useMessageInterceptor.ts +4 -4
- package/src/merchants/domInsertion.ts +13 -15
- package/src/merchants/gridInsertion.ts +15 -15
- package/src/types/FilterAttribute.ts +7 -10
- package/src/{types.ts → types/OrgInfo.ts} +1 -3
- package/src/types/config-versions.ts +2 -4
- package/src/types/customerService.ts +15 -15
- package/src/types/custservice-types.ts +2 -2
- package/src/types/exceptions/unsupportedProductExceptions.ts +1 -1
- package/src/types/index.ts +5 -4
- package/src/types/search-filter-types.ts +2 -2
- package/src/types/suggestionBarV2-types.ts +3 -3
- package/dist/AmplitudeOperations-C-ieCm9m.js +0 -1
- package/dist/AmplitudeOperations-p7APchq9.cjs +0 -0
- package/dist/NewOrgConfig-Ch7rrfDH.js +0 -10
- package/dist/NewOrgConfig-D9hNf1kf.cjs +0 -15
- package/dist/SystemSettingsContext-BEDKzEGs.js +0 -13
- package/dist/SystemSettingsContext-SsZBLhYl.cjs +0 -20
- package/dist/TrackComponentVisibleEvent-C04P7hRs.js +0 -52
- package/dist/TrackComponentVisibleEvent-CypK1zy3.cjs +0 -59
- package/dist/amplitudeContext-BlCtIx5s.js +0 -268
- package/dist/amplitudeContext-BmuAesXk.cjs +0 -290
- package/dist/amplitudeContext-CCVyp5RU.d.cts +0 -52
- package/dist/amplitudeContext-DbicJUzl.js +0 -1
- package/dist/amplitudeContext-DcRur97Z.d.ts +0 -52
- package/dist/amplitudeContext-q3mggFSE.cjs +0 -0
- package/dist/api-BvygKEiX.cjs +0 -239
- package/dist/api-bHEYmSiT.js +0 -166
- package/dist/app-Aqkm_SlS.js +0 -110
- package/dist/app-BQw_-JGl.cjs +0 -156
- package/dist/atomStore-CmZbgQHc.cjs +0 -58
- package/dist/atomStore-DEcDhiLp.js +0 -32
- package/dist/cdnContext-CU9G_o-7.js +0 -38
- package/dist/cdnContext-Cjj2MuO-.cjs +0 -53
- package/dist/chat-Bxd6htvi.js +0 -258
- package/dist/chat-ClvJ9xEj.js +0 -25
- package/dist/chat-DCGriB7h.cjs +0 -145
- package/dist/chat-RYAkvBFh.cjs +0 -400
- package/dist/chatElementDisplayLocation-BO3fY4hq.d.ts +0 -26
- package/dist/chatElementDisplayLocation-Igta1TL1.d.cts +0 -26
- package/dist/chatSearch-BGLT3jWO.js +0 -295
- package/dist/chatSearch-Bqv73Oy0.cjs +0 -418
- package/dist/chatState-C8aDBHkl.js +0 -34
- package/dist/chatState-CACif3VJ.cjs +0 -120
- package/dist/commerce-api-B7smzE4o.cjs +0 -319
- package/dist/commerce-api-BSbzeNTu.js +0 -312
- package/dist/common-DQPvV_S_.cjs +0 -189
- package/dist/common-c_4eX0qn.js +0 -39
- package/dist/components-CDpaMUjK.js +0 -11
- package/dist/components-DKwVHIjq.cjs +0 -29
- package/dist/domObserver-COKvTfZV.cjs +0 -304
- package/dist/domObserver-DEiUh0qg.js +0 -285
- package/dist/enviveConfig-B42OJ8bK.cjs +0 -130
- package/dist/enviveConfig-BlIkxiAF.js +0 -62
- package/dist/enviveConfigContext-1_EivtCa.js +0 -45
- package/dist/enviveConfigContext-Y1ahEAMe.cjs +0 -60
- package/dist/events-DYY4l817.cjs +0 -90
- package/dist/events-DyUix-Bn.js +0 -78
- package/dist/featureFlagServiceContext-CAPrb4e_.js +0 -42
- package/dist/featureFlagServiceContext-CPqbnfe3.d.cts +0 -23
- package/dist/featureFlagServiceContext-D3Ge8GH5.cjs +0 -62
- package/dist/featureFlagServiceContext-mFEI_SIk.d.ts +0 -23
- package/dist/featureGates-Bt_Y3kZ7.cjs +0 -32
- package/dist/featureGates-D4Me_IZH.js +0 -26
- package/dist/frontendConfig-DPpzM5cz.d.cts +0 -860
- package/dist/frontendConfig-msK69LYN.d.ts +0 -860
- package/dist/globalSearch-BOG3wmck.cjs +0 -39
- package/dist/globalSearch-BQEX-2Ml.js +0 -14
- package/dist/graphql-CbI_HNEp.js +0 -48
- package/dist/graphql-Cqoo1D4M.cjs +0 -71
- package/dist/graphqlConfig-BnfE0ql5.cjs +0 -39
- package/dist/graphqlConfig-CZGjJ8hP.js +0 -14
- package/dist/graphqlContext-1BkFjchL.d.cts +0 -28
- package/dist/graphqlContext-B1vmNkWT.d.ts +0 -28
- package/dist/graphqlContext-CIeJ0GDP.cjs +0 -111
- package/dist/graphqlContext-CoU6L9PE.js +0 -96
- package/dist/index--9_c4tze.d.ts +0 -9
- package/dist/index-A0HvA68Y.d.cts +0 -1
- package/dist/index-BEpDGqnz.d.cts +0 -41
- package/dist/index-BNHIIgYk.d.ts +0 -24
- package/dist/index-BVsXKN48.d.ts +0 -186
- package/dist/index-Bb3zXP0P.d.ts +0 -673
- package/dist/index-CCboEuTO.d.cts +0 -24
- package/dist/index-CESxqFso.d.cts +0 -228
- package/dist/index-D7htGSQC.d.ts +0 -44
- package/dist/index-DM_5fh8c.d.ts +0 -101
- package/dist/index-DNVvRcKu.d.ts +0 -1
- package/dist/index-DU7uw0ba.d.cts +0 -101
- package/dist/index-DUrfTeD5.d.cts +0 -186
- package/dist/index-DXTWZLEm.d.cts +0 -673
- package/dist/index-DZtnHhlr.d.cts +0 -9
- package/dist/index-Dtw-hJdt.d.ts +0 -35
- package/dist/index-Dxpscrvz.d.ts +0 -228
- package/dist/index-ErVcwUnR.d.ts +0 -41
- package/dist/index-OkKEOL6H.d.cts +0 -44
- package/dist/index-hAqp0oYb.d.cts +0 -35
- package/dist/localStorageContext-C5giszHn.cjs +0 -115
- package/dist/localStorageContext-DAOJ4be4.js +0 -95
- package/dist/locators-DxYdak1F.cjs +0 -131
- package/dist/logger-0D_8Ip2L.cjs +0 -26
- package/dist/logger-Co0IA3k5.js +0 -20
- package/dist/models-C9_O47X4.js +0 -1286
- package/dist/models-DRGfA-sZ.cjs +0 -1521
- package/dist/newOrgConfigAtom-CPA6Gp6n.cjs +0 -15
- package/dist/newOrgConfigAtom-DEUj6H-p.js +0 -8
- package/dist/newOrgConfigContext-CmQ-7Trc.d.ts +0 -16
- package/dist/newOrgConfigContext-Deofb8_o.d.cts +0 -16
- package/dist/newOrgConfigContext-DsAwdL0_.js +0 -53
- package/dist/newOrgConfigContext-eP_nDi0L.cjs +0 -68
- package/dist/nodeSelector-B5NfnUHv.d.ts +0 -31
- package/dist/nodeSelector-vKB44CDB.d.cts +0 -31
- package/dist/org-B_cWn2bt.cjs +0 -43
- package/dist/org-h32_LSEb.js +0 -12
- package/dist/orgAnalyticsConfig-Bm23fw4s.cjs +0 -39
- package/dist/orgAnalyticsConfig-CpBmga08.js +0 -14
- package/dist/responseGenerics-D9bS-Dd6.d.ts +0 -148
- package/dist/responseGenerics-DWLV09cQ.d.cts +0 -148
- package/dist/search-Bxfp3AFT.js +0 -126
- package/dist/search-filter-types-BItKtezf.d.cts +0 -102
- package/dist/search-filter-types-CGFhksO3.d.ts +0 -102
- package/dist/search-tl23J__F.cjs +0 -205
- package/dist/searchContext-C-HQBmeN.cjs +0 -145
- package/dist/searchContext-CRvkE-WU.js +0 -129
- package/dist/searchServiceAdapter-BGlvoZFE.cjs +0 -34
- package/dist/searchServiceAdapter-Db6jEcJs.js +0 -16
- package/dist/sessionStorageContext-BUXBfp0L.js +0 -52
- package/dist/sessionStorageContext-Da06rhJB.cjs +0 -66
- package/dist/shopifyUrlContext-DaQ9rbqf.js +0 -61
- package/dist/shopifyUrlContext-oIgAbTOi.cjs +0 -75
- package/dist/spiffyWidgets-DK7Ekcy7.d.cts +0 -21
- package/dist/spiffyWidgets-MTUAQq_u.d.ts +0 -21
- package/dist/systemSettingsContext-BlaM8-wy.js +0 -39
- package/dist/systemSettingsContext-CTVhmhcx.cjs +0 -60
- package/dist/test-types-BEml_bm3.d.ts +0 -40
- package/dist/test-types-Dsu8RJZu.d.cts +0 -40
- package/dist/types-4LQ7LUCk.d.ts +0 -10
- package/dist/types-BegmH0S1.d.ts +0 -60
- package/dist/types-BuvXXGxE.cjs +0 -48
- package/dist/types-CKPddlfS.cjs +0 -0
- package/dist/types-CtUb63bt.js +0 -76
- package/dist/types-DFsSqmWx.d.cts +0 -10
- package/dist/types-DWorwfS-.d.cts +0 -60
- package/dist/types-DXnG1tV0.js +0 -30
- package/dist/types-Dc6hx6ei.js +0 -1
- package/dist/types-UUvB6h05.cjs +0 -106
- package/dist/types.cjs +0 -0
- package/dist/types.d.cts +0 -15
- package/dist/types.d.ts +0 -15
- package/dist/types.js +0 -1
- package/dist/unsupportedProductExceptions-DGENUnEA.cjs +0 -32
- package/dist/unsupportedProductExceptions-uQuuelOs.js +0 -20
- package/dist/urlsParser-DLCzibqU.js +0 -42
- package/dist/urlsParser-DhcEZLc_.cjs +0 -78
- package/dist/useAmplitudeOperations-DvnS1WZZ.cjs +0 -41
- package/dist/useAmplitudeOperations-Z6Jguzf_.js +0 -34
- package/dist/useAppDetails-BqJdML4I.cjs +0 -38
- package/dist/useAppDetails-DBFaMyZB.js +0 -30
- package/dist/useGraphQLConfig-BBiJnTYh.js +0 -63
- package/dist/useGraphQLConfig-CV43KcMj.cjs +0 -76
- package/dist/useIntersection-CZSEBUbv.js +0 -21
- package/dist/useIntersection-DSDREfj6.cjs +0 -28
- package/dist/useMessageInterceptor-BjGP_uXm.js +0 -25
- package/dist/useMessageInterceptor-arAqUq1Q.cjs +0 -33
- package/dist/userIdentityContext-BCW4iWmh.cjs +0 -143
- package/dist/userIdentityContext-BhK_ukpI.js +0 -126
- package/dist/userIdentityContext-C6kApbuk.d.ts +0 -20
- package/dist/userIdentityContext-kU1PIo8K.d.cts +0 -20
- package/dist/utilityTypes-B2KuRn37.js +0 -1
- package/dist/utilityTypes-BGbL2WTP.cjs +0 -0
- package/dist/utils-BRkGP1eb.d.ts +0 -15
- package/dist/utils-C2HshI4X.d.cts +0 -22
- package/dist/utils-C4ci_t0-.js +0 -27
- package/dist/utils-C6imnLBo.cjs +0 -33
- package/dist/utils-CmGOtSiO.js +0 -606
- package/dist/utils-CvLmSsUj.cjs +0 -29
- package/dist/utils-D82gfbgU.js +0 -23
- package/dist/utils-DCrwX6FT.d.cts +0 -15
- package/dist/utils-D_kATUj6.js +0 -92
- package/dist/utils-aa1jK0Xe.d.ts +0 -22
- package/dist/utils-hYTjy7hJ.cjs +0 -130
- package/dist/utils-oPSGYptn.cjs +0 -715
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { SearchResultsState, getSearchResultsState } from "../utils.js";
|
|
2
|
+
import { SpiffyWidgets } from "../../application/models/spiffyWidgets.js";
|
|
3
|
+
import { orgShortNameAtom } from "../../atoms/envive/enviveConfig.js";
|
|
4
|
+
import { SpiffyMetricsEventName, useAmplitude } from "../../contexts/amplitudeContext/amplitudeContext.js";
|
|
5
|
+
import { isFilterOpenAtom } from "../../atoms/globalSearch/globalSearch.js";
|
|
6
|
+
import { formatFilterDisplayName } from "../../atoms/search/utils.js";
|
|
7
|
+
import { ProductSorting } from "../../atoms/search/types.js";
|
|
8
|
+
import { addSearchFilterAtom, clearSearchFiltersAtom, createFilterOption, filteredSearchProductsAtom, performSearchAtom, removeSearchFilterAtom, searchAtom, searchFiltersAtom, searchParamsAtom, searchProductSortingAtom, searchSelectedFiltersAtom } from "../../atoms/search/searchAPI.js";
|
|
9
|
+
import "../../atoms/search/index.js";
|
|
10
|
+
import { useNewOrgConfig } from "../NewOrgConfig/useNewOrgConfig.js";
|
|
11
|
+
import "../NewOrgConfig/index.js";
|
|
12
|
+
import { useTrackComponentVisibleEvent } from "../TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js";
|
|
13
|
+
import "../TrackComponentVisibleEvent/index.js";
|
|
14
|
+
import { useSearchInput } from "./useSearchInput.js";
|
|
15
|
+
import { useRecommendedProducts } from "./useRecommendedProducts.js";
|
|
16
|
+
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
17
|
+
import { useAtom, useAtomValue, useSetAtom } from "jotai";
|
|
18
|
+
|
|
19
|
+
//#region src/hooks/Search/useSearch.tsx
|
|
20
|
+
const useSearch = ({ allowRedirect = false } = {}) => {
|
|
21
|
+
const config = useNewOrgConfig();
|
|
22
|
+
const orgShortName = useAtomValue(orgShortNameAtom);
|
|
23
|
+
const { data: searchData, loading: isLoadingSearch } = useAtomValue(searchAtom);
|
|
24
|
+
const productList = useAtomValue(filteredSearchProductsAtom);
|
|
25
|
+
const performSearch = useSetAtom(performSearchAtom);
|
|
26
|
+
const [{ query }] = useAtom(searchParamsAtom);
|
|
27
|
+
const [isFilterOpen, setIsFilterOpen] = useAtom(isFilterOpenAtom);
|
|
28
|
+
const [selectedFilterOptions] = useAtom(searchSelectedFiltersAtom);
|
|
29
|
+
const addFilter = useSetAtom(addSearchFilterAtom);
|
|
30
|
+
const removeFilter = useSetAtom(removeSearchFilterAtom);
|
|
31
|
+
const [productSorting, setProductSorting] = useAtom(searchProductSortingAtom);
|
|
32
|
+
const clearFilters = useSetAtom(clearSearchFiltersAtom);
|
|
33
|
+
const searchFilters = useAtomValue(searchFiltersAtom);
|
|
34
|
+
const recommendedProducts = useRecommendedProducts();
|
|
35
|
+
const searchResultsRef = useRef(null);
|
|
36
|
+
const scrollToTop = useCallback(() => {
|
|
37
|
+
const container = searchResultsRef.current;
|
|
38
|
+
if (container) container.scrollTo({
|
|
39
|
+
top: 0,
|
|
40
|
+
behavior: "smooth"
|
|
41
|
+
});
|
|
42
|
+
else window.scrollTo({
|
|
43
|
+
top: 0,
|
|
44
|
+
behavior: "smooth"
|
|
45
|
+
});
|
|
46
|
+
}, []);
|
|
47
|
+
const { searchText, focusedIndex, focusedOptionId, autocompleteResults, shouldShowAutocomplete, handleSearchInputChange, handleSearchInputFocus, handleSearchInputBlur, handleKeyDown, handleAutocompleteSelect, handleSubmitSearch, setSearchText, resetSearch } = useSearchInput({
|
|
48
|
+
initialSearchText: "",
|
|
49
|
+
searchOrigin: SpiffyWidgets.SearchResults,
|
|
50
|
+
onSearchSubmit: (searchQuery) => {
|
|
51
|
+
performSearch({ query: searchQuery }, allowRedirect);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const searchResultsState = getSearchResultsState(isLoadingSearch, searchData);
|
|
55
|
+
const dynamicFilters = searchData?.filters || [];
|
|
56
|
+
const safeProductCardConfig = config?.frontendConfig?.uiConfigs?.productCardConfig || {
|
|
57
|
+
variant: "minimal",
|
|
58
|
+
hoverVariant: "none",
|
|
59
|
+
layoutVariant: "square"
|
|
60
|
+
};
|
|
61
|
+
const safeMerchantShortName = orgShortName || "";
|
|
62
|
+
const searchConfig = config?.frontendConfig?.uiConfigs?.searchConfig;
|
|
63
|
+
const safeRecommendedProductsHeading = searchConfig?.recommendedProductsHeading || "Suggested Products";
|
|
64
|
+
const safeSearchOverlayHeading = searchConfig?.searchOverlayHeading ?? "What can I help you find?";
|
|
65
|
+
const availableDynamicFilters = useMemo(() => {
|
|
66
|
+
return dynamicFilters.filter((dynamicFilterName) => !selectedFilterOptions.some((option) => option.id === `dynamic:${dynamicFilterName}`)).map((dynamicFilterName) => ({
|
|
67
|
+
name: dynamicFilterName,
|
|
68
|
+
displayName: formatFilterDisplayName(dynamicFilterName)
|
|
69
|
+
}));
|
|
70
|
+
}, [dynamicFilters, selectedFilterOptions]);
|
|
71
|
+
const filters = useMemo(() => {
|
|
72
|
+
return [{
|
|
73
|
+
filterId: "sort",
|
|
74
|
+
displayName: "SORT",
|
|
75
|
+
items: [
|
|
76
|
+
{
|
|
77
|
+
filterItemId: String(ProductSorting.FEATURED),
|
|
78
|
+
displayName: "Relevance",
|
|
79
|
+
productCount: 0,
|
|
80
|
+
isSelected: productSorting === ProductSorting.FEATURED
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
filterItemId: String(ProductSorting.PRICE_ASC),
|
|
84
|
+
displayName: "Price: Low to High",
|
|
85
|
+
productCount: 0,
|
|
86
|
+
isSelected: productSorting === ProductSorting.PRICE_ASC
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
filterItemId: String(ProductSorting.PRICE_DESC),
|
|
90
|
+
displayName: "Price: High to Low",
|
|
91
|
+
productCount: 0,
|
|
92
|
+
isSelected: productSorting === ProductSorting.PRICE_DESC
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}, ...searchFilters];
|
|
96
|
+
}, [productSorting, searchFilters]);
|
|
97
|
+
const filterButtonText = useMemo(() => {
|
|
98
|
+
const selectedCount = filters.reduce((acc, filter) => {
|
|
99
|
+
if (filter.filterId === "sort") return acc;
|
|
100
|
+
return acc + filter.items.filter((item) => item.isSelected).length;
|
|
101
|
+
}, 0);
|
|
102
|
+
if (selectedCount === 0) return "Filter & Sort";
|
|
103
|
+
return `Filter & Sort (${selectedCount})`;
|
|
104
|
+
}, [filters]);
|
|
105
|
+
const { trackEvent } = useAmplitude();
|
|
106
|
+
const handleToggleDynamicFilter = useCallback(({ filter, dynamicFilterDisplayName }) => {
|
|
107
|
+
trackEvent({
|
|
108
|
+
eventName: SpiffyMetricsEventName.SearchFilterClicked,
|
|
109
|
+
eventProps: {
|
|
110
|
+
filterType: "Dynamic",
|
|
111
|
+
filterValue: filter,
|
|
112
|
+
queryText: searchText
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
addFilter(createFilterOption("dynamic", filter, dynamicFilterDisplayName));
|
|
116
|
+
scrollToTop();
|
|
117
|
+
}, [
|
|
118
|
+
addFilter,
|
|
119
|
+
searchText,
|
|
120
|
+
scrollToTop
|
|
121
|
+
]);
|
|
122
|
+
const handleRemoveFilter = useCallback((filter) => {
|
|
123
|
+
removeFilter(filter.id);
|
|
124
|
+
scrollToTop();
|
|
125
|
+
}, [removeFilter, scrollToTop]);
|
|
126
|
+
const handleSelectFilterItem = useCallback(({ filterId, filterItemId, isSelected, displayName }) => {
|
|
127
|
+
if (filterId === "sort") {
|
|
128
|
+
const newSort = filterItemId;
|
|
129
|
+
trackEvent({
|
|
130
|
+
eventName: SpiffyMetricsEventName.SearchSortClicked,
|
|
131
|
+
eventProps: {
|
|
132
|
+
sortType: newSort,
|
|
133
|
+
queryText: searchText
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
setProductSorting(newSort);
|
|
137
|
+
scrollToTop();
|
|
138
|
+
} else if (!isSelected) {
|
|
139
|
+
removeFilter(`${filterId}:${filterItemId}`);
|
|
140
|
+
scrollToTop();
|
|
141
|
+
} else {
|
|
142
|
+
trackEvent({
|
|
143
|
+
eventName: SpiffyMetricsEventName.SearchFilterClicked,
|
|
144
|
+
eventProps: {
|
|
145
|
+
filterType: "Static",
|
|
146
|
+
filterCategory: filterId,
|
|
147
|
+
filterValue: filterItemId,
|
|
148
|
+
queryText: searchText
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
addFilter(createFilterOption(filterId, filterItemId, displayName));
|
|
152
|
+
scrollToTop();
|
|
153
|
+
}
|
|
154
|
+
}, [
|
|
155
|
+
addFilter,
|
|
156
|
+
removeFilter,
|
|
157
|
+
setProductSorting,
|
|
158
|
+
searchText,
|
|
159
|
+
scrollToTop
|
|
160
|
+
]);
|
|
161
|
+
const handleClearAllFilters = useCallback(() => {
|
|
162
|
+
setProductSorting(ProductSorting.FEATURED);
|
|
163
|
+
clearFilters();
|
|
164
|
+
scrollToTop();
|
|
165
|
+
}, [
|
|
166
|
+
setProductSorting,
|
|
167
|
+
clearFilters,
|
|
168
|
+
scrollToTop
|
|
169
|
+
]);
|
|
170
|
+
useTrackComponentVisibleEvent(SpiffyWidgets.SearchResults, searchResultsRef, {}, SpiffyMetricsEventName.SearchComponentVisible);
|
|
171
|
+
useEffect(() => {
|
|
172
|
+
if (searchResultsState === SearchResultsState.Results || searchResultsState === SearchResultsState.NoResults) trackEvent({
|
|
173
|
+
eventName: SpiffyMetricsEventName.SearchResultsViewed,
|
|
174
|
+
eventProps: {
|
|
175
|
+
queryText: searchText,
|
|
176
|
+
resultsCount: productList.length
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}, [productList.length, searchResultsState]);
|
|
180
|
+
useEffect(() => {
|
|
181
|
+
if (query && query !== searchText) {
|
|
182
|
+
const esq = new URLSearchParams(window.location.search).get("esq");
|
|
183
|
+
setSearchText(query);
|
|
184
|
+
performSearch({ query: esq ?? query });
|
|
185
|
+
}
|
|
186
|
+
}, [
|
|
187
|
+
performSearch,
|
|
188
|
+
query,
|
|
189
|
+
setSearchText
|
|
190
|
+
]);
|
|
191
|
+
return {
|
|
192
|
+
searchData,
|
|
193
|
+
searchResponseId: searchData?.searchResponseId ?? "",
|
|
194
|
+
merchantShortName: safeMerchantShortName,
|
|
195
|
+
recommendedProductsHeading: safeRecommendedProductsHeading,
|
|
196
|
+
searchOverlayHeading: safeSearchOverlayHeading,
|
|
197
|
+
productCardConfig: safeProductCardConfig,
|
|
198
|
+
productList,
|
|
199
|
+
recommendedProducts,
|
|
200
|
+
autocompleteResults,
|
|
201
|
+
searchFilters: filters,
|
|
202
|
+
availableDynamicFilters,
|
|
203
|
+
selectedFilterOptions,
|
|
204
|
+
searchText,
|
|
205
|
+
query: query || "",
|
|
206
|
+
searchResultsState,
|
|
207
|
+
isLoadingSearch,
|
|
208
|
+
isFilterOpen,
|
|
209
|
+
shouldShowAutocomplete,
|
|
210
|
+
focusedIndex,
|
|
211
|
+
focusedOptionId,
|
|
212
|
+
filterButtonText,
|
|
213
|
+
onSearchInputChange: handleSearchInputChange,
|
|
214
|
+
onSubmitSearch: handleSubmitSearch,
|
|
215
|
+
onAutocompleteSelect: handleAutocompleteSelect,
|
|
216
|
+
onKeyDown: handleKeyDown,
|
|
217
|
+
onSearchInputFocus: handleSearchInputFocus,
|
|
218
|
+
onSearchInputBlur: handleSearchInputBlur,
|
|
219
|
+
onToggleDynamicFilter: handleToggleDynamicFilter,
|
|
220
|
+
onSelectFilterItem: handleSelectFilterItem,
|
|
221
|
+
onRemoveFilter: handleRemoveFilter,
|
|
222
|
+
onClearAllFilters: handleClearAllFilters,
|
|
223
|
+
setIsFilterOpen,
|
|
224
|
+
resetSearch,
|
|
225
|
+
searchResultsRef
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
//#endregion
|
|
230
|
+
export { useSearch };
|
|
231
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU2VhcmNoLmpzIiwibmFtZXMiOlsiaGFuZGxlU2VsZWN0RmlsdGVySXRlbTogU2VsZWN0RmlsdGVySXRlbSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9TZWFyY2gvdXNlU2VhcmNoLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VBdG9tLCB1c2VBdG9tVmFsdWUsIHVzZVNldEF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gIFNlbGVjdGVkRmlsdGVyT3B0aW9uLFxuICBhZGRTZWFyY2hGaWx0ZXJBdG9tLFxuICBjbGVhclNlYXJjaEZpbHRlcnNBdG9tLFxuICBjcmVhdGVGaWx0ZXJPcHRpb24sXG4gIGZpbHRlcmVkU2VhcmNoUHJvZHVjdHNBdG9tLFxuICBwZXJmb3JtU2VhcmNoQXRvbSxcbiAgcmVtb3ZlU2VhcmNoRmlsdGVyQXRvbSxcbiAgc2VhcmNoQXRvbSxcbiAgc2VhcmNoRmlsdGVyc0F0b20sXG4gIHNlYXJjaFBhcmFtc0F0b20sXG4gIHNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSxcbiAgc2VhcmNoU2VsZWN0ZWRGaWx0ZXJzQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL3NlYXJjaCc7XG5pbXBvcnQgeyBpc0ZpbHRlck9wZW5BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2dsb2JhbFNlYXJjaC9nbG9iYWxTZWFyY2gnO1xuaW1wb3J0IHsgZm9ybWF0RmlsdGVyRGlzcGxheU5hbWUgfSBmcm9tICdzcmMvYXRvbXMvc2VhcmNoL3V0aWxzJztcbmltcG9ydCB7IFByb2R1Y3RTb3J0aW5nIH0gZnJvbSAnc3JjL2F0b21zL3NlYXJjaC90eXBlcyc7XG5pbXBvcnQge1xuICBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICB1c2VBbXBsaXR1ZGUsXG59IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgU3BpZmZ5V2lkZ2V0cyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3BpZmZ5V2lkZ2V0cyc7XG5pbXBvcnQgeyBQcm9kdWN0Q2FyZENvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zZWFyY2gnO1xuaW1wb3J0IHsgU2VhcmNoUmVzcG9uc2VQcm9kdWN0IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IFNlYXJjaEZpbHRlckRhdHVtLCBTZWxlY3RGaWx0ZXJJdGVtIH0gZnJvbSAnc3JjL3R5cGVzL3NlYXJjaC1maWx0ZXItdHlwZXMnO1xuaW1wb3J0IHsgb3JnU2hvcnROYW1lQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCB7IFNlYXJjaFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdHNTdGF0ZSwgZ2V0U2VhcmNoUmVzdWx0c1N0YXRlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQgfSBmcm9tICcuLi9UcmFja0NvbXBvbmVudFZpc2libGVFdmVudCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hJbnB1dCB9IGZyb20gJy4vdXNlU2VhcmNoSW5wdXQnO1xuaW1wb3J0IHsgdXNlTmV3T3JnQ29uZmlnIH0gZnJvbSAnLi4vTmV3T3JnQ29uZmlnJztcbmltcG9ydCB7IHVzZVJlY29tbWVuZGVkUHJvZHVjdHMgfSBmcm9tICcuL3VzZVJlY29tbWVuZGVkUHJvZHVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3VsdHNIb2NQcm9wcyB7XG4gIC8vIERhdGFcbiAgc2VhcmNoRGF0YTogU2VhcmNoUmVzdWx0IHwgbnVsbDtcbiAgc2VhcmNoUmVzcG9uc2VJZDogc3RyaW5nO1xuICBtZXJjaGFudFNob3J0TmFtZTogc3RyaW5nO1xuICBwcm9kdWN0Q2FyZENvbmZpZzogUHJvZHVjdENhcmRDb25maWc7XG4gIHByb2R1Y3RMaXN0OiBTZWFyY2hSZXNwb25zZVByb2R1Y3RbXTtcbiAgYXV0b2NvbXBsZXRlUmVzdWx0czogc3RyaW5nW107XG4gIHNlYXJjaEZpbHRlcnM6IFNlYXJjaEZpbHRlckRhdHVtW107XG4gIGF2YWlsYWJsZUR5bmFtaWNGaWx0ZXJzOiB7IG5hbWU6IHN0cmluZzsgZGlzcGxheU5hbWU6IHN0cmluZyB9W107XG4gIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogU2VsZWN0ZWRGaWx0ZXJPcHRpb25bXTtcbiAgcmVjb21tZW5kZWRQcm9kdWN0czogU2VhcmNoUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlc1snYXR0cmlidXRlcyddW107XG4gIHJlY29tbWVuZGVkUHJvZHVjdHNIZWFkaW5nOiBzdHJpbmc7XG4gIHNlYXJjaE92ZXJsYXlIZWFkaW5nOiBzdHJpbmc7XG5cbiAgLy8gU3RhdGVcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICBzZWFyY2hSZXN1bHRzU3RhdGU6IFNlYXJjaFJlc3VsdHNTdGF0ZTtcbiAgaXNMb2FkaW5nU2VhcmNoOiBib29sZWFuO1xuICBpc0ZpbHRlck9wZW46IGJvb2xlYW47XG4gIHNob3VsZFNob3dBdXRvY29tcGxldGU6IGJvb2xlYW47XG4gIGZvY3VzZWRJbmRleDogbnVtYmVyO1xuICBmb2N1c2VkT3B0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvLyBVSVxuICBmaWx0ZXJCdXR0b25UZXh0OiBzdHJpbmc7XG5cbiAgLy8gRXZlbnQgSGFuZGxlcnNcbiAgb25TZWFyY2hJbnB1dENoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uU3VibWl0U2VhcmNoOiAoKSA9PiB2b2lkO1xuICBvbkF1dG9jb21wbGV0ZVNlbGVjdDogKHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZDtcbiAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHZvaWQ7XG4gIG9uU2VhcmNoSW5wdXRGb2N1czogKCkgPT4gdm9pZDtcbiAgb25TZWFyY2hJbnB1dEJsdXI6ICgpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlRHluYW1pY0ZpbHRlcjogKHtcbiAgICBmaWx0ZXIsXG4gICAgZHluYW1pY0ZpbHRlckRpc3BsYXlOYW1lLFxuICB9OiB7XG4gICAgZmlsdGVyOiBzdHJpbmc7XG4gICAgZHluYW1pY0ZpbHRlckRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIH0pID0+IHZvaWQ7XG4gIG9uU2VsZWN0RmlsdGVySXRlbTogU2VsZWN0RmlsdGVySXRlbTtcbiAgb25SZW1vdmVGaWx0ZXI6IChmaWx0ZXI6IFNlbGVjdGVkRmlsdGVyT3B0aW9uKSA9PiB2b2lkO1xuICBvbkNsZWFyQWxsRmlsdGVyczogKCkgPT4gdm9pZDtcbiAgc2V0SXNGaWx0ZXJPcGVuOiAoaXNGaWx0ZXJPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICByZXNldFNlYXJjaDogKCkgPT4gdm9pZDtcbiAgLy8gUmVmc1xuICBzZWFyY2hSZXN1bHRzUmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xufVxuXG5leHBvcnQgY29uc3QgdXNlU2VhcmNoID0gKHtcbiAgYWxsb3dSZWRpcmVjdCA9IGZhbHNlLFxufTogeyBhbGxvd1JlZGlyZWN0PzogYm9vbGVhbiB9ID0ge30pOiBTZWFyY2hSZXN1bHRzSG9jUHJvcHMgPT4ge1xuICAvLyBBdG9tc1xuICBjb25zdCBjb25maWcgPSB1c2VOZXdPcmdDb25maWcoKTtcbiAgY29uc3Qgb3JnU2hvcnROYW1lID0gdXNlQXRvbVZhbHVlKG9yZ1Nob3J0TmFtZUF0b20pO1xuICBjb25zdCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IGlzTG9hZGluZ1NlYXJjaCB9ID0gdXNlQXRvbVZhbHVlKHNlYXJjaEF0b20pO1xuICBjb25zdCBwcm9kdWN0TGlzdCA9IHVzZUF0b21WYWx1ZShmaWx0ZXJlZFNlYXJjaFByb2R1Y3RzQXRvbSk7XG4gIGNvbnN0IHBlcmZvcm1TZWFyY2ggPSB1c2VTZXRBdG9tKHBlcmZvcm1TZWFyY2hBdG9tKTtcbiAgY29uc3QgW3sgcXVlcnkgfV0gPSB1c2VBdG9tKHNlYXJjaFBhcmFtc0F0b20pO1xuICBjb25zdCBbaXNGaWx0ZXJPcGVuLCBzZXRJc0ZpbHRlck9wZW5dID0gdXNlQXRvbShpc0ZpbHRlck9wZW5BdG9tKTtcbiAgY29uc3QgW3NlbGVjdGVkRmlsdGVyT3B0aW9uc10gPSB1c2VBdG9tKHNlYXJjaFNlbGVjdGVkRmlsdGVyc0F0b20pO1xuICBjb25zdCBhZGRGaWx0ZXIgPSB1c2VTZXRBdG9tKGFkZFNlYXJjaEZpbHRlckF0b20pO1xuICBjb25zdCByZW1vdmVGaWx0ZXIgPSB1c2VTZXRBdG9tKHJlbW92ZVNlYXJjaEZpbHRlckF0b20pO1xuICBjb25zdCBbcHJvZHVjdFNvcnRpbmcsIHNldFByb2R1Y3RTb3J0aW5nXSA9IHVzZUF0b20oc2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tKTtcbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gdXNlU2V0QXRvbShjbGVhclNlYXJjaEZpbHRlcnNBdG9tKTtcbiAgY29uc3Qgc2VhcmNoRmlsdGVycyA9IHVzZUF0b21WYWx1ZShzZWFyY2hGaWx0ZXJzQXRvbSk7XG4gIGNvbnN0IHJlY29tbWVuZGVkUHJvZHVjdHMgPSB1c2VSZWNvbW1lbmRlZFByb2R1Y3RzKCk7XG5cbiAgLy8gUmVmc1xuICBjb25zdCBzZWFyY2hSZXN1bHRzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICAvLyBVdGlsaXRpZXNcbiAgY29uc3Qgc2Nyb2xsVG9Ub3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gc2VhcmNoUmVzdWx0c1JlZi5jdXJyZW50O1xuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICAvLyBTZWFyY2ggSW5wdXQgSG9va1xuICBjb25zdCBzZWFyY2hJbnB1dCA9IHVzZVNlYXJjaElucHV0KHtcbiAgICBpbml0aWFsU2VhcmNoVGV4dDogJycsXG4gICAgc2VhcmNoT3JpZ2luOiBTcGlmZnlXaWRnZXRzLlNlYXJjaFJlc3VsdHMsXG4gICAgb25TZWFyY2hTdWJtaXQ6IHNlYXJjaFF1ZXJ5ID0+IHtcbiAgICAgIHBlcmZvcm1TZWFyY2goeyBxdWVyeTogc2VhcmNoUXVlcnkgfSwgYWxsb3dSZWRpcmVjdCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qge1xuICAgIHNlYXJjaFRleHQsXG4gICAgZm9jdXNlZEluZGV4LFxuICAgIGZvY3VzZWRPcHRpb25JZCxcbiAgICBhdXRvY29tcGxldGVSZXN1bHRzLFxuICAgIHNob3VsZFNob3dBdXRvY29tcGxldGUsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXRDaGFuZ2UsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXRGb2N1cyxcbiAgICBoYW5kbGVTZWFyY2hJbnB1dEJsdXIsXG4gICAgaGFuZGxlS2V5RG93bixcbiAgICBoYW5kbGVBdXRvY29tcGxldGVTZWxlY3QsXG4gICAgaGFuZGxlU3VibWl0U2VhcmNoLFxuICAgIHNldFNlYXJjaFRleHQsXG4gICAgcmVzZXRTZWFyY2gsXG4gIH0gPSBzZWFyY2hJbnB1dDtcbiAgY29uc3Qgc2VhcmNoUmVzdWx0c1N0YXRlID0gZ2V0U2VhcmNoUmVzdWx0c1N0YXRlKGlzTG9hZGluZ1NlYXJjaCwgc2VhcmNoRGF0YSk7XG5cbiAgY29uc3QgZHluYW1pY0ZpbHRlcnMgPSBzZWFyY2hEYXRhPy5maWx0ZXJzIHx8IFtdO1xuXG4gIC8vIFByb3ZpZGUgZmFsbGJhY2sgdmFsdWVzIHdoZW4gb3JnVUlDb25maWcgaXMgbm90IHlldCBhdmFpbGFibGVcbiAgY29uc3Qgc2FmZVByb2R1Y3RDYXJkQ29uZmlnID0gY29uZmlnPy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5wcm9kdWN0Q2FyZENvbmZpZyB8fCB7XG4gICAgdmFyaWFudDogJ21pbmltYWwnLFxuICAgIGhvdmVyVmFyaWFudDogJ25vbmUnLFxuICAgIGxheW91dFZhcmlhbnQ6ICdzcXVhcmUnLFxuICB9O1xuICBjb25zdCBzYWZlTWVyY2hhbnRTaG9ydE5hbWUgPSBvcmdTaG9ydE5hbWUgfHwgJyc7XG4gIGNvbnN0IHNlYXJjaENvbmZpZyA9IGNvbmZpZz8uZnJvbnRlbmRDb25maWc/LnVpQ29uZmlncz8uc2VhcmNoQ29uZmlnO1xuICBjb25zdCBzYWZlUmVjb21tZW5kZWRQcm9kdWN0c0hlYWRpbmcgPVxuICAgIHNlYXJjaENvbmZpZz8ucmVjb21tZW5kZWRQcm9kdWN0c0hlYWRpbmcgfHwgJ1N1Z2dlc3RlZCBQcm9kdWN0cyc7XG4gIGNvbnN0IHNhZmVTZWFyY2hPdmVybGF5SGVhZGluZyA9XG4gICAgc2VhcmNoQ29uZmlnPy5zZWFyY2hPdmVybGF5SGVhZGluZyA/PyAnV2hhdCBjYW4gSSBoZWxwIHlvdSBmaW5kPyc7XG4gIGNvbnN0IGF2YWlsYWJsZUR5bmFtaWNGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGR5bmFtaWNGaWx0ZXJzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICBkeW5hbWljRmlsdGVyTmFtZSA9PlxuICAgICAgICAgICFzZWxlY3RlZEZpbHRlck9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uLmlkID09PSBgZHluYW1pYzoke2R5bmFtaWNGaWx0ZXJOYW1lfWApLFxuICAgICAgKVxuICAgICAgLm1hcChkeW5hbWljRmlsdGVyTmFtZSA9PiAoe1xuICAgICAgICBuYW1lOiBkeW5hbWljRmlsdGVyTmFtZSxcbiAgICAgICAgZGlzcGxheU5hbWU6IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lKGR5bmFtaWNGaWx0ZXJOYW1lKSxcbiAgICAgIH0pKTtcbiAgfSwgW2R5bmFtaWNGaWx0ZXJzLCBzZWxlY3RlZEZpbHRlck9wdGlvbnNdKTtcblxuICBjb25zdCBmaWx0ZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgc29ydE9wdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGZpbHRlckl0ZW1JZDogU3RyaW5nKFByb2R1Y3RTb3J0aW5nLkZFQVRVUkVEKSxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdSZWxldmFuY2UnLFxuICAgICAgICBwcm9kdWN0Q291bnQ6IDAsXG4gICAgICAgIGlzU2VsZWN0ZWQ6IHByb2R1Y3RTb3J0aW5nID09PSBQcm9kdWN0U29ydGluZy5GRUFUVVJFRCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGZpbHRlckl0ZW1JZDogU3RyaW5nKFByb2R1Y3RTb3J0aW5nLlBSSUNFX0FTQyksXG4gICAgICAgIGRpc3BsYXlOYW1lOiAnUHJpY2U6IExvdyB0byBIaWdoJyxcbiAgICAgICAgcHJvZHVjdENvdW50OiAwLFxuICAgICAgICBpc1NlbGVjdGVkOiBwcm9kdWN0U29ydGluZyA9PT0gUHJvZHVjdFNvcnRpbmcuUFJJQ0VfQVNDLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmlsdGVySXRlbUlkOiBTdHJpbmcoUHJvZHVjdFNvcnRpbmcuUFJJQ0VfREVTQyksXG4gICAgICAgIGRpc3BsYXlOYW1lOiAnUHJpY2U6IEhpZ2ggdG8gTG93JyxcbiAgICAgICAgcHJvZHVjdENvdW50OiAwLFxuICAgICAgICBpc1NlbGVjdGVkOiBwcm9kdWN0U29ydGluZyA9PT0gUHJvZHVjdFNvcnRpbmcuUFJJQ0VfREVTQyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBbXG4gICAgICB7IGZpbHRlcklkOiAnc29ydCcsIGRpc3BsYXlOYW1lOiAnU09SVCcsIGl0ZW1zOiBzb3J0T3B0aW9ucyB9LFxuICAgICAgLi4uc2VhcmNoRmlsdGVycyxcbiAgICBdIGFzIFNlYXJjaEZpbHRlckRhdHVtW107XG4gIH0sIFtwcm9kdWN0U29ydGluZywgc2VhcmNoRmlsdGVyc10pO1xuXG4gIGNvbnN0IGZpbHRlckJ1dHRvblRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gZmlsdGVycy5yZWR1Y2UoKGFjYzogbnVtYmVyLCBmaWx0ZXIpID0+IHtcbiAgICAgIGlmIChmaWx0ZXIuZmlsdGVySWQgPT09ICdzb3J0Jykge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYyArIGZpbHRlci5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgICBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdGaWx0ZXIgJiBTb3J0JztcbiAgICB9XG4gICAgcmV0dXJuIGBGaWx0ZXIgJiBTb3J0ICgke3NlbGVjdGVkQ291bnR9KWA7XG4gIH0sIFtmaWx0ZXJzXSk7XG5cbiAgLy8gQ2FsbGJhY2tzXG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRHluYW1pY0ZpbHRlciA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICBmaWx0ZXIsXG4gICAgICBkeW5hbWljRmlsdGVyRGlzcGxheU5hbWUsXG4gICAgfToge1xuICAgICAgZmlsdGVyOiBzdHJpbmc7XG4gICAgICBkeW5hbWljRmlsdGVyRGlzcGxheU5hbWU6IHN0cmluZztcbiAgICB9KSA9PiB7XG4gICAgICB0cmFja0V2ZW50KHtcbiAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaEZpbHRlckNsaWNrZWQsXG4gICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICBmaWx0ZXJUeXBlOiAnRHluYW1pYycsXG4gICAgICAgICAgZmlsdGVyVmFsdWU6IGZpbHRlcixcbiAgICAgICAgICBxdWVyeVRleHQ6IHNlYXJjaFRleHQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGFkZEZpbHRlcihjcmVhdGVGaWx0ZXJPcHRpb24oJ2R5bmFtaWMnLCBmaWx0ZXIsIGR5bmFtaWNGaWx0ZXJEaXNwbGF5TmFtZSkpO1xuICAgICAgc2Nyb2xsVG9Ub3AoKTtcbiAgICB9LFxuICAgIFthZGRGaWx0ZXIsIHNlYXJjaFRleHQsIHNjcm9sbFRvVG9wXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVSZW1vdmVGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsdGVyOiBTZWxlY3RlZEZpbHRlck9wdGlvbikgPT4ge1xuICAgICAgcmVtb3ZlRmlsdGVyKGZpbHRlci5pZCk7XG4gICAgICBzY3JvbGxUb1RvcCgpO1xuICAgIH0sXG4gICAgW3JlbW92ZUZpbHRlciwgc2Nyb2xsVG9Ub3BdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEZpbHRlckl0ZW06IFNlbGVjdEZpbHRlckl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgZmlsdGVySWQsXG4gICAgICBmaWx0ZXJJdGVtSWQsXG4gICAgICBpc1NlbGVjdGVkLFxuICAgICAgZGlzcGxheU5hbWUsXG4gICAgfToge1xuICAgICAgZmlsdGVySWQ6IHN0cmluZztcbiAgICAgIGZpbHRlckl0ZW1JZDogc3RyaW5nO1xuICAgICAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgaWYgKGZpbHRlcklkID09PSAnc29ydCcpIHtcbiAgICAgICAgY29uc3QgbmV3U29ydCA9IGZpbHRlckl0ZW1JZCBhcyBQcm9kdWN0U29ydGluZztcbiAgICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaFNvcnRDbGlja2VkLFxuICAgICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICAgIHNvcnRUeXBlOiBuZXdTb3J0LFxuICAgICAgICAgICAgcXVlcnlUZXh0OiBzZWFyY2hUZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRQcm9kdWN0U29ydGluZyhuZXdTb3J0KTtcbiAgICAgICAgc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzU2VsZWN0ZWQpIHtcbiAgICAgICAgcmVtb3ZlRmlsdGVyKGAke2ZpbHRlcklkfToke2ZpbHRlckl0ZW1JZH1gKTtcbiAgICAgICAgc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYWNrRXZlbnQoe1xuICAgICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hGaWx0ZXJDbGlja2VkLFxuICAgICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICAgIGZpbHRlclR5cGU6ICdTdGF0aWMnLFxuICAgICAgICAgICAgZmlsdGVyQ2F0ZWdvcnk6IGZpbHRlcklkLFxuICAgICAgICAgICAgZmlsdGVyVmFsdWU6IGZpbHRlckl0ZW1JZCxcbiAgICAgICAgICAgIHF1ZXJ5VGV4dDogc2VhcmNoVGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYWRkRmlsdGVyKGNyZWF0ZUZpbHRlck9wdGlvbihmaWx0ZXJJZCwgZmlsdGVySXRlbUlkLCBkaXNwbGF5TmFtZSkpO1xuICAgICAgICBzY3JvbGxUb1RvcCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZEZpbHRlciwgcmVtb3ZlRmlsdGVyLCBzZXRQcm9kdWN0U29ydGluZywgc2VhcmNoVGV4dCwgc2Nyb2xsVG9Ub3BdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyQWxsRmlsdGVycyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRQcm9kdWN0U29ydGluZyhQcm9kdWN0U29ydGluZy5GRUFUVVJFRCk7XG4gICAgY2xlYXJGaWx0ZXJzKCk7XG4gICAgc2Nyb2xsVG9Ub3AoKTtcbiAgfSwgW3NldFByb2R1Y3RTb3J0aW5nLCBjbGVhckZpbHRlcnMsIHNjcm9sbFRvVG9wXSk7XG5cbiAgLy8gU2lkZSBFZmZlY3RzXG4gIHVzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50KFxuICAgIFNwaWZmeVdpZGdldHMuU2VhcmNoUmVzdWx0cyxcbiAgICBzZWFyY2hSZXN1bHRzUmVmLFxuICAgIHt9LFxuICAgIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoQ29tcG9uZW50VmlzaWJsZSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdHNTdGF0ZSA9PT0gU2VhcmNoUmVzdWx0c1N0YXRlLlJlc3VsdHMgfHxcbiAgICAgIHNlYXJjaFJlc3VsdHNTdGF0ZSA9PT0gU2VhcmNoUmVzdWx0c1N0YXRlLk5vUmVzdWx0c1xuICAgICkge1xuICAgICAgdHJhY2tFdmVudCh7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hSZXN1bHRzVmlld2VkLFxuICAgICAgICBldmVudFByb3BzOiB7XG4gICAgICAgICAgcXVlcnlUZXh0OiBzZWFyY2hUZXh0LFxuICAgICAgICAgIHJlc3VsdHNDb3VudDogcHJvZHVjdExpc3QubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbcHJvZHVjdExpc3QubGVuZ3RoLCBzZWFyY2hSZXN1bHRzU3RhdGVdKTtcblxuICAvLyBUaGlzIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgc2VhcmNoIHRleHQgdHJpZ2dlcmluZyBhIHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChxdWVyeSAmJiBxdWVyeSAhPT0gc2VhcmNoVGV4dCkge1xuICAgICAgY29uc3QgZXNxID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQoJ2VzcScpO1xuICAgICAgc2V0U2VhcmNoVGV4dChxdWVyeSk7XG4gICAgICBwZXJmb3JtU2VhcmNoKHsgcXVlcnk6IGVzcSA/PyBxdWVyeSB9KTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbcGVyZm9ybVNlYXJjaCwgcXVlcnksIHNldFNlYXJjaFRleHRdKTtcblxuICByZXR1cm4ge1xuICAgIHNlYXJjaERhdGEsXG4gICAgc2VhcmNoUmVzcG9uc2VJZDogc2VhcmNoRGF0YT8uc2VhcmNoUmVzcG9uc2VJZCA/PyAnJyxcbiAgICBtZXJjaGFudFNob3J0TmFtZTogc2FmZU1lcmNoYW50U2hvcnROYW1lLFxuICAgIHJlY29tbWVuZGVkUHJvZHVjdHNIZWFkaW5nOiBzYWZlUmVjb21tZW5kZWRQcm9kdWN0c0hlYWRpbmcsXG4gICAgc2VhcmNoT3ZlcmxheUhlYWRpbmc6IHNhZmVTZWFyY2hPdmVybGF5SGVhZGluZyxcbiAgICBwcm9kdWN0Q2FyZENvbmZpZzogc2FmZVByb2R1Y3RDYXJkQ29uZmlnLFxuICAgIHByb2R1Y3RMaXN0LFxuICAgIHJlY29tbWVuZGVkUHJvZHVjdHMsXG4gICAgYXV0b2NvbXBsZXRlUmVzdWx0cyxcbiAgICBzZWFyY2hGaWx0ZXJzOiBmaWx0ZXJzLFxuICAgIGF2YWlsYWJsZUR5bmFtaWNGaWx0ZXJzLFxuICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9ucyxcbiAgICBzZWFyY2hUZXh0LFxuICAgIHF1ZXJ5OiBxdWVyeSB8fCAnJyxcbiAgICBzZWFyY2hSZXN1bHRzU3RhdGUsXG4gICAgaXNMb2FkaW5nU2VhcmNoLFxuICAgIGlzRmlsdGVyT3BlbixcbiAgICBzaG91bGRTaG93QXV0b2NvbXBsZXRlLFxuICAgIGZvY3VzZWRJbmRleCxcbiAgICBmb2N1c2VkT3B0aW9uSWQsXG4gICAgZmlsdGVyQnV0dG9uVGV4dCxcbiAgICBvblNlYXJjaElucHV0Q2hhbmdlOiBoYW5kbGVTZWFyY2hJbnB1dENoYW5nZSxcbiAgICBvblN1Ym1pdFNlYXJjaDogaGFuZGxlU3VibWl0U2VhcmNoLFxuICAgIG9uQXV0b2NvbXBsZXRlU2VsZWN0OiBoYW5kbGVBdXRvY29tcGxldGVTZWxlY3QsXG4gICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLFxuICAgIG9uU2VhcmNoSW5wdXRGb2N1czogaGFuZGxlU2VhcmNoSW5wdXRGb2N1cyxcbiAgICBvblNlYXJjaElucHV0Qmx1cjogaGFuZGxlU2VhcmNoSW5wdXRCbHVyLFxuICAgIG9uVG9nZ2xlRHluYW1pY0ZpbHRlcjogaGFuZGxlVG9nZ2xlRHluYW1pY0ZpbHRlcixcbiAgICBvblNlbGVjdEZpbHRlckl0ZW06IGhhbmRsZVNlbGVjdEZpbHRlckl0ZW0sXG4gICAgb25SZW1vdmVGaWx0ZXI6IGhhbmRsZVJlbW92ZUZpbHRlcixcbiAgICBvbkNsZWFyQWxsRmlsdGVyczogaGFuZGxlQ2xlYXJBbGxGaWx0ZXJzLFxuICAgIHNldElzRmlsdGVyT3BlbixcbiAgICByZXNldFNlYXJjaCxcbiAgICBzZWFyY2hSZXN1bHRzUmVmLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdGQSxNQUFhLGFBQWEsRUFDeEIsZ0JBQWdCLFVBQ2UsRUFBRSxLQUE0QjtDQUU3RCxNQUFNLFNBQVMsaUJBQWlCO0NBQ2hDLE1BQU0sZUFBZSxhQUFhLGlCQUFpQjtDQUNuRCxNQUFNLEVBQUUsTUFBTSxZQUFZLFNBQVMsb0JBQW9CLGFBQWEsV0FBVztDQUMvRSxNQUFNLGNBQWMsYUFBYSwyQkFBMkI7Q0FDNUQsTUFBTSxnQkFBZ0IsV0FBVyxrQkFBa0I7Q0FDbkQsTUFBTSxDQUFDLEVBQUUsV0FBVyxRQUFRLGlCQUFpQjtDQUM3QyxNQUFNLENBQUMsY0FBYyxtQkFBbUIsUUFBUSxpQkFBaUI7Q0FDakUsTUFBTSxDQUFDLHlCQUF5QixRQUFRLDBCQUEw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
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_amplitudeContext = require('../../contexts/amplitudeContext/amplitudeContext.cjs');
|
|
3
|
+
const require_amplitudeTrackEventAtom = require('../../atoms/amplitude/amplitudeTrackEventAtom.cjs');
|
|
4
|
+
const require_globalSearch = require('../../atoms/globalSearch/globalSearch.cjs');
|
|
5
|
+
require('../../atoms/globalSearch/index.cjs');
|
|
6
|
+
require('../../contexts/amplitudeContext/index.cjs');
|
|
7
|
+
let react = require("react");
|
|
8
|
+
let jotai = require("jotai");
|
|
9
|
+
let fuse_js = require("fuse.js");
|
|
10
|
+
fuse_js = require_rolldown_runtime.__toESM(fuse_js);
|
|
11
|
+
|
|
12
|
+
//#region src/hooks/Search/useSearchInput.ts
|
|
13
|
+
const useSearchInput = ({ initialSearchText = "", searchOrigin, onSearchSubmit }) => {
|
|
14
|
+
const track = (0, jotai.useAtomValue)(require_amplitudeTrackEventAtom.amplitudeTrackEventAtom);
|
|
15
|
+
const [searchText, setSearchText] = (0, react.useState)(initialSearchText);
|
|
16
|
+
const [hasText, setHasText] = (0, react.useState)(initialSearchText.trim().length > 0);
|
|
17
|
+
const [isFocused, setIsFocused] = (0, react.useState)(false);
|
|
18
|
+
const [focusedIndex, setFocusedIndex] = (0, react.useState)(-1);
|
|
19
|
+
const [focusedOptionId, setFocusedOptionId] = (0, react.useState)(void 0);
|
|
20
|
+
const globalAutocompleteResults = (0, jotai.useAtomValue)(require_globalSearch.autocompleteStateAtom).results;
|
|
21
|
+
const isAutocompleteEnabled = globalAutocompleteResults.length > 0;
|
|
22
|
+
const isSelectingAutocomplete = (0, react.useRef)(false);
|
|
23
|
+
const shouldShowAutocomplete = hasText && isFocused && isAutocompleteEnabled;
|
|
24
|
+
const autocompleteResultsLimit = 5;
|
|
25
|
+
const fuseOptions = (0, react.useMemo)(() => ({
|
|
26
|
+
includeScore: true,
|
|
27
|
+
includeMatches: true,
|
|
28
|
+
threshold: .3,
|
|
29
|
+
location: 0,
|
|
30
|
+
distance: 4,
|
|
31
|
+
minMatchCharLength: 1,
|
|
32
|
+
keys: [],
|
|
33
|
+
useExtendedSearch: false,
|
|
34
|
+
ignoreLocation: false
|
|
35
|
+
}), []);
|
|
36
|
+
const fuse = (0, react.useMemo)(() => {
|
|
37
|
+
if (!globalAutocompleteResults.length) return null;
|
|
38
|
+
return new fuse_js.default(globalAutocompleteResults, fuseOptions);
|
|
39
|
+
}, [globalAutocompleteResults, fuseOptions]);
|
|
40
|
+
const autocompleteResults = (0, react.useMemo)(() => {
|
|
41
|
+
if (!isAutocompleteEnabled || !fuse) return [];
|
|
42
|
+
if (!searchText.trim()) return [];
|
|
43
|
+
return fuse.search(searchText).slice(0, autocompleteResultsLimit).map((result) => result.item);
|
|
44
|
+
}, [
|
|
45
|
+
isAutocompleteEnabled,
|
|
46
|
+
fuse,
|
|
47
|
+
searchText,
|
|
48
|
+
autocompleteResultsLimit
|
|
49
|
+
]);
|
|
50
|
+
const handleSearchInputChange = (0, react.useCallback)((newValue) => {
|
|
51
|
+
if (newValue !== searchText) setIsFocused(true);
|
|
52
|
+
if (newValue.length === 1) track?.({
|
|
53
|
+
eventName: require_amplitudeContext.SpiffyMetricsEventName.SearchInputStarted,
|
|
54
|
+
eventProps: { searchOrigin }
|
|
55
|
+
});
|
|
56
|
+
setSearchText(newValue);
|
|
57
|
+
setHasText(newValue.trim().length > 0);
|
|
58
|
+
setFocusedIndex(-1);
|
|
59
|
+
setFocusedOptionId(void 0);
|
|
60
|
+
}, [
|
|
61
|
+
searchOrigin,
|
|
62
|
+
searchText,
|
|
63
|
+
track
|
|
64
|
+
]);
|
|
65
|
+
const handleSearchInputFocus = (0, react.useCallback)(() => {
|
|
66
|
+
setIsFocused(true);
|
|
67
|
+
}, []);
|
|
68
|
+
const handleSearchInputBlur = (0, react.useCallback)(() => {
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
if (!isSelectingAutocomplete.current) {
|
|
71
|
+
setIsFocused(false);
|
|
72
|
+
setFocusedIndex(-1);
|
|
73
|
+
setFocusedOptionId(void 0);
|
|
74
|
+
}
|
|
75
|
+
}, 150);
|
|
76
|
+
}, []);
|
|
77
|
+
const handleSubmitSearch = (0, react.useCallback)(() => {
|
|
78
|
+
setIsFocused(false);
|
|
79
|
+
if (searchText.trim() && onSearchSubmit) {
|
|
80
|
+
track?.({
|
|
81
|
+
eventName: require_amplitudeContext.SpiffyMetricsEventName.SearchQuerySubmitted,
|
|
82
|
+
eventProps: {
|
|
83
|
+
searchOrigin,
|
|
84
|
+
queryText: searchText.trim()
|
|
85
|
+
},
|
|
86
|
+
alsoSendToGoogleAnalytics: true
|
|
87
|
+
});
|
|
88
|
+
onSearchSubmit(searchText.trim());
|
|
89
|
+
}
|
|
90
|
+
}, [
|
|
91
|
+
searchText,
|
|
92
|
+
onSearchSubmit,
|
|
93
|
+
searchOrigin,
|
|
94
|
+
track
|
|
95
|
+
]);
|
|
96
|
+
const handleAutocompleteSelect = (0, react.useCallback)((suggestion, rankPosition) => {
|
|
97
|
+
isSelectingAutocomplete.current = true;
|
|
98
|
+
setSearchText(suggestion);
|
|
99
|
+
setHasText(suggestion.trim().length > 0);
|
|
100
|
+
setIsFocused(false);
|
|
101
|
+
track?.({
|
|
102
|
+
eventName: require_amplitudeContext.SpiffyMetricsEventName.SearchInputStarted,
|
|
103
|
+
eventProps: { searchOrigin }
|
|
104
|
+
});
|
|
105
|
+
if (onSearchSubmit) onSearchSubmit(suggestion.trim());
|
|
106
|
+
setTimeout(() => {
|
|
107
|
+
isSelectingAutocomplete.current = false;
|
|
108
|
+
}, 100);
|
|
109
|
+
}, [
|
|
110
|
+
onSearchSubmit,
|
|
111
|
+
searchOrigin,
|
|
112
|
+
track
|
|
113
|
+
]);
|
|
114
|
+
return {
|
|
115
|
+
searchText,
|
|
116
|
+
hasText,
|
|
117
|
+
isFocused,
|
|
118
|
+
focusedIndex,
|
|
119
|
+
focusedOptionId,
|
|
120
|
+
autocompleteResults,
|
|
121
|
+
shouldShowAutocomplete,
|
|
122
|
+
handleSearchInputChange,
|
|
123
|
+
handleSearchInputFocus,
|
|
124
|
+
handleSearchInputBlur,
|
|
125
|
+
handleKeyDown: (0, react.useCallback)((event) => {
|
|
126
|
+
if (event.key === "ArrowDown") {
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
const newIndex = (focusedIndex + 1) % autocompleteResults.length;
|
|
129
|
+
setFocusedIndex(newIndex);
|
|
130
|
+
setFocusedOptionId(`option-${newIndex}`);
|
|
131
|
+
} else if (event.key === "ArrowUp") {
|
|
132
|
+
event.preventDefault();
|
|
133
|
+
const newIndex = (focusedIndex - 1 + autocompleteResults.length) % autocompleteResults.length;
|
|
134
|
+
setFocusedIndex(newIndex);
|
|
135
|
+
setFocusedOptionId(`option-${newIndex}`);
|
|
136
|
+
} else if (event.key === "Enter") if (focusedIndex === -1) {
|
|
137
|
+
event.preventDefault();
|
|
138
|
+
handleSubmitSearch();
|
|
139
|
+
} else {
|
|
140
|
+
event.preventDefault();
|
|
141
|
+
const suggestionText = autocompleteResults[focusedIndex];
|
|
142
|
+
handleAutocompleteSelect(suggestionText, focusedIndex);
|
|
143
|
+
}
|
|
144
|
+
else if (event.key === "Escape") {
|
|
145
|
+
event.preventDefault();
|
|
146
|
+
setFocusedIndex(-1);
|
|
147
|
+
setFocusedOptionId(void 0);
|
|
148
|
+
}
|
|
149
|
+
}, [
|
|
150
|
+
autocompleteResults,
|
|
151
|
+
focusedIndex,
|
|
152
|
+
handleAutocompleteSelect,
|
|
153
|
+
handleSubmitSearch
|
|
154
|
+
]),
|
|
155
|
+
handleAutocompleteSelect,
|
|
156
|
+
handleSubmitSearch,
|
|
157
|
+
setSearchText: (0, react.useCallback)((text) => {
|
|
158
|
+
setSearchText(text);
|
|
159
|
+
setHasText(text.trim().length > 0);
|
|
160
|
+
}, []),
|
|
161
|
+
resetSearch: (0, react.useCallback)(() => {
|
|
162
|
+
setSearchText("");
|
|
163
|
+
setHasText(false);
|
|
164
|
+
setIsFocused(false);
|
|
165
|
+
setFocusedIndex(-1);
|
|
166
|
+
setFocusedOptionId(void 0);
|
|
167
|
+
}, [])
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
//#endregion
|
|
172
|
+
exports.useSearchInput = useSearchInput;
|
|
173
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU2VhcmNoSW5wdXQuY2pzIiwibmFtZXMiOlsiYW1wbGl0dWRlVHJhY2tFdmVudEF0b20iLCJhdXRvY29tcGxldGVTdGF0ZUF0b20iLCJGdXNlIiwiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9TZWFyY2gvdXNlU2VhcmNoSW5wdXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgRnVzZSBmcm9tICdmdXNlLmpzJztcblxuaW1wb3J0IHsgYXV0b2NvbXBsZXRlU3RhdGVBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2dsb2JhbFNlYXJjaCc7XG5pbXBvcnQgeyBhbXBsaXR1ZGVUcmFja0V2ZW50QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9hbXBsaXR1ZGUvYW1wbGl0dWRlVHJhY2tFdmVudEF0b20nO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0JztcbmltcG9ydCB7IFNwaWZmeVdpZGdldHMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3NwaWZmeVdpZGdldHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVNlYXJjaElucHV0UHJvcHMge1xuICBpbml0aWFsU2VhcmNoVGV4dD86IHN0cmluZztcbiAgc2VhcmNoT3JpZ2luOiBTcGlmZnlXaWRnZXRzO1xuICBvblNlYXJjaFN1Ym1pdD86IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVNlYXJjaElucHV0UmV0dXJuIHtcbiAgLy8gU3RhdGVcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBoYXNUZXh0OiBib29sZWFuO1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGZvY3VzZWRJbmRleDogbnVtYmVyO1xuICBmb2N1c2VkT3B0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYXV0b2NvbXBsZXRlUmVzdWx0czogc3RyaW5nW107XG4gIHNob3VsZFNob3dBdXRvY29tcGxldGU6IGJvb2xlYW47XG5cbiAgLy8gSGFuZGxlcnNcbiAgaGFuZGxlU2VhcmNoSW5wdXRDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBoYW5kbGVTZWFyY2hJbnB1dEZvY3VzOiAoKSA9PiB2b2lkO1xuICBoYW5kbGVTZWFyY2hJbnB1dEJsdXI6ICgpID0+IHZvaWQ7XG4gIGhhbmRsZUtleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbiAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0OiAoc3VnZ2VzdGlvbjogc3RyaW5nLCByYW5rUG9zaXRpb24/OiBudW1iZXIpID0+IHZvaWQ7XG4gIGhhbmRsZVN1Ym1pdFNlYXJjaDogKCkgPT4gdm9pZDtcblxuICAvLyBVdGlsaXRpZXNcbiAgc2V0U2VhcmNoVGV4dDogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVzZXRTZWFyY2g6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VTZWFyY2hJbnB1dCA9ICh7XG4gIGluaXRpYWxTZWFyY2hUZXh0ID0gJycsXG4gIHNlYXJjaE9yaWdpbixcbiAgb25TZWFyY2hTdWJtaXQsXG59OiBVc2VTZWFyY2hJbnB1dFByb3BzKTogVXNlU2VhcmNoSW5wdXRSZXR1cm4gPT4ge1xuICBjb25zdCB0cmFjayA9IHVzZUF0b21WYWx1ZShhbXBsaXR1ZGVUcmFja0V2ZW50QXRvbSk7XG5cbiAgLy8gU3RhdGVcbiAgY29uc3QgW3NlYXJjaFRleHQsIHNldFNlYXJjaFRleHRdID0gdXNlU3RhdGUoaW5pdGlhbFNlYXJjaFRleHQpO1xuICBjb25zdCBbaGFzVGV4dCwgc2V0SGFzVGV4dF0gPSB1c2VTdGF0ZShpbml0aWFsU2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMCk7XG4gIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmb2N1c2VkSW5kZXgsIHNldEZvY3VzZWRJbmRleF0gPSB1c2VTdGF0ZSgtMSk7XG4gIGNvbnN0IFtmb2N1c2VkT3B0aW9uSWQsIHNldEZvY3VzZWRPcHRpb25JZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGF1dG9jb21wbGV0ZVN0YXRlID0gdXNlQXRvbVZhbHVlKGF1dG9jb21wbGV0ZVN0YXRlQXRvbSk7XG4gIGNvbnN0IGdsb2JhbEF1dG9jb21wbGV0ZVJlc3VsdHMgPSBhdXRvY29tcGxldGVTdGF0ZS5yZXN1bHRzO1xuICBjb25zdCBpc0F1dG9jb21wbGV0ZUVuYWJsZWQgPSBnbG9iYWxBdXRvY29tcGxldGVSZXN1bHRzLmxlbmd0aCA+IDA7XG5cbiAgLy8gUmVmc1xuICBjb25zdCBpc1NlbGVjdGluZ0F1dG9jb21wbGV0ZSA9IHVzZVJlZihmYWxzZSk7XG5cbiAgLy8gQ29tcHV0ZWRcbiAgY29uc3Qgc2hvdWxkU2hvd0F1dG9jb21wbGV0ZSA9IGhhc1RleHQgJiYgaXNGb2N1c2VkICYmIGlzQXV0b2NvbXBsZXRlRW5hYmxlZDtcblxuICBjb25zdCBhdXRvY29tcGxldGVSZXN1bHRzTGltaXQgPSA1O1xuXG4gIC8vIENvbmZpZ3VyZSBGdXNlLmpzIGZvciBmdXp6eSBzZWFyY2ggd2l0aCBjdXN0b20gc2NvcmluZ1xuICBjb25zdCBmdXNlT3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGluY2x1ZGVTY29yZTogdHJ1ZSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgLy8gRnV6enkgbWF0Y2hpbmcgdGhyZXNob2xkICgwLjAgPSBwZXJmZWN0IG1hdGNoLCAxLjAgPSBtYXRjaCBhbnl0aGluZylcbiAgICAgIHRocmVzaG9sZDogMC4zLFxuICAgICAgLy8gTG9jYXRpb24gd2hlcmUgbWF0Y2ggaXMgZXhwZWN0ZWQgKDAgPSBiZWdpbm5pbmcpXG4gICAgICBsb2NhdGlvbjogMCxcbiAgICAgIC8vIERpc3RhbmNlIGZyb20gbG9jYXRpb24gd2hlcmUgbWF0Y2ggY2FuIGJlIGZvdW5kIC0gc21hbGxlciBmb3IgcHJlZml4IHByZWZlcmVuY2VcbiAgICAgIGRpc3RhbmNlOiA0LFxuICAgICAgLy8gTWluaW11bSBjaGFyYWN0ZXIgbGVuZ3RoIGJlZm9yZSBmdXp6eSBtYXRjaGluZyBzdGFydHNcbiAgICAgIG1pbk1hdGNoQ2hhckxlbmd0aDogMSxcbiAgICAgIC8vIEtleXMgdG8gc2VhcmNoICh3ZSdyZSBzZWFyY2hpbmcgc3RyaW5ncyBkaXJlY3RseSwgc28gbm8ga2V5cyBuZWVkZWQpXG4gICAgICBrZXlzOiBbXSxcbiAgICAgIC8vIFVzZSBleHRlbmRlZCBzZWFyY2ggZm9yIGV4YWN0IG1hdGNoZXMgYW5kIHByZWZpeCBtYXRjaGluZ1xuICAgICAgdXNlRXh0ZW5kZWRTZWFyY2g6IGZhbHNlLFxuICAgICAgLy8gRG9uJ3QgaWdub3JlIGxvY2F0aW9uIC0gdGhpcyBoZWxwcyBwcmlvcml0aXplIG1hdGNoZXMgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgaWdub3JlTG9jYXRpb246IGZhbHNlLFxuICAgIH0pLFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IGZ1c2UgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWdsb2JhbEF1dG9jb21wbGV0ZVJlc3VsdHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IEZ1c2UoZ2xvYmFsQXV0b2NvbXBsZXRlUmVzdWx0cywgZnVzZU9wdGlvbnMpO1xuICB9LCBbZ2xvYmFsQXV0b2NvbXBsZXRlUmVzdWx0cywgZnVzZU9wdGlvbnNdKTtcblxuICAvLyBBdXRvY29tcGxldGUgZnV6enkgc2VhcmNoIHVzaW5nIEZ1c2UuanNcbiAgY29uc3QgYXV0b2NvbXBsZXRlUmVzdWx0cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghaXNBdXRvY29tcGxldGVFbmFibGVkIHx8ICFmdXNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKCFzZWFyY2hUZXh0LnRyaW0oKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1c2VSZXN1bHRzID0gZnVzZS5zZWFyY2goc2VhcmNoVGV4dCk7XG5cbiAgICAvLyBVc2Ugb25seSBGdXNlLmpzIHNjb3JpbmcgKHJlc3VsdHMgYXJlIGFscmVhZHkgc29ydGVkIGJ5IHJlbGV2YW5jZSlcbiAgICByZXR1cm4gZnVzZVJlc3VsdHMuc2xpY2UoMCwgYXV0b2NvbXBsZXRlUmVzdWx0c0xpbWl0KS5tYXAocmVzdWx0ID0+IHJlc3VsdC5pdGVtKTtcbiAgfSwgW2lzQXV0b2NvbXBsZXRlRW5hYmxlZCwgZnVzZSwgc2VhcmNoVGV4dCwgYXV0b2NvbXBsZXRlUmVzdWx0c0xpbWl0XSk7XG5cbiAgLy8gSGFuZGxlcnNcbiAgY29uc3QgaGFuZGxlU2VhcmNoSW5wdXRDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgY2hhbmdpbmcgdGV4dCwgdGhleSBtdXN0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlIGlucHV0XG4gICAgICAvLyBTbyB3ZSBjYW4gc2FmZWx5IGFzc3VtZSB0aGV5J3JlIGZvY3VzZWRcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gc2VhcmNoVGV4dCkge1xuICAgICAgICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdHJhY2s/Lih7XG4gICAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLlNlYXJjaElucHV0U3RhcnRlZCxcbiAgICAgICAgICBldmVudFByb3BzOiB7XG4gICAgICAgICAgICBzZWFyY2hPcmlnaW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzZXRTZWFyY2hUZXh0KG5ld1ZhbHVlKTtcbiAgICAgIHNldEhhc1RleHQobmV3VmFsdWUudHJpbSgpLmxlbmd0aCA+IDApO1xuICAgICAgc2V0Rm9jdXNlZEluZGV4KC0xKTtcbiAgICAgIHNldEZvY3VzZWRPcHRpb25JZCh1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgW3NlYXJjaE9yaWdpbiwgc2VhcmNoVGV4dCwgdHJhY2tdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlYXJjaElucHV0Rm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNGb2N1c2VkKHRydWUpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoSW5wdXRCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFpc1NlbGVjdGluZ0F1dG9jb21wbGV0ZS5jdXJyZW50KSB7XG4gICAgICAgIHNldElzRm9jdXNlZChmYWxzZSk7XG4gICAgICAgIHNldEZvY3VzZWRJbmRleCgtMSk7XG4gICAgICAgIHNldEZvY3VzZWRPcHRpb25JZCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0sIDE1MCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXRTZWFyY2ggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkgJiYgb25TZWFyY2hTdWJtaXQpIHtcbiAgICAgIHRyYWNrPy4oe1xuICAgICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuU2VhcmNoUXVlcnlTdWJtaXR0ZWQsXG4gICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICBzZWFyY2hPcmlnaW4sXG4gICAgICAgICAgcXVlcnlUZXh0OiBzZWFyY2hUZXh0LnRyaW0oKSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgb25TZWFyY2hTdWJtaXQoc2VhcmNoVGV4dC50cmltKCkpO1xuICAgIH1cbiAgfSwgW3NlYXJjaFRleHQsIG9uU2VhcmNoU3VibWl0LCBzZWFyY2hPcmlnaW4sIHRyYWNrXSk7XG5cbiAgY29uc3QgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKHN1Z2dlc3Rpb246IHN0cmluZywgcmFua1Bvc2l0aW9uPzogbnVtYmVyKSA9PiB7XG4gICAgICBpc1NlbGVjdGluZ0F1dG9jb21wbGV0ZS5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIHNldFNlYXJjaFRleHQoc3VnZ2VzdGlvbik7XG4gICAgICBzZXRIYXNUZXh0KHN1Z2dlc3Rpb24udHJpbSgpLmxlbmd0aCA+IDApO1xuICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcblxuICAgICAgdHJhY2s/Lih7XG4gICAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5TZWFyY2hJbnB1dFN0YXJ0ZWQsXG4gICAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgICBzZWFyY2hPcmlnaW4sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKG9uU2VhcmNoU3VibWl0KSB7XG4gICAgICAgIG9uU2VhcmNoU3VibWl0KHN1Z2dlc3Rpb24udHJpbSgpKTtcbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlzU2VsZWN0aW5nQXV0b2NvbXBsZXRlLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSxcbiAgICBbb25TZWFyY2hTdWJtaXQsIHNlYXJjaE9yaWdpbiwgdHJhY2tdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gKGZvY3VzZWRJbmRleCArIDEpICUgYXV0b2NvbXBsZXRlUmVzdWx0cy5sZW5ndGg7XG4gICAgICAgIHNldEZvY3VzZWRJbmRleChuZXdJbmRleCk7XG4gICAgICAgIHNldEZvY3VzZWRPcHRpb25JZChgb3B0aW9uLSR7bmV3SW5kZXh9YCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID1cbiAgICAgICAgICAoZm9jdXNlZEluZGV4IC0gMSArIGF1dG9jb21wbGV0ZVJlc3VsdHMubGVuZ3RoKSAlIGF1dG9jb21wbGV0ZVJlc3VsdHMubGVuZ3RoO1xuICAgICAgICBzZXRGb2N1c2VkSW5kZXgobmV3SW5kZXgpO1xuICAgICAgICBzZXRGb2N1c2VkT3B0aW9uSWQoYG9wdGlvbi0ke25ld0luZGV4fWApO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGhhbmRsZVN1Ym1pdFNlYXJjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgY29uc3Qgc3VnZ2VzdGlvblRleHQgPSBhdXRvY29tcGxldGVSZXN1bHRzW2ZvY3VzZWRJbmRleF07XG4gICAgICAgICAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0KHN1Z2dlc3Rpb25UZXh0LCBmb2N1c2VkSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0Rm9jdXNlZEluZGV4KC0xKTtcbiAgICAgICAgc2V0Rm9jdXNlZE9wdGlvbklkKHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbYXV0b2NvbXBsZXRlUmVzdWx0cywgZm9jdXNlZEluZGV4LCBoYW5kbGVBdXRvY29tcGxldGVTZWxlY3QsIGhhbmRsZVN1Ym1pdFNlYXJjaF0sXG4gICk7XG5cbiAgY29uc3Qgc2V0U2VhcmNoVGV4dFV0aWxpdHkgPSB1c2VDYWxsYmFjaygodGV4dDogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VhcmNoVGV4dCh0ZXh0KTtcbiAgICBzZXRIYXNUZXh0KHRleHQudHJpbSgpLmxlbmd0aCA+IDApO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgcmVzZXRTZWFyY2ggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2VhcmNoVGV4dCgnJyk7XG4gICAgc2V0SGFzVGV4dChmYWxzZSk7XG4gICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICBzZXRGb2N1c2VkSW5kZXgoLTEpO1xuICAgIHNldEZvY3VzZWRPcHRpb25JZCh1bmRlZmluZWQpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTdGF0ZVxuICAgIHNlYXJjaFRleHQsXG4gICAgaGFzVGV4dCxcbiAgICBpc0ZvY3VzZWQsXG4gICAgZm9jdXNlZEluZGV4LFxuICAgIGZvY3VzZWRPcHRpb25JZCxcbiAgICBhdXRvY29tcGxldGVSZXN1bHRzLFxuICAgIHNob3VsZFNob3dBdXRvY29tcGxldGUsXG5cbiAgICAvLyBIYW5kbGVyc1xuICAgIGhhbmRsZVNlYXJjaElucHV0Q2hhbmdlLFxuICAgIGhhbmRsZVNlYXJjaElucHV0Rm9jdXMsXG4gICAgaGFuZGxlU2VhcmNoSW5wdXRCbHVyLFxuICAgIGhhbmRsZUtleURvd24sXG4gICAgaGFuZGxlQXV0b2NvbXBsZXRlU2VsZWN0LFxuICAgIGhhbmRsZVN1Ym1pdFNlYXJjaCxcblxuICAgIC8vIFV0aWxpdGllc1xuICAgIHNldFNlYXJjaFRleHQ6IHNldFNlYXJjaFRleHRVdGlsaXR5LFxuICAgIHJlc2V0U2VhcmNoLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBc0NBLE1BQWEsa0JBQWtCLEVBQzdCLG9CQUFvQixJQUNwQixjQUNBLHFCQUMrQztDQUMvQyxNQUFNLGdDQUFxQkEsd0RBQXdCO0NBR25ELE1BQU0sQ0FBQyxZQUFZLHFDQUEwQixrQkFBa0I7Q0FDL0QsTUFBTSxDQUFDLFNBQVMsa0NBQXVCLGtCQUFrQixNQUFNLENBQUMsU0FBUyxFQUFFO0NBQzNFLE1BQU0sQ0FBQyxXQUFXLG9DQUF5QixNQUFNO0NBQ2pELE1BQU0sQ0FBQyxjQUFjLHVDQUE0QixHQUFHO0NBQ3BELE1BQU0sQ0FBQyxpQkFBaUIsMENBQW1ELE9BQVU7Q0FFckYsTUFBTSxvREFEaUNDLDJDQUFzQixDQUNUO0NBQ3BELE1BQU0sd0JBQXdCLDBCQUEwQixTQUFTO0NBR2pFLE1BQU0sNENBQWlDLE1BQU07Q0FHN0MsTUFBTSx5QkFBeUIsV0FBVyxhQUFhO0NBRXZELE1BQU0sMkJBQTJCO0NBR2pDLE1BQU0sd0NBQ0c7RUFDTCxjQUFjO0VBQ2QsZ0JBQWdCO0VBRWhCLFdBQVc7RUFFWCxVQUFVO0VBRVYsVUFBVTtFQUVWLG9CQUFvQjtFQUVwQixNQUFNLEVBQUU7RUFFUixtQkFBbUI7RUFFbkIsZ0JBQWdCO0VBQ2pCLEdBQ0QsRUFBRSxDQUNIO0NBRUQsTUFBTSxnQ0FBcUI7QUFDekIsTUFBSSxDQUFDLDBCQUEwQixPQUFRLFFBQU87QUFDOUMsU0FBTyxJQUFJQyxnQkFBSywyQkFBMkIsWUFBWTtJQUN0RCxDQUFDLDJCQUEyQixZQUFZLENBQUM7Q0FHNUMsTUFBTSwrQ0FBb0M7QUFDeEMsTUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQzdCLFFBQU8sRUFBRTtBQUdYLE1BQUksQ0FBQyxXQUFXLE1BQU0sQ0FDcEIsUUFBTyxFQUFFO0FBTVgsU0FIb0IsS0FBSyxPQUFPLFdBQVcsQ0FHeEIsTUFBTSxHQUFHLHlCQUF5QixDQUFDLEtBQUksV0FBVSxPQUFPLEtBQUs7SUFDL0U7RUFBQztFQUF1QjtFQUFNO0VBQVk7RUFBeUIsQ0FBQztDQUd2RSxNQUFNLGtEQUNILGFBQXFCO0FBR3BCLE1BQUksYUFBYSxXQUNmLGNBQWEsS0FBSztBQUdwQixNQUFJLFNBQVMsV0FBVyxFQUN0QixTQUFRO0dBQ04sV0FBV0MsZ0RBQXVCO0dBQ2xDLFlBQVksRUFDVixjQUNEO0dBQ0YsQ0FBQztBQUVKLGdCQUFjLFNBQVM7QUFDdkIsYUFBVyxTQUFTLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDdEMsa0JBQWdCLEdBQUc7QUFDbkIscUJBQW1CLE9BQVU7SUFFL0I7RUFBQztFQUFjO0VBQVk7RUFBTSxDQUNsQztDQUVELE1BQU0sc0RBQTJDO0FBQy9DLGVBQWEsS0FBSztJQUNqQixFQUFFLENBQUM7Q0FFTixNQUFNLHFEQUEwQztBQUM5QyxtQkFBaUI7QUFDZixPQUFJLENBQUMsd0JBQXdCLFNBQVM7QUFDcEMsaUJBQWEsTUFBTTtBQUNuQixvQkFBZ0IsR0FBRztBQUNuQix1QkFBbUIsT0FBVTs7S0FFOUIsSUFBSTtJQUNOLEVBQUUsQ0FBQztDQUVOLE1BQU0sa0RBQXVDO0FBQzNDLGVBQWEsTUFBTTtBQUNuQixNQUFJLFdBQVcsTUFBTSxJQUFJLGdCQUFnQjtBQUN2QyxXQUFRO0lBQ04sV0FBV0EsZ0RBQXVCO0lBQ2xDLFlBQVk7S0FDVjtLQUNBLFdBQVcsV0FBVyxNQUFNO0tBQzdCO0lBQ0QsMkJBQTJCO0lBQzVCLENBQUM7QUFDRixrQkFBZSxXQUFXLE1BQU0sQ0FBQzs7SUFFbEM7RUFBQztFQUFZO0VBQWdCO0VBQWM7RUFBTSxDQUFDO0NBRXJELE1BQU0sbURBQ0gsWUFBb0IsaUJBQTBCO0FBQzdDLDBCQUF3QixVQUFVO0FBQ2xDLGdCQUFjLFdBQVc7QUFDekIsYUFBVyxXQUFXLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDeEMsZUFBYSxNQUFNO0FBRW5CLFVBQVE7R0FDTixXQUFXQSxnREFBdUI7R0FDbEMsWUFBWSxFQUNWLGNBQ0Q7R0FDRixDQUFDO0FBRUYsTUFBSSxlQUNGLGdCQUFlLFdBQVcsTUFBTSxDQUFDO0FBR25DLG1CQUFpQjtBQUNmLDJCQUF3QixVQUFVO0tBQ2pDLElBQUk7SUFFVDtFQUFDO0VBQWdCO0VBQWM7RUFBTSxDQUN0QztBQThDRCxRQUFPO0VBRUw7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQSx1Q0F6REMsVUFBaUQ7QUFDaEQsT0FBSSxNQUFNLFFBQVEsYUFBYTtBQUM3QixVQUFNLGdCQUFnQjtJQUN0QixNQUFNLFlBQVksZUFBZSxLQUFLLG9CQUFvQjtBQUMxRCxvQkFBZ0IsU0FBUztBQUN6Qix1QkFBbUIsVUFBVSxXQUFXO2NBQy9CLE1BQU0sUUFBUSxXQUFXO0FBQ2xDLFVBQU0sZ0JBQWdCO0lBQ3RCLE1BQU0sWUFDSCxlQUFlLElBQUksb0JBQW9CLFVBQVUsb0JBQW9CO0FBQ3hFLG9CQUFnQixTQUFTO0FBQ3pCLHVCQUFtQixVQUFVLFdBQVc7Y0FDL0IsTUFBTSxRQUFRLFFBQ3ZCLEtBQUksaUJBQWlCLElBQUk7QUFDdkIsVUFBTSxnQkFBZ0I7QUFDdEIsd0JBQW9CO1VBQ2Y7QUFDTCxVQUFNLGdCQUFnQjtJQUN0QixNQUFNLGlCQUFpQixvQkFBb0I7QUFDM0MsNkJBQXlCLGdCQUFnQixhQUFhOztZQUUvQyxNQUFNLFFBQVEsVUFBVTtBQUNqQyxVQUFNLGdCQUFnQjtBQUN0QixvQkFBZ0IsR0FBRztBQUNuQix1QkFBbUIsT0FBVTs7S0FHakM7R0FBQztHQUFxQjtHQUFjO0dBQTBCO0dBQW1CLENBQ2xGO0VBOEJDO0VBQ0E7RUFHQSx1Q0FoQ3dDLFNBQWlCO0FBQ3pELGlCQUFjLEtBQUs7QUFDbkIsY0FBVyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUU7S0FDakMsRUFBRSxDQUFDO0VBOEJKLDBDQTVCb0M7QUFDcEMsaUJBQWMsR0FBRztBQUNqQixjQUFXLE1BQU07QUFDakIsZ0JBQWEsTUFBTTtBQUNuQixtQkFBZ0IsR0FBRztBQUNuQixzQkFBbUIsT0FBVTtLQUM1QixFQUFFLENBQUM7RUF1QkwifQ==
|