{"version":3,"file":"static/js/app-mount.253267b4.chunk.js","mappings":"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","sources":["webpack:///./src/app/data-dog-rum.ts","webpack:///./src/common/IngramBecomeReseller/IngramBecomeReseller.tsx","webpack:///./src/common/IngramFooter/IngramFooterLite.tsx","webpack:///./src/hooks/use-feature-flag-base.ts","webpack:///./src/common/IngramHeader/IngramHeader.tsx","webpack:///./src/hooks/use-cart-items-count.ts","webpack:///./src/hooks/use-helpmenu.ts","webpack:///./src/app/nav/useHelpNavItems.ts","webpack:///./src/common/IngramHelpMenu/IngramHelpMenu.tsx","webpack:///./src/common/IngramMobile/IngramMobile.tsx","webpack:///./src/hooks/use-mybusinessmenu.ts","webpack:///./src/hooks/use-vouchercount.ts","webpack:///./src/hooks/use-product.ts","webpack:///./src/hooks/use-servicesmenu.ts","webpack:///./src/hooks/use-solutionsmenu.ts","webpack:///./src/hooks/use-vendorsmenu.ts","webpack:///./src/app/nav/side-nav-items.tsx","webpack:///./src/app/nav/useMyBusinessNavItems.ts","webpack:///./src/app/nav/useProductsNavItems.ts","webpack:///./src/app/nav/useVendorsNavItems.ts","webpack:///./src/app/nav/useSolutionsNavItems.ts","webpack:///./src/app/nav/useServicesNavItems.ts","webpack:///./src/common/IngramSideNav/IngramSideNav.tsx","webpack:///./src/hooks/use-paymentCards.ts","webpack:///./src/hooks/useCMPCardCheck.ts","webpack:///./src/hooks/useCMPCardRedirect.ts","webpack:///./src/hooks/useCMPPaymentTerm.ts","webpack:///./src/hooks/useImpersonationHeaderProps.ts","webpack:///./src/app/AutoLoginImOnlineFrame.tsx","webpack:///./src/app/DebugAccessToken.tsx","webpack:///./src/app/DebugToolbar.tsx","webpack:///./src/app/FramedPageTitle.ts","webpack:///./src/app/InvalidAccessToken.tsx","webpack:///./src/app/PerformanceErrorAlert.tsx","webpack:///./src/app/injectors/utils.ts","webpack:///./src/app/injectors/useOneTrust.ts","webpack:///./src/app/injectors/useAdobeDtm.ts","webpack:///./src/app/injectors/useDatadog.ts","webpack:///./src/hooks/useUjetAuth.ts","webpack:///./src/hooks/useIsUjetChatbotEnabled.ts","webpack:///./src/app/injectors/useUjetChatBot.ts","webpack:///./src/app/injectors/useUjetUniteChatBot.ts","webpack:///./src/app/injectors/useChatBotHelpMenu.ts","webpack:///./src/app/injectors/useWalkMe.ts","webpack:///./src/hooks/useUserActivity.ts","webpack:///./src/app/injectors/useForstaFeedback.ts","webpack:///./src/app/injectors/useFeedbackFormRouter.ts","webpack:///./src/app/injectors/injectors.ts","webpack:///./src/app/injectors/useAddMetaTag.ts","webpack:///./src/app/injectors/useCookieDisclaimer.ts","webpack:///./src/hooks/use-cookie-disclaimer.ts","webpack:///./src/app/injectors/useHtmlLang.ts","webpack:///./src/app/injectors/useWhatfix.ts","webpack:///./src/app/prospectResellerPaths.tsx","webpack:///./src/app/routes/WhiteList.tsx","webpack:///./src/app/routes/BlackList.tsx","webpack:///./src/app/routes/buildAppRoutes.tsx","webpack:///./src/app/App.tsx","webpack:///./src/hooks/useAreWidgetsConfigured.ts","webpack:///./src/app/routes/useAppRoutes.tsx","webpack:///./src/app/routes/useMfsRoutes.ts","webpack:///./src/app/useProcessPostMsgs.ts","webpack:///./src/hooks/useTnCRedirect.ts","webpack:///./src/hooks/useIsCepWhitelisted.ts","webpack:///./src/hooks/useProfileData.ts","webpack:///./src/hooks/use-preferred-language.tsx","webpack:///./src/hooks/usePreferredLanguage.ts","webpack:///./src/hooks/useGetSearchSuggestions.ts","webpack:///./src/app/useAvatarProps.ts","webpack:///./src/hooks/use-configuratormenu.ts","webpack:///./src/hooks/useDisableImpersonationMode.ts","webpack:///./src/hooks/use-x-scroll.ts","webpack:///./src/hooks/use-notifications.ts","webpack:///./src/common/IngramBecomeReseller/usePartnerWithUs.ts","webpack:///./src/app/ScrollToTop.tsx","webpack:///./src/app/app-mount.tsx","webpack:///./src/app/nav/utils.ts","webpack:///./src/common/IngramFooter/IngramFooter.tsx","webpack:///./src/common/IngramFooter/useFooterColumns.ts","webpack:///./src/common/IngramFooter/useSocialMedias.ts","webpack:///./src/common/IngramFooter/useCopyrightLinks.ts","webpack:///./src/hooks/useCMSApiQuery.ts"],"sourcesContent":["import { datadogRum } from '@datadog/browser-rum';\n\ndeclare global {\n interface Window {\n __DATADOG_INITIALIZED__: boolean;\n }\n}\n\nconst isLocalDev = window.location.origin.indexOf('://local') > -1;\nconst fullStoryUrlRegex = /https:\\/\\/.*\\.fullstory\\.com/;\n\nif (!isLocalDev) {\n if (!window.__DATADOG_INITIALIZED__) {\n datadogRum.init({\n allowedTracingUrls: [\n 'https://apix-qa.ingrammicro.com',\n /https:\\/\\/.*\\.ingrammicro\\.com/,\n ],\n applicationId: '12444269-de97-4ca2-865e-ad1167bb4dd5',\n beforeSend: (event: any, context: any) => {\n if (event.type === 'resource' && event.resource.type === 'fetch') {\n if (context?.response?.headers) {\n event.context.responseHeaders = Object.fromEntries(\n context.response.headers\n );\n }\n }\n if (shouldDiscard(event, context)) {\n return false;\n }\n\n return true;\n },\n clientToken: 'pub92d4bf1905a9bc788affd0f5cb63e8cc',\n defaultPrivacyLevel: 'mask-user-input',\n excludedActivityUrls: [\n /^https:\\/\\/.*\\.fullstory\\.com/,\n /^https:\\/\\/.*\\.adobedc\\.net/,\n /^https:\\/\\/.*\\.walkme\\.com/,\n /^https:\\/\\/whatfix\\.com/,\n ],\n service: 'cep',\n sessionReplaySampleRate: 100,\n sessionSampleRate: 100,\n site: 'us5.datadoghq.com',\n env:'production',\n trackLongTasks: true,\n trackResources: true,\n trackSessionAcrossSubdomains: true,\n trackUserInteractions: true,\n usePartitionedCrossSiteSessionCookie: true,\n // Specify a version number to identify the deployed version of your application in Datadog\n version: '25.3.4',\n });\n window.__DATADOG_INITIALIZED__ = true;\n }\n}\n\nfunction shouldDiscard(event: any, context: any) {\n return (\n event.type === 'resource' &&\n context.xhr &&\n fullStoryUrlRegex.test(context.xhr.responseURL)\n );\n}\n","import { useIsAuthenticated } from 'mf_core/auth';\nimport React, { useEffect, useState } from 'react';\nimport { StickyButton } from '@im/ui-lib/StickyButton';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { CopyRightTO } from '@im/ui-lib/types';\n\ntype Props = {\n data?: CopyRightTO;\n};\n\nexport function IngramBecomeReseller(props: Props) {\n const { data } = props;\n const [ready, setReady] = useState(false);\n const isAuthenticated = useIsAuthenticated();\n\n useEffect(() => {\n //Adding artificial delay to wait for useIsAuthenticated() state change\n const timer = setTimeout(() => setReady(true), 3000);\n return () => {\n clearTimeout(timer);\n };\n }, []);\n const isMobile = useMediaQuery('(min-width: 769px)');\n\n return isAuthenticated ? (\n <></>\n ) : (\n <>\n {ready && isMobile && data?.onClick && (\n <StickyButton link={data} onClick={data.onClick} />\n )}\n </>\n );\n}\n","import React from 'react';\nimport { Footer } from '@im/ui-lib/Footer';\nimport { useCopyrightLinks } from './useCopyrightLinks';\n\nexport function IngramFooterLite() {\n const copyRightLinks = useCopyrightLinks();\n\n if (!copyRightLinks) return null;\n\n return <Footer copyRightLinks={copyRightLinks} />;\n}\n","import { useFeatureFlag } from 'mf_core/feature-flag';\n\nexport function useFeatureFlagBase() {\n const {\n isReady,\n refetch,\n value: boValues,\n } = useFeatureFlag([\n 'ACC_MGMT_EPP_WhitelistedResellers',\n 'ACC_MGMT_EnableX4CReactUI',\n 'ACC_MGMT_EnableX4CReactUI',\n 'ACC_MGMT_Enable_BrandingPreferences',\n 'CCAI_Chatbot_WhitelistedResellers',\n 'CCAI_Paths_Whitelist',\n 'CCAI_Translation_Keys',\n 'CCAI_UNITE_Disabled',\n 'CCAI_UNITE_Translation_Keys',\n 'CMP_CreditCardPopup_Enable',\n 'CMP_CreditCardTermCode',\n 'CMP_Products_ExcludedResellers',\n 'DisableCartIconOnAddToCart',\n 'Docdata_DD_CMP_TermCode',\n 'EnableInsightsMessagingQueue',\n 'EnableInsightsFrameWork',\n 'EnableUserManagement',\n 'Enable_AISuggestions',\n 'Enable_Order_Status_Report',\n 'FORSTA_Feedback_Form_WhitelistedResellers',\n 'FORSTA_Feedback_Form_WhitelistedResellers',\n 'Is_Cybersource_Force_Popup_Enabled',\n 'Is_DocData_DD_enabled',\n 'Is_Docdata_MP_PopUp_Enabled',\n 'Is_Worldpay_MP_PopUp_Enabled',\n 'Is_Worldpay_enabled',\n 'QM_EnableSearch_BO',\n 'Reseller_Whitelist_For_Order_Status_Tracking',\n 'Worldpay_CMP_TermCode',\n 'X4C_Enable_Performance_Banner',\n 'X4C_Performance_Banner_End_Time',\n 'X4C_Performance_Banner_Start_Time',\n 'X4C_PushNotifications_Enabled',\n 'X4C_Url_Encoding_Feature',\n 'X4EUEnabled',\n 'EnableQuickInsightsRollDown',\n ]);\n return {\n boValues,\n isReady,\n refetch,\n };\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Header, ImpersonationHeaderProps } from '@im/ui-lib/HeaderX4C';\nimport { AvatarProps } from '@im/ui-lib/HeaderX4C/internal/Avatar';\nimport { SearchResponse } from '@im/ui-lib/HeaderX4C/internal/ProductSearchAutocomplete';\nimport { useCartItemsCount } from '../../hooks/use-cart-items-count';\nimport { NotificationDropProps } from '@im/ui-lib/HeaderX4C/internal/NotificationDrop/NotificationDrop';\nimport { InsightsMessagingQueue } from 'mf_shared/InsightsMessagingQueue';\nimport { QuickInsights } from 'mf_shared/QuickInsights';\nimport { HeaderX4CMobile } from '@im/ui-lib/HeaderX4CMobile';\nimport { useFeatureFlagBase } from '../../hooks/use-feature-flag-base';\nimport { useLocation, useNavigate } from 'react-router';\nimport { setDigitalData } from 'mf_core/adobe';\nimport { useDecodedToken, useHasPermission } from 'mf_core/auth';\nimport { useIsMutating } from '@tanstack/react-query';\n\ntype Props = {\n AvatarProps: AvatarProps;\n enableAISuggestions: boolean;\n getSearchSuggestions: (term: string) => Promise<SearchResponse[]>;\n impersonationHeaderProps?: ImpersonationHeaderProps;\n isAuthenticated: boolean;\n isCmpWhitelisted: boolean;\n isLogoClickable?: boolean;\n isMobile: boolean;\n isNotificationEnabled?: boolean;\n notificationDropProps: NotificationDropProps;\n onMenuButtonClick: () => void;\n onUserActionClick: (action: UserActionType) => void;\n showAvatar?: boolean;\n showCartIcon?: boolean;\n showCulturePicker?: boolean;\n showFavoritesIcon?: boolean;\n showImpersonationHeader?: boolean;\n showSeachBar?: boolean;\n};\n\ntype UserActionType = 'favorite' | 'notification' | 'cart';\n\nexport function IngramHeader(props: Props) {\n const {\n AvatarProps,\n enableAISuggestions,\n getSearchSuggestions,\n impersonationHeaderProps,\n isAuthenticated,\n isCmpWhitelisted,\n isLogoClickable,\n isMobile,\n isNotificationEnabled,\n notificationDropProps,\n onMenuButtonClick,\n onUserActionClick,\n showAvatar,\n showCartIcon,\n showCulturePicker,\n showFavoritesIcon,\n showImpersonationHeader,\n showSeachBar,\n } = props;\n const decodedToken = useDecodedToken();\n const userType: string = decodedToken?.imoProfile?.userType || '';\n const { boValues, isReady: isFlagLoaded } = useFeatureFlagBase();\n const isInsightsMessagingQueue = isFeatureEnabled(\n isFlagLoaded,\n boValues,\n 'EnableInsightsMessagingQueue'\n );\n const isQuickInsightsRollDownEnabled = isFeatureEnabled(\n isFlagLoaded,\n boValues,\n 'EnableQuickInsightsRollDown'\n );\n const isEndUserFeatureEnabled =\n isFeatureEnabled(isFlagLoaded, boValues, 'X4EUEnabled') &&\n userType === 'EndUser';\n\n const [isInsightsDropOpen, setIsInsightsDropOpen] = useState(false);\n const [isInsightsButtonClicked, setIsInsightsButtonClicked] = useState(false);\n const [insightEnabledPage, setInsightEnabledPage] = useState('');\n const [hasInsigtData, setHasInsightData] = useState<null | boolean>(null);\n\n const updateInsightDataStatus = useCallback((hasData: boolean | null) => {\n setHasInsightData(hasData);\n }, []);\n\n const hasPermission = useHasPermission();\n const location = useLocation();\n const enableInsightsPaths = [\n '/insight/insights-v2',\n '/my/cart',\n '/my/dashboard',\n '/product/productsearch',\n '/product/productdetails',\n '/product/subscriptioncategories',\n '/my/ordertracking/v3/ordersearch',\n '/my/ordertracking/v3/orderdetails',\n '/frame',\n '/invoice/invoicessearch',\n '/invoice/invoicessearch',\n '/my/subscriptions/list',\n ];\n const enableRollDownForInsightsPaths = [\n '/my/ordertracking/v3/ordersearch',\n '/my/ordertracking/v3/orderdetails',\n '/frame',\n '/invoice/invoicessearch',\n '/invoice/invoicessearch',\n '/my/subscriptions/list',\n ];\n const navigate = useNavigate();\n const cartItemsCount = useCartItemsCount();\n const [closeInsightsDrop, setCloseInsightsDrop] = useState(false);\n const enableUserManagement = isFeatureEnabled(\n isFlagLoaded,\n boValues,\n 'EnableUserManagement'\n );\n const enableInsightsFrameWork = isFeatureEnabled(\n isFlagLoaded,\n boValues,\n 'EnableInsightsFrameWork'\n );\n const disableCartIconOnAddToCart = isFeatureEnabled(\n isFlagLoaded,\n boValues,\n 'DisableCartIconOnAddToCart'\n );\n const isAddToCartPending =\n useIsMutating({\n mutationKey: ['add-product-to-cart'],\n }) > 0;\n const dismissAllHandler = useCallback(() => {\n setCloseInsightsDrop((prevCloseInsightsDrop) => !prevCloseInsightsDrop);\n }, []);\n\n const getVisitedPageInfo = useCallback((currentPagePath: string) => {\n const visitedPages = JSON.parse(\n localStorage.getItem('visitedQuickInsightPages') ?? '[]'\n );\n\n if (visitedPages.includes(currentPagePath ?? ''))\n setCloseInsightsDrop((prevCloseInsightsDrop) => !prevCloseInsightsDrop);\n else setInsightEnabledPage(currentPagePath);\n }, []);\n\n const onQuickInsightsRollDown = useCallback(() => {\n if (isQuickInsightsRollDownEnabled) {\n setHasInsightData(null);\n if (\n location?.pathname === '/my/ordertracking/v3/ordersearch' ||\n location?.pathname === '/my/ordertracking/v3/orderdetails' ||\n (location?.pathname === '/frame' &&\n location.search.includes('ordersearch'))\n ) {\n getVisitedPageInfo('/my/ordertracking/');\n } else if (\n enableRollDownForInsightsPaths.includes(location?.pathname ?? '')\n ) {\n getVisitedPageInfo(location?.pathname);\n } else if (\n location?.pathname === '/product/productsearch' &&\n location?.search?.includes('vendor') &&\n !location?.search?.includes('vendorname')\n ) {\n getVisitedPageInfo(location?.pathname);\n } else\n setCloseInsightsDrop((prevCloseInsightsDrop) => !prevCloseInsightsDrop);\n } else\n setCloseInsightsDrop((prevCloseInsightsDrop) => !prevCloseInsightsDrop);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getVisitedPageInfo, isQuickInsightsRollDownEnabled, location]);\n\n const onClickInsightsCenter = useCallback(\n (navigateLink = '/insight/insights-v2') => {\n navigate(navigateLink);\n onQuickInsightsRollDown();\n },\n [navigate, onQuickInsightsRollDown]\n );\n\n const flag = JSON.parse(localStorage.getItem('setValueFlag') || 'false');\n setTimeout(() => {\n if (flag) {\n const valueGet = JSON.parse(localStorage.getItem('isEnabledOrNot') || '');\n const QuoteCheckoutBtnStatus = valueGet ? 'Enabled' : 'Disabled';\n setDigitalData({ QuoteCheckoutBtnStatus });\n }\n }, 1000);\n\n useEffect(() => {\n onQuickInsightsRollDown();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location?.pathname]);\n\n useEffect(() => {\n if (isInsightsButtonClicked) {\n let dataStatus: boolean | null = true;\n\n if (hasInsigtData === null) dataStatus = false;\n else dataStatus = hasInsigtData;\n\n setHasInsightData(dataStatus);\n }\n }, [hasInsigtData, isInsightsButtonClicked]);\n\n return (\n <>\n {!isAuthenticated && isMobile ? (\n <HeaderX4CMobile\n enableAISuggestions={false}\n getSearchSuggestions={getSearchSuggestions}\n isLogoClickable={isLogoClickable}\n onMenuButtonClick={onMenuButtonClick}\n />\n ) : (\n <Header\n AvatarProps={AvatarProps}\n NotificationProps={notificationDropProps}\n cartItemsCount={cartItemsCount}\n closeInsightsDrop={closeInsightsDrop}\n data-testid=\"header\"\n disableCartIcon={disableCartIconOnAddToCart && isAddToCartPending}\n enableAISuggestions={enableAISuggestions}\n endUserIcon={isEndUserFeatureEnabled ? EndUserIcon : undefined}\n endUserTitle={isEndUserFeatureEnabled ? 'DEMO RESELLER' : undefined}\n getSearchSuggestions={getSearchSuggestions}\n hasInsightData={hasInsigtData}\n impersonationHeaderProps={impersonationHeaderProps}\n insightsContent={\n enableInsightsFrameWork ? (\n <QuickInsights\n hasInsightsData={hasInsigtData}\n isInsightsButtonClicked={isInsightsButtonClicked}\n isInsightsDropOpen={isInsightsDropOpen}\n onClickInsightsCenter={onClickInsightsCenter}\n updateInsightDataStatus={updateInsightDataStatus}\n />\n ) : (\n <InsightsMessagingQueue\n dismissAllHandler={dismissAllHandler}\n maxDropHeight={260}\n onClickInsightsCenter={onClickInsightsCenter}\n />\n )\n }\n isAuthenticated={isAuthenticated}\n isCmpWhitelisted={enableAISuggestions || isCmpWhitelisted}\n isEndUserLogin={isEndUserFeatureEnabled}\n isLogoClickable={isLogoClickable}\n onMenuButtonClick={onMenuButtonClick}\n onUserActionClick={onUserActionClick}\n page={insightEnabledPage}\n setIsInsightsButtonClicked={setIsInsightsButtonClicked}\n setIsInsightsDropOpen={setIsInsightsDropOpen}\n showAvatar={showAvatar}\n showCartIcon={showCartIcon}\n showCulturePicker={showCulturePicker}\n showFavoritesIcon={showFavoritesIcon}\n showImpersonationHeader={showImpersonationHeader}\n showInsightsIcon={\n isInsightsMessagingQueue &&\n enableInsightsPaths.includes(location?.pathname ?? '') &&\n hasPermission(\n enableUserManagement ? ['ViewInsight'] : ['ResellerAdmin']\n )\n }\n showNotificationIcon={isNotificationEnabled}\n showSeachBar={showSeachBar}\n />\n )}\n </>\n );\n}\n\nconst EndUserIcon: JSX.Element = (\n <img\n alt=\"DEMO RESELLER\"\n src=\"/cep/assets/img/enduser-poc/demo-header-icon.svg\"\n width={70}\n />\n);\nfunction isFeatureEnabled(\n isFlagLoaded: boolean,\n boValues: any,\n featureName: string\n) {\n return isFlagLoaded && boValues[featureName] === 'true';\n}\n","import { useApiQuery } from 'mf_core/query';\n\ntype CartHeaderDataTO = {\n id: string;\n lineCount: number;\n name: string;\n};\n\nexport function useCartItemsCount() {\n const query = useApiQuery<CartHeaderDataTO>(\n '/cart/v1/cart-list/default/header-data'\n );\n return (query.data && query.data.lineCount) ?? 0;\n}\n","import { useApiQueryForCms } from 'mf_core/logout';\n/** 1800000 ms (30 mins) */\nconst MAX_CACHE_TIME = 1800000;\n\nexport function useHelpMenuQuery(locale: string) {\n return useApiQueryForCms<HelpMenu>(\n `/cms/v1/help-menu-items?locale=${locale}`,\n undefined,\n { gcTime: MAX_CACHE_TIME, staleTime: MAX_CACHE_TIME }\n );\n}\nexport type HelpMenu = {\n items?: Help[];\n total?: number;\n};\nexport type Help = {\n isModel: boolean;\n onclick: string;\n openUrlInNewTab: boolean;\n title: string;\n trackingTag: string;\n url: string;\n};\n","import { useHelpMenuQuery } from '../../hooks/use-helpmenu';\nimport { useMemo } from 'react';\nimport { NavItem } from '@im/ui-lib/nav';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { buildHelpMenuItem } from './utils';\n\nexport function useHelpNavItems() {\n const { locale } = useLocalizationContext();\n const { data: help } = useHelpMenuQuery(locale);\n return useMemo<NavItem[]>(() => {\n return buildHelpMenuItem(help?.items);\n }, [help?.items]);\n}\n","import React from 'react';\nimport { HelpMenu } from '@im/ui-lib/HelpMenu';\nimport { useHelpNavItems } from '../../app/nav/useHelpNavItems';\n\n// eslint-disable-next-line import/no-default-export\nexport default function IngramHelpMenu() {\n const helpNavItems = useHelpNavItems();\n return (\n <>\n {helpNavItems && helpNavItems.length > 0 && (\n <HelpMenu\n data-testid=\"help-menu-fab\"\n height={48}\n key=\"help-menu-items\"\n left={8}\n marginTop={80}\n navItems={helpNavItems}\n width={48}\n />\n )}\n </>\n );\n}\n","import React from 'react';\nimport { useLocalization } from '@im/react-localization';\nimport { IngramLogo } from '@im/ui-lib/icons/IngramLogo';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { useSiteConfig, useBuildVars } from 'mf_core/config';\n\nexport const IngramMobile = () => {\n const { siteCode } = useSiteConfig();\n const { buildEnvironment } = useBuildVars();\n\n const whitelistedCountries = ['us', 'ca'];\n const whitelistedEnv = ['staging', 'staging2', 'development'];\n\n const isNewHeader =\n whitelistedCountries.includes(siteCode) &&\n whitelistedEnv.includes(buildEnvironment);\n const iosLink =\n buildEnvironment === 'production'\n ? 'https://testflight.apple.com/join/jte4bnsP'\n : 'https://testflight.apple.com/join/aYWXKdbk';\n const anroidLink =\n buildEnvironment === 'production'\n ? 'https://play.google.com/apps/internaltest/4701580167084484765'\n : 'https://play.google.com/apps/internaltest/4700957448059632394';\n\n const { translate } = useLocalization();\n\n return (\n <>\n <Box padding={{ sm: 4, xs: '10px 15px' }}>\n <IngramLogo width=\"242\" />\n </Box>\n <Box\n sx={{\n alignItems: 'center',\n bgcolor: '#f8f8f8',\n justifyContent: 'center',\n padding: '10px 20px',\n verticalAlign: 'middle',\n }}\n >\n {isNewHeader ? (\n <Box sx={{ textAlign: 'center' }}>\n <Typography sx={{ fontSize: '18px', fontWeight: 600 }}>\n {translate('MobileWeb.LoginPageDescriptionLine1')}\n </Typography>\n <Typography sx={{ fontSize: '14px', fontWeight: 400 }}>\n {translate('MobileWeb.LoginPageDescriptionLine2')}\n </Typography>\n <Stack\n direction=\"row\"\n spacing={1}\n sx={{ justifyContent: 'center', mt: '10px' }}\n >\n <a href={anroidLink}>\n <img\n alt=\"google play\"\n src=\"/cep/assets/img/login/mobile-anroid-download.png\"\n />\n </a>\n <a href={iosLink}>\n <img\n alt=\"app store\"\n src=\"/cep/assets/img/login/mobile-ios-download.png\"\n />\n </a>\n </Stack>\n </Box>\n ) : (\n <>\n <Typography\n align=\"center\"\n color={(theme) => theme.palette.text.secondary}\n sx={{ fontSize: '24px', fontWeight: 400 }}\n >\n Please visit on a larger device\n </Typography>\n <Typography\n align=\"center\"\n color={(theme) => theme.palette.text.secondary}\n sx={{ fontSize: '14px', fontWeight: 400 }}\n >\n Ingram Micro Xvantage isn't currently available for mobile devices\n </Typography>\n </>\n )}\n </Box>\n <Stack\n direction={{ sm: 'row', xs: 'column' }}\n justifyContent={{ sm: 'space-between', xs: 'start' }}\n sx={{\n backgroundImage: `url('/cep/assets/img/login/login-header.png')`,\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n height: 325,\n }}\n ></Stack>\n <Box>\n <Typography\n align=\"center\"\n color={(theme) => theme.palette.text.secondary}\n padding={1}\n variant=\"body2\"\n >\n {translate('OktaWidget.Copyright', {\n year: new Date().getFullYear().toString(),\n })}\n </Typography>\n </Box>\n </>\n );\n};\n","import { useApiQuery } from 'mf_core/query';\n\nexport function useMyBusinessMenu() {\n return useApiQuery<MyBusinessMenuItem[]>(`/shared/v1/menus/my-business`);\n}\n\nexport type MyBusinessMenuItem = {\n name: string;\n openInNewTab: boolean;\n sequence: number;\n subMenu: null | MyBusinessMenuItem[];\n translationKey: string;\n url: string;\n};\n","import { useApiQuery } from 'mf_core/query';\nimport { useSiteConfig } from 'mf_core/config';\n\nexport function useVoucherCountAPI() {\n const { siteCode } = useSiteConfig();\n return useApiQuery<VoucherCount>('/checkout/v1/vouchers/count', undefined, {\n enabled: voucherEnabledCountries[siteCode] || false,\n refetchOnWindowFocus: false,\n });\n}\n\nexport type VoucherCount = {\n count: number;\n};\n\nconst voucherEnabledCountries: { [country: string]: boolean } = {\n at: true,\n ch: true,\n de: true,\n dk: true,\n es: true,\n fi: true,\n fr: true,\n gb: true,\n hu: true,\n it: true,\n pt: true,\n se: true,\n};\n","import { useIsAuthenticated } from 'mf_core/auth';\nimport { useApiQuery } from 'mf_core/query';\n\nexport function useProductMenuQuery(locale: string, enabled: boolean) {\n const isAuthenticated = useIsAuthenticated();\n return useApiQuery<ProductNav[]>(\n `/shared/v1/product-categories`,\n { culture: locale },\n { enabled },\n undefined,\n { isLogoutApi: !isAuthenticated }\n );\n}\nexport type ProductNav = {\n link: string | null;\n name: string;\n openInNewTab: boolean;\n sub: ProductNav[] | null;\n};\n","import { useCMSApiQuery } from './useCMSApiQuery';\n\nexport function useServicesMenuQuery(locale: string, enabled: boolean) {\n return useCMSApiQuery<ServicesMenu>(\n `/cms/v1/menu-items?PageType=Services&locale=${locale}`,\n undefined,\n { enabled }\n );\n}\nexport type ServicesMenu = {\n menuitems: Service[];\n total: number;\n};\nexport type Service = {\n nodeAliasPath: string;\n nodeGUID: string;\n pageName: string;\n pageSubType: null;\n pageType: string;\n pageUrl: string;\n partialPageUrl: string;\n subMenu: Service[];\n vendorName: string;\n};\n","import { useCMSApiQuery } from './useCMSApiQuery';\n\nexport function useSolutionsMenuQuery(locale: string, enabled: boolean) {\n return useCMSApiQuery<SolutionsMenu>(\n `/cms/v1/menu-items?PageType=Solutions&locale=${locale}`,\n undefined,\n { enabled }\n );\n}\nexport type SolutionsMenu = {\n menuitems: Solution[];\n total: number;\n};\nexport type Solution = {\n nodeAliasPath: string;\n nodeGUID: string;\n pageName: string;\n pageSubType: null;\n pageType: string;\n pageUrl: string;\n partialPageUrl: string;\n subMenu: Solution[];\n vendorName: string;\n};\n","import { useCMSApiQuery } from './useCMSApiQuery';\n\nexport function useVendorsMenuQuery(locale: string, enabled: boolean) {\n const result = useCMSApiQuery<VendorsMenu>(\n `/cms/v1/menu-items?PageType=vendors&locale=${locale}`,\n undefined,\n { enabled }\n );\n return result;\n}\nexport type VendorsMenu = {\n menuitems: Vendor[];\n total: number;\n};\nexport type Vendor = {\n isLeftNav: boolean;\n partialPageUrl: string;\n vendorName: string;\n vendorPageName: string;\n};\n","import { useIsAuthenticated } from 'mf_core/auth';\nimport { useSiteConfig } from 'mf_core/config';\nimport { useMemo } from 'react';\nimport { useLocalizationContext, useTranslate } from '@im/react-localization';\nimport { NavItem } from '@im/ui-lib/nav';\nimport { useMyBusinessNavItems } from './useMyBusinessNavItems';\nimport { useProductsNavItems } from './useProductsNavItems';\nimport { useServicesNavItems } from './useServicesNavItems';\nimport { useSolutionsNavItems } from './useSolutionsNavItems';\nimport { useVendorsNavItems } from './useVendorsNavItems';\nimport { applicationCenterAvailability } from './utils';\n\nconst HIDE_SEARCHBAR_PRODUCT_VENDORS_COUNTRIES: Array<string> = ['br'];\nexport function useSideNavItems(enabled = true): NavItem[] {\n const { locale } = useLocalizationContext();\n const { siteCode } = useSiteConfig();\n const availableInCountry = applicationCenterAvailability({ siteCode });\n const translate = useTranslate();\n const isAuthenticated = useIsAuthenticated();\n\n const myBusinessNavItems = useMyBusinessNavItems();\n const productsNavItems = useProductsNavItems(locale, enabled);\n const vendorsNavItems = useVendorsNavItems(locale, enabled);\n const solutionsNavItems = useSolutionsNavItems(enabled);\n const servicesNavItems = useServicesNavItems(enabled);\n\n return useMemo<NavItem[]>(() => {\n const navItems: NavItem[] = [];\n\n const hideSearchBarProductVendorNav =\n HIDE_SEARCHBAR_PRODUCT_VENDORS_COUNTRIES.includes(siteCode) &&\n !isAuthenticated;\n\n if (isAuthenticated) {\n navItems.push({\n key: 'home',\n label: translate('Navigation.Home'),\n route: '/my/dashboard',\n });\n navItems.push({\n key: 'myBusiness',\n label: translate('Navigation.MyBusiness'),\n navItems: myBusinessNavItems,\n });\n } else {\n navItems.push({\n key: 'home',\n label: translate('Navigation.Home'),\n route: '/home',\n });\n }\n\n if (!hideSearchBarProductVendorNav) {\n navItems.push({\n key: 'products',\n label: translate('Navigation.Products'),\n navItems: productsNavItems,\n });\n\n navItems.push({\n key: 'vendors',\n label: translate('Navigation.Vendors'),\n navItems: vendorsNavItems,\n });\n }\n navItems.push({\n key: 'solutions',\n label: translate('Navigation.Solutions'),\n navItems: solutionsNavItems,\n });\n\n navItems.push({\n key: 'services',\n label: translate('Navigation.Services'),\n navItems: servicesNavItems,\n });\n\n navItems.push({\n key: 'resources',\n label: translate('Navigation.Resources'),\n route: '/cms/resources',\n });\n\n if (isAuthenticated) {\n navItems.push({\n key: 'events',\n label: translate('Navigation.Events'),\n route: '/cms/events/landing',\n });\n }\n if (availableInCountry) {\n navItems.push({\n key: 'appstore',\n label: translate('AppStore.AppStoreName'),\n route: isAuthenticated\n ? '/my/integrationshub/appstodownload'\n : '/integrationshub/appstodownload',\n });\n }\n\n return navItems;\n }, [\n siteCode,\n isAuthenticated,\n translate,\n solutionsNavItems,\n servicesNavItems,\n availableInCountry,\n myBusinessNavItems,\n productsNavItems,\n vendorsNavItems,\n ]);\n}\n","import { useCallback, useMemo } from 'react';\nimport { NavItem } from '@im/ui-lib/nav';\nimport { useTranslate } from '@im/react-localization';\nimport {\n useMyBusinessMenu,\n MyBusinessMenuItem,\n} from '../../hooks/use-mybusinessmenu';\nimport { useVoucherCountAPI } from '../../hooks/use-vouchercount';\n\nexport function useMyBusinessNavItems() {\n const translate = useTranslate();\n const { data: vouchers, isLoading: isVoucherLoading } = useVoucherCountAPI();\n const { data: backofficeMenuItems } = useMyBusinessMenu();\n\n // You may write custom logic to render a dynamic url by\n // setting the value to a function that returns the desired url or route.\n const srcUrlMap: { [itemName: string]: string } = useMemo(() => {\n return {\n EXAMPLE_SOURCE_URL: 'https://www.ingrammicro.com',\n };\n }, []);\n\n const menuItems = useMemo(() => {\n if (\n backofficeMenuItems &&\n !isVoucherLoading &&\n !(vouchers && vouchers.count > 0)\n ) {\n const voucherMenuIndex = backofficeMenuItems.findIndex(\n (m: MyBusinessMenuItem) => m.name === 'Vouchers'\n );\n if (voucherMenuIndex > -1)\n backofficeMenuItems.splice(voucherMenuIndex, 1);\n }\n backofficeMenuItems\n ?.filter((m: MyBusinessMenuItem) => m.url === 'FROM_SOURCE')\n .forEach((m: MyBusinessMenuItem) => {\n m.url = srcUrlMap[m.name];\n if (!m.url) {\n console.warn(\n `No SOURCE URL supplied for dynamic My Business menu item \"${m.name}\". Update source code or provide URL in Business Menu BO configuration.`\n );\n }\n });\n return backofficeMenuItems;\n }, [backofficeMenuItems, isVoucherLoading, srcUrlMap, vouchers]);\n\n // If language is changed, translate method returns empty string first and then actual value\n // because it loads the translation through xhr call which consumes few ms.\n // This constant is used to trigger 'buildMyBusinessMenu' callback fn when the translation is loaded.\n const menuTranslateCheck = translate('Navigation.MyBusiness');\n\n const buildMyBusinessMenu = useCallback(\n (items: MyBusinessMenuItem[] | undefined) => {\n if (!items) return [];\n return items\n .filter((item) => item.url !== undefined)\n .map((item) => {\n const { name, openInNewTab, subMenu, translationKey } = item;\n const navItem: NavItem = {\n key: name,\n label: translate(translationKey),\n };\n\n if (name === 'Vouchers' && vouchers && vouchers.count > 0) {\n navItem.label = `${translate(translationKey)}(${vouchers.count})`;\n }\n\n const isRelPath = !item?.url?.startsWith('http');\n\n if (!openInNewTab) {\n if (isRelPath) navItem.route = item.url;\n //urls open in new tab by default, override with onClick\n else navItem.onClick = () => (window.location.href = item.url);\n } else if (isRelPath)\n //rel paths in new tabs need base path\n navItem.onClick = () =>\n window.open(`/cep/app${item.url}`, '_blank');\n else navItem.url = item.url;\n\n if (subMenu) navItem.navItems = buildMyBusinessMenu(subMenu);\n\n return navItem;\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [menuTranslateCheck, vouchers]\n );\n return useMemo(() => {\n return buildMyBusinessMenu(menuItems);\n }, [menuItems, buildMyBusinessMenu]);\n}\n","import { useMemo } from 'react';\nimport { NavItem } from '@im/ui-lib/nav';\nimport { ProductNav, useProductMenuQuery } from '../../hooks/use-product';\n\nexport function useProductsNavItems(locale: string, enabled: boolean) {\n const { data: categories } = useProductMenuQuery(locale, enabled);\n return useMemo<NavItem[]>(() => {\n const navItems: NavItem[] = [];\n if (categories && categories.length > 0) {\n for (const cat of categories) {\n const navItem: NavItem = {\n key: cat.name,\n label: cat.name,\n navItems: cat.sub?.map((subcat: ProductNav) => {\n return {\n key: subcat.name,\n label: subcat.name,\n navItems: subcat.sub?.map((subcat1: ProductNav) => {\n return {\n key: subcat1.name,\n label: subcat1.name,\n route: !subcat1.openInNewTab ? subcat1.link : undefined,\n url: subcat1.openInNewTab ? subcat1.link : undefined,\n } as NavItem;\n }),\n route: !subcat.openInNewTab ? subcat.link : undefined,\n url: subcat.openInNewTab ? subcat.link : undefined,\n } as NavItem;\n }),\n };\n if (cat.link) {\n if (cat.openInNewTab) navItem.url = cat.link;\n else navItem.route = cat.link;\n }\n navItems.push(navItem);\n }\n }\n return navItems;\n }, [categories]);\n}\n","import { NavItem } from '@im/ui-lib/nav';\nimport { useMemo } from 'react';\nimport { useVendorsMenuQuery, Vendor } from '../../hooks/use-vendorsmenu';\nimport { validateProperty } from './utils';\n\nexport function useVendorsNavItems(locale: string, enabled: boolean) {\n const result = useVendorsMenuQuery(locale, enabled);\n\n const vendors = useMemo(() => {\n if (result.data?.menuitems?.length) {\n localStorage.setItem(\n 'localLeftNavVendorList',\n JSON.stringify(result.data?.menuitems?.map((a: Vendor) => a.vendorName))\n );\n }\n const filterLeftNavList = result.data?.menuitems?.filter(\n (x: Vendor) => x.isLeftNav === true\n );\n\n return {\n menuitems: filterLeftNavList,\n total: filterLeftNavList?.length ?? 0,\n };\n }, [result.data]);\n\n return useMemo<NavItem[]>(() => {\n const navItems: NavItem[] = [];\n const count =\n vendors && vendors.total && vendors.total > 0 ? vendors.total : 0;\n\n if (count > 0) {\n for (let i = 0; i <= count; i++) {\n const key = validateProperty(vendors, 'vendorName', i);\n const pageName = validateProperty(vendors, 'pageName', i);\n const partialPageUrl = validateProperty(vendors, 'partialPageUrl', i);\n const searchUrl = validateProperty(vendors, 'searchUrl', i);\n const pagePath = partialPageUrl\n ? partialPageUrl.split('/').pop() ?? ''\n : '';\n if (key !== '') {\n navItems.push({\n key,\n label: pageName,\n route: searchUrl\n ? `/product/productsearch?title=${encodeURIComponent(\n key\n )}&pageName=${encodeURIComponent(pagePath)}&${searchUrl}`\n : `/product/productsearch?title=${encodeURIComponent(\n key\n )}&vendor=${encodeURIComponent(\n key\n )}&pageName=${encodeURIComponent(pagePath)}`,\n });\n }\n }\n }\n\n return navItems;\n }, [vendors]);\n}\n","import { useLocalizationContext } from '@im/react-localization';\nimport { NavItem } from '@im/ui-lib/nav';\nimport { useMemo } from 'react';\nimport { useSolutionsMenuQuery } from '../../hooks/use-solutionsmenu';\nimport { buildNavMenuItem } from './utils';\n\nexport function useSolutionsNavItems(enabled: boolean) {\n const { locale } = useLocalizationContext();\n const { data: solution } = useSolutionsMenuQuery(locale, enabled);\n\n return useMemo<NavItem[]>(() => {\n return buildNavMenuItem(solution, locale);\n }, [locale, solution]);\n}\n","import { useMemo } from 'react';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { NavItem } from '@im/ui-lib/nav';\nimport { useServicesMenuQuery } from '../../hooks/use-servicesmenu';\nimport { buildNavMenuItem } from './utils';\n\nexport function useServicesNavItems(enabled: boolean) {\n const { locale } = useLocalizationContext();\n const { data: services } = useServicesMenuQuery(locale, enabled);\n\n return useMemo<NavItem[]>(() => {\n const navMenuItems = buildNavMenuItem(services, locale);\n\n return navMenuItems;\n }, [locale, services]);\n}\n","import React, { useEffect, useState } from 'react';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Drawer from '@mui/material/Drawer';\nimport { LeftSideNav } from '@im/ui-lib/LeftSideNav';\nimport { LeftSideNavMobile } from '@im/ui-lib/LeftSideNavMobile';\nimport { NavItem, useNavTo } from '@im/ui-lib/nav';\nimport { useSideNavItems } from '../../app/nav/side-nav-items';\nimport { useLocation } from 'react-router-dom';\nimport { useHelpNavItems } from '../../app/nav/useHelpNavItems';\n\ntype Props = {\n drawerOpen: boolean;\n headerHeight: number;\n hoverRequired: boolean;\n isAuthenticated: boolean;\n isCheckout: boolean;\n isMobile: boolean;\n isTempDrawer: boolean;\n setDrawerOpen: (action: boolean) => void;\n};\n\nexport function IngramSideNav(props: Props) {\n const {\n drawerOpen,\n headerHeight,\n isAuthenticated,\n isCheckout,\n isMobile,\n isTempDrawer,\n setDrawerOpen,\n } = props;\n const { pathname, search } = useLocation();\n const [activeSideNavItem, setActiveSideNavItem] = useState<\n NavItem | undefined\n >();\n const [enableApi, setEnableApi] = useState(false);\n const enableMenuApi = enableApi || isAuthenticated || isMobile;\n const sideNavItems = useSideNavItems(enableMenuApi);\n const navTo = useNavTo();\n const onNavItemClick = (navItem: NavItem) => {\n setDrawerOpen(false);\n navTo(navItem);\n };\n const helpNavItems = useHelpNavItems();\n\n useEffect(() => {\n if (pathname === '/home' || pathname === '/my/dashboard') {\n setActiveSideNavItem(sideNavItems[0]);\n }\n\n if (isAuthenticated) {\n if (\n pathname === '/frame' ||\n pathname === '/product/favoriteproducts' ||\n pathname === '/my/bid/bidlist' ||\n pathname === '/my/quotemgmt/quotelist'\n ) {\n setActiveSideNavItem(sideNavItems[1]);\n } else if (\n pathname === '/product/productsearch' &&\n !search.includes('vendor')\n ) {\n setActiveSideNavItem(sideNavItems[2]);\n } else if (\n pathname === '/product/productsearch' &&\n search.includes('vendor')\n ) {\n setActiveSideNavItem(sideNavItems[3]);\n } else if (pathname.includes('cms')) {\n if (pathname.includes('solutions')) {\n setActiveSideNavItem(sideNavItems[4]);\n } else if (pathname.includes('services')) {\n setActiveSideNavItem(sideNavItems[5]);\n } else if (pathname.includes('resources')) {\n setActiveSideNavItem(sideNavItems[6]);\n } else if (pathname.includes('Events')) {\n setActiveSideNavItem(sideNavItems[7]);\n }\n }\n } else if (\n pathname === '/product/productsearch' &&\n search.includes('vendor')\n ) {\n setActiveSideNavItem(sideNavItems[1]);\n } else if (pathname.includes('cms')) {\n if (pathname.includes('solutions')) {\n setActiveSideNavItem(sideNavItems[2]);\n } else if (pathname.includes('services')) {\n setActiveSideNavItem(sideNavItems[3]);\n } else if (pathname.includes('resources')) {\n setActiveSideNavItem(sideNavItems[4]);\n } else if (pathname.includes('Events')) {\n setActiveSideNavItem(sideNavItems[5]);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pathname, search, isAuthenticated]);\n\n return (\n <ClickAwayListener\n mouseEvent=\"onMouseDown\"\n onClickAway={() => drawerOpen && setDrawerOpen(false)}\n touchEvent=\"onTouchStart\"\n >\n {isMobile && !isAuthenticated ? (\n <Drawer\n aria-label=\"app navigation\"\n onClose={() => setDrawerOpen(false)}\n open={drawerOpen}\n sx={{\n '& .MuiBackdrop-root': {\n position: 'unset',\n },\n '& .MuiDrawer-paper': {\n borderRight: `1px solid #D1D1D1`,\n boxShadow: 'none',\n height: '100%',\n },\n position: 'relative',\n }}\n variant={'temporary'}\n >\n <LeftSideNavMobile\n activeSideNavItem={activeSideNavItem}\n helpNavItems={helpNavItems}\n hoverRequired={true}\n isHelpNavItemVisible={true}\n navItems={sideNavItems}\n onClose={() => setDrawerOpen(false)}\n onNavItemClick={onNavItemClick}\n setActiveSideNavItem={setActiveSideNavItem}\n />\n </Drawer>\n ) : (\n <Drawer\n aria-label=\"app navigation\"\n onClose={() => setDrawerOpen(false)}\n onFocus={\n !enableMenuApi\n ? () => {\n setEnableApi(true);\n }\n : undefined\n }\n onMouseEnter={\n !enableMenuApi\n ? () => {\n setEnableApi(true);\n }\n : undefined\n }\n open={isTempDrawer ? drawerOpen : true}\n sx={{\n '& .MuiBackdrop-root': {\n position: 'unset',\n },\n '& .MuiDrawer-paper': {\n borderRight: `1px solid #D1D1D1`,\n boxShadow: 'none',\n height: '100%',\n top: headerHeight,\n },\n position: 'relative',\n }}\n variant={isTempDrawer ? 'temporary' : 'persistent'}\n >\n {!isCheckout ? (\n <LeftSideNav\n activeSideNavItem={activeSideNavItem}\n headerHeight={headerHeight}\n hoverRequired={true}\n isAuthenticated={isAuthenticated}\n isHelpNavItemVisible={false}\n navItems={sideNavItems}\n onNavItemClick={onNavItemClick}\n setActiveSideNavItem={setActiveSideNavItem}\n />\n ) : (\n <LeftSideNav\n activeSideNavItem={undefined}\n headerHeight={headerHeight}\n hoverRequired={false}\n isAuthenticated={isAuthenticated}\n isHelpNavItemVisible={false}\n navItems={[]}\n onNavItemClick={() => {\n return 0;\n }}\n setActiveSideNavItem={setActiveSideNavItem}\n />\n )}\n </Drawer>\n )}\n </ClickAwayListener>\n );\n}\n","import { useApiQuery } from 'mf_core/query';\nimport { Gateway } from './useCMPCardCheck';\n\nexport const tokensUrlMap = {\n CYBERSOURCE: '/payment/v1/gateways/cybersource/tokens',\n DOCDATA: '/payment/v1/gateways/DocDataDirectDebit/tokens',\n WORLDPAY: '/payment/v1/gateways/worldpay/tokens?getAllTokens=true',\n};\n\nexport function usePaymentCards(enabled: boolean, gateway?: Gateway) {\n const tokensUrl = gateway ? tokensUrlMap[gateway] : '';\n return useApiQuery<any>(tokensUrl, undefined, {\n enabled,\n refetchOnWindowFocus: false,\n });\n}\n","import { useHasPermission, useIsFeatureWhitelisted } from 'mf_core/auth';\nimport { useFeatureFlagBase } from './use-feature-flag-base';\nimport { useMemo } from 'react';\nimport { useCMPPaymentTerm } from './useCMPPaymentTerm';\n\nconst boKeys = {\n CMP_CC_Enabled: 'CMP_CreditCardPopup_Enable',\n CMP_CC_TermCode: 'CMP_CreditCardTermCode',\n CMP_DocData_ForcePopup_Enabled: 'Is_Docdata_MP_PopUp_Enabled',\n CMP_WorldPay_ForcePopup_Enabled: 'Is_Worldpay_MP_PopUp_Enabled',\n Docdata_CMP_TermCode: 'Docdata_DD_CMP_TermCode',\n Is_Cybersource_Force_Popup_Enabled: 'Is_Cybersource_Force_Popup_Enabled',\n Is_DocData_enabled: 'Is_DocData_DD_enabled',\n Is_Worldpay_enabled: 'Is_Worldpay_enabled',\n Worldpay_CMP_TermCode: 'Worldpay_CMP_TermCode',\n};\n\nexport type Gateway = 'CYBERSOURCE' | 'DOCDATA' | 'WORLDPAY';\n\nexport const useCMPCardCheck = () => {\n const { boValues, isReady: isFlagLoaded } = useFeatureFlagBase();\n const isFeatureWhitelisted = useIsFeatureWhitelisted();\n const isCmpWhitelisted = isFeatureWhitelisted('CMP');\n const hasPermission = useHasPermission();\n const canPlaceOrder = hasPermission(['PlaceOrders']);\n\n const cmpEnabledInBO = useMemo(\n () => isFlagLoaded && isCmpWhitelisted,\n [isCmpWhitelisted, isFlagLoaded]\n );\n const cmpTermCodes = useMemo(\n () =>\n boValues[boKeys.CMP_CC_TermCode]\n ?.split(';')\n .map((code: any) => code.trim()?.toLowerCase())\n .filter(Boolean),\n [boValues]\n );\n const allCmpTermCodes = cmpTermCodes?.includes('*');\n\n const worldPayTermCodes = useMemo(\n () =>\n boValues[boKeys.Worldpay_CMP_TermCode]\n ?.split(';')\n .map((code: any) => code.trim()?.toLowerCase())\n .filter(Boolean),\n [boValues]\n );\n const allWorldPayTermCodes = worldPayTermCodes?.includes('*');\n\n const docDataTermCodes = useMemo(\n () =>\n boValues[boKeys.Docdata_CMP_TermCode]\n ?.split(';')\n .map((code: any) => code.trim()?.toLowerCase())\n .filter(Boolean),\n [boValues]\n );\n const allDocDataTermCodes = docDataTermCodes?.includes('*');\n\n const { data: cmpPaymentTerm } = useCMPPaymentTerm(\n cmpEnabledInBO &&\n canPlaceOrder &&\n (boValues[boKeys.CMP_CC_Enabled]?.toLowerCase() === 'true' ||\n boValues[boKeys.Is_Worldpay_enabled]?.toLowerCase() === 'true' ||\n boValues[boKeys.Is_DocData_enabled]?.toLowerCase() === 'true')\n );\n\n const enableCybersource = useMemo(\n () =>\n cmpEnabledInBO &&\n boValues[boKeys.CMP_CC_Enabled]?.toLowerCase() === 'true' &&\n (allCmpTermCodes ||\n cmpTermCodes?.includes(cmpPaymentTerm?.name?.toLowerCase())),\n [\n allCmpTermCodes,\n boValues,\n cmpEnabledInBO,\n cmpTermCodes,\n cmpPaymentTerm?.name,\n ]\n );\n\n const enableWorldPay = useMemo(\n () =>\n cmpEnabledInBO &&\n boValues[boKeys.Is_Worldpay_enabled]?.toLowerCase() === 'true' &&\n (allWorldPayTermCodes ||\n worldPayTermCodes?.includes(cmpPaymentTerm?.name?.toLowerCase())),\n [\n allWorldPayTermCodes,\n boValues,\n cmpEnabledInBO,\n cmpPaymentTerm?.name,\n worldPayTermCodes,\n ]\n );\n\n const enableDocData = useMemo(\n () =>\n cmpEnabledInBO &&\n boValues[boKeys.Is_DocData_enabled]?.toLowerCase() === 'true' &&\n (allDocDataTermCodes ||\n docDataTermCodes?.includes(cmpPaymentTerm?.name?.toLowerCase())),\n [\n allDocDataTermCodes,\n boValues,\n cmpEnabledInBO,\n cmpPaymentTerm?.name,\n docDataTermCodes,\n ]\n );\n const enableForcePopupDocdata =\n boValues[boKeys.CMP_DocData_ForcePopup_Enabled]?.toLowerCase() === 'true';\n\n const enableForcePopupWorldPay =\n boValues[boKeys.CMP_WorldPay_ForcePopup_Enabled]?.toLowerCase() === 'true';\n const enableForcePopupCybersource =\n boValues[boKeys.Is_Cybersource_Force_Popup_Enabled]?.toLowerCase() ===\n 'true';\n const gateway = useMemo((): Gateway | undefined => {\n if (enableWorldPay) return 'WORLDPAY';\n else if (enableDocData) return 'DOCDATA';\n else if (enableCybersource) return 'CYBERSOURCE';\n }, [enableCybersource, enableDocData, enableWorldPay]);\n\n return {\n enableCybersource,\n enableDocData,\n enableForcePopupCybersource,\n enableForcePopupDocdata,\n enableForcePopupWorldPay,\n enableWorldPay,\n gateway,\n isFlagLoaded,\n };\n};\n","import { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useIsAuthenticated, useIsImpersonationMode } from 'mf_core/auth';\nimport { usePaymentCards } from './use-paymentCards';\nimport { useCMPCardCheck } from './useCMPCardCheck';\n\nexport function useCMPCardRedirect() {\n const navigate = useNavigate();\n const ignoreCCRedirect = sessionStorage.getItem('ignoreCCRedirect');\n\n const isAuthenticated = useIsAuthenticated();\n const isImpersonationMode = useIsImpersonationMode();\n\n const {\n enableCybersource,\n enableDocData,\n enableForcePopupCybersource,\n enableForcePopupDocdata,\n enableForcePopupWorldPay,\n enableWorldPay,\n gateway,\n isFlagLoaded,\n } = useCMPCardCheck();\n const cmpEnabled =\n (enableCybersource && enableForcePopupCybersource) ||\n (enableDocData && enableForcePopupDocdata) ||\n (enableWorldPay && enableForcePopupWorldPay);\n\n const { data: paymentCards, isFetched: fetchedCards } = usePaymentCards(\n cmpEnabled,\n gateway\n );\n\n useEffect(() => {\n //Impersonation mode: Card redirect could be skipped\n if (isImpersonationMode) return;\n\n if (!cmpEnabled) return;\n\n if (ignoreCCRedirect) return;\n\n if (isAuthenticated && cmpEnabled && fetchedCards) {\n if (!paymentCards || paymentCards?.length <= 0) {\n localStorage.setItem('forceCCEntry', 'true');\n navigate('/my/account/accountsettings');\n } else if (\n !paymentCards.some((card: any) => card.defaultCard || card.is_default)\n ) {\n localStorage.setItem('forceCCDefault', 'true');\n navigate('/my/account/accountsettings');\n }\n } else {\n localStorage.removeItem('forceCCEntry');\n localStorage.removeItem('forceCCDefault');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n cmpEnabled,\n fetchedCards,\n ignoreCCRedirect,\n isAuthenticated,\n isFlagLoaded,\n isImpersonationMode,\n navigate,\n paymentCards?.length,\n ]);\n}\n","import { useApiQuery } from 'mf_core/query';\n\nexport function useCMPPaymentTerm(enabled: boolean) {\n return useApiQuery(\n '/payment/v1/gateways/cmp/reseller-payment-term',\n undefined,\n { enabled, refetchOnWindowFocus: false }\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { ImpersonationHeaderProps } from '@im/ui-lib/HeaderX4C';\nimport { useLocalization } from '@im/react-localization';\nimport { useDecodedToken } from 'mf_core/auth';\nimport { useDisableImpersonationMode } from './useDisableImpersonationMode';\n\ntype AlertColor = 'success' | 'info' | 'warning' | 'error';\n\nconst DEFAULT_MESSAGE_KEY = 'Impersonation.HeaderInfoAlert';\n\nexport function useImpersonationHeaderProps() {\n const { translate } = useLocalization();\n const decodedToken = useDecodedToken();\n\n const { isError, isPending, mutate } = useDisableImpersonationMode();\n\n const [alertMessageKey, setAlertMessageKey] = useState(DEFAULT_MESSAGE_KEY);\n const [alertSeverity, setAlertSeverity] = useState('info' as AlertColor);\n\n const resellerId = decodedToken?.imoProfile?.resellerId || '';\n\n const alertMessage = useMemo(() => {\n return translate(\n alertMessageKey,\n { resellerId: ` <b>${resellerId}</b>` },\n true\n );\n }, [alertMessageKey, resellerId, translate]);\n\n const exitButtonDisabled = false;\n\n const exitButtonLoading = isPending;\n\n const exitButtonText = useMemo(() => {\n return translate('Common.Exit');\n }, [translate]);\n\n const onImpersonationButtonClick = () => {\n mutate();\n };\n\n useEffect(() => {\n if (isError) {\n setAlertMessageKey('Impersonation.HeaderErrorAlert');\n setAlertSeverity('error');\n }\n const clearAlert = setTimeout(() => {\n setAlertMessageKey(DEFAULT_MESSAGE_KEY);\n setAlertSeverity('info');\n }, 3000);\n return () => {\n clearTimeout(clearAlert);\n };\n }, [isError]);\n\n return {\n alertMessage,\n alertSeverity,\n exitButtonDisabled,\n exitButtonLoading,\n exitButtonText,\n onImpersonationButtonClick,\n } as ImpersonationHeaderProps;\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useLocation } from 'react-router';\nimport { useIsAuthenticated } from 'mf_core/auth';\nimport { useSiteConfig } from 'mf_core/config';\n\nconst IM_LOGIN_START_PATH = '/Site/Login/IdpLogin?ReturnUrl=/Site/Login/ForCep';\nconst IM_LOGIN_SUCCESS_PATH = '/Site/Login/ForCep';\nconst ORIGIN = globalThis.location.origin;\n\nconst LOG_PREFIX = '[Auto-Login-IM-Online]';\n\nexport function AutoLoginImOnlineFrame() {\n const [imLoggedIn, setImLoggedIn] = useState(false);\n const isAuthenticated = useIsAuthenticated();\n const { pathname } = useLocation();\n const isHomeView = pathname === '/my/dashboard';\n const { siteCode } = useSiteConfig();\n const frameRef = useRef<any>(null);\n const [frameSrc, setFrameSrc] = useState('');\n\n /**\n * When route is `\\login` clear the imLoggedIn state\n */\n useEffect(() => {\n if (pathname === '/login') {\n setImLoggedIn(false);\n }\n }, [pathname]);\n /**\n * When isHomeView && isAuthenticated && !imLoggedIn\n * wait 4 second and then start the IM Online Login process in the hidden iframe.\n */\n useEffect(() => {\n let active = true;\n let timeoutId: any = undefined;\n setFrameSrc(''); // start with no hidden frame\n\n const cleanFn = () => {\n active = false;\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n };\n\n if (\n isHomeView &&\n isAuthenticated &&\n !imLoggedIn &&\n siteCode !== 'hk' &&\n siteCode !== 'id' &&\n siteCode !== 'th'\n ) {\n timeoutId = setTimeout(() => {\n if (active) {\n // eslint-disable-next-line no-console\n console.log(`${LOG_PREFIX} start`);\n setFrameSrc(IM_LOGIN_START_PATH);\n }\n }, 4000);\n }\n return cleanFn;\n }, [isHomeView, isAuthenticated, imLoggedIn, siteCode]);\n\n /**\n * When frameSrc is set, wait for frame contentWindow.location\n * to complete the IM Online login process.\n */\n useEffect(() => {\n let active = true;\n let intervalId: any = undefined;\n\n const cleanFn = () => {\n active = false;\n if (intervalId) {\n clearInterval(intervalId);\n intervalId = undefined;\n }\n };\n\n if (frameSrc) {\n intervalId = setInterval(() => {\n if (active) {\n const href = getFrameHref(frameRef);\n if (href && href.startsWith(ORIGIN)) {\n const path = href.substring(ORIGIN.length);\n if (path.startsWith(IM_LOGIN_SUCCESS_PATH)) {\n setImLoggedIn(true);\n setFrameSrc('');\n cleanFn();\n // eslint-disable-next-line no-console\n console.log(`${LOG_PREFIX} success`);\n }\n }\n }\n }, 1000);\n }\n\n return cleanFn;\n }, [frameSrc]);\n\n /**\n * Render Hidden iframe only when `frameSrc` is set\n */\n return frameSrc ? (\n <iframe\n ref={frameRef}\n src={frameSrc}\n style={{\n border: 'none',\n height: 0,\n position: 'absolute',\n width: 0,\n }}\n title=\"autoLoginFrame\"\n />\n ) : null;\n}\n\n/** Returns the href of the iframe contentWindow when */\nfunction getFrameHref(ref: React.MutableRefObject<any>) {\n let href: string | undefined;\n try {\n href = String(ref.current?.contentWindow.location.href || '');\n } catch (e) {\n // Ignoring \"DOMException: Blocked a frame with origin\"\n // This occurs during the login process when redirected to okta server.\n }\n return href;\n}\n","/* istanbul ignore file */\nimport Box from '@mui/material/Box';\nimport {\n handleOAuthResponse,\n useOktaContext,\n useRefreshAccessToken,\n} from 'mf_core/auth';\nimport { useApiPost } from 'mf_core/query';\nimport React, { ChangeEvent, useState } from 'react';\n\nexport function DebugAccessToken() {\n const { authState, oktaAuth } = useOktaContext();\n\n // debugging token refresh upon 401 and impersonation mode\n const refreshAccessTokenWithDebuggingData = useRefreshAccessToken(true);\n const refreshAccessTokenHandler = () => {\n refreshAccessTokenWithDebuggingData().then((success) => {\n // eslint-disable-next-line no-console\n console.log(`access token refresh ${success ? 'succeeded' : 'faield'}`);\n });\n };\n\n const invalidateAccessTokenHandler = () => {\n const tokens = oktaAuth.tokenManager.getTokensSync();\n if (tokens.accessToken) {\n tokens.accessToken.accessToken =\n tokens.accessToken.accessToken.concat('invalidated');\n oktaAuth.tokenManager.setTokens(tokens);\n // eslint-disable-next-line no-console\n console.log('tokens: ', tokens);\n }\n };\n\n const invalidateRefreshTokenHandler = () => {\n const tokens = oktaAuth.tokenManager.getTokensSync();\n if (tokens.refreshToken && authState?.refreshToken) {\n const inv = 'invalidated';\n tokens.refreshToken.refreshToken = inv;\n authState.refreshToken.refreshToken = inv;\n oktaAuth.tokenManager.setTokens(tokens);\n // eslint-disable-next-line no-console\n console.log('tokens: ', tokens);\n }\n };\n\n const [resellerIdInputValue, setResellerIdInputValue] = useState('');\n const handleResellerIdChange = (e: ChangeEvent<HTMLInputElement>) => {\n setResellerIdInputValue(e.target.value);\n };\n const apiPost = useApiPost();\n const enableImpersonationHandler = () => {\n apiPost(\n //`https://apixgcp-qa.ingrammicro.com/impersonation/v2/x4c/enable/${resellerIdInputValue}`,\n `/impersonation/v2/x4c/enable/${resellerIdInputValue}`,\n {\n tokenRefreshRequest: {\n authority: authState?.refreshToken?.issuer,\n clientId: authState?.idToken?.clientId,\n refreshToken: authState?.refreshToken?.refreshToken,\n scope: authState.refreshToken?.scopes.join(' '),\n },\n }\n ).then((data) => {\n const tokenResponse = data?.tokenRefreshResponse;\n if (tokenResponse) {\n const tokenParams = { clientId: authState?.idToken?.clientId };\n handleOAuthResponse(oktaAuth, tokenParams, tokenResponse, null).then(\n (convertedResponse: any) => {\n const { tokens } = convertedResponse;\n // eslint-disable-next-line no-console\n console.log(\n 'new tokens built from impersonation API response: ',\n tokens\n );\n oktaAuth?.tokenManager.setTokens(tokens);\n }\n );\n }\n });\n };\n const showDebug = localStorage.getItem('showDebug');\n // end debugging\n\n return (\n <>\n {showDebug && (\n <Box>\n <button onClick={invalidateAccessTokenHandler}>\n invalidate access token\n </button>\n \n <button onClick={invalidateRefreshTokenHandler}>\n invalidate refresh token\n </button>\n \n <button onClick={refreshAccessTokenHandler}>\n refresh access token\n </button>\n <br />\n <input\n onChange={handleResellerIdChange}\n placeholder=\"reseller id\"\n type=\"text\"\n value={resellerIdInputValue}\n ></input>\n <button onClick={enableImpersonationHandler}>\n enable impersonation\n </button>\n </Box>\n )}\n </>\n );\n}\n","/* istanbul ignore file */\nimport React from 'react';\nimport Cookies from 'js-cookie';\nimport { styled } from '@mui/material/styles';\n\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport { useImTheme } from '@im/im-theme';\nimport { CulturePicker } from '@im/ui-lib/CulturePicker';\n\nimport { LoginButton, useUserInfo } from 'mf_core/auth';\n\nexport function DebugToolbar() {\n const { setThemeName, theme } = useImTheme();\n const isDark = theme.palette.mode === 'dark';\n\n const userInfo = useUserInfo();\n\n return (\n <Root>\n <div>(Ignore Testing Toolbar)</div>\n <FormControlLabel\n control={\n <Switch\n checked={isDark}\n onChange={() => setThemeName(isDark ? 'im-light' : 'im-dark')}\n />\n }\n label=\"Dark Mode\"\n labelPlacement=\"start\"\n />\n\n <CulturePicker />\n\n <div>\n <LoginButton />\n </div>\n <div>{userInfo ? userInfo.name : ' '}</div>\n\n <FlexGap />\n\n <FormControlLabel\n control={<Switch checked={true} onChange={() => switchToClassic()} />}\n label=\"New Look\"\n labelPlacement=\"start\"\n />\n </Root>\n );\n}\n\nconst Root = styled('div')(({ theme }) => {\n return {\n alignItems: 'center',\n background: 'lightgrey',\n display: 'flex',\n flexDirection: 'row',\n gap: 8,\n minHeight: theme.spacing(5),\n minWidth: 800,\n paddingLeft: 8,\n paddingRight: 16,\n };\n});\n\nconst FlexGap = styled('div')(() => {\n return {\n flex: 1,\n };\n});\n\nfunction switchToClassic() {\n Cookies.remove('IMOnline_CEP');\n Cookies.set('IMOnline_Legacy', 'true');\n const { location } = globalThis;\n location.href = origin;\n}\n","/* eslint-disable sort-keys */\nimport { useTranslate } from '@im/react-localization';\nimport { usePageTitle } from 'mf_core/config';\nimport { useEffect } from 'react';\n\n// To add a page title on a framed route, map translation keys to frame urls here:\nconst frameTitleMap: { [search: string]: string } = {\n '?url=%2FSite%2FMyProfile': 'Title.MyAccount',\n '?url=%2FSite%2FMyProfile%2FBrandingPreferences': 'Title.MyAccount',\n '?url=%2FSite%2FMyProfile%2FMyProfileAddress': 'Title.MyAccount',\n '?url=%2FSite%2FMyProfile%2FNotificationPreferences': 'Title.MyAccount',\n '?url=%2FSite%2FMyProfile%2FReportPreferences': 'Title.MyAccount',\n '?url=%2FSite%2FUserAdministration': 'Title.MyAccount',\n '?url=%2FSite%2FMfa%2FTwoFactorAuthentication': 'Title.MyAccount',\n\n '?url=%2Fspa%2Fostordersearchcep%2F%23%2Forders': 'Title.Orders',\n\n '?url=%2Fspa%2Fdommsoftware%2F%23%2Fsearch-result': 'Title.Renewals',\n\n '?url=%2Fspa%2Fpcbidpricingcep%2F%23%2Fcisco%2Fdealdetails':\n 'Title.DealDetails',\n '?url=%2Fspa%2Fpcquoteoptionscep%2F%23%2Fdell%2Frequestquote':\n 'RequestQuote.RequestQuote',\n '?url=%2Fspa%2Fpcbidpricingcep%2Findex.html': 'Title.DealDetails',\n '?url=%2Fspa%2Fdomqdetailscep%2F%23%2Fquotedetails':\n 'QuoteDetails.QuoteDetails',\n\n '?url=%2FSite%2FReturns': 'Title.ReturnsAndClaims',\n '?url=%2FSite%2FReturns%2FClaims': 'Title.ReturnsAndClaims',\n '?url=%2FSite%2FReturns%2FStartReturn': 'Title.ReturnsAndClaims',\n '?url=%2FSite%2FReturns%2FReturnClaims': 'Title.ReturnsAndClaims',\n '?url=%2FSite%2FLogin%2FIdpWidget%3FReturnUrl%3D%252FSite%252FReturns':\n 'Title.ReturnsAndClaims',\n};\n\nconst DEFAULT_PAGE_TITLE = 'Xvantage';\n\ntype FrameTitleProps = {\n url: string;\n};\n\nexport function FramedPageTitle(props: FrameTitleProps) {\n const { url } = props;\n const translate = useTranslate();\n const { updatePageTitle } = usePageTitle();\n\n const pageTitle = frameTitleMap[url]\n ? translate(frameTitleMap[url])\n : DEFAULT_PAGE_TITLE;\n\n useEffect(() => {\n if (frameTitleMap[url]) {\n updatePageTitle(pageTitle);\n }\n }, [pageTitle, updatePageTitle, url]);\n\n return null;\n}\n","/* istanbul ignore file */\nimport { useDecodedToken, useRefreshAccessToken } from 'mf_core/auth';\nimport React, { useEffect, useState } from 'react';\nimport { useMyBusinessMenu } from '../hooks/use-mybusinessmenu';\nimport { useProductMenuQuery } from '../hooks/use-product';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { useVendorsMenuQuery } from '../hooks/use-vendorsmenu';\nimport { useSolutionsMenuQuery } from '../hooks/use-solutionsmenu';\nimport { useServicesMenuQuery } from '../hooks/use-servicesmenu';\nimport { useFeatureFlagBase } from '../hooks/use-feature-flag-base';\n\nexport function InvalidAccessToken() {\n const decodedToken = useDecodedToken();\n const refreshAccessToken = useRefreshAccessToken();\n const [count, setCount] = useState(0);\n const [badToken, setBadToken] = useState(false);\n const { locale } = useLocalizationContext();\n const { refetch: refetchBaseBackofficeKeys } = useFeatureFlagBase();\n const { refetch: refetchMyBusinessMenuItems } = useMyBusinessMenu();\n const { refetch: refetchProductsMenuItems } = useProductMenuQuery(\n locale,\n true\n );\n const { refetch: refetchVendorsMenuItems } = useVendorsMenuQuery(\n locale,\n true\n );\n const { refetch: refetchSolutionsMenuItems } = useSolutionsMenuQuery(\n locale,\n true\n );\n\n const { refetch: refetchServicesMenuItems } = useServicesMenuQuery(\n locale,\n true\n );\n\n useEffect(() => {\n if (decodedToken) {\n if (!decodedToken.imoProfile) {\n setBadToken(true);\n if (count === 5) {\n throw new Error('[Okta inline hook error] Access token is invalid!');\n }\n setTimeout(async () => {\n await refreshAccessToken();\n setCount(count + 1);\n }, 5000);\n } else {\n setCount(0);\n if (badToken) {\n setBadToken(false);\n refetchBaseBackofficeKeys();\n refetchMyBusinessMenuItems();\n refetchProductsMenuItems();\n refetchVendorsMenuItems();\n refetchSolutionsMenuItems();\n refetchServicesMenuItems();\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [decodedToken]);\n\n return <></>;\n}\n","import { useLocalization } from '@im/react-localization';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport { useIsAuthenticated } from 'mf_core/auth';\nimport { useFeatureFlagBase } from '../hooks/use-feature-flag-base';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst LOCAL_STORAGE_KEY = 'isPerformanceAlertDismissed';\n\nexport function PerformanceErrorAlert() {\n const { translate } = useLocalization();\n const { pathname } = useLocation();\n const isAuthenticated = useIsAuthenticated();\n const [isDismissed, setIsDismissed] = useState(\n localStorage.getItem(LOCAL_STORAGE_KEY) === 'true'\n );\n\n const dismissAlert = () => {\n localStorage.setItem(LOCAL_STORAGE_KEY, 'true');\n setIsDismissed(true);\n };\n\n useEffect(() => {\n if (!isAuthenticated) {\n localStorage.removeItem(LOCAL_STORAGE_KEY);\n }\n }, [isAuthenticated]);\n\n const hideOnRoutes = [\n '/my/checkout',\n '/my/quotemgmt/quotelist',\n '/frame',\n '/my/invoice/invoicessearch',\n ];\n\n const boKeys = {\n EnablePerformanceBanner: 'X4C_Enable_Performance_Banner',\n EndTime: 'X4C_Performance_Banner_End_Time',\n StartTime: 'X4C_Performance_Banner_Start_Time',\n };\n\n const { boValues: boValue, isReady } = useFeatureFlagBase();\n\n let showAlert =\n !isDismissed &&\n isAuthenticated &&\n hideOnRoutes.find((route) => pathname.startsWith(route)) === undefined &&\n isReady &&\n boValue[boKeys.EnablePerformanceBanner] === 'true';\n\n if (showAlert && boValue[boKeys.StartTime] && boValue[boKeys.EndTime]) {\n try {\n const currentUtcDateTime = new Date().toISOString();\n const currentDate = currentUtcDateTime.substring(0, 10);\n const currentTime = new Date(\n `${currentDate} ${currentUtcDateTime.substring(11, 19)}`\n );\n const startTime = new Date(`${currentDate} ${boValue[boKeys.StartTime]}`);\n const endTime = new Date(`${currentDate} ${boValue[boKeys.EndTime]}`);\n if (startTime > currentTime || endTime < currentTime) showAlert = false;\n } catch {\n console.error('Performance Alert: Error calculating start/end time');\n }\n }\n\n useEffect(() => {\n if (showAlert)\n setTimeout(() => {\n document\n .querySelector('#main-view')\n ?.scrollTo({ behavior: 'smooth', top: 0 });\n }, 200);\n }, [pathname, showAlert]);\n\n return (\n <>\n {showAlert && (\n <StyledAlert\n action={\n <StyledButton onClick={dismissAlert} variant=\"text\">\n {translate('Common.Dismiss')}\n </StyledButton>\n }\n icon={false}\n severity=\"warning\"\n >\n {translate('Common.PerformanceError')}\n </StyledAlert>\n )}\n </>\n );\n}\n\nconst StyledAlert = styled(Alert)(({ theme }) => ({\n '& .MuiAlert-action': {\n alignItems: 'center',\n padding: 0,\n },\n '& .MuiAlert-message': {\n color: `${theme.palette.warning[900]} !important`,\n fontSize: '18px',\n fontWeight: 400,\n lineHeight: '26px',\n },\n background: `${theme.palette.warning[100]} !important`,\n margin: '16px 32px 0 32px',\n position: 'relative',\n zIndex: 100,\n}));\n\nconst StyledButton = styled(Button)(({ theme }) => ({\n '&:focus': {\n outline: 'none',\n },\n '&:hover': {\n background: 'unset',\n },\n color: `${theme.palette.warning[900]}`,\n fontSize: '18px',\n fontWeight: 400,\n lineHeight: '26px',\n marginLeft: '100px',\n textTransform: 'none',\n}));\n","export function injectScriptInHead(\n url: string,\n onLoad?: (this: GlobalEventHandlers, ev: Event) => any\n) {\n try {\n const scriptEl = document.createElement('script');\n scriptEl.src = url;\n scriptEl.type = 'text/javascript';\n scriptEl.async = true;\n if (onLoad) scriptEl.onload = onLoad;\n document.head.appendChild(scriptEl);\n } catch (e) {\n console.error('Error injecting script:', e);\n }\n}\n\nexport function getLanguageFromLocale(locale: string) {\n return locale.split('-')[0];\n}\n\n/** OneTrust Helper Util - Injects script in head tag\n * @param `url` optionally sets the script src value.\n * @param `innerHtml` optionally sets the innerHTML content of the script.\n * @param `datadomainscript` optionally sets the attribute `data-domain-script` with this value.\n */\nexport function injectScriptInHeadWith(\n url?: string,\n innerHtml?: string,\n datadomainscript?: string\n) {\n try {\n const scriptEl = document.createElement('script');\n if (url) {\n scriptEl.src = url;\n }\n if (innerHtml) {\n scriptEl.innerHTML = innerHtml;\n }\n if (datadomainscript) {\n scriptEl.setAttribute('data-domain-script', datadomainscript);\n scriptEl.setAttribute('data-document-language', 'true');\n }\n scriptEl.type = 'text/javascript';\n document.head.appendChild(scriptEl);\n } catch (e) {\n console.error(e);\n }\n}\n\n/** OneTrust Helper Util - Loads text/javascript type script with cookie category class to be auto blocked by OneTrust */\nexport function injectCategorizedScriptInHead(url: string, category = '') {\n try {\n const scriptEl = document.createElement('script');\n scriptEl.src = url;\n scriptEl.type = 'text/javascript';\n scriptEl.className = category;\n scriptEl.async = true;\n document.head.appendChild(scriptEl);\n } catch (e) {\n console.error(e);\n }\n}\n\nexport function injectScriptInBody(script_text: string, scriptid?: string) {\n try {\n const isElementAlreadyInDocument = document.getElementById(scriptid || '');\n if (!isElementAlreadyInDocument) {\n const scriptEl = document.createElement('script');\n const scripttext = document.createTextNode(script_text);\n scriptEl.appendChild(scripttext);\n scriptEl.type = 'text/javascript';\n scriptEl.async = true;\n scriptEl.id = scriptid ? scriptid : '';\n document.body.appendChild(scriptEl);\n }\n } catch (e) {\n console.error(e);\n }\n}\n\nexport function checkListForPath(list: string[], pathname: string) {\n if (!list) return false;\n return list.some((path) => {\n const lastChar = path[path.length - 1];\n if (lastChar && lastChar === '*') {\n const subPath = path.slice(0, -1);\n return pathname.includes(subPath);\n }\n return pathname === path;\n });\n}\n","/* eslint-disable sort-keys */\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { useBuildVars, useInX4AFrame, useSiteConfig } from 'mf_core/config';\nimport { injectScriptInHeadWith } from './utils';\n\nexport function useOneTrust() {\n const { buildEnvironment } = useBuildVars();\n const { siteCode } = useSiteConfig();\n const { locale } = useLocalizationContext();\n const { isInIM360Frame, isInX4AFrame } = useInX4AFrame();\n const isScriptInjected = useRef(false);\n const win = window as any;\n\n //Updates Script in Head and needs to be synchronous\n useLayoutEffect(() => {\n //When Opening X4C/X4A inside an iFrame in CRM/IM360 OneTrust SDK is unable to read the cookies stored in\n //the localstorage since CRM domain and X4C domain are different and browser is not allowing access.\n //Added This Effect to prevent injecting OneTrust Scripts in CRM/IM360 iFrame screen againt BUG ADT-15210\n if (!isScriptInjected.current && !isInIM360Frame && !isInX4AFrame) {\n let scriptId = '';\n if (buildEnvironment && siteCode) {\n const envMap = scriptsMap[buildEnvironment];\n if (envMap) {\n scriptId = envMap[siteCode];\n }\n }\n if (!isScriptInjected.current && scriptId) {\n loadOneClickCSS();\n injectScriptInHeadWith(\n `https://cdn.cookielaw.org/consent/${scriptId}/OtAutoBlock.js`\n );\n injectScriptInHeadWith(\n 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js',\n undefined,\n scriptId\n );\n injectScriptInHeadWith(\n undefined,\n `function OptanonWrapper() { window.dispatchEvent(new Event('bannerLoaded')); }`\n );\n isScriptInjected.current = true;\n if (window as any) (window as any).isOneTrustEnabled = true;\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [buildEnvironment, siteCode]);\n\n useEffect(() => {\n if (isScriptInjected.current && win?.OneTrust?.changeLanguage) {\n win.OneTrust?.changeLanguage(locale.slice(0, 2));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [locale]);\n}\n\n/** Return `loading` at first and then sends script id string or `empty` string once ready*/\nexport function useIsOneTrustEnabled() {\n const { buildEnvironment } = useBuildVars();\n const { siteCode } = useSiteConfig();\n const [hasId, setHasId] = useState<string | undefined>('loading');\n\n useEffect(() => {\n let scriptId = '';\n if (buildEnvironment && siteCode) {\n const envMap = scriptsMap[buildEnvironment];\n if (envMap) {\n scriptId = envMap[siteCode];\n }\n }\n if (scriptId) {\n setHasId(scriptId);\n } else {\n setHasId('');\n }\n }, [buildEnvironment, siteCode]);\n\n return hasId;\n}\n\nconst scriptsMap: any = {\n development: {\n de: '697b043e-f485-43da-a6a6-2734a4ec8b88-test',\n us: '79356f9e-23dd-4222-b2de-b0c37f4d5a5b-test',\n },\n production: {\n at: '44dd8255-aa4b-4557-b80b-2a24ea659e53',\n au: 'bf88a6d4-2148-404e-8c96-e5dd58f4805d',\n be: '0b0037df-0851-4896-aa89-9d19ed8890dd',\n br: '0565517d-8776-4bde-bb6e-d575cebdb4d2',\n ca: '44ec1e95-68da-44a7-863e-82f4106d645e',\n ch: 'fd420875-1423-4cee-b31c-029a1e120ca5',\n cl: '4729ebea-73db-4cfe-b7e3-088a5c758694',\n co: 'd7f6df39-f565-4244-8afa-55852a43265d',\n de: 'fa481d81-76c4-45d3-9136-c5482c0363ae',\n es: 'aca353d8-ce1d-42b9-a0d8-013115fab766',\n fr: 'e355c5ab-f65e-43ae-b5c9-63ef3090fa1e',\n gb: '6b727968-81a4-44e2-bcf4-c223368323ae',\n hk: '5ba4d092-59de-4ff9-bd08-9a4b85ad9925',\n id: '88d87685-64de-4492-93d7-d4c0e5a41ec5',\n in: '0537784a-5bde-4b36-a534-68183186040c',\n it: '057e1217-f062-4d5c-a4c7-13a14dabaaac',\n mx: 'b4449d97-8e60-4e5d-8955-4cceec4ad8df',\n my: '82984dfd-1131-4286-9d56-b1ff935c20e7',\n nl: '946f4467-f8b2-497d-aeba-55bf5e5484be',\n nz: '4bc45039-3f8f-48e5-8e27-b67f08a7456e',\n pe: '550a2f66-7655-4c11-b251-338050840121',\n sg: 'b412ece9-d419-4990-a25c-e052c6fe5c70',\n us: '99ef7803-f71a-4a5a-ab1e-21f585d4b3de',\n usme: '164deb5f-2b4a-4d8e-83f6-609e2ed95978',\n },\n productionbeta: {\n at: 'a0b222df-4519-4a6d-8719-bb2f8822e74b',\n au: '15eac479-bc68-4963-8ac6-ee98bb301024',\n be: 'bba8f146-e67f-4903-8b80-717590ab150b',\n br: '4a93a70b-697f-4f0a-8610-cf65263820a4',\n ca: 'f7e521f6-1665-4f7d-9447-7bc6bf7c16af',\n ch: '300e9251-18a8-4b83-9ba5-7b84ca09b879',\n cl: '9a22cd8b-f862-4f8b-b7d1-24cfa6e6f6f1',\n cn: '0f1d96db-5406-4f27-9f4d-9069f62fe734',\n co: '5fabb3de-ea9b-4052-b476-3b4665473525',\n de: '05e95e92-9c0a-4ae3-b52d-aef50bc0b84b',\n dk: 'bb774640-b08b-4c41-a796-a30b0bcc0cb4',\n es: 'd1ccb41c-3ac8-4746-bdac-0f0b090b0b51',\n fi: '650d3abf-8138-45de-86bf-6efb2a8e9a45',\n fr: '1e116878-c4fb-4cbf-b992-777419629dc8',\n gb: 'ea831300-7839-414d-82df-8f96a0e2db91',\n hk: 'd504548e-4204-4c39-8e31-289a3590dfc0',\n hu: '2d1cb494-1ecf-4a46-a0ac-f9130fc0a1d8',\n id: '084e9439-8500-43e1-aa93-a8ecfa9f5e34',\n in: 'cc6cd377-80f0-4877-859c-924c2f5c5011',\n it: 'b2556e1c-ff2d-4fbb-bcea-887fdca1c4b6',\n mx: 'b0144b6a-7506-4cb7-8b7f-f6b3551b06a7',\n my: 'a235d6d9-b775-4e3f-94a1-f21877b1359c',\n nl: '3ae234b2-a8bc-4b40-88b6-308c7762b6e3',\n nz: 'a1c46dd5-17c7-4c18-8657-6e065eba6f31',\n pe: 'f364691f-43a1-4d3a-8cce-9b02e76b48e6',\n pt: '5f349b16-a1a4-430a-be83-54d90897448f',\n se: '10793762-afe5-4b3b-8455-7ed5cae4c349',\n sg: '85cd5b2c-f678-41ce-8ca0-8f000c19bc00',\n th: '33bed5fb-a581-4706-96c1-b58d93648747',\n us: 'a13a040c-af96-4a32-a274-68a0216bbfdf',\n usme: '4506acef-75b5-47d3-9e73-8f2f6182a70a',\n },\n productionbetax: {\n at: 'a78265a4-663b-4fab-ba8f-cd41c1684eb1',\n au: 'badc1fa5-f48c-4d3b-98c4-5e82a60b58ee',\n be: '26e6bc4a-2a72-4f9e-926d-0aa227845b06',\n br: '9127f432-ae12-4f5e-801e-b112cdd57902',\n ca: 'a549e1ab-0ccf-4cd1-912b-440ecbc5e526',\n ch: '56484009-0918-4c6f-b468-d6a64bc90068',\n cl: '65807e11-d93b-4894-aed7-05d7f96c9022',\n cn: '8b6d47bc-d433-4312-8c1e-9b37f1ab4e6f',\n co: '95184fb7-2e26-4c25-a5d2-dc2a401e5098',\n de: '12f119ce-6a0e-4f93-95a1-6c11020fa7c2',\n dk: '82d09da8-5e06-41a4-9b14-09ea96e89b2e',\n es: 'f5897400-db93-478e-99d1-76ddd6186a71',\n fi: 'cf42f52d-8824-483e-ad73-d77a04222893',\n fr: '8bbd3040-f8ea-4646-8791-d12a00e9b2d3',\n gb: 'e675edc0-1f77-48ef-87f7-f77d09713c34',\n hk: '6b6dcb44-aae4-4cc7-9fdc-8331f160313b',\n hu: '5257492b-01be-46e6-9910-18e8b62c57e8',\n id: '78832b87-c9e7-4525-a08c-0f44fa5ac3df',\n in: 'fe177e0e-c058-41fc-89e4-abc77d4cf4eb',\n it: 'da82b083-11fd-44f6-a2e8-029a12eb2f11',\n mx: '84b53949-1003-4d42-a019-62e8b7a20e07',\n my: '36d9c188-b94b-45bc-99f4-9594abb480cb',\n nl: 'aca58b6d-4af4-4773-8ac1-2c69e9a57d18',\n nz: '3572b260-ab31-4330-af92-f461660c6855',\n pe: '9e47e965-2f35-49f8-b3c6-620b17498d31',\n pt: 'fbb5a01a-2bc1-4941-a019-2d188ccd3063',\n se: '529a171e-f19b-4529-becc-b4dbdf3d246d',\n sg: 'ea9c8552-42e0-4a47-96ae-6e920e58bda0',\n th: 'f696c8c0-f434-4434-8a53-9da1d0898809',\n us: '82bc1bf6-cadb-4710-aa0f-1ab7a86527ae',\n usme: '63e9ac78-9fcc-4fc9-b0e0-3d6db513ff68',\n },\n staging: {\n sg: '0190e350-3e9e-76ef-9473-2f647ba9adac',\n hk: '0190e352-9455-7378-ad82-f58e6f44c1b6',\n id: '0190e35e-96d4-7ca2-b254-e56f662ac84c',\n nz: '0190e366-fbec-776f-8cb2-08a4fc55e311',\n br: '0190e36a-7658-7ffa-89b5-8fd8d2a5958e',\n mi: '0190e376-b8d2-79ce-86ad-b5c0d5d25bdf',\n pe: '0190e378-9c5c-7d78-8ae7-38240c480bbb',\n cl: '0190e37a-760c-79d5-aa1a-269932e73b42',\n co: '0190e37d-1ff3-7172-8592-7b79c4ff929b',\n at: '63148719-cda6-491f-9737-d7a53edc5d42',\n nl: '1a5c451e-b7a2-4439-84cd-acaf579c9149',\n be: '8c070da0-9422-440c-94b3-6bb589844324',\n ch: '0190e39c-705a-7fb8-a00f-69ae5ba3ccac',\n au: 'f31ce79d-fdd9-491f-bdf5-2539c34a1fc5',\n ca: 'f0fa73fd-2424-40b3-8b9d-b6d0795a71ea',\n cn: '68c9a61c-5582-495f-b447-9518c6a0c5bf',\n de: '697b043e-f485-43da-a6a6-2734a4ec8b88',\n dk: '1dc736f6-747e-489a-b63d-99c3d579ae0d',\n es: 'da79cfbb-7673-4761-b5eb-c9fcb6a8f1fd',\n fi: '58c78875-00a1-468d-b690-2d7feea0df81',\n fr: '826d79e4-068f-4dbf-a5d0-25a2ca7a8316',\n gb: '009a5a44-7658-4e58-b93c-3920cfe31961',\n hu: '3cdd9702-b7c9-4078-8564-a975dab79ac3',\n in: '337ba5fc-3a4c-4d14-94b5-23235ce52259',\n it: '959211c2-d26d-4248-9be6-3653b636c5d9',\n mx: '62854f5a-0804-4a50-9b06-e57c424d5d04',\n my: '5fe7808e-9d34-4b79-a522-cf404f882753',\n pt: '0258463a-9827-4ae3-b982-d5c5108c1fbd',\n se: 'ccd5f5d6-dd0a-47da-98f0-06a2800f5199',\n th: '8d30ab41-5f11-426e-9382-d5bd1a5729af',\n us: '79356f9e-23dd-4222-b2de-b0c37f4d5a5b',\n usme: '0190e376-b8d2-79ce-86ad-b5c0d5d25bdf',\n },\n stagingx: {\n sg: '0190e350-3e9e-76ef-9473-2f647ba9adac',\n hk: '0190e352-9455-7378-ad82-f58e6f44c1b6',\n id: '0190e35e-96d4-7ca2-b254-e56f662ac84c',\n nz: '0190e366-fbec-776f-8cb2-08a4fc55e311',\n br: '0190e36a-7658-7ffa-89b5-8fd8d2a5958e',\n mi: '0190e376-b8d2-79ce-86ad-b5c0d5d25bdf',\n pe: '0190e378-9c5c-7d78-8ae7-38240c480bbb',\n cl: '0190e37a-760c-79d5-aa1a-269932e73b42',\n co: '0190e37d-1ff3-7172-8592-7b79c4ff929b',\n at: '63148719-cda6-491f-9737-d7a53edc5d42',\n nl: '1a5c451e-b7a2-4439-84cd-acaf579c9149',\n be: '8c070da0-9422-440c-94b3-6bb589844324',\n ch: '0190e39c-705a-7fb8-a00f-69ae5ba3ccac',\n au: 'f31ce79d-fdd9-491f-bdf5-2539c34a1fc5',\n ca: 'f0fa73fd-2424-40b3-8b9d-b6d0795a71ea',\n cn: '68c9a61c-5582-495f-b447-9518c6a0c5bf',\n de: '697b043e-f485-43da-a6a6-2734a4ec8b88',\n dk: '1dc736f6-747e-489a-b63d-99c3d579ae0d',\n es: 'da79cfbb-7673-4761-b5eb-c9fcb6a8f1fd',\n fi: '58c78875-00a1-468d-b690-2d7feea0df81',\n fr: '826d79e4-068f-4dbf-a5d0-25a2ca7a8316',\n gb: '009a5a44-7658-4e58-b93c-3920cfe31961',\n hu: '3cdd9702-b7c9-4078-8564-a975dab79ac3',\n in: '337ba5fc-3a4c-4d14-94b5-23235ce52259',\n it: '959211c2-d26d-4248-9be6-3653b636c5d9',\n mx: '62854f5a-0804-4a50-9b06-e57c424d5d04',\n my: '5fe7808e-9d34-4b79-a522-cf404f882753',\n pt: '0258463a-9827-4ae3-b982-d5c5108c1fbd',\n se: 'ccd5f5d6-dd0a-47da-98f0-06a2800f5199',\n th: '8d30ab41-5f11-426e-9382-d5bd1a5729af',\n us: '79356f9e-23dd-4222-b2de-b0c37f4d5a5b',\n usme: '0190e376-b8d2-79ce-86ad-b5c0d5d25bdf',\n },\n};\n\n/** loads onetrust css */\nexport function loadOneClickCSS() {\n return new Promise<boolean>(function (resolve, reject) {\n try {\n const styleEl = document.createElement('style');\n styleEl.innerHTML =\n '#onetrust-consent-sdk *:focus,#onetrust-consent-sdk *:active,#onetrust-pc-sdk .ot-tgl input:focus+.ot-switch .ot-switch-nob {outline: none !important;}';\n\n styleEl.onload = () => resolve(true);\n styleEl.onerror = () => resolve(false);\n document.head.appendChild(styleEl);\n } catch (e) {\n resolve(false);\n }\n });\n}\n","/* eslint-disable sort-keys */\nimport { useEffect, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useBuildVars, useInX4AFrame, useSiteConfig } from 'mf_core/config';\nimport { useIsAuthenticated, useDecodedToken } from 'mf_core/auth';\nimport { injectCategorizedScriptInHead, injectScriptInHead } from './utils';\nimport { setDigitalData } from 'mf_core/adobe';\nimport { useIsOneTrustEnabled } from './useOneTrust';\n\nconst scriptsMap: any = {\n development: {\n au: 'https://assets.adobedtm.com/a8f91053d00e/7dee3b1c3a2e/launch-57cb68d55aa5-development.min.js',\n hu: 'https://assets.adobedtm.com/a8f91053d00e/fcdbd931f888/launch-e6b48686272c-development.min.js',\n no: 'https://assets.adobedtm.com/a8f91053d00e/8a89b29c8be2/launch-faa9e163c865-development.min.js',\n pt: 'https://assets.adobedtm.com/a8f91053d00e/4dbad6f05dd3/launch-1b8354a0a2b1-development.min.js',\n se: 'https://assets.adobedtm.com/a8f91053d00e/20a4caef2031/launch-4bb9deb3ab5a-development.min.js',\n ch: 'https://assets.adobedtm.com/a8f91053d00e/85f63646e5c0/launch-ec090a5f6fae-development.min.js',\n pe: 'https://assets.adobedtm.com/a8f91053d00e/6f82277d6ca9/launch-df92986366a4-development.min.js',\n cl: 'https://assets.adobedtm.com/a8f91053d00e/f2d3be813f06/launch-0d00f4fa20c2-development.min.js',\n br: 'https://assets.adobedtm.com/a8f91053d00e/632dfaefbac3/launch-e022eee9741a-development.min.js',\n nz: 'https://assets.adobedtm.com/a8f91053d00e/fcb6adc7fc1e/launch-fb39cdd6fc0a-development.min.js',\n hk: 'https://assets.adobedtm.com/a8f91053d00e/ffca6e56a5e2/launch-1a40686158a8-development.min.js',\n id: 'https://assets.adobedtm.com/a8f91053d00e/a1f93e96c7a6/launch-6c8910d34bb3-development.min.js',\n sg: 'https://assets.adobedtm.com/a8f91053d00e/7e87379c86eb/launch-972c1fce5d0c-development.min.js',\n mi: 'https://assets.adobedtm.com/a8f91053d00e/3c6362756e02/launch-d82f52176b88-development.min.js',\n },\n\n production: {\n ch: 'https://assets.adobedtm.com/a8f91053d00e/85f63646e5c0/launch-30f9632e57e0.min.js',\n at: 'https://assets.adobedtm.com/a8f91053d00e/06a6cb51c3d4/launch-0219d972a72c.min.js',\n au: 'https://assets.adobedtm.com/a8f91053d00e/7dee3b1c3a2e/launch-ef5fbd3b12de.min.js',\n be: 'https://assets.adobedtm.com/a8f91053d00e/285753d4b8f2/launch-cdc63027d33f.min.js',\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-897c6aa7c43b.min.js',\n co: 'https://assets.adobedtm.com/a8f91053d00e/8344def90c44/launch-70af85e98de9.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-69e6d4db4b67.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-0e26513cdfe2.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-a1c65e61b822.min.js',\n gb: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-b3b2cf368281.min.js',\n hu: 'https://assets.adobedtm.com/a8f91053d00e/fcdbd931f888/launch-c34e0a20479b.min.js',\n in: 'https://assets.adobedtm.com/a8f91053d00e/efa4493a351d/launch-25dd3caf5fef.min.js',\n it: 'https://assets.adobedtm.com/a8f91053d00e/746db32a8133/launch-938443167cde.min.js',\n mi: 'https://assets.adobedtm.com/a8f91053d00e/3c6362756e02/launch-70908e6bc0b0.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2c9f828b62c9.min.js',\n nl: 'https://assets.adobedtm.com/a8f91053d00e/d92081ab8a7c/launch-a0600400854c.min.js',\n no: 'https://assets.adobedtm.com/a8f91053d00e/8a89b29c8be2/launch-1f82bc770ac2.min.js',\n nz: 'https://assets.adobedtm.com/a8f91053d00e/fcb6adc7fc1e/launch-baed6ad97089.min.js',\n pt: 'https://assets.adobedtm.com/a8f91053d00e/4dbad6f05dd3/launch-26468851ca97.min.js',\n se: 'https://assets.adobedtm.com/a8f91053d00e/20a4caef2031/launch-c554d38f9660.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-b0e54efb61f7.min.js',\n id: 'https://assets.adobedtm.com/a8f91053d00e/a1f93e96c7a6/launch-328bf85d754f.min.js',\n sg: 'https://assets.adobedtm.com/a8f91053d00e/7e87379c86eb/launch-0cb14f9319aa.min.js',\n },\n productionbeta: {\n ch: 'https://assets.adobedtm.com/a8f91053d00e/85f63646e5c0/launch-30f9632e57e0.min.js',\n pe: 'https://assets.adobedtm.com/a8f91053d00e/6f82277d6ca9/launch-f1b4b30d2b84.min.js',\n cl: 'https://assets.adobedtm.com/a8f91053d00e/f2d3be813f06/launch-1d8a24986064.min.js',\n br: 'https://assets.adobedtm.com/a8f91053d00e/632dfaefbac3/launch-e13f863702cc.min.js',\n nz: 'https://assets.adobedtm.com/a8f91053d00e/fcb6adc7fc1e/launch-baed6ad97089.min.js',\n hk: 'https://assets.adobedtm.com/a8f91053d00e/ffca6e56a5e2/launch-6335b0c7b461.min.js',\n id: 'https://assets.adobedtm.com/a8f91053d00e/a1f93e96c7a6/launch-328bf85d754f.min.js',\n sg: 'https://assets.adobedtm.com/a8f91053d00e/7e87379c86eb/launch-0cb14f9319aa.min.js',\n at: 'https://assets.adobedtm.com/a8f91053d00e/06a6cb51c3d4/launch-0219d972a72c.min.js',\n au: 'https://assets.adobedtm.com/a8f91053d00e/7dee3b1c3a2e/launch-ef5fbd3b12de.min.js',\n be: 'https://assets.adobedtm.com/a8f91053d00e/285753d4b8f2/launch-cdc63027d33f.min.js',\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-897c6aa7c43b.min.js',\n co: 'https://assets.adobedtm.com/a8f91053d00e/8344def90c44/launch-70af85e98de9.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-69e6d4db4b67.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-0e26513cdfe2.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-a1c65e61b822.min.js',\n gb: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-b3b2cf368281.min.js',\n hu: 'https://assets.adobedtm.com/a8f91053d00e/fcdbd931f888/launch-c34e0a20479b.min.js',\n in: 'https://assets.adobedtm.com/a8f91053d00e/efa4493a351d/launch-25dd3caf5fef.min.js',\n it: 'https://assets.adobedtm.com/a8f91053d00e/746db32a8133/launch-938443167cde.min.js',\n mi: 'https://assets.adobedtm.com/a8f91053d00e/3c6362756e02/launch-70908e6bc0b0.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2c9f828b62c9.min.js',\n nl: 'https://assets.adobedtm.com/a8f91053d00e/d92081ab8a7c/launch-a0600400854c.min.js',\n no: 'https://assets.adobedtm.com/a8f91053d00e/8a89b29c8be2/launch-1f82bc770ac2.min.js',\n pt: 'https://assets.adobedtm.com/a8f91053d00e/4dbad6f05dd3/launch-26468851ca97.min.js',\n se: 'https://assets.adobedtm.com/a8f91053d00e/20a4caef2031/launch-c554d38f9660.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-b0e54efb61f7.min.js',\n },\n productionbetax: {\n at: 'https://assets.adobedtm.com/a8f91053d00e/06a6cb51c3d4/launch-0219d972a72c.min.js',\n au: 'https://assets.adobedtm.com/a8f91053d00e/7dee3b1c3a2e/launch-ef5fbd3b12de.min.js',\n be: 'https://assets.adobedtm.com/a8f91053d00e/285753d4b8f2/launch-cdc63027d33f.min.js',\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-897c6aa7c43b.min.js',\n co: 'https://assets.adobedtm.com/a8f91053d00e/8344def90c44/launch-70af85e98de9.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-69e6d4db4b67.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-0e26513cdfe2.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-a1c65e61b822.min.js',\n gb: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-b3b2cf368281.min.js',\n hu: 'https://assets.adobedtm.com/a8f91053d00e/fcdbd931f888/launch-c34e0a20479b.min.js',\n in: 'https://assets.adobedtm.com/a8f91053d00e/efa4493a351d/launch-25dd3caf5fef.min.js',\n it: 'https://assets.adobedtm.com/a8f91053d00e/746db32a8133/launch-938443167cde.min.js',\n mi: 'https://assets.adobedtm.com/a8f91053d00e/3c6362756e02/launch-70908e6bc0b0.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2c9f828b62c9.min.js',\n nl: 'https://assets.adobedtm.com/a8f91053d00e/d92081ab8a7c/launch-a0600400854c.min.js',\n no: 'https://assets.adobedtm.com/a8f91053d00e/8a89b29c8be2/launch-1f82bc770ac2.min.js',\n nz: 'https://assets.adobedtm.com/a8f91053d00e/fcb6adc7fc1e/launch-baed6ad97089.min.js',\n pt: 'https://assets.adobedtm.com/a8f91053d00e/4dbad6f05dd3/launch-26468851ca97.min.js',\n se: 'https://assets.adobedtm.com/a8f91053d00e/20a4caef2031/launch-c554d38f9660.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-b0e54efb61f7.min.js',\n id: 'https://assets.adobedtm.com/a8f91053d00e/a1f93e96c7a6/launch-328bf85d754f.min.js',\n sg: 'https://assets.adobedtm.com/a8f91053d00e/7e87379c86eb/launch-0cb14f9319aa.min.js',\n },\n staging: {\n ch: 'https://assets.adobedtm.com/a8f91053d00e/85f63646e5c0/launch-eed9d036a6b7-staging.min.js',\n pe: 'https://assets.adobedtm.com/a8f91053d00e/6f82277d6ca9/launch-036d60a59bcc-staging.min.js',\n cl: 'https://assets.adobedtm.com/a8f91053d00e/f2d3be813f06/launch-fbd57df79f1f-staging.min.js',\n br: 'https://assets.adobedtm.com/a8f91053d00e/632dfaefbac3/launch-7034435b45d3-staging.min.js',\n nz: 'https://assets.adobedtm.com/a8f91053d00e/fcb6adc7fc1e/launch-c0742238f6b0-staging.min.js',\n hk: 'https://assets.adobedtm.com/a8f91053d00e/ffca6e56a5e2/launch-e10f25252717-staging.min.js',\n id: 'https://assets.adobedtm.com/a8f91053d00e/a1f93e96c7a6/launch-5268930e33fd-staging.min.js',\n sg: 'https://assets.adobedtm.com/a8f91053d00e/7e87379c86eb/launch-bd74afe49d07-staging.min.js',\n at: 'https://assets.adobedtm.com/a8f91053d00e/06a6cb51c3d4/launch-e02a0574edbd-staging.min.js',\n au: 'https://assets.adobedtm.com/a8f91053d00e/7dee3b1c3a2e/launch-0b1541386cdc-staging.min.js',\n be: 'https://assets.adobedtm.com/a8f91053d00e/285753d4b8f2/launch-55ce3f721d2c-staging.min.js',\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-025552be0893-staging.min.js',\n co: 'https://assets.adobedtm.com/a8f91053d00e/8344def90c44/launch-1a4e88f064db-staging.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-cfaf45f56c15-staging.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-6a5f443a9ff6-staging.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-44eccbbc6751-staging.min.js',\n gb: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-34ab3000fc47-staging.min.js',\n hu: 'https://assets.adobedtm.com/a8f91053d00e/fcdbd931f888/launch-6d69215657c5-staging.min.js',\n in: 'https://assets.adobedtm.com/a8f91053d00e/efa4493a351d/launch-ae9304c9a51e-staging.min.js',\n it: 'https://assets.adobedtm.com/a8f91053d00e/746db32a8133/launch-a9117f7aadca-staging.min.js',\n mi: 'https://assets.adobedtm.com/a8f91053d00e/3c6362756e02/launch-5a61f2cf9342-staging.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2320722bddfb-staging.min.js',\n nl: 'https://assets.adobedtm.com/a8f91053d00e/d92081ab8a7c/launch-76fcba9023bb-staging.min.js',\n no: 'https://assets.adobedtm.com/a8f91053d00e/8a89b29c8be2/launch-39844f683b39-staging.min.js',\n pt: 'https://assets.adobedtm.com/a8f91053d00e/4dbad6f05dd3/launch-973c3e41d23a-staging.min.js',\n se: 'https://assets.adobedtm.com/a8f91053d00e/20a4caef2031/launch-e1b61513841a-staging.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-8fea7e8865ba-staging.min.js',\n },\n staging2: {\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-8fea7e8865ba-staging.min.js',\n },\n stagingx: {\n ch: 'https://assets.adobedtm.com/a8f91053d00e/85f63646e5c0/launch-eed9d036a6b7-staging.min.js',\n pe: 'https://assets.adobedtm.com/a8f91053d00e/6f82277d6ca9/launch-036d60a59bcc-staging.min.js',\n cl: 'https://assets.adobedtm.com/a8f91053d00e/f2d3be813f06/launch-fbd57df79f1f-staging.min.js',\n br: 'https://assets.adobedtm.com/a8f91053d00e/632dfaefbac3/launch-7034435b45d3-staging.min.js',\n nz: 'https://assets.adobedtm.com/a8f91053d00e/fcb6adc7fc1e/launch-c0742238f6b0-staging.min.js',\n hk: 'https://assets.adobedtm.com/a8f91053d00e/ffca6e56a5e2/launch-e10f25252717-staging.min.js',\n id: 'https://assets.adobedtm.com/a8f91053d00e/a1f93e96c7a6/launch-5268930e33fd-staging.min.js',\n sg: 'https://assets.adobedtm.com/a8f91053d00e/7e87379c86eb/launch-bd74afe49d07-staging.min.js',\n at: 'https://assets.adobedtm.com/a8f91053d00e/06a6cb51c3d4/launch-e02a0574edbd-staging.min.js',\n au: 'https://assets.adobedtm.com/a8f91053d00e/7dee3b1c3a2e/launch-0b1541386cdc-staging.min.js',\n be: 'https://assets.adobedtm.com/a8f91053d00e/285753d4b8f2/launch-55ce3f721d2c-staging.min.js',\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-025552be0893-staging.min.js',\n co: 'https://assets.adobedtm.com/a8f91053d00e/8344def90c44/launch-1a4e88f064db-staging.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-cfaf45f56c15-staging.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-6a5f443a9ff6-staging.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-44eccbbc6751-staging.min.js',\n gb: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-34ab3000fc47-staging.min.js',\n hu: 'https://assets.adobedtm.com/a8f91053d00e/fcdbd931f888/launch-6d69215657c5-staging.min.js',\n in: 'https://assets.adobedtm.com/a8f91053d00e/efa4493a351d/launch-ae9304c9a51e-staging.min.js',\n it: 'https://assets.adobedtm.com/a8f91053d00e/746db32a8133/launch-a9117f7aadca-staging.min.js',\n mi: 'https://assets.adobedtm.com/a8f91053d00e/3c6362756e02/launch-5a61f2cf9342-staging.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2320722bddfb-staging.min.js',\n nl: 'https://assets.adobedtm.com/a8f91053d00e/d92081ab8a7c/launch-76fcba9023bb-staging.min.js',\n no: 'https://assets.adobedtm.com/a8f91053d00e/8a89b29c8be2/launch-39844f683b39-staging.min.js',\n pt: 'https://assets.adobedtm.com/a8f91053d00e/4dbad6f05dd3/launch-973c3e41d23a-staging.min.js',\n se: 'https://assets.adobedtm.com/a8f91053d00e/20a4caef2031/launch-e1b61513841a-staging.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-8fea7e8865ba-staging.min.js',\n },\n};\n\nconst x4aFrameScriptsMap: any = {\n development:\n 'https://assets.adobedtm.com/a8f91053d00e/a8292f299318/launch-1bae6d7705ff-development.min.js',\n production:\n 'https://assets.adobedtm.com/a8f91053d00e/a8292f299318/launch-5afb62f26f1d.min.js',\n productionbeta:\n 'https://assets.adobedtm.com/a8f91053d00e/a8292f299318/launch-5afb62f26f1d.min.js',\n staging:\n 'https://assets.adobedtm.com/a8f91053d00e/a8292f299318/launch-4c69cd1fe550-staging.min.js',\n staging2:\n 'https://assets.adobedtm.com/a8f91053d00e/a8292f299318/launch-4c69cd1fe550-staging.min.js',\n stagingx:\n 'https://assets.adobedtm.com/a8f91053d00e/a8292f299318/launch-4c69cd1fe550-staging.min.js',\n};\n\nexport const ujetFrameScriptsMap: any = {\n development: {\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-4da0af444102-development.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-b42d717b996c-development.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-536e8b1f7afe-development.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-0e0dfd719497-development.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-d6eae0223c07-development.min.js',\n uk: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-fbb6435b71be-development.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-4eebef447fdb-development.min.js',\n },\n production: {\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-897c6aa7c43b.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-69e6d4db4b67.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-0e26513cdfe2.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-a1c65e61b822.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2c9f828b62c9.min.js',\n uk: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-b3b2cf368281.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-b0e54efb61f7.min.js',\n },\n productionbeta: {\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-897c6aa7c43b.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-69e6d4db4b67.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-0e26513cdfe2.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-a1c65e61b822.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2c9f828b62c9.min.js',\n uk: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-b3b2cf368281.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-b0e54efb61f7.min.js',\n },\n staging: {\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-025552be0893-staging.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-cfaf45f56c15-staging.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-6a5f443a9ff6-staging.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-44eccbbc6751-staging.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2320722bddfb-staging.min.js',\n uk: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-34ab3000fc47-staging.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-8fea7e8865ba-staging.min.js',\n },\n staging2: {\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-025552be0893-staging.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-cfaf45f56c15-staging.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-6a5f443a9ff6-staging.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-44eccbbc6751-staging.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2320722bddfb-staging.min.js',\n uk: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-34ab3000fc47-staging.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-8fea7e8865ba-staging.min.js',\n },\n stagingx: {\n ca: 'https://assets.adobedtm.com/a8f91053d00e/a72ffeec43fd/launch-025552be0893-staging.min.js',\n de: 'https://assets.adobedtm.com/a8f91053d00e/61cdfd8ddaaf/launch-cfaf45f56c15-staging.min.js',\n es: 'https://assets.adobedtm.com/a8f91053d00e/9b05ee515724/launch-6a5f443a9ff6-staging.min.js',\n fr: 'https://assets.adobedtm.com/a8f91053d00e/fa0362fa89e0/launch-44eccbbc6751-staging.min.js',\n mx: 'https://assets.adobedtm.com/a8f91053d00e/69cf864b3e52/launch-2320722bddfb-staging.min.js',\n uk: 'https://assets.adobedtm.com/a8f91053d00e/9b034aa49568/launch-34ab3000fc47-staging.min.js',\n us: 'https://assets.adobedtm.com/a8f91053d00e/363a875b9ddd/launch-8fea7e8865ba-staging.min.js',\n },\n};\n\nconst UNAUTH_USER_GUID = '00000000-0000-0000-0000-000000000000';\n\nexport function useAdobeDtm() {\n const [scriptUrl, setScriptUrl] = useState('');\n const isScriptInjected = useRef(false);\n const oneTrustScript = useIsOneTrustEnabled();\n const { isInX4AFrame } = useInX4AFrame();\n\n const buildVars = useBuildVars();\n const siteConfig = useSiteConfig();\n const isAuthenticated = useIsAuthenticated();\n const token = useDecodedToken();\n const { pathname, search } = useLocation();\n\n const { buildEnvironment } = buildVars;\n const { siteCode } = siteConfig;\n\n useEffect(() => {\n if (buildEnvironment && siteCode) {\n const envMap = scriptsMap[buildEnvironment];\n const x4aFrameScript = x4aFrameScriptsMap[buildEnvironment];\n if (isInX4AFrame) {\n setScriptUrl(x4aFrameScript);\n } else if (envMap) {\n setScriptUrl(envMap[siteCode]);\n }\n }\n }, [buildEnvironment, isInX4AFrame, siteCode]);\n\n useEffect(() => {\n if (\n oneTrustScript !== 'loading' &&\n scriptUrl &&\n !isScriptInjected.current\n ) {\n if (oneTrustScript) {\n injectCategorizedScriptInHead(scriptUrl, 'optanon-category-C0001');\n } else {\n injectScriptInHead(scriptUrl);\n }\n isScriptInjected.current = true;\n }\n if (!isAuthenticated) {\n setDigitalData({ userGUID: UNAUTH_USER_GUID });\n }\n }, [scriptUrl, isAuthenticated, oneTrustScript]);\n\n useEffect(() => {\n const userId = token?.imoProfile?.userId;\n if (isAuthenticated && userId && typeof userId === 'string') {\n const userGUID = userId.replace(/[^0-9a-z-]/g, '');\n setDigitalData({ userGUID });\n }\n }, [token?.imoProfile?.userId, isAuthenticated]);\n\n // Clear digitalData object when location pathname (route) and search change\n useEffect(() => {\n setDigitalData({});\n }, [pathname, search]);\n}\n","import { useEffect } from 'react';\nimport { useIsAuthenticated, useDecodedToken } from 'mf_core/auth';\nimport { datadogRum } from '@datadog/browser-rum';\n\nconst isLocalDev = window.location.origin.indexOf('://local') > -1;\n\n// Note: Datadog RUM initialization is handled in data-dog-rum.ts\nexport function useDatadog() {\n const isAuthenticated = useIsAuthenticated();\n const decodedToken = useDecodedToken();\n\n useEffect(() => {\n if (isAuthenticated && decodedToken && !isLocalDev) {\n datadogRum.setUser({\n email: decodedToken.email,\n id: decodedToken.userId,\n name: `${decodedToken.firstName} ${decodedToken.lastName}`,\n });\n }\n }, [isAuthenticated, decodedToken]);\n}\n","import { useApiPostQuery } from 'mf_core/query';\n\nexport function useUjetAuth(enabled: boolean, isUniteChatbot: boolean) {\n return useApiPostQuery<UjetTO>(\n '/ccaip-auth-x4c/v1/access-token',\n { isUnite: isUniteChatbot },\n undefined,\n {\n enabled: enabled,\n queryKey: ['/ccaip-auth-x4c/v1/access-token'],\n }\n );\n}\n\nexport type UjetTO = {\n configurations: {\n companyId: string;\n companyName: string;\n defaultMenuKey: string | null;\n host: string;\n };\n token: string;\n};\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router';\nimport { useIsAuthenticated, useIsFeatureWhitelisted } from 'mf_core/auth';\nimport { useFeatureFlagBase } from './use-feature-flag-base';\nimport { checkListForPath } from '../app/injectors/utils';\n\n//Config documentation:\n// https://imonline.atlassian.net/wiki/spaces/GLAD/pages/3285942926/CCAI+Chatbot+Live+Chat\nexport function useIsUjetChatbotEnabled(isCloudChat: boolean) {\n const isAuthenticated = useIsAuthenticated();\n const location = useLocation();\n const pathname = location.pathname.toLowerCase();\n\n const isFeatureWhitelisted = useIsFeatureWhitelisted();\n\n const { boValues: value, isReady } = useFeatureFlagBase();\n\n const isWhitelistedReseller =\n value['CCAI_Chatbot_WhitelistedResellers'] === 'true';\n\n const isUniteChatbot =\n isFeatureWhitelisted('CMP') &&\n pathname.includes('/general/contact-us') &&\n isReady &&\n Boolean(value['CCAI_UNITE_Disabled']) === false;\n\n const pathWhitelist: string[] = useMemo(() => {\n return (\n (value['CCAI_Paths_Whitelist'] &&\n value['CCAI_Paths_Whitelist']?.toLowerCase().split(',')) ||\n []\n );\n }, [value]);\n\n const isValidPath = useMemo(() => {\n if (!isReady || !isWhitelistedReseller) return false;\n\n if (pathWhitelist[0] === '*' || pathWhitelist.length === 0) return true;\n\n const currentPathWhitelisted = checkListForPath(pathWhitelist, pathname);\n return currentPathWhitelisted;\n }, [isReady, isWhitelistedReseller, pathWhitelist, pathname]);\n\n const translationKeys: string[] = getTranslationKeys();\n\n return {\n isEnabled: isChatbotEnabled(),\n isUniteChatbot,\n isValidPath,\n translationKeys,\n };\n\n function getTranslationKeys(): string[] {\n return isUniteChatbot\n ? (isReady && value['CCAI_UNITE_Translation_Keys']?.split(',')) || []\n : (isReady && value['CCAI_Translation_Keys']?.split(',')) || [];\n }\n\n function isChatbotEnabled() {\n return isCloudChat\n ? isUniteChatbot\n : isAuthenticated && isReady && isWhitelistedReseller;\n }\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { useLocation } from 'react-router';\nimport { UjetTO, useUjetAuth } from '../../hooks/useUjetAuth';\nimport { useIsUjetChatbotEnabled } from '../../hooks/useIsUjetChatbotEnabled';\nimport { injectScriptInHead } from './utils';\nimport { useDecodedToken } from 'mf_core/auth';\nimport { useBuildVars, useSiteConfig } from 'mf_core/config';\nimport { getLsObject } from '@im/ui-lib/utils/local-storage.utils';\nimport { ujetFrameScriptsMap } from './useAdobeDtm';\n\nconst baseUrl = globalThis.location.origin;\n\ninterface AccountResultTO {\n accountID?: string;\n companycode?: string;\n countryID?: string;\n currencyID?: string;\n ownerID?: string;\n priceList?: string;\n}\n\n/** CCAI Ujet Chatbot/Live chat */\nexport function useUjetChatBot() {\n const { locale, localizationService } = useLocalizationContext();\n const { buildEnvironment } = useBuildVars();\n const { environment, siteCode } = useSiteConfig();\n const langRef = useRef('');\n const { pathname } = useLocation();\n const [ujetTranslations, setUjetTranslations] = useState<{\n [key: string]: { [key: string]: string };\n }>({});\n\n const ujetTranslationsRef = useRef(ujetTranslations);\n\n const decodedToken = useDecodedToken();\n const firstName: string = decodedToken?.imoProfile?.firstName || '';\n const lastName: string = decodedToken?.imoProfile?.lastName || '';\n const bcn: string = decodedToken?.resellerId || '';\n const email: string = decodedToken?.email || '';\n const userId: string = decodedToken?.userId || '';\n const accountId = useMemo(() => {\n const accountResponse = getLsObject('getAccount', { data: {} });\n const accountData: AccountResultTO =\n accountResponse?.data || accountResponse;\n return accountData?.accountID || '';\n }, []);\n\n const {\n isEnabled,\n isValidPath,\n translationKeys: ujetKeys,\n } = useIsUjetChatbotEnabled(false);\n const { data: ujetConfig } = useUjetAuth(isEnabled, false);\n\n const UJET = window.UJET;\n const ujetInstanceRef = useRef(null as UJETInstance);\n\n const [isScriptInjected, setIsScriptInjected] = useState(false);\n const isAdobeScriptInjected = useRef(false);\n\n function hideUjet() {\n const ujet = ujetInstanceRef.current;\n if (ujet?.$el?.style) {\n ujet.$el.style.display = 'none';\n }\n }\n\n function showUjet() {\n const ujet = ujetInstanceRef.current;\n if (ujet?.$el?.style) {\n ujet.$el.style.display = 'block';\n }\n }\n\n useEffect(() => {\n langRef.current = locale.split('-')[0];\n }, [locale]);\n\n useEffect(() => {\n if (isEnabled) {\n if (!isScriptInjected && isValidPath) {\n injectScriptInHead('https://websdk.ujet.co/v2/loader.js', () => {\n setIsScriptInjected(true);\n });\n }\n //Close chatbot widget and hide chatbot launcher button when leaving Returns routes\n else if (isScriptInjected && !isValidPath) {\n hideUjet();\n }\n //Once injected, display chatbot launcher button when returning to a Returns route\n else if (isScriptInjected && isValidPath) {\n showUjet();\n }\n }\n }, [isEnabled, isScriptInjected, isValidPath, pathname]);\n\n const keys = useMemo(() => {\n return ujetKeys.map((key) => {\n return `Ujet.${key}`;\n });\n }, [ujetKeys]);\n\n const loadTranslations = useCallback(() => {\n if (localizationService && keys.length > 0) {\n localizationService\n .translate(keys, { returnKeyIfNotFound: false })\n .then((res: any) => {\n const langTranslations: { [key: string]: string } = {};\n ujetKeys.forEach((key) => {\n langTranslations[key] = res[`Ujet.${key}`] || '';\n });\n ujetTranslationsRef.current = {\n ...ujetTranslations,\n [langRef.current]: langTranslations,\n };\n setUjetTranslations(ujetTranslationsRef.current);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [keys, localizationService, ujetKeys]);\n\n function destroyUjet() {\n if (ujetInstanceRef.current) {\n ujetInstanceRef.current.destroy();\n if (ujetInstanceRef.current.$el) {\n ujetInstanceRef.current.$el.remove();\n }\n }\n }\n\n function loadAdobeAnalytics() {\n if (!isAdobeScriptInjected.current) {\n const container = document.getElementById('ujet-launcher');\n const ujetIframe = container ? container.querySelector('iframe') : null;\n if (ujetIframe) {\n const iframeDocument =\n ujetIframe.contentDocument || ujetIframe.contentWindow?.document;\n if (iframeDocument) {\n const scriptId = getAdbodeScript();\n // Create a script element\n const script = iframeDocument.createElement('script');\n script.src = scriptId; // Set the source of your script\n script.async = true;\n\n const digitalDataScript = document.createElement('script');\n digitalDataScript.innerHTML = 'var digitalData = {};';\n // Append the script to the iframe document\n iframeDocument.head.appendChild(script);\n iframeDocument.head.appendChild(digitalDataScript);\n isAdobeScriptInjected.current = true;\n }\n }\n }\n }\n\n function getAdbodeScript() {\n let scriptId = '';\n if (buildEnvironment && siteCode) {\n const envMap = ujetFrameScriptsMap[buildEnvironment];\n if (envMap) {\n scriptId = envMap[siteCode];\n }\n }\n return scriptId;\n }\n\n function setupUjet(config: UjetTO) {\n // Initialize UJET web-sdk. For more info:\n // https://cloud.google.com/contact-center/ccai-platform/docs/API/publication--en\n\n const options: { [option: string]: any } = {\n authenticate: config.token,\n bottom: '140px',\n companyId: config.configurations.companyId,\n companyName: config.configurations.companyName,\n customData: {\n bcn: {\n label: 'bcn',\n value: bcn,\n },\n country: {\n label: 'country',\n value: siteCode,\n },\n email: {\n label: 'Email',\n value: email,\n },\n name: {\n label: 'name',\n value: `${firstName} ${lastName}`,\n },\n values: {\n label: 'values',\n value: {\n accountId,\n email,\n environment,\n language: locale,\n userId,\n },\n },\n },\n host: config.configurations.host,\n lang: langRef.current,\n launcher: true,\n logo: `${baseUrl}/cep/assets/img/chatbot/logo.png`,\n };\n\n if (Object.keys(ujetTranslationsRef.current).length > 0) {\n options.translation = ujetTranslationsRef.current;\n }\n\n if (config.configurations.defaultMenuKey) {\n options.menuKey = config.configurations.defaultMenuKey;\n\n setTimeout(() => {\n ujetInstanceRef.current = new UJET(options);\n\n if (ujetInstanceRef.current) {\n loadAdobeAnalytics();\n /** Ujet currently doesn't work second time if menuKey is used.\n * This is a hack to destroy and reconfigure ujet.]\n * This patch should be removed once menuKey issue is resolved.\n */\n ujetInstanceRef.current.on('close', () => {\n destroyUjet();\n setupUjet(config);\n });\n }\n }, 100);\n } else {\n ujetInstanceRef.current = new UJET(options);\n }\n }\n\n useEffect(() => {\n if (UJET && ujetConfig && isScriptInjected && !ujetInstanceRef.current) {\n if (ujetKeys.length > 0 && Object.keys(ujetTranslations).length === 0) {\n // load translations before initializing Ujet.\n loadTranslations();\n return;\n }\n setupUjet(ujetConfig);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isScriptInjected, ujetTranslations, ujetConfig, UJET]);\n\n useEffect(() => {\n if (isEnabled && ujetInstanceRef.current && ujetKeys.length > 0) {\n // load translations on language change.\n if (!Object.keys(ujetTranslations).includes(langRef.current)) {\n hideUjet();\n loadTranslations();\n } else {\n ujetInstanceRef.current.options.lang = langRef.current;\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isEnabled, locale, ujetKeys]);\n\n useEffect(() => {\n if (isEnabled && ujetInstanceRef.current) {\n // update language and translations on language change.\n ujetInstanceRef.current.options.lang = langRef.current;\n ujetInstanceRef.current.options.translation = ujetTranslations;\n showUjet();\n }\n }, [isEnabled, ujetTranslations, ujetInstanceRef]);\n}\n\ndeclare global {\n interface Window {\n UJET: any;\n }\n}\n\ntype UJETInstance = null | {\n $el: HTMLElement;\n close: () => void;\n destroy: () => void;\n on: (event: string, cb: () => void) => void;\n open: () => void;\n options: ConfigureOptions;\n start: (options?: StartOptions) => void;\n status: string;\n};\n\ntype StartOptions = { [menuKey: string]: string };\ntype ConfigureOptions = { [key: string]: any };\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { useLocation } from 'react-router';\nimport { UjetTO, useUjetAuth } from '../../hooks/useUjetAuth';\nimport { useIsUjetChatbotEnabled } from '../../hooks/useIsUjetChatbotEnabled';\nimport { injectScriptInHead } from './utils';\nimport { useDecodedToken } from 'mf_core/auth';\nimport { useSiteConfig } from 'mf_core/config';\nimport { useSearchParams } from 'react-router-dom';\n\nconst baseUrl = globalThis.location.origin;\n\n/** CCAI Ujet Chatbot/Live chat */\nexport function useUjetUniteChatBot() {\n const { locale, localizationService } = useLocalizationContext();\n const { environment, siteCode } = useSiteConfig();\n const langRef = useRef('');\n const { pathname } = useLocation();\n const [searchParams] = useSearchParams();\n const openCloudChat =\n typeof searchParams.get('openCloudChat') === 'string'\n ? Boolean(searchParams.get('openCloudChat'))\n : false;\n const [ujetTranslations, setUjetTranslations] = useState<{\n [key: string]: { [key: string]: string };\n }>({});\n\n const ujetTranslationsRef = useRef(ujetTranslations);\n\n const decodedToken = useDecodedToken();\n const firstName: string = decodedToken?.imoProfile?.firstName || '';\n const lastName: string = decodedToken?.imoProfile?.lastName || '';\n const bcn: string = decodedToken?.resellerId || '';\n const email: string = decodedToken?.email || '';\n const userId: string = decodedToken?.userId || '';\n\n const {\n isEnabled,\n isUniteChatbot,\n isValidPath,\n translationKeys: ujetKeys,\n } = useIsUjetChatbotEnabled(true);\n const { data: ujetConfig } = useUjetAuth(isUniteChatbot, true);\n\n const UJET = window.UJET;\n const ujetUniteInstanceRef = useRef(null as UJETInstance);\n\n const [isScriptInjected, setIsScriptInjected] = useState(false);\n\n function hideUjet() {\n const ujet = ujetUniteInstanceRef.current;\n if (ujet) {\n ujet.$el.style.display = 'none';\n }\n }\n\n function showUjet() {\n const ujet = ujetUniteInstanceRef.current;\n if (ujet) {\n ujet.$el.style.display = 'block';\n }\n }\n\n useEffect(() => {\n langRef.current = locale.split('-')[0];\n }, [locale]);\n\n useEffect(() => {\n if (isEnabled) {\n if (!isScriptInjected && isUniteChatbot) {\n injectScriptInHead('https://websdk.ujet.co/v2/loader.js', () => {\n setIsScriptInjected(true);\n });\n }\n //Close chatbot widget and hide chatbot launcher button when leaving Returns routes\n else if (isScriptInjected && !isUniteChatbot) {\n hideUjet();\n }\n //Once injected, display chatbot launcher button when returning to a Returns route\n else if (isScriptInjected && isUniteChatbot) {\n showUjet();\n }\n }\n }, [\n isEnabled,\n isScriptInjected,\n isValidPath,\n pathname,\n isUniteChatbot,\n openCloudChat,\n ]);\n\n const keys = useMemo(() => {\n return ujetKeys.map((key) => {\n return `UjetUnite.${key}`;\n });\n }, [ujetKeys]);\n\n const loadTranslations = useCallback(() => {\n if (localizationService && keys.length > 0) {\n localizationService\n .translate(keys, { returnKeyIfNotFound: false })\n .then((res: any) => {\n const langTranslations: { [key: string]: string } = {};\n ujetKeys.forEach((key) => {\n langTranslations[key] = res[`UjetUnite.${key}`] || '';\n });\n ujetTranslationsRef.current = {\n ...ujetTranslations,\n [langRef.current]: langTranslations,\n };\n setUjetTranslations(ujetTranslationsRef.current);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [keys, localizationService, ujetKeys]);\n\n function setupUjet(config: UjetTO) {\n // Initialize UJET web-sdk. For more info:\n // https://cloud.google.com/contact-center/ccai-platform/docs/API/publication--en\n\n const options: { [option: string]: any } = {\n authenticate: config.token,\n bottom: '20px',\n companyId: config.configurations.companyId,\n companyName: config.configurations.companyName,\n customData: {\n bcn: {\n label: 'bcn',\n value: bcn,\n },\n country: {\n label: 'country',\n value: siteCode,\n },\n email: {\n label: 'Email',\n value: email,\n },\n name: {\n label: 'name',\n value: `${firstName} ${lastName}`,\n },\n resellerid: {\n label: 'resellerid',\n value: bcn,\n },\n values: {\n label: 'values',\n value: {\n environment,\n language: locale,\n userId,\n },\n },\n },\n host: config.configurations.host,\n lang: langRef.current,\n launcher: false,\n logo: `${baseUrl}/cep/assets/img/chatbot/logo.png`,\n };\n if (Object.keys(ujetTranslationsRef.current).length > 0) {\n options.translation = ujetTranslationsRef.current;\n }\n if (config.configurations.defaultMenuKey) {\n options.menuKey = config.configurations.defaultMenuKey;\n setTimeout(() => {\n ujetUniteInstanceRef.current = new UJET(options);\n if (ujetUniteInstanceRef.current) {\n ujetUniteInstanceRef.current.on('close', () => {\n destroyUniteUjet();\n setupUjet(config);\n });\n }\n }, 100);\n } else {\n ujetUniteInstanceRef.current = new UJET(options);\n }\n }\n\n function destroyUniteUjet() {\n if (ujetUniteInstanceRef.current) {\n ujetUniteInstanceRef.current.destroy();\n ujetUniteInstanceRef.current.$el.remove();\n }\n }\n window.openUjet = () => {\n if (isUniteChatbot) {\n ujetUniteInstanceRef.current?.open();\n }\n };\n useEffect(() => {\n if (\n UJET &&\n ujetConfig &&\n isScriptInjected &&\n !ujetUniteInstanceRef.current\n ) {\n if (ujetKeys.length > 0 && Object.keys(ujetTranslations).length === 0) {\n // load translations before initializing Ujet.\n loadTranslations();\n return;\n }\n setupUjet(ujetConfig);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isScriptInjected, ujetTranslations, ujetConfig, UJET]);\n\n useEffect(() => {\n if (isEnabled && ujetUniteInstanceRef.current && ujetKeys.length > 0) {\n // load translations on language change.\n if (!Object.keys(ujetTranslations).includes(langRef.current)) {\n loadTranslations();\n } else {\n ujetUniteInstanceRef.current.options.lang = langRef.current;\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isEnabled, locale, ujetKeys]);\n\n useEffect(() => {\n if (isEnabled && ujetUniteInstanceRef.current) {\n // update language and translations on language change.\n ujetUniteInstanceRef.current.options.lang = langRef.current;\n ujetUniteInstanceRef.current.options.translation = ujetTranslations;\n }\n }, [isEnabled, ujetTranslations, ujetUniteInstanceRef, openCloudChat]);\n\n useEffect(() => {\n if (openCloudChat) {\n setTimeout(() => {\n ujetUniteInstanceRef.current?.open();\n }, 500);\n }\n });\n}\n\ndeclare global {\n interface Window {\n UJET: any;\n openUjet: () => void;\n }\n}\n\ntype UJETInstance = null | {\n $el: HTMLElement;\n close: () => void;\n destroy: () => void;\n on: (event: string, cb: () => void) => void;\n open: () => void;\n options: ConfigureOptions;\n start: (options?: StartOptions) => void;\n status: string;\n};\n\ntype StartOptions = { [menuKey: string]: string };\ntype ConfigureOptions = { [key: string]: any };\n","import { useEffect, useMemo, useState } from 'react';\nimport { useSiteConfig } from 'mf_core/config';\nimport { injectScriptInBody } from './utils';\nimport { useIsAuthenticated, useDecodedToken } from 'mf_core/auth';\nimport { useLocation } from 'react-router';\nimport { getLsObject } from '@im/ui-lib/utils/local-storage.utils';\nimport { useLocalizationContext } from '@im/react-localization';\n\ninterface AccountResultTO {\n accountID?: string;\n companycode?: string;\n countryID?: string;\n currencyID?: string;\n ownerID?: string;\n priceList?: string;\n}\n\nexport function useChatBotHelpMenu() {\n const { environment, siteCode } = useSiteConfig();\n const { pathname } = useLocation();\n const isAuthenticated = useIsAuthenticated();\n const decodedToken = useDecodedToken();\n const defaultVisibility = siteCode === 'mx';\n const [showChatbot, setShowChatbot] = useState(defaultVisibility);\n\n const firstName: string = decodedToken?.imoProfile?.firstName || '';\n const lastName: string = decodedToken?.imoProfile?.lastName || '';\n const email: string = decodedToken?.email || '';\n const userId: string = decodedToken?.userId || '';\n const { locale } = useLocalizationContext();\n const language = locale;\n const accountId = useMemo(() => {\n const accountResponse = getLsObject('getAccount', { data: {} });\n const accountData: AccountResultTO =\n accountResponse?.data || accountResponse;\n return accountData?.accountID || '';\n }, []);\n\n const name = `${firstName} ${lastName}`;\n const resellerId = decodedToken?.resellerId;\n const resellerInfoHTML = `<span id=\"reseller-id\" style=\"display:none\">${resellerId}</span><span id=\"reseller-name\" style=\"display:none\">${name}</span><span id=\"account-id\" style=\"display:none\">${accountId}</span><span id=\"email-id\" style=\"display:none\">${email}</span><span id=\"environment-name\" style=\"display:none\">${environment}</span><span id=\"language-name\" style=\"display:none\">${language}</span><span id=\"user-id\" style=\"display:none\">${userId}</span>`;\n const resellerInfoContainer = document.createElement('div');\n resellerInfoContainer.id = 'reseller-info';\n resellerInfoContainer.innerHTML = resellerInfoHTML;\n if (resellerId && !document.getElementById('reseller-info') && name)\n document.body.appendChild(resellerInfoContainer);\n\n const win = window as any;\n win.chatBotOnHelpMenu = {\n toggleChatBot: () => {\n setShowChatbot(!showChatbot);\n },\n };\n useEffect(() => {\n if (pathname.includes('/general/contact-us')) {\n setShowChatbot(false);\n } else if (siteCode === 'mx' && !pathname.includes('/general/contact-us')) {\n setShowChatbot(true);\n }\n }, [siteCode, pathname]);\n\n useEffect(() => {\n if (isAuthenticated) {\n if (showChatbot) {\n loadScriptInBody(siteCode);\n }\n const chatBotContainerCO = document.getElementById(\n 'chat-widget-container'\n );\n const chatBotContainerMx = document.getElementById('chatbot-chat');\n if (chatBotContainerCO) {\n chatBotContainerCO.style.display =\n !showChatbot || pathname.includes('/my/checkout') ? 'none' : 'block';\n }\n if (chatBotContainerMx) {\n chatBotContainerMx.style.display =\n !showChatbot || pathname.includes('/my/checkout') ? 'none' : 'block';\n }\n }\n }, [siteCode, showChatbot, isAuthenticated, pathname]);\n}\n\nconst loadScriptInBody = function (siteCode: string) {\n switch (siteCode) {\n case 'co': {\n if (!document.getElementById('co_chatbot_script')) {\n const script_text_chatbot_co = `window.__lc=window.__lc||{};window.__lc.license=11382707;(function(){var a=document.createElement(\"script\");a.type=\"text/javascript\";a.async=!0;a.src=(\"https:\"==document.location.protocol?\"https://\":\"http://\")+\"cdn.livechatinc.com/tracking.js\";var b=document.getElementsByTagName(\"script\")[0];b.parentNode.insertBefore(a,b)})();`;\n injectScriptInBody(script_text_chatbot_co, 'co_chatbot_script');\n }\n break;\n }\n case 'mx': {\n if (!document.getElementById('mx_chatbot_script')) {\n const script_text_chatbot_mx = `window.__lc=window.__lc||{};var reseller_bot=\"\",uname_bot=\"\",accountId_bot=\"\",email_bot=\"\",environment_bot=\"\",language_bot=\"\",userId_bot=\"\";if(document.getElementById(\"reseller-id\")){reseller_bot=document.getElementById(\"reseller-id\").innerHTML}if(document.getElementById(\"reseller-name\")){uname_bot=document.getElementById(\"reseller-name\").innerHTML}if(document.getElementById(\"account-id\")){accountId_bot=document.getElementById(\"account-id\").innerHTML}if(document.getElementById(\"email-id\")){email_bot=document.getElementById(\"email-id\").innerHTML}if(document.getElementById(\"environment-name\")){environment_bot=document.getElementById(\"environment-name\").innerHTML}if(document.getElementById(\"language-name\")){language_bot=document.getElementById(\"language-name\").innerHTML}if(document.getElementById(\"user-id\")){userId_bot=document.getElementById(\"user-id\").innerHTML}window.__lc.params=[{name:\"name\",value:uname_bot},{name:\"resellerid\",value:reseller_bot},{name:\"accountId\",value:accountId_bot},{name:\"email\",value:email_bot},{name:\"environment\",value:environment_bot},{name:\"language\",value:language_bot},{name:\"userId\",value:userId_bot}];window.__lc.license=8829336;window.__lc.group=19;console.log(window.__lc.group);(function(){var a=document.createElement(\"script\");a.type=\"text/javascript\";a.async=!0;a.src=(\"https:\"==document.location.protocol?\"https://\":\"http://\")+\"cdn.livechatinc.com/tracking.js\";var b=document.getElementsByTagName(\"script\")[0];b.parentNode.insertBefore(a,b)})();var LC_API=LC_API||{};LC_API.on_after_load=function(){LC_API.minimize_chat_window()};`;\n injectScriptInBody(script_text_chatbot_mx, 'mx_chatbot_script');\n }\n break;\n }\n }\n};\n","import { useEffect, useState, useMemo } from 'react';\n\nimport { useBuildVars, useSiteConfig, useInX4AFrame } from 'mf_core/config';\nimport {\n useIsAuthenticated,\n useIsImpersonationMode,\n useDecodedToken,\n} from 'mf_core/auth';\nimport { useLocalizationContext } from '@im/react-localization';\n\nconst scriptSrcModifierMap = {\n development: 'test/',\n production: '',\n productionbeta: '',\n productionbetax: 'betax/',\n staging: 'test/',\n staging2: 'test/',\n stagingx: 'test/',\n test: 'test/',\n};\n\nexport function useWalkMe(isFirstLogin: boolean) {\n const isAuthenticated = useIsAuthenticated();\n const { buildEnvironment } = useBuildVars();\n const { defaultLocale } = useSiteConfig();\n const { locale } = useLocalizationContext();\n const isImpersonationMode = useIsImpersonationMode();\n const { isInX4AFrame } = useInX4AFrame();\n\n const [isWalkMeUserActive, setIsWalkMeUserActive] = useState(false);\n const [walkMeInitialization, setWalkMeInitialization] = useState(false);\n const isWalkMeLoaded = window._walkmeInternals;\n const walkMeAPI = window.WalkMeAPI;\n\n const decodedToken = useDecodedToken();\n\n const tokenData = useMemo(() => {\n const firstName: string = decodedToken?.imoProfile?.firstName || '';\n const lastName: string = decodedToken?.imoProfile?.lastName || '';\n return {\n email: decodedToken?.imoProfile?.emailAddress || '',\n language: defaultLocale,\n name: `${firstName}${\n firstName && lastName ? ` ${lastName}` : `${lastName}`\n }`,\n resellerId: decodedToken?.resellerId || '',\n userRoles: decodedToken?.role,\n uuid: decodedToken?.imoProfile?.userId,\n };\n }, [decodedToken, defaultLocale]);\n\n const srcModifier = scriptSrcModifierMap[buildEnvironment] || '';\n\n useEffect(() => {\n if (isAuthenticated && tokenData && !isImpersonationMode && !isInX4AFrame) {\n if (!window.user) {\n //Initialize WalkMe globals\n window.user = {\n ...tokenData,\n uuid: window.btoa(tokenData.uuid),\n };\n\n setIsWalkMeUserActive(true);\n }\n }\n }, [\n defaultLocale,\n isAuthenticated,\n isImpersonationMode,\n isInX4AFrame,\n tokenData,\n ]);\n\n useEffect(() => {\n // Inject WalkMe Script in HTML Head\n if (\n !isFirstLogin &&\n !isImpersonationMode &&\n !isInX4AFrame &&\n buildEnvironment &&\n isAuthenticated &&\n isWalkMeUserActive\n ) {\n const walkMe = document.createElement('script');\n walkMe.type = 'text/javascript';\n walkMe.async = true;\n walkMe.src = `https://cdn.walkme.com/users/de4fe94aae764ca490170912028ce58b/${srcModifier}walkme_de4fe94aae764ca490170912028ce58b_https.js`;\n const s = document.getElementsByTagName('script')[0];\n if (s && s.parentNode) {\n s.parentNode.insertBefore(walkMe, s);\n window._walkmeConfig = { smartLoad: true };\n }\n }\n }, [\n buildEnvironment,\n isAuthenticated,\n isFirstLogin,\n isImpersonationMode,\n isInX4AFrame,\n isWalkMeUserActive,\n srcModifier,\n ]);\n\n useEffect(() => {\n if (\n isWalkMeLoaded &&\n walkMeAPI &&\n !walkMeInitialization &&\n walkMeAPI.getCurrentLanguage() !== locale\n ) {\n //Correct WalkMe language after player loads\n const delayInit = setTimeout(() => {\n walkMeAPI.changeLanguage(locale);\n }, 1000);\n return () => {\n clearTimeout(delayInit);\n setWalkMeInitialization(true);\n };\n }\n }, [walkMeInitialization, isWalkMeLoaded, locale, walkMeAPI]);\n\n useEffect(() => {\n if (isWalkMeUserActive && locale && walkMeAPI) {\n //Update global language variable when locale changes\n if (window.user.language !== locale) window.user.language = locale;\n\n // Use WalkMe JS API to push correct language content on locale change.\n // The default language is English, represented by an empty string.\n // All other languages use a lang-country locale shortname, e.g. 'de-DE'.\n // For available languages use WalkMeAPI.getAllLanguages().\n // More info: https://developer.walkme.com/reference/multilanguage-support\n if (locale.split('-')[0] === 'en') {\n walkMeAPI.changeLanguage('');\n } else {\n walkMeAPI.changeLanguage(locale);\n }\n }\n }, [isWalkMeUserActive, locale, walkMeAPI]);\n\n useEffect(() => {\n // Hide the WalkMe player on welcome video page\n const walkMe = document.getElementById('walkme-player');\n if (walkMe) {\n if (isFirstLogin && walkMe) {\n walkMe.style.display = 'none';\n } else {\n walkMe.style.display = 'block';\n }\n }\n }, [isFirstLogin]);\n}\n","import { useMemo } from 'react';\nimport { useApiQuery } from 'mf_core/query';\n\nexport function useUserActivity(enabled = false) {\n const query = useApiQuery<UserActivityResponseTO>(\n '/cms.webapi.digitalmarketing/cms/v1/user-info/getuseractivity',\n undefined,\n {\n enabled,\n refetchOnWindowFocus: false,\n }\n );\n return useMemo(() => {\n if (query.data) {\n const userActivityObject = {} as UserActivityCompatibleTO;\n Object.keys(DEFAULT_TEMPLATE).forEach((propertyName) => {\n const key = propertyName as keyof UserActivityTO;\n userActivityObject[key] = query.data[key] ?? DEFAULT_TEMPLATE[key];\n });\n return userActivityObject as UserActivityTO;\n }\n return DEFAULT_TEMPLATE;\n }, [query.data]);\n}\n\nexport type UserActivityTO = {\n hasPlacedOrderCount: number;\n orderTrackingPageVisits: number;\n quotesCreatedCount: number;\n returnsPlacedUserCount: number;\n subscriptionPageVisits: number;\n};\n\ntype UserActivityResponseTO = UserActivityTO & {\n loginCount: number;\n resellerId: string;\n};\ntype UserActivityCompatibleTO = Record<keyof UserActivityTO, number>;\n\n/** To ensure that UserActivity object does not pass unexpected properties */\nconst DEFAULT_TEMPLATE: UserActivityTO = {\n hasPlacedOrderCount: 0,\n orderTrackingPageVisits: 0,\n quotesCreatedCount: 0,\n returnsPlacedUserCount: 0,\n subscriptionPageVisits: 0,\n};\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { useBuildVars, useInX4AFrame, useSiteConfig } from 'mf_core/config';\nimport {\n useIsAuthenticated,\n useIsImpersonationMode,\n useDecodedToken,\n} from 'mf_core/auth';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { useFeatureFlagBase } from '../../hooks/use-feature-flag-base';\nimport { UserActivityTO, useUserActivity } from '../../hooks/useUserActivity';\n\nconst programKeyMap = {\n //dev: 'Jg4m6T',\n dev: 'QDWhcm',\n prod: 'LOpVXz',\n};\n\nexport function useForstaFeedback() {\n const decodedToken = useDecodedToken();\n const isAuthenticated = useIsAuthenticated();\n const isImpersonationMode = useIsImpersonationMode();\n const { buildEnvironment } = useBuildVars();\n const { defaultLocale, siteCode } = useSiteConfig();\n const { isInX4AFrame } = useInX4AFrame();\n const { locale } = useLocalizationContext();\n\n const env = buildEnvironment === 'production' ? 'prod' : 'dev';\n\n const programKey = programKeyMap[env];\n const id = `cf-program-${programKey}`;\n const src = `https://digitalfeedback.us.confirmit.com/api/digitalfeedback/loader?programKey=${programKey}`;\n\n const { boValues: value, isReady } = useFeatureFlagBase();\n const isWhitelistedReseller =\n isReady && value['FORSTA_Feedback_Form_WhitelistedResellers'] === 'true';\n\n const forstaEnabled =\n isAuthenticated &&\n !isImpersonationMode &&\n !isInX4AFrame &&\n isWhitelistedReseller;\n\n const [isScriptInjected, setIsScriptInjected] = useState(false);\n\n const userActivityData = useUserActivity(forstaEnabled);\n\n useEffect(() => {\n // Inject Forsta Feedback Program Script in HTML Head\n if (forstaEnabled && !isScriptInjected) {\n const forstaScriptEl = document.createElement('script');\n forstaScriptEl.id = id;\n forstaScriptEl.type = 'text/javascript';\n forstaScriptEl.async = true;\n forstaScriptEl.src = src;\n document.head.appendChild(forstaScriptEl);\n setIsScriptInjected(true);\n }\n }, [forstaEnabled, id, isScriptInjected, src]);\n\n const [forstaUserCreated, setForstaUserCreated] = useState(false);\n const tokenData = useMemo(() => {\n return {\n country: siteCode,\n email: decodedToken?.imoProfile?.emailAddress || '',\n language: defaultLocale,\n resellerId: decodedToken?.resellerId || '',\n };\n }, [\n decodedToken?.imoProfile?.emailAddress,\n decodedToken?.resellerId,\n defaultLocale,\n siteCode,\n ]);\n\n useEffect(() => {\n if (forstaEnabled) {\n if (!window.forsta_user) {\n //Initialize Forsta globals\n window.forsta_user = {\n ...tokenData,\n ...userActivityData,\n };\n setForstaUserCreated(true);\n } else if (userActivityData) {\n //Update Forsta globals\n Object.assign(window.forsta_user, userActivityData);\n }\n }\n }, [forstaEnabled, tokenData, userActivityData]);\n\n useEffect(() => {\n //Update global language variable when locale changes\n if (forstaUserCreated && window.forsta_user.language !== locale)\n window.forsta_user.language = locale;\n }, [forstaUserCreated, locale]);\n}\n\ndeclare global {\n interface Window {\n forsta_user: {\n country: string;\n email: string;\n language: string;\n resellerId: string;\n } & UserActivityTO;\n }\n}\n","import { useEffect } from 'react';\n\nimport { useFeatureFlagBase } from '../../hooks/use-feature-flag-base';\n\nconst win = window as any;\n\nconst WALKME_SURVEY_ID = 91918;\nconst OPEN_WALKME_FORM = () => {\n win.WalkMeAPI?.startSurveyById(WALKME_SURVEY_ID);\n};\nconst OPEN_FORSTA_FORM = () => {\n win?.doConfirmitFeedbackSurvey();\n};\n\ndeclare global {\n interface Window {\n openFeedbackForm: () => void;\n }\n}\n\n/**\n * This hook is used to determine which feedback form to render when user clicks \"Give Feedback\"\n * in the sidebar help menu. If the user is a whitelisted for Forsta, the Forsta feedback form\n * will be displayed. Otherwise, the WalkMe form will be displayed.\n */\nexport function useFeedbackFormRouter() {\n const { boValues: value, isReady } = useFeatureFlagBase();\n const shouldShowForstaInsteadOfWalkmeFeedback =\n isReady && value['FORSTA_Feedback_Form_WhitelistedResellers'] === 'true';\n\n useEffect(() => {\n window.openFeedbackForm = shouldShowForstaInsteadOfWalkmeFeedback\n ? OPEN_FORSTA_FORM\n : OPEN_WALKME_FORM;\n }, [shouldShowForstaInsteadOfWalkmeFeedback]);\n}\n","/* eslint-disable import/max-dependencies */\nimport { useAdobeDtm } from './useAdobeDtm';\nimport { useDatadog } from './useDatadog';\nimport { useFullStory } from 'mf_core/config';\nimport { useHtmlLang } from './useHtmlLang';\nimport { useUjetChatBot } from './useUjetChatBot';\nimport { useUjetUniteChatBot } from './useUjetUniteChatBot';\nimport { useChatBotHelpMenu } from './useChatBotHelpMenu';\nimport { useWalkMe } from './useWalkMe';\nimport { useWhatfix } from './useWhatfix';\nimport { useCookieDisclaimer } from './useCookieDisclaimer';\nimport { useAddMetaTag } from './useAddMetaTag';\nimport { useForstaFeedback } from './useForstaFeedback';\nimport { useFeedbackFormRouter } from './useFeedbackFormRouter';\n\ntype UseScriptInjectorsProps = {\n isFirstLogin: boolean;\n resellerProspect: boolean;\n};\n\nexport function useScriptInjectors({\n isFirstLogin,\n resellerProspect,\n}: UseScriptInjectorsProps) {\n useAddMetaTag();\n useAdobeDtm();\n useChatBotHelpMenu();\n useCookieDisclaimer({ resellerProspect });\n useDatadog();\n useFeedbackFormRouter();\n useForstaFeedback();\n useFullStory();\n useHtmlLang();\n useUjetChatBot();\n useUjetUniteChatBot();\n useWalkMe(isFirstLogin);\n useWhatfix(isFirstLogin);\n}\n","import { useSiteConfig } from 'mf_core/config';\nimport { useEffect, useRef } from 'react';\n\nexport function useAddMetaTag() {\n const { siteCode } = useSiteConfig();\n const isTagInjected = useRef(false);\n useEffect(() => {\n try {\n if (siteCode === 'us' && !isTagInjected.current) {\n const scriptEl = document.createElement('meta');\n scriptEl.name = 'google-site-verification';\n scriptEl.content = 'JQpoPwtLvuITXOrPPLlAyOLFC1TRoT8fLrLFCa0MIYQ';\n document.head.appendChild(scriptEl);\n isTagInjected.current = true;\n }\n } catch (e) {\n console.error(e);\n }\n }, [siteCode]);\n}\n","import { useEffect, useRef } from 'react';\nimport { injectScriptInHead } from './utils';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { useReusableCookieDisclaimer } from '../../hooks/use-cookie-disclaimer';\nimport Cookies from 'js-cookie';\nimport { useIsOneTrustEnabled } from './useOneTrust';\n\ntype UseCookieDisclaimerTO = {\n resellerProspect: boolean;\n};\n\nexport function useCookieDisclaimer({\n resellerProspect,\n}: UseCookieDisclaimerTO) {\n const { locale } = useLocalizationContext();\n const oneTrustId = useIsOneTrustEnabled();\n const consentRequired =\n !resellerProspect &&\n !oneTrustId &&\n Cookies?.get('cookieconsent_dismissed') !== 'yes';\n const { data: disclaimerContent } = useReusableCookieDisclaimer(\n locale,\n consentRequired\n );\n const isScriptInjected = useRef(false);\n const scriptRef = useRef<HTMLScriptElement | undefined>();\n const win = window as any;\n\n useEffect(() => {\n if (\n disclaimerContent &&\n (disclaimerContent.reusableContents?.length ?? 0) > 0\n ) {\n if (!isScriptInjected.current) {\n injectScriptInHead(\n '/cep/app/static/scripts/CookieDisclaimer/cookie-bar.js'\n );\n }\n isScriptInjected.current = true;\n if (scriptRef.current) {\n try {\n document.head.removeChild(scriptRef.current);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n scriptRef.current = injectDisclaimerElement(\n disclaimerContent.reusableContents[0].content\n );\n }\n }, [disclaimerContent]);\n\n useEffect(() => {\n if (\n consentRequired &&\n win &&\n win.cookieconsent_options &&\n win.update_cookieconsent_options\n ) {\n win.update_cookieconsent_options(win.cookieconsent_options);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [scriptRef.current]);\n}\n\nexport function injectDisclaimerElement(html: string) {\n try {\n const content = html.replaceAll('[', \"'\").replaceAll(']', \"'\");\n const customEL = document.createElement('script');\n customEL.innerHTML = content;\n document.head.appendChild(customEL);\n return customEL;\n } catch (e) {\n return undefined;\n }\n}\n","import { useIsAuthenticated } from 'mf_core/auth';\nimport { useApiGet, useApiQuery } from 'mf_core/query';\nimport { useQuery } from '@tanstack/react-query';\n\nexport function useReusableCookieDisclaimerV2(locale: string) {\n return useApiQuery<ReusableContent>(\n `/cms/v1/reusable-contents?title=Cookie Disclaimer&locale=${locale}`\n );\n}\n\n//workaround for loggedout mode\nexport function useReusableCookieDisclaimer(\n locale: string,\n isEnabled: boolean\n) {\n const isAuthenticated = useIsAuthenticated();\n const apiGet = useApiGet<ReusableContent>();\n const route = `/${\n isAuthenticated ? 'cms' : 'cms-noauth'\n }/v1/reusable-contents?title=Cookie Disclaimer&locale=${locale}`;\n const enabled = isEnabled;\n\n return useQuery({\n enabled: enabled,\n queryFn: () => apiGet(route),\n queryKey: [route],\n });\n}\n\nexport function useReusableContents({\n resellerProspect,\n strTitle,\n}: ReusableContentTO) {\n const params: ReusableContentRequest = {\n title: strTitle,\n };\n return useApiQuery<ReusableContent>('/cms/v1/reusable-contents', params, {\n enabled: !resellerProspect,\n });\n}\n\nexport type ReusableContent = {\n reusableContents: Content[];\n total: number;\n};\nexport type Content = {\n content: string;\n documentModifiedWhen?: string;\n title: string;\n};\ntype ReusableContentRequest = {\n title: string;\n};\n\nexport type ReusableContentTO = {\n resellerProspect: boolean;\n strTitle: string;\n};\n","import { useEffect } from 'react';\nimport { useLocalizationContext } from '@im/react-localization';\n\nexport function useHtmlLang() {\n const { locale } = useLocalizationContext();\n\n useEffect(() => {\n document.documentElement.lang = getLanguageFromLocale(locale);\n }, [locale]);\n}\n\nfunction getLanguageFromLocale(locale: string) {\n return locale.split('-')[0];\n}\n","import { useEffect, useState, useMemo } from 'react';\n\nimport { useBuildVars, useSiteConfig, useInX4AFrame } from 'mf_core/config';\nimport {\n useIsAuthenticated,\n useIsImpersonationMode,\n useDecodedToken,\n} from 'mf_core/auth';\nimport { useFeatureFlag } from 'mf_core/feature-flag';\n\nexport function useWhatfix(isFirstLogin: boolean) {\n const isAuthenticated = useIsAuthenticated();\n const { buildEnvironment } = useBuildVars();\n const { defaultLocale, siteCode } = useSiteConfig();\n const isImpersonationMode = useIsImpersonationMode();\n const { isInX4AFrame } = useInX4AFrame();\n\n const [isWhatfixUserActive, setIsWhatfixUserActive] = useState(false);\n const decodedToken = useDecodedToken();\n const { value: isWhatfixEnabled } = useFeatureFlag(\n 'im-platformcore-whatfix-isenabled'\n );\n\n const tokenData = useMemo(() => {\n const firstName: string = decodedToken?.imoProfile?.firstName || '';\n const lastName: string = decodedToken?.imoProfile?.lastName || '';\n return {\n email: decodedToken?.imoProfile?.emailAddress || '',\n language: defaultLocale,\n name: `${firstName}${\n firstName && lastName ? ` ${lastName}` : `${lastName}`\n }`,\n resellerId: decodedToken?.resellerId || '',\n userRoles: decodedToken?.role,\n uuid: decodedToken?.imoProfile?.userId,\n };\n }, [decodedToken, defaultLocale]);\n\n useEffect(() => {\n if (isAuthenticated && tokenData && !isImpersonationMode && !isInX4AFrame) {\n if (!window.whatfixUser) {\n //Initialize whatfix globals\n window.whatfixUser = {\n ...tokenData,\n uuid: window.btoa(tokenData.uuid),\n };\n setIsWhatfixUserActive(true);\n }\n }\n }, [\n defaultLocale,\n isAuthenticated,\n isImpersonationMode,\n isInX4AFrame,\n tokenData,\n ]);\n\n useEffect(() => {\n // Inject whatfix Script in HTML Head\n\n if (!isFirstLogin && isWhatfixUserActive && isWhatfixEnabled === 'true') {\n const whatfix = document.createElement('script');\n whatfix.type = 'text/javascript';\n whatfix.async = true;\n whatfix.src = `https://cdn.whatfix.com/prod/00f72a09-c312-47b3-b2be-d0afe4a9c9a3/initiator/initiator.nocache.js`;\n const s = document.getElementsByTagName('script')[0];\n if (s?.parentNode) {\n s.parentNode.insertBefore(whatfix, s);\n }\n }\n }, [\n buildEnvironment,\n isAuthenticated,\n isFirstLogin,\n isImpersonationMode,\n isInX4AFrame,\n isWhatfixUserActive,\n siteCode,\n isWhatfixEnabled,\n ]);\n}\n\ndeclare global {\n interface Window {\n whatfixUser?: {\n email: string;\n language: string;\n name: string;\n resellerId: string;\n userRoles: string[];\n uuid: string;\n };\n }\n}\n","export const PROSPECT_RESELLER_ROUTES = [\n '/resellermanagement/public',\n '/resellermanagement',\n '/reselleronboarding/resellerdetails',\n '/reselleronboarding/resellerdetails-v2',\n '/reselleronboarding/dashboard',\n '/reselleronboarding/successpage',\n '/reselleronboarding/docusign-redirect',\n];\n\nexport const PROSPECT_RESELLER_PUBLIC_ROUTES = [\n '/reselleronboarding/landing',\n '/reselleronboarding/registration',\n];\n","import React from 'react';\nimport { Navigate, useSearchParams } from 'react-router-dom';\n\ntype Props = {\n children: JSX.Element;\n urlList: string[];\n};\n\nexport function WhiteList(props: Props) {\n const { children, urlList } = props;\n\n const [searchParams] = useSearchParams();\n\n const url = (searchParams.get('url') || '').toLocaleLowerCase();\n\n if (!url || !urlList.includes(url)) {\n return <Navigate to=\"/\" />;\n }\n\n return children;\n}\n","import React from 'react';\nimport { Navigate, useSearchParams } from 'react-router-dom';\n\ntype Props = {\n children: JSX.Element;\n urlList: string[];\n};\n\nexport function BlackList(props: Props) {\n const { children, urlList } = props;\n\n const [searchParams] = useSearchParams();\n\n const url = (searchParams.get('url') || '').toLocaleLowerCase();\n\n if (!url || urlList.includes(url)) {\n return <Navigate to=\"/terms-and-conditions\" />;\n }\n\n return children;\n}\n","/* eslint-disable sort-keys */\nimport React, { lazy } from 'react';\nimport { Navigate, Outlet, RouteObject } from 'react-router-dom';\n\nimport {\n LoginCallbackView,\n Login,\n LogoutView,\n ProfileView,\n RequireAuth,\n TermsAndConditions,\n WelcomeVideo,\n} from 'mf_core/auth';\n\nimport { WhiteList } from './WhiteList';\nimport { BlackList } from './BlackList';\n\nconst FrameView = lazy(\n () =>\n import(/* webpackChunkName: \"FrameView\" */ '../../views/frame/FrameView')\n);\n\nconst AppCounterView = lazy(\n () =>\n import(\n /* webpackChunkName: \"AppCounterView\" */ '../../views/test/AppCounterView'\n )\n);\nconst DebugInfoView = lazy(\n () =>\n import(\n /* webpackChunkName: \"DebugInfoView\" */ '../../views/test/DebugInfoView'\n )\n);\nconst IframeTestView = lazy(\n () =>\n import(\n /* webpackChunkName: \"IframeTestView\" */ '../../views/test/IframeTestView'\n )\n);\nconst NoHeaderView = lazy(\n () =>\n import(\n /* webpackChunkName: \"NoHeaderView\" */ '../../views/test/NoHeaderView'\n )\n);\nconst RemoteDialogTestView = lazy(\n () =>\n import(\n /* webpackChunkName: \"RemoteDialogTestView\" */ '../../views/test/RemoteDialogTestView'\n )\n);\nconst PostMsgTestView = lazy(\n () =>\n import(\n /* webpackChunkName: \"PostMsgTestView\" */ '../../views/test/PostMsgTestView'\n )\n);\nconst NoMatchView = lazy(\n () => import(/* webpackChunkName: \"NoMatchView\" */ '../../views/NoMatchView')\n);\nconst DevToolView = lazy(\n () =>\n import(\n /* webpackChunkName: \"DeveloperTools\" */ '../../views/DeveloperTools'\n )\n);\n\n/**\n * url search params whitelist for `/frame-public` route\n * Note: whitelist uses lowercase url param\n * the param is converted to lowercase before comparing\n * */\nconst publicUrlWhiteList = ['/site/password/forgot'];\nconst imonlineTermsAndConditionsUrl = ['/site/login/termsandconditions'];\n\nexport function buildAppRoutes(\n authRoutes: RouteObject[],\n publicRoutes: RouteObject[]\n): RouteObject[] {\n return [\n ...publicRoutes,\n {\n path: 'my',\n element: <RequireAuth children={<Outlet />} />,\n children: [\n ...authRoutes,\n {\n path: 'profile',\n element: <ProfileView />,\n },\n ],\n },\n {\n path: 'login',\n element: <Login />,\n },\n {\n path: 'login/callback',\n element: <LoginCallbackView />,\n },\n {\n path: 'logout',\n element: <LogoutView />,\n },\n {\n path: 'welcome-video',\n element: <RequireAuth children={<WelcomeVideo />} />,\n },\n {\n path: 'terms-and-conditions',\n element: <RequireAuth children={<TermsAndConditions />} />,\n },\n // Test Views\n {\n path: 'debug-info',\n element: <DebugInfoView />,\n },\n {\n path: 'iframe-test',\n element: <IframeTestView />,\n },\n {\n path: 'test-hh',\n element: <NoHeaderView />,\n },\n {\n path: 'state-test',\n element: <AppCounterView />,\n },\n {\n path: 'post-msg-test',\n element: <PostMsgTestView />,\n },\n {\n path: 'remote-dialog-test',\n element: <RemoteDialogTestView />,\n },\n // Other Views\n {\n path: 'frame',\n element: (\n <BlackList\n children={<RequireAuth children={<FrameView />} />}\n urlList={imonlineTermsAndConditionsUrl}\n />\n ),\n },\n {\n path: 'frame-public',\n element: (\n <WhiteList children={<FrameView />} urlList={publicUrlWhiteList} />\n ),\n },\n {\n path: 'index',\n element: <Navigate replace to=\"/home\" />,\n },\n {\n path: 'index.html',\n element: <Navigate replace to=\"/home\" />,\n },\n {\n path: '/home',\n element: <Navigate replace to=\"/home\" />,\n },\n {\n path: '/',\n element: <Navigate replace to=\"/home\" />,\n },\n {\n path: '*',\n element: <NoMatchView />,\n },\n {\n path: '/developer-tools',\n element: <DevToolView />,\n },\n ];\n}\n","import {\n useAutoSignIn,\n useDecodedToken,\n useHasPermission,\n useIsAuthenticated,\n useIsFeatureWhitelisted,\n useIsImpersonationMode,\n useOktaContext,\n useRefreshAccessToken,\n} from 'mf_core/auth';\nimport { useInX4AFrame, useSiteConfig } from 'mf_core/config';\nimport { RenderRemoteDialog } from 'mf_core/dialog';\nimport { useLogoutContext } from 'mf_core/logout';\nimport { ScopeProvider } from 'mf_core/provider';\n/* eslint-disable max-lines */\n/* eslint-disable import/max-dependencies */\nimport React, { Suspense, useEffect, useMemo, useState } from 'react';\nimport {\n RouteObject,\n useLocation,\n useNavigate,\n useRoutes,\n} from 'react-router-dom';\nimport { CenterLoader } from '@im/ui-lib/CenterLoader';\nimport { useIsDown, useIsResolution } from '@im/ui-lib/responsive';\nimport Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\nimport { IngramBecomeReseller } from '../common/IngramBecomeReseller';\nimport { usePartnerWithUs } from '../common/IngramBecomeReseller/usePartnerWithUs';\nimport { IngramFooter } from '../common/IngramFooter';\nimport { IngramFooterLite } from '../common/IngramFooter/IngramFooterLite';\nimport { IngramHeader } from '../common/IngramHeader/IngramHeader';\nimport IngramHelpMenu from '../common/IngramHelpMenu/IngramHelpMenu';\nimport { IngramMobile } from '../common/IngramMobile';\nimport { IngramSideNav } from '../common/IngramSideNav';\nimport { useFeatureFlagBase } from '../hooks/use-feature-flag-base';\nimport { useNotifications } from '../hooks/use-notifications';\nimport { usePreferredLanguageChange } from '../hooks/use-preferred-language';\nimport { useXScroll } from '../hooks/use-x-scroll';\nimport { useAreWidgetsConfigured } from '../hooks/useAreWidgetsConfigured';\nimport { useCMPCardRedirect } from '../hooks/useCMPCardRedirect';\nimport { useGetSearchSuggestions } from '../hooks/useGetSearchSuggestions';\nimport { useImpersonationHeaderProps } from '../hooks/useImpersonationHeaderProps';\nimport { useTnCRedirect } from '../hooks/useTnCRedirect';\nimport { AutoLoginImOnlineFrame } from './AutoLoginImOnlineFrame';\nimport { DebugAccessToken } from './DebugAccessToken';\nimport { DebugToolbar } from './DebugToolbar';\nimport { FramedPageTitle } from './FramedPageTitle';\nimport { InvalidAccessToken } from './InvalidAccessToken';\nimport { PerformanceErrorAlert } from './PerformanceErrorAlert';\nimport { useScriptInjectors } from './injectors/injectors';\nimport { useOneTrust } from './injectors/useOneTrust';\nimport {\n PROSPECT_RESELLER_PUBLIC_ROUTES,\n PROSPECT_RESELLER_ROUTES,\n} from './prospectResellerPaths';\nimport { useAppRoutes } from './routes/useAppRoutes';\nimport { useAvatarProps } from './useAvatarProps';\nimport { useProcessPostMsgs } from './useProcessPostMsgs';\n\nconst win = window as any;\nconst HEADER_HEIGHT = 52;\nconst LEFT_NAV_WIDTH = 64;\nconst HIDE_SEARCHBAR_PRODUCT_VENDORS_COUNTRIES: Array<string> = ['br'];\nwin.LAYOUT_SPECS = {\n HEADER_HEIGHT: HEADER_HEIGHT,\n LEFT_NAV_WIDTH: LEFT_NAV_WIDTH,\n};\n\nlet flagTest = false;\n\nexport function App() {\n const checkURL = localStorage.getItem('conurl') || '';\n if (!flagTest && checkURL === '') {\n localStorage.setItem('conurl', window.location.search);\n flagTest = true;\n }\n useOneTrust();\n const isAuthenticated = useIsAuthenticated();\n const areWidgetsConfigured = useAreWidgetsConfigured();\n\n const decodedToken = useDecodedToken();\n const isImpersonationMode = useIsImpersonationMode();\n const showDebugToolBar = false;\n const resellerProspect = decodedToken?.resellerProspect || false;\n const appRoutes = useAppRoutes();\n const { idpLogin, siteCode } = useSiteConfig();\n\n useProcessPostMsgs();\n useCMPCardRedirect();\n useTnCRedirect({ isAuthenticated, isImpersonationMode, resellerProspect });\n usePreferredLanguageChange(isAuthenticated);\n\n const hasPermission = useHasPermission();\n const logoutContext = useLogoutContext();\n const [isLogoutEnabled, setIsLogoutEnabled] = useState(false);\n const [isTokenRefreshed, setTokenRefreshed] = useState(false);\n const [loaderText, setLoadingText] = useState('Common.LoaderText');\n\n useEffect(() => {\n if (logoutContext) {\n setIsLogoutEnabled(\n !logoutContext.isLoading && !!logoutContext.data?.isLogoutEnabled\n );\n }\n }, [logoutContext]);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const isTempDrawer = useIsDown('lg', true);\n useEffect(() => {\n setDrawerOpen(false);\n }, [isTempDrawer]);\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const isLogin = pathname === '/login' || pathname === '/campaign/login';\n const isForgotPassword = pathname === '/account/forgotpassword';\n const isResellerRegistration =\n pathname.toLocaleLowerCase() === '/reselleronboarding/registration';\n const isResellerDetailsV2 =\n pathname.toLocaleLowerCase() === '/reselleronboarding/resellerdetails-v2';\n const isDocusignRedirectIframe =\n pathname.toLocaleLowerCase() === '/reselleronboarding/docusign-redirect';\n const isNotAppstorePath = !pathname.includes('integrationshub');\n const isFrame = pathname === '/frame';\n const isPublicFrame = pathname === '/frame-public';\n const isCart = pathname === '/my/cart';\n const isCheckout =\n pathname.startsWith('/my/checkout') ||\n pathname === '/my/vendorRequestedInformation';\n const isQuoteItems = pathname === '/my/quotemgmt/quoteitems';\n const isDashboard = pathname === '/my/dashboard';\n const isInsightsV2 = pathname === '/insight/insights-v2';\n const isOrderConfirmation = pathname === '/my/orderConfirmation';\n const isCustomizationView = pathname === '/my/dashboardcustomization';\n const isPayment = /my\\/payment\\/.*-hh/.test(pathname);\n const isPaymentVerification = pathname.includes(\n '/my/checkout/verification-hh'\n );\n const isResellerProspectPublicRoute =\n PROSPECT_RESELLER_PUBLIC_ROUTES.includes(pathname?.toLowerCase());\n const showCartIconOnHeader =\n isAuthenticated && hasPermission(['CreateBaskets']);\n const { boValues, isReady } = useFeatureFlagBase();\n const enableAISuggestions = isReady\n ? boValues['Enable_AISuggestions'] === 'true'\n : false;\n const isCMPProductExcludedReseller = isReady\n ? boValues['CMP_Products_ExcludedResellers'] === 'true'\n : false;\n const useUrlEncoding = isReady\n ? boValues['X4C_Url_Encoding_Feature'] === 'true'\n : false;\n\n useEffect(() => {\n if (\n resellerProspect &&\n !PROSPECT_RESELLER_ROUTES.includes(pathname?.toLowerCase()) &&\n pathname !== '/logout'\n ) {\n navigate('/reselleronboarding/resellerdetails');\n }\n }, [pathname, resellerProspect, navigate]);\n\n useEffect(() => {\n localStorage.setItem('useUrlEncoding', useUrlEncoding ? 'true' : 'false');\n }, [useUrlEncoding]);\n\n const isMobile = useIsResolution({ max: 768 });\n const [isFirstLogin, setIsFirstLogin] = useState(true);\n const [isCreateDefaultBasket, setIsCreateDefaultBasket] = useState(false);\n\n useEffect(() => {\n setIsFirstLogin(\n pathname === '/welcome-video' || pathname === '/terms-and-conditions'\n );\n }, [pathname]);\n\n useEffect(() => {\n if (isAuthenticated && !isCreateDefaultBasket && !resellerProspect) {\n setIsCreateDefaultBasket(true);\n }\n }, [isAuthenticated, isCreateDefaultBasket, resellerProspect]);\n\n useScriptInjectors({ isFirstLogin, resellerProspect });\n\n const { isInX4AFrame, xvFrameConfig } = useInX4AFrame();\n\n const hideSideNav =\n (!isAuthenticated && !isLogoutEnabled) ||\n isLogin ||\n isForgotPassword ||\n isFirstLogin ||\n isOrderConfirmation ||\n isPaymentVerification ||\n isPayment ||\n (isCustomizationView && !areWidgetsConfigured) ||\n (isImpersonationMode && !isInX4AFrame) || //CTO app\n (isInX4AFrame && xvFrameConfig.hideSideNav) || //framed into X4A\n Boolean(resellerProspect) ||\n isResellerProspectPublicRoute ||\n isDocusignRedirectIframe;\n\n const hideHeader = Boolean(\n pathname\n .split('/')\n .find(\n (segment) =>\n segment.endsWith('-hh') ||\n segment.toLowerCase() === 'login' ||\n segment.toLowerCase() === 'forgotpassword'\n ) ||\n isFirstLogin ||\n xvFrameConfig.hideHeader ||\n isResellerRegistration ||\n isDocusignRedirectIframe\n );\n\n const hideFooter =\n isLogin ||\n isCheckout ||\n isFirstLogin ||\n isPayment ||\n isPaymentVerification ||\n isPublicFrame ||\n isResellerDetailsV2 ||\n isDocusignRedirectIframe ||\n (isImpersonationMode && xvFrameConfig.hideSideNav);\n\n const isFeatureWhitelisted = useIsFeatureWhitelisted();\n const isCmpWhitelisted = isFeatureWhitelisted('CMP');\n\n const getSearchSuggestions = useGetSearchSuggestions(\n isCmpWhitelisted,\n enableAISuggestions,\n isMobile,\n isCMPProductExcludedReseller\n );\n\n const avatarProps = useAvatarProps();\n const headerHeight = useMemo(() => {\n let headerHeight = HEADER_HEIGHT;\n if (hideHeader) headerHeight = 0;\n else if (showDebugToolBar) headerHeight = HEADER_HEIGHT + 40;\n win.LAYOUT_SPECS.HEADER_HEIGHT = headerHeight;\n return headerHeight;\n }, [hideHeader, showDebugToolBar]);\n\n const leftNavWidth = useMemo(() => {\n let leftNavWidth = LEFT_NAV_WIDTH;\n if (hideSideNav || isTempDrawer) leftNavWidth = 0;\n win.LAYOUT_SPECS.LEFT_NAV_WIDTH = leftNavWidth;\n return leftNavWidth;\n }, [hideSideNav, isTempDrawer]);\n\n type UserActionType = 'favorite' | 'notification' | 'cart';\n\n const onUserActionClick = (action: UserActionType) => {\n switch (action) {\n case 'favorite':\n navigate('product/favoriteproducts');\n break;\n case 'cart':\n navigate('my/cart');\n }\n };\n\n useEffect(() => {\n if (!isDashboard || !isCmpWhitelisted) return;\n setLoadingText('Common.LoaderText');\n const loaderTextTimeout = setTimeout(function () {\n setLoadingText('HomePage.LoaderText');\n }, 5000);\n return () => {\n clearTimeout(loaderTextTimeout);\n };\n }, [isCmpWhitelisted, isDashboard]);\n\n const centerLoaderText =\n isAuthenticated && isDashboard ? loaderText : undefined;\n\n const disableHeader = isCustomizationView && !areWidgetsConfigured;\n\n // Refresh access token if a user is already logged in (needed for impersonation mode)\n // Try to auto-login if a user is not logged in\n const { authState } = useOktaContext();\n const refreshAccessToken = useRefreshAccessToken();\n const autoSignIn = useAutoSignIn();\n\n useEffect(() => {\n if (authState && !isTokenRefreshed) {\n setTokenRefreshed(true);\n if (authState.isAuthenticated && !pathname.includes('/login/callback')) {\n refreshAccessToken();\n } else if (\n !idpLogin &&\n !pathname.includes('/login') &&\n !pathname.includes('/login/callback') &&\n !pathname.includes('/productsearch') &&\n !pathname.includes('/productdetails')\n ) {\n autoSignIn();\n }\n }\n }, [\n authState,\n idpLogin,\n isTokenRefreshed,\n refreshAccessToken,\n autoSignIn,\n pathname,\n ]);\n\n const impersonationHeaderProps = useImpersonationHeaderProps();\n\n const hideSearchBarProductVendorNav =\n HIDE_SEARCHBAR_PRODUCT_VENDORS_COUNTRIES.includes(siteCode) &&\n !isAuthenticated;\n\n const enableSearchOnQuote = isReady\n ? boValues['QM_EnableSearch_BO'] === 'true'\n : false;\n const hideSearchBar =\n hideSearchBarProductVendorNav ||\n isCheckout ||\n isFirstLogin ||\n isImpersonationMode ||\n (isQuoteItems && isReady && enableSearchOnQuote);\n\n const enableXScroll = useXScroll();\n\n const { isNotificationEnabled, notificationDropProps } = useNotifications(\n !isCheckout && !isImpersonationMode\n );\n const partnerWithUsData = usePartnerWithUs(!isAuthenticated);\n\n const trimAvatorPropsForResellerProspect = (avatarData: any) => {\n const { navItems, ...rest } = avatarData;\n return { ...rest, resellerProspect: true };\n };\n\n if (!appRoutes) {\n return <CenterLoader loaderText={centerLoaderText} />;\n }\n\n if (\n isMobile &&\n (isAuthenticated ||\n pathname === '/login' ||\n pathname === '/product/productdetails')\n ) {\n return <IngramMobile />;\n }\n\n return (\n <>\n <DebugAccessToken />\n <Box height=\"100vh\" position=\"relative\" role=\"main\" width=\"100vw\">\n {!hideHeader && (\n <div\n data-testid=\"HeaderSection\"\n style={\n disableHeader\n ? { opacity: '.6', pointerEvents: 'none' }\n : undefined\n }\n >\n {showDebugToolBar && <DebugToolbar />}\n <IngramHeader\n AvatarProps={\n resellerProspect\n ? trimAvatorPropsForResellerProspect(avatarProps)\n : avatarProps\n }\n enableAISuggestions={enableAISuggestions}\n getSearchSuggestions={getSearchSuggestions}\n impersonationHeaderProps={impersonationHeaderProps}\n isAuthenticated={Boolean(\n (authState !== null\n ? authState.isAuthenticated\n : isAuthenticated) && !isFirstLogin\n )}\n isCmpWhitelisted={isCmpWhitelisted}\n isLogoClickable={!isImpersonationMode}\n isMobile={isMobile}\n isNotificationEnabled={isNotificationEnabled}\n notificationDropProps={notificationDropProps}\n onMenuButtonClick={() => setDrawerOpen(!drawerOpen)}\n onUserActionClick={onUserActionClick}\n showAvatar={!isCheckout && !isImpersonationMode}\n showCartIcon={\n showCartIconOnHeader &&\n !isFirstLogin &&\n !isCheckout &&\n !isImpersonationMode\n }\n showCulturePicker={!isCheckout}\n showFavoritesIcon={\n !isCheckout && !isImpersonationMode && !resellerProspect\n }\n showImpersonationHeader={isImpersonationMode}\n showSeachBar={\n !hideSearchBar &&\n !resellerProspect &&\n !isResellerProspectPublicRoute &&\n isNotAppstorePath\n }\n />\n </div>\n )}\n <Box\n sx={{\n bottom: 0,\n left: isTempDrawer || hideSideNav ? 0 : leftNavWidth,\n position: 'absolute',\n right: 0,\n top: headerHeight,\n }}\n >\n <ScopeProvider scope={pathname}>\n {isFrame ? (\n <Suspense fallback={<CenterLoader />}>\n <FramedPageTitle url={search} />\n <RenderContent appRoutes={appRoutes} />\n </Suspense>\n ) : (\n <Box\n id=\"main-view\"\n sx={{\n backgroundColor:\n (isCmpWhitelisted && isDashboard) || isInsightsV2\n ? '#F6F7FB'\n : 'transparent',\n height: '100%',\n overflowX: enableXScroll ? 'auto' : 'hidden',\n overflowY: 'auto',\n width: '100%',\n }}\n >\n <PerformanceErrorAlert />\n <Box\n sx={{\n minWidth: enableXScroll ? '1024px' : 'unset',\n }}\n >\n <Root>\n <ScopeProvider scope={pathname}>\n <Suspense\n fallback={\n <CenterLoader loaderText={centerLoaderText} />\n }\n >\n <RenderContent appRoutes={appRoutes} />\n </Suspense>\n </ScopeProvider>\n </Root>\n {(!hideFooter &&\n (isCart ? (\n <IngramFooterLite />\n ) : (\n <IngramFooter\n footerAction={partnerWithUsData}\n isAuthenticated={isAuthenticated}\n isMobile={isMobile}\n />\n ))) ||\n null}\n </Box>\n </Box>\n )}\n <InvalidAccessToken />\n </ScopeProvider>\n </Box>\n {isReady && boValues['ACC_MGMT_EnableX4CReactUI'] ? (\n <></>\n ) : (\n <AutoLoginImOnlineFrame />\n )}\n {/* <AutoLoginImOnlineFrame /> */}\n <RenderRemoteDialog />\n\n {/* Drawer at the end so its menus are above the View */}\n {!hideSideNav && (\n <IngramSideNav\n drawerOpen={drawerOpen}\n headerHeight={headerHeight}\n hoverRequired={true}\n isAuthenticated={isAuthenticated}\n isCheckout={isCheckout}\n isMobile={isMobile}\n isTempDrawer={isTempDrawer}\n setDrawerOpen={setDrawerOpen}\n />\n )}\n {isMobile && !isAuthenticated\n ? null\n : !hideSideNav && !resellerProspect && <IngramHelpMenu />}\n {isLogoutEnabled && <IngramBecomeReseller data={partnerWithUsData} />}\n </Box>\n </>\n );\n}\n\nfunction RenderContent({ appRoutes }: { appRoutes: RouteObject[] }) {\n const content = useRoutes(appRoutes);\n return content;\n}\n\nconst Root = styled('div')(() => ({\n margin: 'auto',\n maxWidth: '1920px',\n minHeight: `calc(100vh - ${win.LAYOUT_SPECS.HEADER_HEIGHT}px)`,\n}));\n\ndeclare global {\n interface Window {\n OOo: any;\n }\n}\n","import { useEffect, useState } from 'react';\nimport { useGetWidgetConfig } from 'mf_shared/widget';\n\nexport function useAreWidgetsConfigured() {\n const [areWidgetsConfigured, setAreWidgetsConfigured] = useState(false);\n\n const { data } = useGetWidgetConfig();\n\n useEffect(() => {\n const selectedWidgets = data?.widgets.filter(\n (item: any) => item.isSelected\n );\n const hasWidgets = selectedWidgets ? selectedWidgets.length > 0 : false;\n\n setAreWidgetsConfigured(hasWidgets);\n }, [data?.widgets]);\n\n return areWidgetsConfigured;\n}\n","import { useMemo } from 'react';\nimport { RouteObject } from 'react-router-dom';\n\nimport { useMfsRoutes } from './useMfsRoutes';\nimport { buildAppRoutes } from './buildAppRoutes';\n\nexport function useAppRoutes() {\n const mfsRoutes = useMfsRoutes();\n\n return useMemo(() => {\n if (!mfsRoutes) {\n return;\n }\n\n const authRoutes = [] as RouteObject[];\n const publicRoutes = [] as RouteObject[];\n\n mfsRoutes.forEach(\n (route) => {\n if (route.path && route.path.startsWith('my/')) {\n const clonedRoute: RouteObject = {\n ...route,\n path: route.path.substring('my/'.length),\n };\n authRoutes.push(clonedRoute);\n } else {\n publicRoutes.push(route);\n }\n },\n [mfsRoutes]\n );\n\n return buildAppRoutes(authRoutes, publicRoutes);\n }, [mfsRoutes]);\n}\n","import { useEffect, useState } from 'react';\nimport { RouteObject } from 'react-router-dom';\nimport { getMfsRoutes } from 'mf_core/routing';\n\nimport { mfNames } from '../mfNames';\n\nexport function useMfsRoutes() {\n const [routes, setRoutes] = useState<RouteObject[] | undefined>();\n\n useEffect(() => {\n let active = true;\n (async () => {\n const result = await getMfsRoutes(mfNames);\n if (active) {\n setRoutes(result);\n }\n })();\n return () => {\n active = false;\n };\n }, []);\n\n return routes;\n}\n","/* istanbul ignore file */\nimport { useCallback, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useOpenDialog } from 'mf_core/dialog';\nimport {\n PostMsg,\n startListening,\n stopListening,\n respondToMsgWith,\n} from '@im/post-msg';\n\nexport function useProcessPostMsgs() {\n const openDialog = useOpenDialog();\n const navigate = useNavigate();\n\n const onMsgReceived = useCallback(\n (msg: PostMsg) => {\n switch (msg.action) {\n case 'navigate':\n navigate(msg.details as string);\n break;\n case 'navigateWithProps': {\n const details = msg.details as any;\n navigate(details.route as string, {\n state: { sentProps: details.props },\n });\n break;\n }\n // Naviagtion implemented for Renewals (SPLA) to Checkout\n case 'navigateFromSPLAtoCheckout': {\n const details = msg.details as any;\n navigate(details.route as string, {\n state: { ...details.props },\n });\n break;\n }\n case 'openDialog':\n {\n const { dialogId, dialogParams } = msg.details as any;\n\n let onClose = undefined;\n // If request and known source\n if (msg.msgType === 'ask' && msg.msgFrom) {\n onClose = (answer?: unknown) => {\n // console.log('respondTo', msg.msgId, answer);\n respondToMsgWith(msg, answer);\n };\n }\n\n openDialog(dialogId, dialogParams, onClose);\n }\n break;\n\n default:\n console.warn('[useProcessPostMsgs] unknown message:', msg);\n }\n },\n [navigate, openDialog]\n );\n\n useEffect(() => {\n startListening(onMsgReceived);\n return () => {\n stopListening();\n };\n }, [onMsgReceived]);\n}\n","import { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport Cookies from 'js-cookie';\n\nimport { useProfileData } from './useProfileData';\nimport { useReusableContents } from './use-cookie-disclaimer';\nimport { useIsCepWhitelisted } from './useIsCepWhitelisted';\n\nexport function useTnCRedirect({\n isAuthenticated,\n isImpersonationMode,\n resellerProspect = false,\n}: {\n isAuthenticated: boolean;\n isImpersonationMode: boolean;\n resellerProspect: boolean;\n}) {\n const navigate = useNavigate();\n\n const isCepWhitelisted = useIsCepWhitelisted(resellerProspect);\n const profileData = useProfileData(resellerProspect);\n const termsData = useReusableContents({\n resellerProspect,\n strTitle: 'Terms and Conditions',\n });\n\n useEffect(() => {\n //Impersonation mode: TnC should be skipped\n if (isImpersonationMode) return;\n if (isAuthenticated) {\n if (!isCepWhitelisted) {\n Cookies.remove('IMOnline_CEP');\n window.location.href = `${window.location.origin}/site/login/idplogin`;\n } else if (\n !profileData.isFetching &&\n profileData.status === 'success' &&\n termsData.status === 'success' &&\n profileData.data\n ) {\n if (profileData.data.dateLastTermsConditionsAcceptance) {\n if (\n termsData.data.reusableContents.length > 0 &&\n termsData.data.reusableContents[0].documentModifiedWhen\n ) {\n const acceptanceDate = new Date(\n profileData.data.dateLastTermsConditionsAcceptance\n );\n const modifiedDate = new Date(\n termsData.data.reusableContents[0].documentModifiedWhen\n );\n if (acceptanceDate < modifiedDate) {\n navigate('/terms-and-conditions', {\n state: { isCepWhitelisted },\n });\n return;\n }\n }\n } else {\n navigate('/terms-and-conditions', {\n state: { isCepWhitelisted },\n });\n return;\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isAuthenticated,\n isCepWhitelisted,\n isImpersonationMode,\n profileData.status,\n termsData.status,\n navigate,\n ]);\n}\n","import { useApiQuery } from 'mf_core/query';\nimport { useIsAuthenticated } from 'mf_core/auth';\n\nexport function useIsCepWhitelisted(isProspectUser = false) {\n const isAuthenticated = useIsAuthenticated();\n const { data } = useApiQuery<boolean>(\n '/account-management/v1/widget-configurations/iscepwhitelisted',\n undefined,\n { enabled: isAuthenticated && !isProspectUser }\n );\n return data ?? true;\n}\n","import { useApiQuery } from 'mf_core/query';\n\nexport function useProfileData(resellerProspect = false) {\n return useApiQuery(`/account-management/v1/users/me`, undefined, {\n enabled: !resellerProspect,\n });\n}\n","import { useEffect, useRef } from 'react';\nimport { useLocalizationContext } from '@im/react-localization';\n\nimport { usePreferredLanguageMutation } from './usePreferredLanguage';\n\nexport const usePreferredLanguageChange = (isAuthenticated: boolean) => {\n const { locale } = useLocalizationContext();\n const initialLocaleLanguage = useRef(locale);\n const preferredLanguageMutation = usePreferredLanguageMutation(locale);\n\n useEffect(() => {\n if (locale !== initialLocaleLanguage.current && isAuthenticated) {\n preferredLanguageMutation.mutate();\n initialLocaleLanguage.current = locale;\n }\n }, [locale, preferredLanguageMutation, isAuthenticated]);\n};\n","import { useApiPatch } from 'mf_core/query';\nimport { useMutation } from '@tanstack/react-query';\n\nexport function usePreferredLanguageMutation(language: string) {\n const apiPatch = useApiPatch();\n const body = { language };\n\n return useMutation({\n mutationFn: () => {\n const data = apiPatch(\n `/account-management/v1/users/preferred-language`,\n body\n );\n\n return data;\n },\n });\n}\n","import { useApiGet } from 'mf_core/query';\nimport { useSiteConfig } from 'mf_core/config';\nimport { useTranslate } from '@im/react-localization';\n\nexport function useGetSearchSuggestions(\n isCmpWhitelisted: boolean,\n enableAISuggestions: boolean,\n isMobile: boolean,\n isCMPProductExcludedReseller: boolean\n) {\n const apiGet = useApiGet<SearchResponse[]>({ isLogoutApi: true });\n\n // eslint-disable-next-line no-nested-ternary\n let url = enableAISuggestions\n ? '/product/v1/aisuggestedcategoryoptions'\n : isCmpWhitelisted\n ? '/product/v1/suggestedcategoryoptions'\n : '/product/v1/suggestedcategories';\n\n if (isMobile) url = '/product/v1/suggestedcategories';\n\n const { siteCode } = useSiteConfig();\n const translate = useTranslate();\n return async (term: string) => {\n const result = await apiGet(url, {\n isCMPWhitelisted: isCmpWhitelisted,\n isCloudProductEnabled: !isCMPProductExcludedReseller,\n term,\n });\n const newResult = result\n ? result.map((element) => {\n if (\n element?.category &&\n siteCode &&\n siteCode.toLowerCase() === 'it'\n ) {\n const categoryTrans = translate(`CommonSearch.${element.category}`);\n return { ...element, category: categoryTrans };\n }\n return element;\n })\n : [];\n return newResult || [];\n };\n}\n\ntype Option = {\n isCloudSuggestion: boolean;\n source: string;\n suggestion: string;\n};\n\ntype SearchResponse = {\n category: string;\n suggestions: string[] | Option[];\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { NavItem } from '@im/ui-lib/nav';\nimport {\n useDecodedToken,\n useHasPermission,\n useIsFeatureWhitelisted,\n} from 'mf_core/auth';\nimport { framedRoute } from './nav/utils';\nimport { useBuildVars, useSiteConfig } from 'mf_core/config';\nimport {\n Configurator,\n useConfiguratorMenuQuery,\n} from '../hooks/use-configuratormenu';\nimport { useFeatureFlagBase } from '../hooks/use-feature-flag-base';\n\nexport function useAvatarProps() {\n const navigate = useNavigate();\n const { siteCode } = useSiteConfig();\n const decodedToken = useDecodedToken();\n const { buildEnvironment } = useBuildVars();\n const isFeatureWhitelisted = useIsFeatureWhitelisted();\n const isCmpWhitelisted = isFeatureWhitelisted('CMP');\n const { data: configuratorResponse } = useConfiguratorMenuQuery();\n const [configuratorMenus, setConfiguratorMenus] = useState<\n NavItem[] | undefined\n >(undefined);\n const [isNavigationRequired, setIsNavigationRequired] = useState();\n const hasPermission = useHasPermission();\n const { boValues, isReady } = useFeatureFlagBase();\n\n // used to enable legacy IMO Report Preferences\n const isReportPreferencesEnabled = useMemo(() => {\n const whitelist = boValues['Reseller_Whitelist_For_Order_Status_Tracking'];\n const resellerId = decodedToken?.resellerId;\n return (\n hasPermission(['ResellerAdmin']) &&\n isNavigationRequired === 'true' &&\n Boolean(isReady) &&\n boValues['ACC_MGMT_EPP_WhitelistedResellers'] !== 'true' &&\n boValues['Enable_Order_Status_Report'] === 'true' &&\n Boolean(\n whitelist?.trim() === '*' || whitelist?.split(',')?.includes(resellerId)\n )\n );\n }, [\n boValues,\n decodedToken?.resellerId,\n hasPermission,\n isNavigationRequired,\n isReady,\n ]);\n\n useEffect(() => {\n if (configuratorResponse && configuratorResponse.externalHost) {\n const menuItems: NavItem[] = [];\n configuratorResponse.externalHost.forEach((item: Configurator) => {\n if (item.openUrlInNewTab) {\n menuItems.push({\n key: item.name,\n label: item.name,\n url: item.url,\n });\n } else {\n menuItems.push({\n key: item.name,\n label: item.name,\n route: `/my/productconfigurator/cms?page=${item.nodeAliasPath}`,\n });\n }\n });\n setConfiguratorMenus(menuItems);\n }\n }, [configuratorResponse]);\n useEffect(() => {\n setIsNavigationRequired(boValues['ACC_MGMT_EnableX4CReactUI']);\n }, [boValues]);\n return useMemo(() => {\n return {\n firstName: decodedToken?.firstName || '',\n lastName: decodedToken?.lastName || '',\n navItems: [\n {\n key: 'myprofile.AccountSettings',\n route:\n isNavigationRequired === 'false' ||\n isNavigationRequired === undefined\n ? framedRoute('/Site/MyProfile')\n : '/my/account/accountsettings',\n },\n isReportPreferencesEnabled\n ? {\n key: 'myprofile.ReportPreferences',\n route: framedRoute('/Site/MyProfile/ReportPreferences'),\n }\n : null,\n isNavigationRequired === 'true' &&\n isReady &&\n boValues['ACC_MGMT_Enable_BrandingPreferences'] === 'true' &&\n hasPermission(['CreateQuotes'])\n ? {\n key: 'myprofile.BrandingPreferences',\n route: framedRoute('/Site/MyProfile/BrandingPreferences'),\n }\n : null,\n !isCmpWhitelisted\n ? {\n key: 'myprofile.CustomizeHomepage',\n route: '/my/dashboardcustomization',\n }\n : null,\n {\n key: 'myprofile.SavedCarts',\n route: '/my/savedcarts',\n },\n siteCode === 'fr'\n ? {\n key: 'myprofile.CarteBlue',\n route: '/my/payment/payline',\n }\n : null,\n configuratorMenus && configuratorMenus.length > 0\n ? {\n key: 'myprofile.Configurators',\n navItems: configuratorMenus,\n }\n : null,\n buildEnvironment.startsWith('staging') && {\n key: 'Developer tools',\n route: '/developer-tools',\n },\n // remove null entries from array\n ].filter(Boolean) as unknown as NavItem[],\n onLogoutClick: () => navigate('/logout'),\n resellerID: decodedToken?.resellerId,\n username: decodedToken?.imoProfile?.displayUserName,\n };\n }, [\n buildEnvironment,\n configuratorMenus,\n hasPermission,\n navigate,\n decodedToken,\n siteCode,\n isCmpWhitelisted,\n isNavigationRequired,\n boValues,\n isReady,\n isReportPreferencesEnabled,\n ]);\n}\n","import { useLocalizationContext } from '@im/react-localization';\nimport { useApiQuery } from 'mf_core/query';\n\nexport function useConfiguratorMenuQuery() {\n const { locale } = useLocalizationContext();\n return useApiQuery<ConfiguratorMenu>(\n `/cms/v1/external-host?HostType=Configurator&locale=${locale}`\n );\n}\nexport type ConfiguratorMenu = {\n externalHost: Configurator[];\n};\nexport type Configurator = {\n loggedInOnly: boolean;\n name: string;\n nodeAliasPath: string;\n openUrlInNewTab: boolean;\n sendLoginInformation: boolean;\n url: string;\n};\n","import { useApiPost } from 'mf_core/query';\nimport { useMutation } from '@tanstack/react-query';\n\nexport function useDisableImpersonationMode() {\n const apiPost = useApiPost<any>();\n\n return useMutation({\n mutationFn: () => {\n return apiPost('/impersonation/v2/x4c/disable', {});\n },\n onSuccess: () => {\n window.location.reload();\n },\n });\n}\n","import { useLocation } from 'react-router';\nimport { useIsResolution } from '@im/ui-lib/responsive';\nimport { useInX4AFrame } from 'mf_core/config';\n\nexport function useXScroll() {\n const isLowResolution = useIsResolution({ max: 1024 });\n const { isInIM360Frame } = useInX4AFrame();\n const { pathname } = useLocation();\n\n document.getElementById('loaderDiv')?.remove();\n\n const scrollablePages = [\n '/my/cart',\n '/my/checkout',\n '/my/checkout/new',\n '/my/ordertracking/v3/ordersearch',\n ];\n\n const enableXScroll =\n (isLowResolution || isInIM360Frame) && scrollablePages.includes(pathname);\n\n return enableXScroll;\n}\n","import { NotificationDropProps } from '@im/ui-lib/HeaderX4C/internal/NotificationDrop/NotificationDrop';\nimport { Notification } from '@im/ui-lib/HeaderX4C/internal/NotificationDrop/NotificationItem';\nimport { usePushNotifications } from 'mf_shared/hooks';\nimport { useFeatureFlagBase } from './use-feature-flag-base';\nimport { useNavigate } from 'react-router-dom';\nimport { useIsFeatureWhitelisted } from 'mf_core/auth';\n\nexport function useNotifications(isEnabled: boolean) {\n const isFeatureWhitelisted = useIsFeatureWhitelisted();\n const isCmpWhitelisted = isFeatureWhitelisted('CMP');\n\n const { boValues, isReady } = useFeatureFlagBase();\n const X4C_PushNotifications_Enabled = isReady\n ? boValues['X4C_PushNotifications_Enabled'] === 'true'\n : false;\n const isNotificationEnabled: boolean =\n isEnabled && isReady && X4C_PushNotifications_Enabled && isCmpWhitelisted;\n\n const navigate = useNavigate();\n\n const { apiQuery, markAllAsRead } = usePushNotifications(\n isNotificationEnabled\n );\n\n const unReadCount = apiQuery.data?.filter(\n (notification: Notification) => !notification.isRead\n ).length;\n\n const notificationDropProps: NotificationDropProps = {\n markAllAsRead,\n notifications: apiQuery.data || [],\n openNotifications: () => {\n navigate('my/account/notifications');\n },\n showWelcomeMsg: true,\n unReadCount: unReadCount || 0,\n };\n\n return { isNotificationEnabled, notificationDropProps };\n}\n","import { useLocalizationContext } from '@im/react-localization';\nimport { CopyRightTO } from '@im/ui-lib/types';\nimport { useApiQuery } from 'mf_core/query';\nimport { useCallback, useMemo } from 'react';\nimport { useNavigate } from 'react-router';\n\nexport function usePartnerWithUs(enabled: boolean) {\n const { locale } = useLocalizationContext();\n const navigate = useNavigate();\n const query = useApiQuery<GetCopyRightsResponseTO>(\n `/cms-noauth/v1/quick-links`,\n {\n type: 'PartnerWithUs',\n typelang: locale,\n },\n { enabled },\n undefined,\n { isLogoutApi: true }\n );\n const data = query.data?.items?.length ? query.data.items[0] : undefined;\n const onClick = useCallback(() => {\n if (data) {\n if (data.openUrlInNewTab) {\n window.open(data.url, '_blank');\n } else if (data.url?.startsWith('/cep/app/')) {\n navigate(data.url?.replace('/cep/app/', '/') ?? '/');\n } else {\n window.open(data.url, '_self');\n }\n }\n }, [data, navigate]);\n\n return useMemo(() => {\n return data\n ? ({\n onClick,\n openUrlInNewTab: data.openUrlInNewTab,\n title: data.title,\n trackingTag: data.trackingTag,\n url: data.url,\n } as CopyRightTO)\n : undefined;\n }, [data, onClick]);\n}\n\ntype GetCopyRightsResponseTO = {\n items: QuickLinkDataTO[];\n};\n\ntype QuickLinkDataTO = {\n isModel: boolean;\n onClick: string;\n openUrlInNewTab: boolean;\n title: string;\n trackingTag: string;\n url: string;\n};\n","import React, { useEffect } from 'react';\nimport { useLocation } from 'react-router';\n\nexport const ScrollToTop = (props: any) => {\n const location = useLocation();\n useEffect(() => {\n const excludedRoute = location.pathname.includes('/product/productsearch');\n if (!excludedRoute) {\n setTimeout(() => {\n document\n .querySelector('#main-view')\n ?.scrollTo({ behavior: 'smooth', top: 0 });\n }, 500);\n }\n }, [location.pathname]);\n\n return <>{props.children}</>;\n};\n","/* istanbul ignore file */\n// eslint-disable-next-line import/no-unassigned-import\nimport './data-dog-rum';\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport Cookies from 'js-cookie';\n\nimport { App } from './App';\nimport { AppProviders } from 'mf_core/provider';\n\n// eslint-disable-next-line import/no-unassigned-import\nimport type {} from '@im/im-theme/themeAugmentation';\n\nimport { ScrollToTop } from './ScrollToTop';\n\nCookies.set('IMOnline_CEP', 'true');\n\nconst container = document.getElementById('root') as HTMLElement;\nconst root = createRoot(container);\nroot.render(\n <AppProviders basename=\"/cep/app\" envVars={process.env}>\n <ScrollToTop />\n <App />\n </AppProviders>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n// reportWebVitals();\n","/* eslint-disable no-nested-ternary */\nimport { NavItem } from '@im/ui-lib/mf-utils';\n\nexport function framedRoute(path: string) {\n return `/frame?url=${encodeURIComponent(path)}`;\n}\n\nexport function validateProperty(\n menuData: any,\n property: string,\n index: number\n): string {\n return menuData &&\n menuData.menuitems &&\n menuData.menuitems.length > 0 &&\n menuData.menuitems[index] &&\n menuData.menuitems[index][property]\n ? menuData.menuitems[index][property]\n : '';\n}\n\nexport function buildNavMenuItem(menuData: any, locale: string): NavItem[] {\n const navItems: NavItem[] = [];\n locale = locale?.toLowerCase();\n\n const count =\n menuData && menuData.total && menuData.total > 0 ? menuData.total : 0;\n\n if (menuData && count > 0) {\n for (let i = 0; i < count; i++) {\n const pageName = validateProperty(menuData, 'pageName', i);\n const pagePath = validateProperty(menuData, 'partialPageUrl', i);\n const subMenu = menuData.menuitems[i].subMenu;\n const route = `cms/${locale}/${pagePath}`;\n if (subMenu.length > 0) {\n const subItems = subMenu.map((menu: any) => {\n return {\n key: menu.pageName,\n label: menu.pageName,\n route: `cms/${locale}/${menu.partialPageUrl}`,\n };\n });\n navItems.push({\n key: pageName,\n label: pageName,\n navItems: subItems,\n route: pagePath && route,\n });\n } else if (pageName !== '') {\n navItems.push({\n key: pageName,\n label: pageName,\n route,\n });\n }\n }\n }\n return navItems;\n}\n\nexport function handleKenticoOnClick(fn: string) {\n return () => {\n try {\n // eslint-disable-next-line no-new-func\n new Function(fn)();\n } catch (e) {\n console.error(e);\n }\n };\n}\n\nexport function buildHelpMenuItem(menuData: any): NavItem[] {\n const navItems: NavItem[] = [];\n\n const hasData = menuData && menuData.length > 0;\n\n if (hasData) {\n for (const item of menuData) {\n const menuItem = {\n key: item.title,\n label: item.title,\n onClick: item.isModel ? handleKenticoOnClick(item.onClick) : undefined,\n route: item.openUrlInNewTab ? undefined : item.url,\n url: item.openUrlInNewTab ? item.url : undefined,\n } as NavItem;\n navItems.push(menuItem);\n }\n }\n return navItems;\n}\n\nexport const getCloudServicesLink = (env: string, country: string) => {\n if (country === 'gb') country = 'uk';\n return `https://cp.${country}${\n env === 'production'\n ? '.na'\n : env === 'productionbeta'\n ? '.prodbeta.na'\n : '.stg'\n }.cloud.im/?external_idp=IMOnline`;\n};\n\nexport enum CountryCode {\n CA = 'ca',\n DE = 'de',\n ES = 'es',\n FR = 'fr',\n GB = 'gb',\n IN = 'in',\n IT = 'it',\n MX = 'mx',\n UK = 'uk',\n US = 'us',\n}\n\nexport const applicationCenterAvailability = ({\n siteCode,\n}: {\n siteCode: string;\n}) => {\n const countryCodes = Object.values(CountryCode) as string[];\n return countryCodes.includes(siteCode);\n};\n","import React from 'react';\nimport { Footer } from '@im/ui-lib/Footer';\nimport { useLocalizationContext } from '@im/react-localization';\nimport { useFooterColumns } from './useFooterColumns';\nimport { useSocialMedias } from './useSocialMedias';\nimport { useCopyrightLinks } from './useCopyrightLinks';\nimport { FooterMobile } from '@im/ui-lib/Footer/FooterMobile';\nimport { CopyRightTO } from '@im/ui-lib/types';\n\ntype Props = {\n footerAction?: CopyRightTO;\n isAuthenticated: boolean;\n isMobile: boolean;\n};\n\nexport function IngramFooter(props: Props) {\n const { locale } = useLocalizationContext();\n const { footerAction, isAuthenticated, isMobile } = props;\n const { data } = useFooterColumns(locale);\n const socialMedias = useSocialMedias(locale);\n const copyRightLinks = useCopyrightLinks();\n\n const footerColumns: any = data?.footers;\n\n if (!copyRightLinks) return null;\n\n if (isMobile && !isAuthenticated) {\n return (\n <FooterMobile\n appStore={socialMedias?.appStore}\n copyRightLinks={copyRightLinks}\n footerAction={footerAction}\n footerColumns={footerColumns}\n socialMedias={socialMedias?.socialMedia}\n />\n );\n } else {\n return (\n <Footer\n appStore={socialMedias?.appStore}\n copyRightLinks={copyRightLinks}\n footerColumns={footerColumns}\n socialMedias={footerColumns ? socialMedias?.socialMedia : undefined}\n />\n );\n }\n}\n","import { useCMSApiQuery } from '../../hooks/useCMSApiQuery';\n\nexport function useFooterColumns(locale: string) {\n return useCMSApiQuery<GetFootersResponseTO>('/cms/v1/footers', {\n culture: locale,\n });\n}\n\ntype GetFootersResponseTO = {\n footers: FooterColumnTO;\n};\n\ntype FooterColumnTO = {\n footerColumn: {\n linkText: string | null;\n linkUrl: string | null;\n links: LinkTO[];\n name: string;\n openInNewWindow: boolean;\n };\n};\n\ntype LinkTO = {\n email: string;\n iconImage: string;\n iconValueType: string;\n linkText: string;\n linkType: string;\n linkUrl: string;\n mobile: string;\n name: string;\n openInNewWindow: boolean;\n};\n","import { useCMSApiQuery } from '../../hooks/useCMSApiQuery';\n\nexport function useSocialMedias(locale: string) {\n const query = useCMSApiQuery<GetSocialMediaResponseTO>(\n '/cms/v1/social-medias',\n {\n culture: locale,\n }\n );\n return query.data;\n}\n\ntype GetSocialMediaResponseTO = {\n appStore: SocialMediaTO[];\n socialMedia: SocialMediaTO[];\n};\n\ntype SocialMediaTO = {\n iconImage: string;\n name: string;\n url: string;\n};\n","import { useLocalizationContext } from '@im/react-localization';\nimport { CopyRightTO } from '@im/ui-lib/types';\nimport { handleKenticoOnClick } from '../../app/nav/utils';\nimport { useCMSApiQuery } from '../../hooks/useCMSApiQuery';\n\nexport function useCopyrightLinks() {\n const { locale } = useLocalizationContext();\n const query = useCMSApiQuery<GetCopyRightsResponseTO>(`/cms/v1/quick-links`, {\n type: 'FooterCopyright',\n typelang: locale, //param added to create dependency on locale\n });\n //Mapper for Copyright Data\n return query.data?.items?.map((x: CopyRightDataTO) => {\n return {\n onClick:\n x.isModel && x.onClick ? handleKenticoOnClick(x.onClick) : undefined,\n openUrlInNewTab: x.openUrlInNewTab,\n route:\n x.openUrlInNewTab === false && x.url.startsWith('/cep/app/')\n ? x.url?.replace('/cep/app/', '/')\n : undefined,\n title: x.title,\n trackingTag: x.trackingTag,\n url: x.url,\n } as CopyRightTO;\n });\n}\n\ntype GetCopyRightsResponseTO = {\n items: CopyRightDataTO[];\n};\n\ntype CopyRightDataTO = {\n isModel: boolean;\n onClick: string;\n openUrlInNewTab: boolean;\n title: string;\n trackingTag: string;\n url: string;\n};\n","import { useOktaContext } from 'mf_core/auth';\nimport { useLogoutContext } from 'mf_core/logout';\nimport { ExtraHeaders, ObjectMap, useApiQuery } from 'mf_core/query';\nimport { UseQueryOptions } from '@tanstack/react-query';\n\n/** Wrapper for CMS API queries to handle logout mode operations + UserLoggedIn data mandatory */\nexport function useCMSApiQuery<TO = ObjectMap>(\n route: string,\n params?: ObjectMap,\n useQueryOptions?: Partial<UseQueryOptions<TO>>,\n extraHeaders?: ExtraHeaders\n) {\n const oktaContext = useOktaContext();\n const isAuthenticated = Boolean(oktaContext?.authState?.isAuthenticated);\n const cmsData = useLogoutContext();\n route = isAuthenticated ? route : route.replace('/cms/v1', '/cms-noauth/v1');\n\n return useApiQuery<TO>(\n route,\n { ...params, UserLoggedIn: isAuthenticated },\n useQueryOptions,\n extraHeaders,\n {\n isLogoutApi: !isAuthenticated && !!cmsData?.data?.isLogoutEnabled,\n }\n );\n}\n"],"names":["isLocalDev","window","location","origin","indexOf","fullStoryUrlRegex","__DATADOG_INITIALIZED__","datadogRum","allowedTracingUrls","applicationId","beforeSend","event","context","type","resource","response","headers","responseHeaders","Object","fromEntries","xhr","test","responseURL","shouldDiscard","clientToken","defaultPrivacyLevel","excludedActivityUrls","service","sessionReplaySampleRate","sessionSampleRate","site","env","trackLongTasks","trackResources","trackSessionAcrossSubdomains","trackUserInteractions","usePartitionedCrossSiteSessionCookie","version","IngramBecomeReseller","props","data","ready","setReady","useState","isAuthenticated","useIsAuthenticated","useEffect","timer","setTimeout","clearTimeout","isMobile","useMediaQuery","React","onClick","StickyButton","link","IngramFooterLite","copyRightLinks","useCopyrightLinks","Footer","useFeatureFlagBase","isReady","refetch","value","boValues","useFeatureFlag","IngramHeader","AvatarProps","enableAISuggestions","getSearchSuggestions","impersonationHeaderProps","isCmpWhitelisted","isLogoClickable","isNotificationEnabled","notificationDropProps","onMenuButtonClick","onUserActionClick","showAvatar","showCartIcon","showCulturePicker","showFavoritesIcon","showImpersonationHeader","showSeachBar","decodedToken","useDecodedToken","userType","imoProfile","isFlagLoaded","isInsightsMessagingQueue","isFeatureEnabled","isQuickInsightsRollDownEnabled","isEndUserFeatureEnabled","isInsightsDropOpen","setIsInsightsDropOpen","isInsightsButtonClicked","setIsInsightsButtonClicked","insightEnabledPage","setInsightEnabledPage","hasInsigtData","setHasInsightData","updateInsightDataStatus","useCallback","hasData","hasPermission","useHasPermission","useLocation","enableRollDownForInsightsPaths","navigate","useNavigate","cartItemsCount","query","useApiQuery","lineCount","useCartItemsCount","closeInsightsDrop","setCloseInsightsDrop","enableUserManagement","enableInsightsFrameWork","disableCartIconOnAddToCart","isAddToCartPending","useIsMutating","mutationKey","dismissAllHandler","prevCloseInsightsDrop","getVisitedPageInfo","currentPagePath","JSON","parse","localStorage","getItem","includes","onQuickInsightsRollDown","pathname","search","onClickInsightsCenter","navigateLink","flag","QuoteCheckoutBtnStatus","setDigitalData","dataStatus","HeaderX4CMobile","Header","NotificationProps","disableCartIcon","endUserIcon","EndUserIcon","undefined","endUserTitle","hasInsightData","insightsContent","QuickInsights","hasInsightsData","InsightsMessagingQueue","maxDropHeight","isEndUserLogin","page","showInsightsIcon","showNotificationIcon","alt","src","width","featureName","MAX_CACHE_TIME","useHelpNavItems","locale","useLocalizationContext","help","useApiQueryForCms","gcTime","staleTime","useHelpMenuQuery","useMemo","buildHelpMenuItem","items","IngramHelpMenu","helpNavItems","length","HelpMenu","height","key","left","marginTop","navItems","IngramMobile","siteCode","useSiteConfig","buildEnvironment","useBuildVars","isNewHeader","iosLink","anroidLink","translate","useLocalization","Box","padding","sm","xs","IngramLogo","sx","alignItems","bgcolor","justifyContent","verticalAlign","textAlign","Typography","fontSize","fontWeight","Stack","direction","spacing","mt","href","align","color","theme","palette","text","secondary","backgroundImage","backgroundPosition","backgroundRepeat","variant","year","Date","getFullYear","toString","useMyBusinessMenu","voucherEnabledCountries","at","ch","de","dk","es","fi","fr","gb","hu","it","pt","se","useProductMenuQuery","enabled","culture","isLogoutApi","useServicesMenuQuery","useCMSApiQuery","useSolutionsMenuQuery","useVendorsMenuQuery","HIDE_SEARCHBAR_PRODUCT_VENDORS_COUNTRIES","useSideNavItems","availableInCountry","applicationCenterAvailability","useTranslate","myBusinessNavItems","vouchers","isLoading","isVoucherLoading","refetchOnWindowFocus","useVoucherCountAPI","backofficeMenuItems","srcUrlMap","EXAMPLE_SOURCE_URL","menuItems","count","voucherMenuIndex","findIndex","m","name","splice","filter","url","forEach","console","warn","menuTranslateCheck","buildMyBusinessMenu","item","map","openInNewTab","subMenu","translationKey","navItem","label","isRelPath","startsWith","open","route","useMyBusinessNavItems","productsNavItems","categories","cat","sub","subcat","subcat1","push","useProductsNavItems","vendorsNavItems","result","vendors","menuitems","setItem","stringify","a","vendorName","filterLeftNavList","x","isLeftNav","total","i","validateProperty","pageName","partialPageUrl","searchUrl","pagePath","split","pop","encodeURIComponent","useVendorsNavItems","solutionsNavItems","solution","buildNavMenuItem","useSolutionsNavItems","servicesNavItems","services","useServicesNavItems","hideSearchBarProductVendorNav","IngramSideNav","drawerOpen","headerHeight","isCheckout","isTempDrawer","setDrawerOpen","activeSideNavItem","setActiveSideNavItem","enableApi","setEnableApi","enableMenuApi","sideNavItems","navTo","useNavTo","onNavItemClick","ClickAwayListener","mouseEvent","onClickAway","touchEvent","Drawer","onClose","position","borderRight","boxShadow","LeftSideNavMobile","hoverRequired","isHelpNavItemVisible","onFocus","onMouseEnter","top","LeftSideNav","tokensUrlMap","CYBERSOURCE","DOCDATA","WORLDPAY","boKeys","useCMPCardRedirect","ignoreCCRedirect","sessionStorage","isImpersonationMode","useIsImpersonationMode","enableCybersource","enableDocData","enableForcePopupCybersource","enableForcePopupDocdata","enableForcePopupWorldPay","enableWorldPay","gateway","useCMPCardCheck","useIsFeatureWhitelisted","isFeatureWhitelisted","canPlaceOrder","cmpEnabledInBO","cmpTermCodes","code","trim","toLowerCase","Boolean","allCmpTermCodes","worldPayTermCodes","allWorldPayTermCodes","docDataTermCodes","allDocDataTermCodes","cmpPaymentTerm","cmpEnabled","paymentCards","isFetched","fetchedCards","tokensUrl","usePaymentCards","some","card","defaultCard","is_default","removeItem","DEFAULT_MESSAGE_KEY","ORIGIN","globalThis","LOG_PREFIX","AutoLoginImOnlineFrame","imLoggedIn","setImLoggedIn","isHomeView","frameRef","useRef","frameSrc","setFrameSrc","timeoutId","active","log","cleanFn","intervalId","clearInterval","setInterval","ref","String","current","contentWindow","e","getFrameHref","substring","style","border","title","DebugAccessToken","authState","oktaAuth","useOktaContext","refreshAccessTokenWithDebuggingData","useRefreshAccessToken","resellerIdInputValue","setResellerIdInputValue","apiPost","useApiPost","showDebug","invalidateAccessTokenHandler","tokens","tokenManager","getTokensSync","accessToken","concat","setTokens","invalidateRefreshTokenHandler","refreshToken","inv","refreshAccessTokenHandler","then","success","onChange","target","placeholder","enableImpersonationHandler","tokenRefreshRequest","authority","issuer","clientId","idToken","scope","scopes","join","tokenResponse","tokenRefreshResponse","tokenParams","handleOAuthResponse","convertedResponse","styled","background","display","flexDirection","gap","minHeight","minWidth","paddingLeft","paddingRight","flex","frameTitleMap","FramedPageTitle","updatePageTitle","usePageTitle","pageTitle","InvalidAccessToken","refreshAccessToken","setCount","badToken","setBadToken","refetchBaseBackofficeKeys","refetchMyBusinessMenuItems","refetchProductsMenuItems","refetchVendorsMenuItems","refetchSolutionsMenuItems","refetchServicesMenuItems","Error","async","LOCAL_STORAGE_KEY","PerformanceErrorAlert","isDismissed","setIsDismissed","boValue","showAlert","find","currentUtcDateTime","toISOString","currentDate","currentTime","startTime","endTime","error","document","querySelector","scrollTo","behavior","StyledAlert","action","StyledButton","dismissAlert","icon","severity","Alert","warning","lineHeight","margin","zIndex","Button","outline","marginLeft","textTransform","injectScriptInHead","onLoad","scriptEl","createElement","onload","head","appendChild","injectScriptInHeadWith","innerHtml","datadomainscript","innerHTML","setAttribute","injectScriptInBody","script_text","scriptid","getElementById","scripttext","createTextNode","id","body","useIsOneTrustEnabled","hasId","setHasId","scriptId","envMap","scriptsMap","development","us","production","au","be","br","ca","cl","co","hk","in","mx","my","nl","nz","pe","sg","usme","productionbeta","cn","th","productionbetax","staging","mi","stagingx","no","staging2","x4aFrameScriptsMap","ujetFrameScriptsMap","uk","useUjetAuth","isUniteChatbot","useApiPostQuery","isUnite","queryKey","useIsUjetChatbotEnabled","isCloudChat","isWhitelistedReseller","pathWhitelist","isValidPath","currentPathWhitelisted","list","path","lastChar","subPath","slice","checkListForPath","translationKeys","isEnabled","baseUrl","useUjetChatBot","localizationService","environment","langRef","ujetTranslations","setUjetTranslations","ujetTranslationsRef","firstName","lastName","bcn","resellerId","email","userId","accountId","accountResponse","getLsObject","accountData","accountID","ujetKeys","ujetConfig","UJET","ujetInstanceRef","isScriptInjected","setIsScriptInjected","isAdobeScriptInjected","hideUjet","ujet","$el","showUjet","keys","loadTranslations","returnKeyIfNotFound","res","langTranslations","setupUjet","config","options","authenticate","token","bottom","companyId","configurations","companyName","customData","country","values","language","host","lang","launcher","logo","translation","defaultMenuKey","menuKey","container","ujetIframe","iframeDocument","contentDocument","getAdbodeScript","script","digitalDataScript","loadAdobeAnalytics","on","destroy","remove","useUjetUniteChatBot","searchParams","useSearchParams","openCloudChat","get","ujetUniteInstanceRef","resellerid","openUjet","scriptSrcModifierMap","DEFAULT_TEMPLATE","hasPlacedOrderCount","orderTrackingPageVisits","quotesCreatedCount","returnsPlacedUserCount","subscriptionPageVisits","programKeyMap","dev","prod","win","OPEN_WALKME_FORM","WalkMeAPI","startSurveyById","OPEN_FORSTA_FORM","doConfirmitFeedbackSurvey","useScriptInjectors","isFirstLogin","resellerProspect","isTagInjected","content","useAddMetaTag","scriptUrl","setScriptUrl","oneTrustScript","isInX4AFrame","useInX4AFrame","buildVars","siteConfig","category","className","injectCategorizedScriptInHead","userGUID","replace","useAdobeDtm","defaultVisibility","showChatbot","setShowChatbot","resellerInfoHTML","resellerInfoContainer","chatBotOnHelpMenu","toggleChatBot","loadScriptInBody","chatBotContainerCO","chatBotContainerMx","useChatBotHelpMenu","oneTrustId","consentRequired","Cookies","disclaimerContent","apiGet","useApiGet","useQuery","queryFn","useReusableCookieDisclaimer","scriptRef","reusableContents","removeChild","html","replaceAll","customEL","injectDisclaimerElement","cookieconsent_options","update_cookieconsent_options","useCookieDisclaimer","useDatadog","shouldShowForstaInsteadOfWalkmeFeedback","openFeedbackForm","useFeedbackFormRouter","defaultLocale","programKey","forstaEnabled","userActivityData","userActivityObject","propertyName","useUserActivity","forstaScriptEl","forstaUserCreated","setForstaUserCreated","tokenData","emailAddress","forsta_user","assign","useForstaFeedback","useFullStory","documentElement","getLanguageFromLocale","useHtmlLang","isWalkMeUserActive","setIsWalkMeUserActive","walkMeInitialization","setWalkMeInitialization","isWalkMeLoaded","_walkmeInternals","walkMeAPI","userRoles","role","uuid","srcModifier","user","btoa","walkMe","s","getElementsByTagName","parentNode","insertBefore","_walkmeConfig","smartLoad","getCurrentLanguage","delayInit","changeLanguage","useWalkMe","isWhatfixUserActive","setIsWhatfixUserActive","isWhatfixEnabled","whatfixUser","whatfix","useWhatfix","PROSPECT_RESELLER_ROUTES","PROSPECT_RESELLER_PUBLIC_ROUTES","WhiteList","children","urlList","toLocaleLowerCase","Navigate","to","BlackList","FrameView","lazy","AppCounterView","DebugInfoView","IframeTestView","NoHeaderView","RemoteDialogTestView","PostMsgTestView","NoMatchView","DevToolView","publicUrlWhiteList","imonlineTermsAndConditionsUrl","LAYOUT_SPECS","HEADER_HEIGHT","LEFT_NAV_WIDTH","flagTest","App","checkURL","isInIM360Frame","useLayoutEffect","Promise","resolve","reject","styleEl","onerror","isOneTrustEnabled","OneTrust","useOneTrust","areWidgetsConfigured","setAreWidgetsConfigured","useGetWidgetConfig","selectedWidgets","widgets","isSelected","hasWidgets","useAreWidgetsConfigured","showDebugToolBar","appRoutes","mfsRoutes","routes","setRoutes","getMfsRoutes","mfNames","useMfsRoutes","authRoutes","publicRoutes","clonedRoute","element","RequireAuth","Outlet","ProfileView","Login","LoginCallbackView","LogoutView","WelcomeVideo","TermsAndConditions","buildAppRoutes","useAppRoutes","idpLogin","openDialog","useOpenDialog","onMsgReceived","msg","details","state","sentProps","dialogId","dialogParams","msgType","msgFrom","answer","respondToMsgWith","startListening","stopListening","useProcessPostMsgs","isCepWhitelisted","isProspectUser","useIsCepWhitelisted","profileData","useProfileData","termsData","strTitle","params","useReusableContents","isFetching","status","dateLastTermsConditionsAcceptance","documentModifiedWhen","useTnCRedirect","initialLocaleLanguage","preferredLanguageMutation","apiPatch","useApiPatch","useMutation","mutationFn","usePreferredLanguageMutation","mutate","usePreferredLanguageChange","logoutContext","useLogoutContext","isLogoutEnabled","setIsLogoutEnabled","isTokenRefreshed","setTokenRefreshed","loaderText","setLoadingText","useIsDown","isLogin","isForgotPassword","isResellerRegistration","isResellerDetailsV2","isDocusignRedirectIframe","isNotAppstorePath","isFrame","isPublicFrame","isCart","isQuoteItems","isDashboard","isInsightsV2","isOrderConfirmation","isCustomizationView","isPayment","isPaymentVerification","isResellerProspectPublicRoute","showCartIconOnHeader","isCMPProductExcludedReseller","useUrlEncoding","useIsResolution","max","setIsFirstLogin","isCreateDefaultBasket","setIsCreateDefaultBasket","xvFrameConfig","hideSideNav","hideHeader","segment","endsWith","hideFooter","isCMPWhitelisted","isCloudProductEnabled","term","categoryTrans","useGetSearchSuggestions","avatarProps","configuratorResponse","useConfiguratorMenuQuery","configuratorMenus","setConfiguratorMenus","isNavigationRequired","setIsNavigationRequired","isReportPreferencesEnabled","whitelist","externalHost","openUrlInNewTab","nodeAliasPath","framedRoute","onLogoutClick","resellerID","username","displayUserName","useAvatarProps","leftNavWidth","loaderTextTimeout","centerLoaderText","disableHeader","autoSignIn","useAutoSignIn","isError","isPending","onSuccess","reload","useDisableImpersonationMode","alertMessageKey","setAlertMessageKey","alertSeverity","setAlertSeverity","alertMessage","exitButtonLoading","exitButtonText","clearAlert","exitButtonDisabled","onImpersonationButtonClick","useImpersonationHeaderProps","enableSearchOnQuote","hideSearchBar","enableXScroll","isLowResolution","useXScroll","X4C_PushNotifications_Enabled","apiQuery","markAllAsRead","usePushNotifications","unReadCount","notification","isRead","notifications","openNotifications","showWelcomeMsg","useNotifications","partnerWithUsData","typelang","trackingTag","usePartnerWithUs","opacity","pointerEvents","avatarData","rest","trimAvatorPropsForResellerProspect","right","ScopeProvider","Suspense","fallback","CenterLoader","RenderContent","backgroundColor","overflowX","overflowY","Root","IngramFooter","footerAction","RenderRemoteDialog","useRoutes","maxWidth","ScrollToTop","createRoot","render","AppProviders","basename","envVars","process","menuData","property","index","subItems","menu","handleKenticoOnClick","fn","Function","menuItem","isModel","CountryCode","useFooterColumns","socialMedias","useSocialMedias","footerColumns","footers","FooterMobile","appStore","socialMedia","useQueryOptions","extraHeaders","oktaContext","cmsData","UserLoggedIn"],"sourceRoot":""}