{"version":3,"file":"636.chunk.js","mappings":"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","sources":["webpack://oriwebmessenger/./src/utils/purgeLocalStorage.ts","webpack://oriwebmessenger/./src/contexts/configurationContext.ts","webpack://oriwebmessenger/./src/hooks/useGetWebMessengerConfiguration.ts","webpack://oriwebmessenger/./src/hooks/useWebMessengerRequestParams.ts","webpack://oriwebmessenger/./src/hooks/useLoadClient.ts","webpack://oriwebmessenger/./src/utils/prepareGenesysScript.ts","webpack://oriwebmessenger/./src/queries/customerQuery.ts","webpack://oriwebmessenger/./src/hooks/useSendCustomerAttributes.ts","webpack://oriwebmessenger/./src/utils/sendCustomerData.ts","webpack://oriwebmessenger/./src/utils/getCustomerData.ts","webpack://oriwebmessenger/./src/utils/authUtils.ts","webpack://oriwebmessenger/./src/contexts/externalAuthContext.tsx","webpack://oriwebmessenger/./src/hooks/useCreateAuthenticatedSession.ts","webpack://oriwebmessenger/./src/components/Icon/styles.ts","webpack://oriwebmessenger/./src/components/Icon/Icon.tsx","webpack://oriwebmessenger/./src/components/Button/styles.ts","webpack://oriwebmessenger/./src/components/Button/Button.tsx","webpack://oriwebmessenger/./src/hooks/useOpenChatQueryParamOnMount.ts","webpack://oriwebmessenger/./src/hooks/useTranslations.ts","webpack://oriwebmessenger/./src/components/Button/useButton.ts","webpack://oriwebmessenger/./src/components/Button/constants.ts","webpack://oriwebmessenger/./src/components/WebMessenger/WebMessenger.tsx","webpack://oriwebmessenger/./src/hooks/useShowButton.ts","webpack://oriwebmessenger/./src/constants/defaultTranslations.ts","webpack://oriwebmessenger/./src/constants/swrConfig.ts","webpack://oriwebmessenger/./src/containers/ApiProvider.tsx","webpack://oriwebmessenger/./src/App.tsx","webpack://oriwebmessenger/./src/containers/ErrorBoundary.ts","webpack://oriwebmessenger/./src/appRender.tsx"],"sourcesContent":["/**\n * Genesys cloud stores some data in local storage.\n * This function removes it to be able to auto login again.\n */\nexport const purgeLocalStorage = () => {\n Object.keys(localStorage)\n .filter((key) => key.startsWith('_act') || key.includes(':gcm') || key.startsWith('_gca'))\n .forEach((key) => localStorage.removeItem(key));\n};\n","import { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport { useContext, createContext } from 'react';\n\nimport type { AppConfiguration } from '../models';\n\nexport const configurationContextDefaultValues: AppConfiguration = {\n currentLanguage: '',\n customerId: NOT_LOGGED_IN_USER_ID,\n globalApiUrl: '',\n graphqlUrl: '',\n identityUrl: '',\n kpiApiUrl: '',\n staticApiUrl: '',\n tenant: '',\n};\n\nexport const configurationContext = createContext(configurationContextDefaultValues);\n\nexport const ConfigurationProvider = configurationContext.Provider;\n\nexport const useConfiguration = () => useContext(configurationContext);\n","import { isAuthenticatedCustomer } from '@ori/auth';\nimport { validateStatus } from '@ori/fetching';\nimport { useGetTenantApplicationsWebMessengerConfiguration } from '@ori/static-api-client-react';\n\nimport { useConfiguration } from '../contexts';\nimport { useWebMessengerRequestParams } from './useWebMessengerRequestParams';\n\nexport const useGetWebMessengerConfiguration = () => {\n const { tenant, customerId } = useConfiguration();\n const { customerTypeId, relativeUrl, visitorSegment } = useWebMessengerRequestParams();\n const isAuthenticated = isAuthenticatedCustomer(customerId);\n\n return useGetTenantApplicationsWebMessengerConfiguration(\n tenant,\n {\n customerTypeId,\n relativeUrl,\n visitorSegment,\n },\n {\n swr: {\n enabled: !isAuthenticated || (customerTypeId !== undefined && visitorSegment !== undefined),\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n },\n request: {\n validateStatus,\n },\n },\n );\n};\n","import { isAuthenticatedCustomer } from '@ori/auth';\nimport { handleResponse, validateStatus } from '@ori/fetching';\nimport type { GlobalCustomersCustomerInfoDtoVisitorSegment } from '@ori/global-api-client-react';\nimport { getCustomerInfo, useApiClient } from '@ori/global-api-client-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useConfiguration } from '../contexts';\n\nexport const useWebMessengerRequestParams = () => {\n const { customerId } = useConfiguration();\n const client = useApiClient();\n const [customerTypeId, setCustomerTypeId] = useState();\n const [visitorSegment, setVisitorSegment] = useState();\n const relativeUrl = window.location.pathname;\n const isAuthenticated = isAuthenticatedCustomer(customerId);\n const onAuthenticated = useCallback(\n (fetch: (signal: AbortSignal) => Promise) => {\n if (isAuthenticated) {\n const abortController = new AbortController();\n fetch(abortController.signal).catch(console.error); // eslint-disable-line no-console -- log error to console\n\n return () => abortController.abort();\n }\n\n return undefined;\n },\n [isAuthenticated],\n );\n useEffect(() => {\n onAuthenticated(async (signal) => {\n const response = await getCustomerInfo(client, customerId, undefined, {\n signal,\n validateStatus,\n });\n handleResponse(response, {\n onError: () => {\n setCustomerTypeId(null);\n setVisitorSegment(null);\n },\n onSuccess: ({ data }) => {\n setCustomerTypeId(data.customerType?.customerTypeId);\n setVisitorSegment(data.visitorSegment);\n },\n });\n });\n }, [client, customerId, onAuthenticated]);\n\n return useMemo(\n () => ({\n customerTypeId: customerTypeId ?? undefined,\n relativeUrl,\n visitorSegment: visitorSegment ?? undefined,\n }),\n [customerTypeId, relativeUrl, visitorSegment],\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { prepareGenesysScript } from '../utils';\nimport { purgeLocalStorage } from '../utils/purgeLocalStorage';\nimport { useGetWebMessengerConfiguration } from './useGetWebMessengerConfiguration';\n\nexport const useLoadClient = () => {\n const { data } = useGetWebMessengerConfiguration();\n const [clientLoaded, setClientLoaded] = useState(false);\n const { deploymentId, environment, scriptUrl } = data ?? {};\n\n useEffect(() => {\n window.addEventListener('beforeunload', purgeLocalStorage);\n\n return () => {\n window.removeEventListener('beforeunload', purgeLocalStorage);\n };\n }, []);\n\n useEffect(() => {\n const onLoad = () => setClientLoaded(true);\n const script = prepareGenesysScript({\n deploymentId,\n environment,\n scriptUrl,\n });\n if (script) {\n script.addEventListener('load', onLoad);\n document.head.append(script);\n\n return () => script.remove();\n }\n\n return undefined;\n }, [deploymentId, environment, scriptUrl]);\n\n return { clientLoaded };\n};\n","import type { StaticApplicationsWebMessengerWebMessengerConfigurationDto } from '@ori/static-api-client-react';\n\nexport const prepareGenesysScript = ({\n deploymentId,\n environment,\n scriptUrl,\n}: StaticApplicationsWebMessengerWebMessengerConfigurationDto | undefined = {}) => {\n if (!window.Genesys) {\n Object.defineProperty(window, 'Genesys', { writable: true, value: {} });\n }\n if (deploymentId && environment && scriptUrl) {\n window._genesysJs = 'Genesys';\n Object.defineProperty(window, 'Genesys', {\n writable: true,\n value: {\n t: Date.now(),\n c: {\n environment,\n deploymentId,\n debug: process.env.NODE_ENV !== 'production',\n },\n },\n });\n const script = document.createElement('script');\n script.src = scriptUrl;\n\n return script;\n }\n\n return null;\n};\n","import { gql } from '@ori/fetching';\n\nexport const customerQuery = gql`\n query GetCustomer {\n customer {\n firstName\n lastName\n emails {\n emailAddress\n }\n consultantNumber\n customerId\n phones {\n telephoneNumber\n }\n customerType {\n description\n }\n }\n }\n`;\n","import { isAuthenticatedCustomer, useToken } from '@ori/auth';\nimport { getHeaders, useGraphqlQuery } from '@ori/fetching';\nimport { useEffect, useState } from 'react';\n\nimport { APP_NAME } from '../constants';\nimport { useConfiguration } from '../contexts';\nimport type { GetCustomerQuery, GetCustomerQueryVariables } from '../models';\nimport { customerQuery } from '../queries';\nimport { sendCustomerData } from '../utils';\n\nexport interface UseSendCustomerAttributesParams {\n clientLoaded?: boolean;\n}\n\nexport const useSendCustomerAttributes = ({ clientLoaded }: UseSendCustomerAttributesParams) => {\n const { currentLanguage, customerId, graphqlUrl, tenant } = useConfiguration();\n const isAuthenticated = isAuthenticatedCustomer(customerId);\n const { token } = useToken();\n const [attributesSent, setAttributesSent] = useState(false);\n const { data, error } = useGraphqlQuery({\n query: customerQuery,\n url: graphqlUrl,\n headers: getHeaders({\n customerId,\n language: currentLanguage,\n sourceAppName: APP_NAME,\n tenant,\n token,\n }),\n skip: !isAuthenticated || !clientLoaded,\n });\n\n if (error) {\n // eslint-disable-next-line no-console -- Need to log error to console\n console.error(error);\n }\n\n useEffect(() => {\n if (clientLoaded && (data != null || error != null || !isAuthenticated)) {\n sendCustomerData({ currentLanguage, data, tenant });\n setAttributesSent(true);\n }\n }, [clientLoaded, currentLanguage, data, error, isAuthenticated, tenant]);\n\n return {\n attributesSent,\n };\n};\n","import type { GetCustomerDataParams } from './getCustomerData';\nimport { getCustomerData } from './getCustomerData';\n\nexport const sendCustomerData = (customerDataParams: GetCustomerDataParams) => {\n // eslint-disable-next-line new-cap -- Genesys preset naming\n window.Genesys?.('command', 'Database.set', {\n messaging: {\n customAttributes: getCustomerData(customerDataParams),\n },\n });\n};\n","/* eslint-disable @typescript-eslint/naming-convention -- Genesys preset naming */\nimport type { AppConfiguration, GetCustomerQuery } from '../models';\n\nexport interface GetCustomerDataParams extends Pick {\n data: GetCustomerQuery | undefined;\n}\n\nexport interface CustomerData {\n 'context.customField1Label': string;\n 'context.customField1': string;\n 'context.customField2Label': string;\n 'context.customField2': number | string;\n 'context.customField3Label': string;\n 'context.customField3': string;\n 'context.customField4Label': string;\n 'context.customField4': string;\n 'context.customerId': string;\n 'context.email': string;\n 'context.firstName': string;\n 'context.lastName': string;\n 'context.phoneNumber': string;\n 'context.source': string;\n}\n\nexport const getCustomerData = ({ currentLanguage, data, tenant }: GetCustomerDataParams): CustomerData => {\n const {\n customerId: customerCustomerId,\n consultantNumber,\n customerType,\n emails,\n firstName,\n lastName,\n phones,\n } = data?.customer ?? {};\n\n const response = {\n 'context.customField1Label': 'Customer Title',\n 'context.customField1': customerType?.description ?? 'Anonymous',\n 'context.customField2Label': 'Consultant Number',\n 'context.customField2': consultantNumber ?? '',\n 'context.customField3Label': 'Language Code',\n 'context.customField3': currentLanguage.slice(0, 2).toUpperCase(),\n 'context.customField4Label': 'Market Code',\n 'context.customField4': tenant.toUpperCase(),\n 'context.customerId': customerCustomerId ?? '',\n 'context.email': emails?.[0]?.emailAddress ?? '',\n 'context.firstName': firstName ?? '',\n 'context.lastName': lastName ?? '',\n 'context.phoneNumber': phones?.[0]?.telephoneNumber ?? '',\n 'context.source': 'web',\n };\n\n // eslint-disable-next-line no-console -- debug info required to investigate issues\n console.log(response);\n\n return response;\n};\n","/**\n * Converts a decimal number to a hexadecimal string.\n *\n * @param {number} dec - The decimal number to be converted to hexadecimal.\n * @returns {string} The hexadecimal representation of the input decimal number.\n */\nexport const dec2hex = (dec: number): string => `0${dec.toString(16)}`.slice(-2);\n\n/**\n * Generates a random code verifier for PKCE (Proof Key for Code Exchange) authentication.\n *\n * @returns {string} A random code verifier represented as a hexadecimal string.\n */\nconst generateCodeVerifier = () => {\n const array = new Uint32Array(56 / 2);\n window.crypto.getRandomValues(array);\n\n return Array.from(array, dec2hex).join('');\n};\n\n/**\n * Generates an SHA-256 hash of a string.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest\n *\n * @param {string} plain - The string to be hashed.\n */\nconst sha256 = async (plain: string): Promise => {\n const encoder = new TextEncoder();\n const data = encoder.encode(plain);\n\n return window.crypto.subtle.digest('SHA-256', data);\n};\n\n/**\n * Base64url encoding is similar to base64 encoding except it uses non-reserved URL characters\n * (e.g., '-', '_', '~') instead of reserved URL characters (e.g., '+', '/', '=').\n *\n * @param {ArrayBuffer} a - The array buffer to be encoded.\n * @returns {string} The base64url encoded string.\n */\nconst base64urlEncode = (a: ArrayBuffer): string => {\n const bytes = new Uint8Array(a);\n const len = bytes.byteLength;\n let str = '';\n for (let i = 0; i < len; i++) {\n const point = bytes[i];\n if (point !== undefined) {\n str += String.fromCodePoint(point);\n }\n }\n\n return btoa(str).replaceAll('+', '-').replaceAll('/', '_').replace(/[=]+$/, '');\n};\n\n/**\n * Generates a code challenge from a code verifier for PKCE (Proof Key for Code Exchange) authentication.\n * The code challenge is a base64url encoded SHA-256 hash of the code verifier.\n *\n * See https://tools.ietf.org/html/rfc7636#section-4.2 for more details.\n *\n * @param {string} v - The code verifier to generate a code challenge from.\n * @returns {string} The code challenge.\n *\n */\nasync function generateCodeChallengeFromVerifier(v: string): Promise {\n const hashed = await sha256(v);\n\n return base64urlEncode(hashed);\n}\n\ninterface VerifierAndChallenge {\n codeChallenge: string;\n codeVerifier: string;\n}\n\n/**\n * Generates a code verifier and a code challenge for PKCE (Proof Key for Code Exchange) authentication.\n * The code verifier is a random string and the code challenge is a base64url encoded SHA-256 hash of the code verifier.\n * See https://tools.ietf.org/html/rfc7636#section-4.2 for more details.\n *\n * @returns {VerifierAndChallenge} The code verifier and the code challenge.\n *\n */\nexport const generateVerifierAndChallenge = async (): Promise => {\n const codeVerifier = generateCodeVerifier();\n const codeChallenge = await generateCodeChallengeFromVerifier(codeVerifier);\n\n return { codeChallenge, codeVerifier };\n};\n","import { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport {\n AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS,\n AUTH_IFRAME_ID,\n ISSUER_STORAGE_PARAMETER_FOR_GENESYS,\n REDIRECT_URI,\n} from '../constants';\nimport { generateVerifierAndChallenge } from '../utils/authUtils';\nimport { useConfiguration } from './configurationContext';\n\nexport interface ExternalAuthContext {\n codeVerifier: string;\n}\n\ninterface MessageEvent {\n data: {\n source: string;\n code: string;\n iss: string;\n };\n}\n\nexport const externalAuthContext = createContext({\n codeVerifier: '',\n});\n\nconst { Provider } = externalAuthContext;\n\nexport const ExternalAuthProvider: FC = ({ children }) => {\n const { identityUrl, tenant, customerId } = useConfiguration();\n\n // Quick hack for identityUrl until it's fixed on FP, sometimes it contains url {tenant}.online.ori which is wrong.\n const fixedIdentityUrl = identityUrl.includes('online.ori') ? 'https://identity-we.oriflame.com' : identityUrl;\n\n const [codeVerifier, setCodeVerifier] = useState('');\n\n const generateAuthUrl = useCallback(\n (codeChallenge: string) => {\n const url = new URL(fixedIdentityUrl);\n url.pathname = '/connect/authorize';\n url.searchParams.append('scope', 'all');\n url.searchParams.append('prompt', 'none');\n url.searchParams.append('client_id', 'GenesysWebMessenger');\n url.searchParams.append('response_type', 'code');\n url.searchParams.append('code_challenge_method', `S256`);\n url.searchParams.append('acr_values', `tenant:${tenant}`);\n url.searchParams.append('code_challenge', codeChallenge);\n url.searchParams.append('redirect_uri', REDIRECT_URI);\n\n return url.toString();\n },\n [fixedIdentityUrl, tenant],\n );\n\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (event.data.source === 'genesysAuth' && event.data.code && event.data.iss) {\n localStorage.setItem(AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS, event.data.code);\n localStorage.setItem(ISSUER_STORAGE_PARAMETER_FOR_GENESYS, event.data.iss);\n\n document.getElementById(AUTH_IFRAME_ID)?.remove();\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => window.removeEventListener('message', handleMessage);\n }, []);\n\n useEffect(() => {\n if (customerId !== NOT_LOGGED_IN_USER_ID) {\n generateVerifierAndChallenge()\n .then((r) => {\n const authUrl = generateAuthUrl(r.codeChallenge);\n\n setCodeVerifier(r.codeVerifier);\n\n const iframe = document.createElement('iframe');\n iframe.id = AUTH_IFRAME_ID;\n iframe.src = authUrl;\n iframe.sandbox.add('allow-forms');\n iframe.sandbox.add('allow-scripts');\n iframe.sandbox.add('allow-same-origin');\n iframe.hidden = true;\n iframe.style.visibility = 'hidden';\n iframe.style.display = 'none';\n\n document.body.append(iframe);\n\n return () => iframe.remove();\n })\n .catch((error) => {\n // eslint-disable-next-line no-console -- error\n console.log(error);\n });\n }\n }, [customerId, generateAuthUrl]);\n\n const value = useMemo(\n () => ({\n codeVerifier,\n }),\n [codeVerifier],\n );\n\n return {children};\n};\n\nexport const useExternalAuth = () => useContext(externalAuthContext);\n","import { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport { useEffect } from 'react';\n\nimport {\n AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS,\n ISSUER_STORAGE_PARAMETER_FOR_GENESYS,\n REDIRECT_URI,\n} from '../constants';\nimport { useConfiguration, useExternalAuth } from '../contexts';\n\nconst waitAndExecute = (callback: () => void, delay: number) => {\n setTimeout(callback, delay);\n};\n/**\n * Due to iframe and its redirect I have to wait few seconds before I can register plugin.\n */\nexport const useCreateAuthenticatedSession = () => {\n const { customerId } = useConfiguration();\n const { codeVerifier } = useExternalAuth();\n\n useEffect(() => {\n if (customerId !== NOT_LOGGED_IN_USER_ID) {\n waitAndExecute(\n () =>\n // eslint-disable-next-line new-cap, @typescript-eslint/no-unsafe-return -- Genesys preset naming,\n window.Genesys?.('registerPlugin', 'AuthProvider', (AuthProvider) => {\n AuthProvider.registerCommand('getAuthCode', (e) => {\n e.resolve({\n authCode: localStorage.getItem(AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS),\n codeVerifier,\n iss: localStorage.getItem(ISSUER_STORAGE_PARAMETER_FOR_GENESYS),\n redirectUri: REDIRECT_URI,\n });\n localStorage.removeItem(AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS);\n });\n\n AuthProvider.registerCommand('reAuthenticate', (e) => {\n /*\n In case there is no valid auth-code or refresh token it should again open login form but in this case we are using hidden iframe.\n */\n e.resolve(undefined);\n });\n\n AuthProvider.ready();\n }),\n 3000,\n );\n }\n }, [codeVerifier, customerId]);\n};\n","import { BubbleHelpFilled, Clear } from '@ori-ui/icons';\nimport type { Theme } from '@ori-ui/mui';\nimport { styled } from '@ori-ui/mui';\n\ninterface GetIconStylesProps {\n theme: Theme;\n}\n\nconst getIconStyles = ({ theme }: GetIconStylesProps) => ({\n display: 'flex',\n height: '32px',\n padding: theme.spacing(0, 2.8, 0, 2),\n width: '32px',\n});\n\nexport const OpenIcon = styled(BubbleHelpFilled)(getIconStyles);\n\nexport const CloseIcon = styled(Clear)(getIconStyles);\n","import type { FC } from 'react';\n\nimport { CloseIcon, OpenIcon } from './styles';\nimport type { IconProps } from './types';\n\nexport const Icon: FC = ({ isChatOpened }) => (isChatOpened ? : );\n","import { SHADOW_LEVEL1, styled } from '@ori-ui/mui';\n\ninterface ButtonComponentProps {\n isChatOpened?: boolean;\n}\n\nexport const ButtonComponent = styled('div')(({ isChatOpened, theme }) => {\n const buttonExpanded = {\n maxWidth: '100%',\n transitionDelay: '0s',\n div: {\n opacity: 1,\n transitionDelay: '0.2s',\n },\n };\n\n return {\n alignItems: 'center',\n background: theme.palette.default.main,\n borderRadius: '30px',\n bottom: '15px',\n boxShadow: SHADOW_LEVEL1,\n boxSizing: 'unset',\n color: theme.palette.common.white,\n cursor: 'pointer',\n direction: 'rtl',\n display: 'flex',\n flexDirection: 'row',\n height: '60px',\n maxWidth: '60px',\n overflow: 'hidden',\n position: 'fixed',\n right: '15px',\n textAlign: 'center',\n textOverflow: 'ellipsis',\n textTransform: 'uppercase',\n transition: 'max-width 0.5s ease-in-out 0.2s',\n userSelect: 'none',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n width: 'auto',\n zIndex: 100,\n\n [theme.breakpoints.up('md')]: {\n bottom: '30px',\n right: '30px',\n },\n '&:focus, &:hover': buttonExpanded,\n ...(isChatOpened ? buttonExpanded : undefined),\n };\n});\n\nexport const Label = styled('div')(({ theme }) => ({\n display: 'block',\n fontSize: theme.typography.pxToRem(14),\n fontWeight: theme.typography.fontWeightBold,\n opacity: 0,\n paddingLeft: theme.spacing(4),\n transition: 'opacity 0.3s ease-in-out',\n}));\n","import type { FC } from 'react';\n\nimport { useCreateAuthenticatedSession, useTranslations, useOpenChatQueryParamOnMount } from '../../hooks';\nimport { Icon } from '../Icon';\nimport { WEB_MESSENGER_BUTTON } from './constants';\nimport { ButtonComponent, Label } from './styles';\nimport { useButton } from './useButton';\n\n/**\n * Describes timeout after which chat is opened\n */\nconst OPEN_CHAT_TIMEOUT = 5 * 1000; // ms\n\nexport const Button: FC = () => {\n const { translations } = useTranslations();\n const { isChatOpened, onClick } = useButton();\n\n useCreateAuthenticatedSession();\n useOpenChatQueryParamOnMount(onClick, OPEN_CHAT_TIMEOUT);\n\n return (\n \n \n \n \n );\n};\n","import { getClientQueryParam } from '@ori/presentation-utils';\nimport { useEffect, useRef } from 'react';\n\n/** Runs action with a delay when `openChat` query param is `true` */\nexport const useOpenChatQueryParamOnMount = (action: () => void, delay: number) => {\n const actionExecuted = useRef(false);\n\n useEffect(() => {\n const openChatAsString = getClientQueryParam('openChat');\n const openChat = openChatAsString === 'true';\n\n if (!actionExecuted.current && openChat) {\n const timeoutId = setTimeout(() => {\n action();\n actionExecuted.current = true;\n }, delay);\n\n return () => clearTimeout(timeoutId);\n }\n\n return () => {};\n }, [action, delay]);\n};\n","/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport { useTranslationsFromNamespace, type UseTranslationsFromNamespaceResult } from '@ori/i18n';\n\nimport type { DefaultTranslations } from '../constants/defaultTranslations';\n\n/**\n * A hook for accessing translations within a specific namespace along with a formatting function.\n *\n * @returns The translations within the specified namespace and a formatting function.\n */\nexport const useTranslations: () => UseTranslationsFromNamespaceResult = () =>\n useTranslationsFromNamespace();\n","/* eslint-disable new-cap -- Genesys preset naming */\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport const useButton = () => {\n const [isChatOpened, setIsChatOpened] = useState(false);\n const onChatClosed = useCallback(() => setIsChatOpened(false), []);\n const onChatOpened = useCallback(() => setIsChatOpened(true), []);\n const onClick = useCallback(() => {\n window.Genesys?.('command', isChatOpened ? 'Messenger.close' : 'Messenger.open');\n }, [isChatOpened]);\n useEffect(() => {\n window.Genesys?.('subscribe', 'Messenger.opened', onChatOpened);\n window.Genesys?.('subscribe', 'Messenger.closed', onChatClosed);\n }, [onChatClosed, onChatOpened]);\n\n return useMemo(\n () => ({\n isChatOpened,\n onClick,\n }),\n [isChatOpened, onClick],\n );\n};\n","export const WEB_MESSENGER_BUTTON = 'web-messenger-button';\n","import type { FC } from 'react';\n\nimport { useShowButton } from '../../hooks';\nimport { Button } from '../Button';\n\nexport const WebMessenger: FC = () => {\n const { showButton } = useShowButton();\n\n return showButton ?