{"version":3,"file":"601.bundle.js","mappings":"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","sources":["webpack:///../node_modules/@paypalcorp/pp-react-contextual-alert/dist/@paypalcorp/pp-react-contextual-alert.esm.js","webpack:///./components/alerts/index.js","webpack:///./components/contact-channel/index.js","webpack:///./components/login-dialogs/message-us/index.js","webpack:///../node_modules/@paypalcorp/pp-react-divider/dist/@paypalcorp/pp-react-divider.esm.js","webpack:///./components/login-dialogs/call-us/index.js","webpack:///./utils/contactChannel.js","webpack:///./utils/stepup.js","webpack:///./hooks/useStepUp.js","webpack:///./hooks/useContactChannels.js","webpack:///./components/step-up/step-up-dialog.js","webpack:///./components/step-up/index.js","webpack:///./components/contact-channels/index.js","webpack:///./components/hero-module/index.js","webpack:///./components/loaders/shimmerLoader.js","webpack:///./constants/api.js","webpack:///./hooks/useAPI.js","webpack:///./hooks/useChatBot.js","webpack:///./hooks/useHelper.js","webpack:///./hooks/useMessage.js","webpack:///./utils/chatbot.js"],"sourcesContent":["import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo } from 'react';\nimport { InformationIcon, CheckmarkBackgroundIcon, WarningIcon, CriticalIcon } from '@paypalcorp/pp-react-icons';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { devWarning } from '@paypalcorp/pp-react-utils';\n\nvar _templateObject, _templateObject2, _templateObject3;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n devWarning('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSizeIconXs = tokens.sysSizeIconXs;\n\n var _textStyles = textStyles(tokens),\n textCaption = _textStyles.caption;\n\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: contextual-alert_base;\\n display: flex;\\n padding: \", \" 0;\\n \", \"\\n \"])), sysSpaceLg, textCaption());\n var statusIcon = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: status_icon;\\n margin-top: \", \";\\n margin-right: \", \";\\n height: \", \";\\n\\n [dir='rtl'] & {\\n margin-left: \", \";\\n margin-right: 0;\\n }\\n \"])), '0.0625rem', sysSpaceSm, sysSizeIconXs, sysSpaceSm);\n var noPadding = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: no_padding;\\n padding: 0;\\n \"])));\n return {\n base: base,\n statusIcon: statusIcon,\n noPadding: noPadding\n };\n}\n\nvar _excluded = [\"className\", \"type\", \"typeIconAriaLabel\", \"children\", \"noPadding\"];\nvar iconMap = {\n info: InformationIcon,\n success: CheckmarkBackgroundIcon,\n warning: WarningIcon,\n error: CriticalIcon\n};\n\nvar ContextualAlert = function (_ref) {\n var className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'info' : _ref$type,\n _ref$typeIconAriaLabe = _ref.typeIconAriaLabel,\n typeIconAriaLabel = _ref$typeIconAriaLabe === void 0 ? type : _ref$typeIconAriaLabe,\n children = _ref.children,\n _ref$noPadding = _ref.noPadding,\n noPadding = _ref$noPadding === void 0 ? false : _ref$noPadding,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var iconCssVal = _styles.statusIcon;\n var StatusIcon = iconMap[type];\n var baseCSS = [_styles.base, noPadding && _styles.noPadding];\n return jsx(\"div\", _extends({\n role: \"alert\",\n css: baseCSS,\n className: className,\n \"data-ppui-info\": \"contextual-alert_3.0.2-ql\"\n }, rest), jsx(StatusIcon, {\n css: iconCssVal,\n size: \"xs\",\n color: {\n info: 'sysColorInfoContrast',\n success: 'sysColorSuccessMain',\n warning: 'sysColorWarningAlt',\n error: 'sysColorErrorMain'\n }[type],\n role: \"img\",\n \"aria-label\": typeIconAriaLabel,\n \"data-ppui\": \"true\"\n }), children);\n};\n\nexport { ContextualAlert, styles as contextualAlertStyles };\n","import React from 'react'\nimport { HcAlert } from '@paypalcorp/helpcomponents-alert'\nimport { ALERTS_DATA } from '../../utils/prop-type-shape'\nimport {\n COMPONENT_NAME,\n componentNames,\n FPTI_PREFIX,\n} from '../../utils/analytics/fpti-constants'\n\nconst Alerts = ({ pageName }) => (\n
\n \n
\n)\n\nAlerts.propTypes = ALERTS_DATA\n\nexport default Alerts\n","import React from 'react'\n// import button from pp-react-button\nimport {\n Button,\n CommunityIcon,\n EmailIcon,\n PaypalAssistantIcon,\n Phone2Icon,\n ResolutionIcon,\n ChatIcon,\n} from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport { CONTACT_OPTIONS } from '../../constants'\nimport { CONTACT_CHANNEL_DATA } from '../../utils/prop-type-shape'\n\nimport './contact-channel.less'\n\n// TODO: check with pp-ui and convert this to generic Icon,\n// ATM generic Icon component doesn't provide the expected behavior with Button\nconst iconMap = {\n [CONTACT_OPTIONS.COMMUNITY]: CommunityIcon,\n [CONTACT_OPTIONS.CHAT]: ChatIcon,\n [CONTACT_OPTIONS.CHAT_BOT]: PaypalAssistantIcon,\n [CONTACT_OPTIONS.RES_CENTER]: ResolutionIcon,\n [CONTACT_OPTIONS.PHONE]: Phone2Icon,\n [CONTACT_OPTIONS.EMAIL]: EmailIcon,\n}\n\nfunction ContactChannel({ name, onClick }) {\n const IconComponent = iconMap[name]\n\n const renderTitle = () => {\n const formattedName = name.replace(/_/g, '').toLowerCase()\n return \n }\n\n const renderContactChannel = () => {\n if (!IconComponent) {\n return null\n }\n return (\n onClick(name)}\n data-testid={`hc-contact-channel-${name}`}\n >\n {renderTitle()}\n \n )\n }\n\n return renderContactChannel()\n}\n\nContactChannel.propTypes = CONTACT_CHANNEL_DATA\n\nexport default ContactChannel\n","import {\n Button,\n ContextualAlert,\n Dialog,\n HeadingText,\n Link,\n} from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport React, { useEffect } from 'react'\n\nimport useTracking from '../../../hooks/useTracking'\nimport {\n componentNames,\n fptiTypes,\n} from '../../../utils/analytics/fpti-constants'\n\nimport { CONTACT_OPTIONS } from '../../../constants'\nimport { MESSAGE_US_LOGIN_DIALOG_DATA } from '../../../utils/prop-type-shape'\nimport './message-us.less'\n\nconst CLICK_TYPES = {\n LOGIN: 'login',\n RECOVER_PASSWORD: 'recover-password',\n DISMISS: 'dialog-dismiss',\n}\n\nconst COMPONENT_NAME = componentNames.MSG_US_LOGIN_DIALOG\n\nfunction MessageUsLoginDialog({\n isDialogOpen,\n onLoginClick,\n recoverPasssword,\n onClose,\n}) {\n const { trackActivity } = useTracking()\n\n useEffect(() => {\n // trigger fpti success when dialog is open\n if (isDialogOpen) {\n trackActivity({\n name: COMPONENT_NAME,\n type: fptiTypes.SUCCESS,\n })\n }\n }, [trackActivity, isDialogOpen])\n\n const onClick = (type) => {\n switch (type) {\n case CLICK_TYPES.LOGIN:\n onLoginClick(COMPONENT_NAME, CONTACT_OPTIONS.CHAT)\n break\n case CLICK_TYPES.RECOVER_PASSWORD:\n recoverPasssword(COMPONENT_NAME, CONTACT_OPTIONS.CHAT)\n break\n case CLICK_TYPES.DISMISS:\n onClose(COMPONENT_NAME, CONTACT_OPTIONS.CHAT)\n break\n default:\n break\n }\n }\n\n const renderLoginPrompt = () => {\n return (\n <>\n onClick(CLICK_TYPES.DISMISS)}\n isOpen={isDialogOpen}\n isFullView\n className=\"hc_msg_us_login_dialog\"\n data-testid=\"hc-msg-us-login-dialog\"\n >\n \n \n \n \n \n \n onClick(CLICK_TYPES.LOGIN)}\n data-testid=\"hc-msg-us-login-dialog-login-button\"\n >\n \n \n

\n onClick(CLICK_TYPES.RECOVER_PASSWORD)}\n >\n \n \n

\n\n \n \n \n \n \n )\n }\n return renderLoginPrompt()\n}\n\nMessageUsLoginDialog.propTypes = MESSAGE_US_LOGIN_DIALOG_DATA\n\nexport default MessageUsLoginDialog\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { devWarning } from '@paypalcorp/pp-react-utils';\n\nvar _templateObject, _templateObject2;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n devWarning('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorStructureDivider = tokens.sysColorStructureDivider,\n sysSpaceMd = tokens.sysSpaceMd,\n sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysColorPrimaryContrast = tokens.sysColorPrimaryContrast; // Base class for Divider\n\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: divider_base;\\n border: none;\\n border-top: \", \" solid \", \";\\n margin: \", \" 0;\\n \"])), sysBorderThicknessNormal, sysColorStructureDivider, sysSpaceMd); // Inverse State\n\n var inverse = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: inverse;\\n border-color: \", \";\\n \"])), sysColorPrimaryContrast);\n return {\n base: base,\n inverse: inverse\n };\n}\n\nvar _excluded = [\"inverse\", \"className\"];\n\nvar Divider = function (_ref) {\n var inverse = _ref.inverse,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var cssVal = [_styles.base, inverse && _styles.inverse];\n return jsx(\"hr\", _extends({\n css: cssVal,\n className: className\n }, rest, {\n \"data-ppui-info\": \"divider_4.0.2-ql\"\n }));\n};\n\nexport { Divider, styles as dividerStyles };\n","import {\n BodyText,\n Button,\n Divider,\n HeadingText,\n Link,\n Sheet,\n} from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport React, { useEffect } from 'react'\nimport { CONTACT_OPTIONS } from '../../../constants'\nimport useTracking from '../../../hooks/useTracking'\nimport {\n componentNames,\n fptiTypes,\n} from '../../../utils/analytics/fpti-constants'\n\nimport { useAppContext } from '../../../contexts/app-context'\nimport { navigateToCallUsWithAppCtx } from '../../../utils/helper'\nimport { CALL_US_LOGIN_DIALOG_DATA } from '../../../utils/prop-type-shape'\nimport './login-prompt.less'\n\nconst COMPONENT_NAME = componentNames.CALL_US_LOGIN_SHEET\n\nfunction CallUsLoginPrompt({\n isOpen,\n onLoginDialogClose,\n onLoginClick,\n recoverPasssword,\n}) {\n const { trackClick, trackActivity } = useTracking()\n const appCtx = useAppContext()\n\n // On login sheet open: login prompt shown fpti\n useEffect(() => {\n if (isOpen) {\n trackActivity({\n name: COMPONENT_NAME,\n type: fptiTypes.SUCCESS,\n })\n }\n }, [isOpen, trackActivity])\n\n // Login button clicked: fire the login button clicked fpti AND open the login prompt\n const loginBtnClickHandler = (e) => {\n e.stopPropagation()\n onLoginClick(COMPONENT_NAME, CONTACT_OPTIONS.PHONE)\n }\n\n // navigate to password recovery when user clicks trouble logging-in link\n const troubleLogInClickHandler = (e) => {\n e.stopPropagation()\n recoverPasssword(COMPONENT_NAME, CONTACT_OPTIONS.PHONE)\n }\n\n // Login for faster service sheet closed\n const closeLoginSheet = () => {\n onLoginDialogClose(COMPONENT_NAME, CONTACT_OPTIONS.PHONE)\n }\n\n // call us as guest clicked: fire the link clicked fpti AND navigate to the call us page\n const callUsAsGuestClickHandler = (e) => {\n e.stopPropagation()\n trackClick({\n name: componentNames.CALL_US_LOGIN_SHEET,\n type: fptiTypes.ON_CLICK,\n link: `${CONTACT_OPTIONS.PHONE}|call-us-as-guest-link|clicked`,\n })\n navigateToCallUsWithAppCtx({ appCtx })\n }\n\n const renderLoginPrompt = () => {\n return (\n \n \n \n \n \n \n \n loginBtnClickHandler(e)}\n >\n \n \n \n troubleLogInClickHandler(e)}\n >\n \n \n \n \n
\n \n (\n callUsAsGuestClickHandler(e)}\n >\n {innerMessage}\n \n )}\n />\n \n \n \n \n \n )\n }\n\n return renderLoginPrompt()\n}\n\nCallUsLoginPrompt.propTypes = CALL_US_LOGIN_DIALOG_DATA\n\nexport default CallUsLoginPrompt\n","// set contact channel session during loggedout mode\nexport const setContactChannelSession = (channel) => {\n sessionStorage.setItem('activeContactChannel', channel)\n}\n\n// reset contact channel session\nexport const resetContactChannelSession = (channel) => {\n sessionStorage.removeItem('activeContactChannel', channel)\n}\n\n// get active contact channel\nexport const getActiveContactChannel = () => {\n return sessionStorage.getItem('activeContactChannel')\n}\n","import {\n FIRST,\n SECOND,\n STEPUP_AUTH_CONTACT_OPTIONS,\n STEP_AUTH_PAGES,\n} from '../constants'\nimport {\n resetContactChannelSession,\n setContactChannelSession,\n} from './contactChannel'\n\n// check if step up auth applicable on a page for contact channel\nexport const isStepUpAuthApplicable = (pageName, contactChannel, intentId) => {\n return (\n STEP_AUTH_PAGES[pageName] &&\n STEPUP_AUTH_CONTACT_OPTIONS[contactChannel] &&\n intentId\n )\n}\n\nexport const setAuthSession = (channel) => {\n sessionStorage.setItem('stepupAuthSession', true)\n setContactChannelSession(channel)\n}\n\nexport const getAuthSession = () => {\n return sessionStorage.getItem('stepupAuthSession')\n}\n\nexport const resetAuthSession = () => {\n sessionStorage.removeItem('stepupAuthSession')\n resetContactChannelSession()\n}\n\n// get search params from current url to check anw redirect\nexport const isAnwRedirect = () => {\n return !!getAuthSession()\n}\n\nexport const getRiskCheckAttempt = () => {\n return isAnwRedirect() ? SECOND : FIRST\n}\n","import { useCallback, useState } from 'react'\nimport {\n CONTACT_CHANNEL_API_MAPPING,\n NO,\n SECOND,\n STEPUP_AUTH_CONTACT_OPTIONS,\n STEPUP_STATUS,\n STEP_AUTH_PAGES,\n YES,\n} from '../constants'\nimport { API_NAMES } from '../constants/api'\nimport { useAppContext } from '../contexts/app-context'\nimport { useMessage } from './useMessage'\n\nimport { useCommonUIContext } from '../contexts/common-ui-context'\nimport { componentNames, fptiTypes } from '../utils/analytics/fpti-constants'\nimport {\n getRiskCheckAttempt,\n resetAuthSession,\n setAuthSession,\n} from '../utils/stepup'\nimport useAPI from './useAPI'\nimport useTracking from './useTracking'\n\nconst useStepUp = () => {\n const { getMessage } = useMessage()\n const appCtx = useAppContext()\n const { trackActivity, trackClick } = useTracking()\n const {\n pageProps: { pageName },\n reqContextData: { isLoggedIn },\n } = appCtx\n\n const { getAPI } = useAPI()\n\n const { setIsLoader } = useCommonUIContext()\n\n // show modal or not will be decided based on risk decision and translation\n const [riskInfo, setRiskInfo] = useState({})\n const [isStepUpDialog, setIsStepUpDialog] = useState(false)\n\n const isDialogAvailable = useCallback(\n (topicRefId) => {\n if (!topicRefId) {\n return false\n }\n const message = getMessage(`authStepUpPrompt.${topicRefId}`)\n return message !== `authStepUpPrompt.${topicRefId}`\n },\n [getMessage],\n )\n\n // call anw to get auth url and return that\n const performStepupAuth = useCallback(\n async (contextId, contactChannel, stepUpCallback) => {\n try {\n setIsLoader(true)\n const channel = CONTACT_CHANNEL_API_MAPPING[contactChannel]\n const { data } = await getAPI(API_NAMES.STEP_UP_AUTH, {\n queryParams: {\n contextId,\n contactChannel: channel,\n returnUrl: location.pathname,\n },\n fptiParams: {\n hc_event_info: `${channel}|${contextId}`,\n },\n })\n if (data?.authUrl) {\n setAuthSession(contactChannel)\n window.open(data?.authUrl, '_self')\n } else {\n // navigate to contact channel\n stepUpCallback(contactChannel)\n }\n } catch (err) {\n stepUpCallback(contactChannel)\n } finally {\n setIsLoader(false)\n }\n },\n [setIsLoader, getAPI],\n )\n\n // step up risk check will do api call and return status\n const stepupRiskCheck = useCallback(\n async (stepUpCallback, topicRefId, contactChannel, attempt) => {\n try {\n setIsLoader(true)\n const getStepUpDecision = (data) => {\n if (Array.isArray(data?.decisions) && data.decisions.length) {\n return data.decisions[0]?.decision_code\n }\n return null\n }\n const channel = CONTACT_CHANNEL_API_MAPPING[contactChannel]\n const queryParams = {\n intentId: topicRefId,\n contactChannel: channel,\n attempt,\n }\n const { data } = await getAPI(API_NAMES.STEP_UP_RISK_CHECK, {\n queryParams,\n fptiParams: {\n hc_event_info: `${channel}|${topicRefId}|${attempt}`,\n },\n })\n // if risk check decision is ALLOW, proceed with launch of contact channel\n const decision = getStepUpDecision(data)\n const contextId = data?.authflow_context_id\n if (decision === STEPUP_STATUS.ALLOW || attempt === SECOND) {\n stepUpCallback(contactChannel, decision)\n } else if (decision === STEPUP_STATUS.CONTINGENT) {\n if (isDialogAvailable(topicRefId)) {\n setRiskInfo({ decision, contextId })\n setIsStepUpDialog(true)\n } else {\n trackActivity({\n name: componentNames.STEP_UP,\n type: fptiTypes.ERROR,\n hc_event_info: `dialog-unavailable|${contactChannel}|${topicRefId}`,\n })\n performStepupAuth(contextId)\n }\n } else {\n stepUpCallback(contactChannel)\n }\n } catch (err) {\n stepUpCallback(contactChannel)\n } finally {\n setIsLoader(false)\n }\n },\n [performStepupAuth, isDialogAvailable, trackActivity, setIsLoader],\n )\n\n const initiateStepup = useCallback(\n (stepUpCallback, topicRefId, contactChannel) => {\n if (topicRefId && contactChannel) {\n // reset risk info\n setRiskInfo({})\n const attempt = getRiskCheckAttempt()\n resetAuthSession()\n stepupRiskCheck(stepUpCallback, topicRefId, contactChannel, attempt)\n }\n },\n [stepupRiskCheck],\n )\n\n const actionHandler = useCallback(\n (type, contactChannel, stepUpCallback) => {\n setIsStepUpDialog(false)\n trackClick({\n name: componentNames.STEP_UP_DIALOG,\n type: fptiTypes.ON_CLICK,\n link: `${contactChannel}|${type}|clicked`,\n })\n switch (type) {\n case YES:\n performStepupAuth(riskInfo.contextId, contactChannel, stepUpCallback)\n break\n case NO:\n stepUpCallback(contactChannel)\n break\n default: // dismiss case\n stepUpCallback(contactChannel)\n }\n },\n [performStepupAuth, riskInfo, trackClick],\n )\n\n const isPageEligibleForStepUp = useCallback(() => {\n return STEP_AUTH_PAGES.includes(pageName)\n }, [pageName])\n\n const isStepUpAuthApplicable = useCallback(\n (contactChannel) => {\n return (\n isLoggedIn &&\n isPageEligibleForStepUp() &&\n STEPUP_AUTH_CONTACT_OPTIONS[contactChannel]\n )\n },\n [isLoggedIn, isPageEligibleForStepUp],\n )\n\n return {\n isStepUpDialog,\n initiateStepup,\n actionHandler,\n isStepUpAuthApplicable,\n isPageEligibleForStepUp,\n }\n}\n\nexport default useStepUp\n","import { useCallback, useEffect, useState } from 'react'\nimport { AUTHFLOW_PASSWORD_RECOVERY_URL, CONTACT_OPTIONS } from '../constants'\nimport { useAppContext } from '../contexts/app-context'\nimport { componentNames, fptiTypes } from '../utils/analytics/fpti-constants'\nimport { isChatBotExists } from '../utils/chatbot'\nimport {\n getActiveContactChannel,\n resetContactChannelSession,\n setContactChannelSession,\n} from '../utils/contactChannel'\nimport {\n getChatEntryPoint,\n getLoginHostUrl,\n navigateToCallUsWithAppCtx,\n} from '../utils/helper'\nimport useChatBot from './useChatBot'\nimport useStepUp from './useStepUp'\nimport useTracking from './useTracking'\n\nconst CHAT_CHANNELS = [CONTACT_OPTIONS.CHAT, CONTACT_OPTIONS.CHAT_BOT]\n\nexport const useContactChannels = ({\n channels,\n urls,\n topicRefId,\n chatEntryPointName,\n}) => {\n const { trackActivity, trackClick } = useTracking()\n const { initializeAsyncChat, initializeChatBot } = useChatBot()\n const { isPageEligibleForStepUp, isStepUpAuthApplicable } = useStepUp()\n const [isLoginDialog, setIsLoginDialog] = useState(false)\n const [isStepUp, setIsStepUp] = useState(false)\n const [contactChannel, setContactChannel] = useState(null)\n const appCtx = useAppContext()\n const { reqContextData } = appCtx\n const { isLoggedIn } = reqContextData\n const [callUsLoginPromptOpen, setCallUsLoginPromptOpen] = useState(false)\n\n const openChatBot = useCallback(\n async (channel, isAutoLaunch) => {\n const botType =\n channel === CONTACT_OPTIONS.CHAT_BOT\n ? componentNames.CHAT_BOT\n : componentNames.ASYNC_CHAT_BOT\n try {\n if (isChatBotExists()) {\n return null\n }\n const chatBotParams = {\n topicRefId,\n entryPoint: getChatEntryPoint(chatEntryPointName, {\n intentId: topicRefId,\n }),\n }\n if (channel === CONTACT_OPTIONS.CHAT_BOT) {\n chatBotParams.sessionType = 'chatBot'\n trackClick({\n name: componentNames.CONTACT_CHANNEL,\n type: fptiTypes.ON_CLICK,\n link: `${botType}|${isAutoLaunch ? 'auto|' : ''}clicked`,\n hc_event_info: JSON.stringify(chatBotParams),\n })\n return await initializeChatBot(chatBotParams)\n }\n trackClick({\n name: componentNames.CONTACT_CHANNEL,\n type: fptiTypes.ON_CLICK,\n link: `${botType}|${isAutoLaunch ? 'auto|' : ''}clicked`,\n hc_event_info: JSON.stringify(chatBotParams),\n })\n return await initializeAsyncChat(chatBotParams)\n } catch (error) {\n trackActivity({\n name: componentNames.CONTACT_CHANNEL,\n type: fptiTypes.ERROR,\n hc_event_info: `${botType}-error-during-initialization`,\n })\n }\n return null\n },\n [\n initializeAsyncChat,\n trackActivity,\n trackClick,\n topicRefId,\n chatEntryPointName,\n initializeChatBot,\n ],\n )\n\n const navigateToChannel = useCallback(\n (name, isAutoLaunch) => {\n setIsStepUp(false)\n setContactChannel(null)\n switch (name) {\n case CONTACT_OPTIONS.PHONE:\n navigateToCallUsWithAppCtx({ appCtx })\n break\n case CONTACT_OPTIONS.CHAT_BOT:\n case CONTACT_OPTIONS.CHAT:\n openChatBot(name, isAutoLaunch)\n break\n default:\n if (urls[name]) {\n window.open(urls[name], '_blank')\n }\n }\n },\n [urls, appCtx, openChatBot],\n )\n\n const onChannelClick = useCallback(\n (name, isAutoLaunch) => {\n if (CHAT_CHANNELS.includes(name) && isChatBotExists()) {\n return\n }\n setContactChannel(name)\n if (isStepUpAuthApplicable(name)) {\n setIsStepUp(true)\n return\n }\n setIsStepUp(false)\n const clickType = !isAutoLaunch ? `clicked` : `auto|clicked`\n const fptiOptions = {\n name: componentNames.CONTACT_CHANNEL,\n type: fptiTypes.ON_CLICK,\n link: `${componentNames.CONTACT_CHANNEL}|${name}|${clickType}`,\n }\n trackClick(fptiOptions)\n switch (name) {\n case CONTACT_OPTIONS.RES_CENTER:\n case CONTACT_OPTIONS.COMMUNITY:\n navigateToChannel(name)\n break\n case CONTACT_OPTIONS.PHONE:\n if (!isLoggedIn) {\n setCallUsLoginPromptOpen(true)\n } else {\n navigateToChannel(name)\n }\n break\n case CONTACT_OPTIONS.CHAT:\n if (!isLoggedIn) {\n setIsLoginDialog(true)\n } else {\n navigateToChannel(name)\n }\n break\n case CONTACT_OPTIONS.CHAT_BOT:\n navigateToChannel(name)\n break\n default: // TODO\n }\n },\n [isLoggedIn, isStepUpAuthApplicable, navigateToChannel, trackClick],\n )\n\n // on page load check if there is any active channel set if yes then trigger auto click to launch it\n useEffect(() => {\n if (!Array.isArray(channels)) {\n return\n }\n\n const channelList = channels.reduce((list, channel) => {\n if (channel.name) {\n list.push(channel.name)\n }\n return list\n }, [])\n\n trackActivity({\n name: componentNames.CONTACT_CHANNELS,\n type: fptiTypes.SUCCESS,\n hc_event_info: channelList.join('|'),\n })\n const activeChannel = getActiveContactChannel()\n if (activeChannel) {\n resetContactChannelSession()\n const channelApplicable = channelList.includes(activeChannel)\n if (isLoggedIn && channelApplicable) {\n onChannelClick(activeChannel, true)\n }\n }\n }, [trackActivity, channels, isLoggedIn, onChannelClick])\n\n const onLoginClick = useCallback(\n (componentName, channel) => {\n trackClick({\n name: componentName,\n type: fptiTypes.ON_CLICK,\n link: `${channel}|login|clicked`,\n })\n if (channel === CONTACT_OPTIONS.PHONE && !isPageEligibleForStepUp()) {\n navigateToCallUsWithAppCtx({ appCtx, isLoginRedirect: true })\n return\n }\n const loginUrl = new URL(`${getLoginHostUrl()}/signin`)\n loginUrl.searchParams.set('returnUri', window.location.href)\n setContactChannelSession(channel)\n window.open(loginUrl.href, '_self')\n },\n [trackClick, isPageEligibleForStepUp, appCtx],\n )\n\n const recoverPasssword = useCallback(\n (componentName, channel) => {\n trackClick({\n name: componentName,\n type: fptiTypes.ON_CLICK,\n link: `${channel}|password-recovery|clicked`,\n })\n window.open(AUTHFLOW_PASSWORD_RECOVERY_URL, '_self')\n },\n [trackClick],\n )\n\n const onLoginDialogClose = useCallback(\n (componentName, channel) => {\n trackClick({\n name: componentName,\n type: fptiTypes.ON_CLICK,\n link: `${channel}|login-dialog-close|clicked`,\n })\n switch (channel) {\n case CONTACT_OPTIONS.CHAT:\n setIsLoginDialog(false)\n break\n case CONTACT_OPTIONS.PHONE:\n setCallUsLoginPromptOpen(false)\n break\n default:\n }\n },\n [trackClick],\n )\n\n return {\n getActiveContactChannel,\n resetContactChannelSession,\n onLoginDialogClose,\n onChannelClick,\n isLoggedIn,\n setIsLoginDialog,\n onLoginClick,\n isLoginDialog,\n recoverPasssword,\n isStepUp,\n contactChannel,\n callUsLoginPromptOpen,\n navigateToChannel,\n }\n}\n","import { Button, Dialog, HeadingText } from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport React, { useEffect } from 'react'\nimport { DISMISS, NO, YES } from '../../constants'\nimport useTracking from '../../hooks/useTracking'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\n\nimport './step-up-dialog.less'\nimport { STEPUP_DIALOG_DATA } from '../../utils/prop-type-shape'\n\nfunction StepUpDialog({\n isDialog,\n actionHandler,\n contactChannel,\n stepUpCallback,\n topicRefId,\n}) {\n const { trackActivity } = useTracking()\n\n useEffect(() => {\n if (isDialog) {\n trackActivity({\n name: componentNames.STEP_UP_DIALOG,\n type: fptiTypes.SUCCESS,\n })\n }\n }, [isDialog, trackActivity])\n\n return (\n actionHandler(DISMISS, contactChannel, stepUpCallback)}\n isOpen={isDialog}\n isFullView\n >\n \n \n \n \n \n actionHandler(YES, contactChannel, stepUpCallback)}\n >\n \n \n actionHandler(NO, contactChannel, stepUpCallback)}\n >\n \n \n \n \n \n )\n}\n\nStepUpDialog.propTypes = STEPUP_DIALOG_DATA\n\nexport default StepUpDialog\n","import React, { useEffect } from 'react'\nimport useStepUp from '../../hooks/useStepUp'\n\nimport useTracking from '../../hooks/useTracking'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\nimport { STEPUP_DATA } from '../../utils/prop-type-shape'\nimport StepUpDialog from './step-up-dialog'\n\nfunction StepUp({ stepUpCallback, topicRefId, contactChannel, isStepUp }) {\n const { initiateStepup, isStepUpDialog, actionHandler } = useStepUp()\n const { trackActivity } = useTracking()\n\n useEffect(() => {\n if (contactChannel && isStepUp) {\n if (topicRefId) {\n trackActivity({\n name: componentNames.STEP_UP,\n type: fptiTypes.SUCCESS,\n hc_event_info: `step-up-initiated|${contactChannel}|${topicRefId}`,\n })\n initiateStepup(stepUpCallback, topicRefId, contactChannel)\n } else {\n trackActivity({\n name: componentNames.STEP_UP,\n type: fptiTypes.VALIDATION_ERROR,\n hc_event_info: `intent-not-available|${contactChannel}`,\n })\n }\n }\n }, [\n initiateStepup,\n contactChannel,\n topicRefId,\n stepUpCallback,\n isStepUp,\n trackActivity,\n ])\n\n const renderStepupConfirmation = () => {\n if (!isStepUpDialog) {\n return null\n }\n\n return (\n \n )\n }\n\n return renderStepupConfirmation()\n}\n\nStepUp.propTypes = STEPUP_DATA\n\nexport default StepUp\n","import { HeadingText } from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport React, { useMemo } from 'react'\nimport { CONTACT_CHANNELS_DATA } from '../../utils/prop-type-shape'\nimport ContactOption from '../contact-channel'\n\nimport { CallUsLoginPrompt, MessageUsLoginDialog } from '../login-dialogs'\n\nimport { useContactChannels } from '../../hooks/useContactChannels'\nimport StepUp from '../step-up'\nimport './contact-channels.less'\n\nfunction ContactChannels({ channels, urls, topicRefId, chatEntryPointName }) {\n const {\n onLoginDialogClose,\n onChannelClick,\n isLoggedIn,\n onLoginClick,\n isLoginDialog,\n recoverPasssword,\n isStepUp,\n contactChannel,\n callUsLoginPromptOpen,\n navigateToChannel,\n } = useContactChannels({ channels, urls, topicRefId, chatEntryPointName })\n\n const [recommendedChannels, otherChannels] = useMemo(() => {\n let recommended = []\n let others = []\n if (Array.isArray(channels) && channels.length) {\n recommended = [channels[0]]\n others = channels.slice(1)\n }\n return [recommended, others]\n }, [channels])\n\n const renderRecommendedChannels = () => {\n if (!Array.isArray(recommendedChannels) || !recommendedChannels.length) {\n return null\n }\n return (\n <>\n \n \n \n {recommendedChannels.map(({ name }) => (\n \n ))}\n \n )\n }\n\n const renderOtherChannels = () => {\n if (!Array.isArray(otherChannels) || !otherChannels.length) {\n return null\n }\n return (\n <>\n \n \n \n {otherChannels.map(({ name }) => (\n \n ))}\n \n )\n }\n\n const renderLoginPrompt = () => {\n if (isLoggedIn) {\n return null\n }\n return (\n \n )\n }\n\n const renderStepUp = () => {\n return (\n \n )\n }\n return (\n <>\n {renderRecommendedChannels()}\n {renderOtherChannels()}\n \n {renderLoginPrompt()}\n {renderStepUp()}\n \n )\n}\n\nContactChannels.propTypes = CONTACT_CHANNELS_DATA\n\nexport default ContactChannels\n","// styles\nimport './hero-module.less'\n\nimport {\n BodyText,\n Col,\n Container,\n HeadingText,\n Link,\n Row,\n} from '@paypalcorp/pp-react'\nimport React, {\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {\n BUSINESS,\n PERSONAL,\n TECHNICAL,\n pageNames,\n urlConstants,\n} from '../../constants'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\n\nimport { Message } from '@paypalcorp/worldready-react'\nimport { HERO_MODULE_DATA } from '../../utils/prop-type-shape'\nimport ShimmerLoader from '../loaders/shimmerLoader'\n// Hooks\nimport { useHelper } from '../../hooks/useHelper'\nimport { useMessage } from '../../hooks/useMessage'\nimport useTracking from '../../hooks/useTracking'\n\nconst searchBar = () => import('../search-bar' /* webpackPrefetch: true */)\n\nconst SearchBarComponent = React.lazy(searchBar)\n\n// Hero Module Component - The top section with search component\nfunction HeroModule(props) {\n const { searchQuery, appliedFilter } = props\n const {\n isLoggedIn,\n getDisplayName,\n generateLinkWithCoBrand,\n getPageName,\n getUserUiExp,\n getHomePathByExperience,\n } = useHelper()\n const { trackActivity } = useTracking()\n const { getMessage } = useMessage()\n const [isSearchReady, setIsSearchReady] = useState(false)\n\n const pageName = getPageName()\n\n useEffect(() => {\n ;(async () => {\n await searchBar()\n setIsSearchReady(true)\n })()\n }, [])\n\n useEffect(() => {\n trackActivity({\n name: componentNames.HERO_MODULE,\n type: fptiTypes.SUCCESS,\n })\n }, [trackActivity])\n\n const experiencePath = getHomePathByExperience()\n\n const isExpHomePage = [PERSONAL, BUSINESS, TECHNICAL].includes(pageName)\n\n const isContactUsPages = [\n pageNames.CONTACT_US,\n pageNames.TOPIC_DETAILS,\n ].includes(pageName)\n\n const getUserExperienceLabel = useCallback(() => {\n if (isContactUsPages) {\n return getMessage('app.helpcenter.experience.contactUsLabel')\n }\n const mapping = {\n [PERSONAL]: 'app.helpcenter.experience.personalLabel',\n [BUSINESS]: 'app.helpcenter.experience.businessLabel',\n [TECHNICAL]: 'app.helpcenter.experience.technicalLabel',\n }\n\n return getMessage(mapping[getUserUiExp()])\n }, [getUserUiExp, getMessage, isContactUsPages])\n\n const userExperienceLabel = useMemo(\n () => getUserExperienceLabel(),\n [getUserExperienceLabel],\n )\n\n const renderSearchBar = () => {\n if (isSearchReady) {\n return (\n }>\n \n \n )\n }\n return \n }\n\n const renderUserGreering = () => {\n if (isExpHomePage || isContactUsPages) {\n const greeting = isLoggedIn() ? (\n \n ) : (\n \n )\n\n return (\n \n {greeting}\n \n )\n }\n return null\n }\n\n const getExperienceLabel = () => {\n if (!isExpHomePage && !isContactUsPages) {\n return (\n \n {userExperienceLabel}\n \n )\n }\n\n return (\n \n {userExperienceLabel}\n \n )\n }\n\n const renderHeroSectionInAupViolationPage = () => {\n return (\n
\n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\n
\n )\n }\n\n if (pageName === pageNames.AUPVIOLATION) {\n return (\n \n \n {renderHeroSectionInAupViolationPage()}\n \n \n )\n }\n\n return (\n \n \n \n {getExperienceLabel()}\n \n \n {renderUserGreering()}\n \n \n {renderSearchBar()}\n \n \n \n )\n}\n\nHeroModule.propTypes = HERO_MODULE_DATA\n\nexport default HeroModule\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Card } from '@paypalcorp/pp-react'\n\nimport './shimmer-loader.less'\n\n// component to load different shimmers with different sizes based on the props.\nconst ShimmerLoader = (props) => {\n const { customLoaderStyle, rows } = props\n\n const getShimmer = () => {\n const defaultShimmerStyle = {\n height: '10rem',\n width: '100%',\n marginBottom: '1rem',\n }\n const customStyle = { ...defaultShimmerStyle, ...customLoaderStyle }\n\n const shimmers = Array.from({ length: rows }, (_, i) => {\n return (\n \n \n \n )\n })\n\n return <>{shimmers}\n }\n\n return getShimmer()\n}\n\nShimmerLoader.propTypes = {\n customLoaderStyle: PropTypes.shape({}),\n rows: PropTypes.number,\n}\n\nShimmerLoader.defaultProps = {\n rows: 1,\n}\nexport default ShimmerLoader\n","export const CHECK_BOT_ELIGIBILITY_URL = '/api/check-bot-eligibility'\nexport const MMT_CONVERSATIONS_URL = '/api/mmt-conversations'\nexport const OCP_SET_CONTEXT_URL = '/api/ocp-set-context'\nexport const UPDATE_BNA_URL = '/api/update-bna'\nexport const FULL_SEARCH_URL = '/api/search'\nexport const AI_SEARCH_STREAM_URL = '/api/get-search-ai-answer'\nexport const SEARCH_SUGGESTIONS = '/api/search-auto-complete'\nexport const SEND_EMAIL = '/api/send-email'\nexport const TOPIC_TREE_URL = '/api/topic-tree'\nexport const STEPUP_AUTH_VALIDATION = '/api/stepup-login-validate'\nexport const STEP_UP_RISK_CHECK = '/api/stepup-riskcheck'\nexport const STEP_UP_AUTH_URL = '/api/stepup-anw'\nexport const SEND_WEBFORM = '/api/send-webform'\n\nexport const API_NAMES = {\n CHECK_BOT_ELIGIBILITY: 'CHECK_BOT_ELIGIBILITY',\n MMT_CONVERSATIONS: 'MMT_CONVERSATIONS',\n OCP_SET_CONTEXT: 'OCP_SET_CONTEXT',\n UPDATE_BNA: 'UPDATE_BNA',\n FULL_SEARCH: 'FULL_SEARCH',\n AI_SEARCH_STREAM: 'AI_SEARCH_STREAM',\n SEARCH_SUGGESTIONS: 'SEARCH_SUGGESTIONS',\n SEND_EMAIL: 'SEND_EMAIL',\n TOPIC_TREE: 'TOPIC_TREE',\n STEPUP_AUTH_VALIDATION: 'STEPUP_AUTH_VALIDATION',\n STEP_UP_RISK_CHECK: 'STEP_UP_RISK_CHECK',\n STEP_UP_AUTH: 'STEP_UP_AUTH',\n SEND_WEBFORM: 'SEND_WEBFORM',\n}\n\nexport const API_URLS = {\n [API_NAMES.CHECK_BOT_ELIGIBILITY]: CHECK_BOT_ELIGIBILITY_URL,\n [API_NAMES.MMT_CONVERSATIONS]: MMT_CONVERSATIONS_URL,\n [API_NAMES.OCP_SET_CONTEXT]: OCP_SET_CONTEXT_URL,\n [API_NAMES.UPDATE_BNA]: UPDATE_BNA_URL,\n [API_NAMES.FULL_SEARCH]: FULL_SEARCH_URL,\n [API_NAMES.AI_SEARCH_STREAM]: AI_SEARCH_STREAM_URL,\n [API_NAMES.SEARCH_SUGGESTIONS]: SEARCH_SUGGESTIONS,\n [API_NAMES.SEND_EMAIL]: SEND_EMAIL,\n [API_NAMES.TOPIC_TREE]: TOPIC_TREE_URL,\n [API_NAMES.STEPUP_AUTH_VALIDATION]: STEPUP_AUTH_VALIDATION,\n [API_NAMES.STEP_UP_RISK_CHECK]: STEP_UP_RISK_CHECK,\n [API_NAMES.STEP_UP_AUTH]: STEP_UP_AUTH_URL,\n [API_NAMES.SEND_WEBFORM]: SEND_WEBFORM,\n}\n","import axios from 'axios'\n\nimport { useCallback } from 'react'\nimport { API_URLS } from '../constants/api'\nimport { useAppContext } from '../contexts/app-context'\n\n/**\n * attach query params on api url\n * @param { string } url\n * @param { object } queryParams\n * @returns\n */\nconst attachQueryParams = (url, queryParams = {}) => {\n url += '?'\n for (const param in queryParams) {\n url += `${encodeURIComponent(param)}=${encodeURIComponent(\n queryParams[param],\n )}&`\n }\n url = url.slice(0, -1)\n return url\n}\n\n/**\n * For any api calls from UI\n */\nconst useAPI = () => {\n const {\n reqContextData: { _csrf },\n } = useAppContext()\n // const { trackActivity } = useTracking()\n\n /**\n * For any GET API call invocation from UI\n * @param { string } url\n * @param { object } query params\n * @returns { Promise } API response\n */\n const getAPI = useCallback(\n async (\n apiName,\n options = { body: {}, queryParams: {}, fptiParams: {} },\n ) => {\n // const hc_event_info = options?.fptiParams?.hc_event_info || null\n try {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_INIT,\n // hc_event_info,\n // })\n const { queryParams = {} } = options\n let url = API_URLS[apiName]\n url = attachQueryParams(url, queryParams)\n const response = await axios.get(`/cshelp${url}`)\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_SUCCESS,\n // hc_event_info,\n // })\n return response\n } catch (error) {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_ERROR,\n // hc_event_info,\n // })\n throw error\n }\n },\n [],\n )\n\n /**\n * For any POST API call invocation from UI\n * @param { string } url\n * @param { object } request body and query params\n * @returns { Promise } API response\n */\n const postAPI = useCallback(\n async (\n apiName,\n options = { body: {}, queryParams: {}, fptiParams: {} },\n ) => {\n // const hc_event_info = options?.fptiParams?.hc_event_info || null\n try {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_INIT,\n // hc_event_info,\n // })\n const { body = {}, queryParams = {} } = options\n let url = API_URLS[apiName]\n url = attachQueryParams(url, queryParams)\n const response = await axios.post(`/cshelp${url}`, { ...body, _csrf })\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_SUCCESS,\n // hc_event_info,\n // })\n return response\n } catch (error) {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_ERROR,\n // hc_event_info,\n // })\n throw error\n }\n },\n [_csrf],\n )\n\n return { getAPI, postAPI }\n}\n\nexport default useAPI\n","import _isEmpty from 'lodash/isEmpty'\nimport { useCallback } from 'react'\nimport { chatBotMessageUsRefIdsMapping } from '../constants'\nimport { API_NAMES } from '../constants/api'\nimport { useAppContext } from '../contexts/app-context'\nimport { asyncChatValidator, nodeChatOnPageValidator } from '../utils/chatbot'\nimport poll from '../utils/poll'\nimport useAPI from './useAPI'\n\nconst pollRetries = 5\nconst pollDelay = 200\n\n// use this hook for openning chat bot\nconst useChatBot = () => {\n const { reqContextData, pageProps } = useAppContext()\n const { pageName } = pageProps\n const { getAPI } = useAPI()\n\n /**\n * Open Async Chat based on the MMT Response.\n * @param params\n * @param mmtResponse\n * If the service returns active conversation pass conversation id to Async chat else pass empty string.\n * If the service fails pass 'INVALID_CONVERSATION' as a parameter to async chat.\n */\n const openAsyncChat = useCallback(\n (params, mmtResponse) => {\n if (!params.entryPoint) {\n throw new Error('Missing entryPoint', 'entryPoint is required')\n }\n const { device_type } = reqContextData\n const asyncParams = {\n sessionType: 'conversation',\n hasReply: true,\n isExtended: false,\n conversationProfile: 'HELP_CENTER',\n entryPoint: params.entryPoint,\n }\n\n asyncParams.topicName =\n params.topicRefId || chatBotMessageUsRefIdsMapping.GENERIC\n asyncParams.deviceType = device_type\n asyncParams.page = pageName\n asyncParams.origin = params.origin || ''\n asyncParams.subject = params.subject || ''\n if (params.customerIntent) {\n asyncParams.customer_intent = params.customerIntent\n }\n if (params.intentCode) {\n asyncParams.intent_code = params.intentCode\n }\n if (mmtResponse && mmtResponse.protocol) {\n asyncParams.protocol = mmtResponse.protocol\n }\n\n let id = ''\n if (typeof mmtResponse === 'object' && !_isEmpty(mmtResponse)) {\n if (mmtResponse.isConversationActive && !mmtResponse.serviceError) {\n id = mmtResponse.id\n } else if (mmtResponse.serviceError) {\n id = 'INVALID_CONVERSATION'\n }\n }\n window.nodeChat.showAsync(id, asyncParams)\n },\n [reqContextData, pageName],\n )\n\n /**\n * Open chat bot\n * @param { string } topicRefId\n * @param { string } subject\n */\n const initiateChatBot = (params) => {\n if (!params.entryPoint) {\n throw new Error('Missing entryPoint - entryPoint is required')\n }\n const options = {\n sessionType: params.sessionType || 'chatBot',\n topicName: params.topicRefId,\n conversationProfile: 'HELP_CENTER',\n entryPoint: params.entryPoint,\n }\n return window.nodeChat.show(options)\n }\n\n const invokingAsyncChat = useCallback(\n async (params, mmtResponse) => {\n await poll(asyncChatValidator, pollRetries, pollDelay)\n openAsyncChat(params, mmtResponse)\n },\n [openAsyncChat],\n )\n\n /**\n * Calls MMT conversations api and formats response\n */\n const callMMTConversationsAPI = useCallback(async () => {\n try {\n const { data } = await getAPI(API_NAMES.MMT_CONVERSATIONS)\n const conversations = data && data.conversations\n if (Array.isArray(conversations) && conversations.length) {\n return {\n isConversationActive: true,\n id: conversations[0].id,\n serviceError: false,\n protocol: conversations[0].protocol,\n }\n }\n return { isConversationActive: false, serviceError: false }\n } catch (error) {\n // Don't throw an error, since we have to consume response only if success else proceed without it\n return { isConversationActive: false, serviceError: true }\n }\n }, [getAPI])\n\n /**\n * Initialises async chat bot and opens it\n */\n const initializeAsyncChat = useCallback(\n async (params) => {\n const mmtResponse = await callMMTConversationsAPI()\n invokingAsyncChat(params, mmtResponse)\n },\n [invokingAsyncChat, callMMTConversationsAPI],\n )\n\n /**\n * Initialises chat bot and opens it\n */\n const initializeChatBot = useCallback(async (params) => {\n await poll(nodeChatOnPageValidator, pollRetries, pollDelay)\n initiateChatBot(params)\n }, [])\n\n return {\n initializeAsyncChat,\n initializeChatBot,\n }\n}\n\nexport default useChatBot\n","import { useCallback } from 'react'\nimport { JP, PERSONAL, BUSINESS, TECHNICAL } from '../constants'\nimport { useAppContext } from '../contexts/app-context'\n\nexport const useHelper = () => {\n const { reqContextData, pageProps } = useAppContext()\n\n const generateLinkWithCoBrand = useCallback(\n (link) => {\n if (reqContextData.coBrand) {\n return `/${reqContextData.coBrand}${link}`\n }\n return link\n },\n [reqContextData],\n )\n\n const isLoggedIn = useCallback(() => {\n return reqContextData.isLoggedIn\n }, [reqContextData])\n\n const getPageName = useCallback(() => {\n return pageProps.pageName\n }, [pageProps])\n\n const getDisplayName = useCallback(() => {\n const { user, country } = reqContextData\n if (user && typeof user === 'object') {\n if (country === JP) {\n return user.lastName || ''\n }\n return user.firstName || ''\n }\n return ''\n }, [reqContextData])\n\n const getUserUiExp = useCallback(() => {\n return reqContextData.userUiExp\n }, [reqContextData])\n\n const getHomePathByExperience = useCallback(\n (exp) => {\n const experience = exp || reqContextData.userUiExp\n const experiencePathMapping = {\n [PERSONAL]: '/cshelp/personal',\n [BUSINESS]: '/cshelp/business',\n [TECHNICAL]: '/cshelp/technical',\n }\n\n return experiencePathMapping[experience] || '/cshelp/home'\n },\n [reqContextData],\n )\n\n return {\n generateLinkWithCoBrand,\n isLoggedIn,\n getDisplayName,\n getPageName,\n getUserUiExp,\n getHomePathByExperience,\n }\n}\n","import { MessageFormat } from '@paypalcorp/worldready'\nimport { Context as WorldReadyContext } from '@paypalcorp/worldready-react'\nimport { useContext, useCallback } from 'react'\n\nexport const useMessage = () => {\n const worldReady = useContext(WorldReadyContext)\n\n const getMessage = useCallback(\n (messageId, data) => {\n if (data) {\n return new MessageFormat(worldReady, { id: messageId }).format(data)\n }\n return new MessageFormat(worldReady, { id: messageId }).format()\n },\n [worldReady],\n )\n\n return { getMessage }\n}\n","/**\n * checks if chat bot exists in environment or not\n */\nexport const nodeChatOnPageValidator = () => {\n const { nodeChat } = window\n if (!nodeChat || typeof nodeChat.show !== 'function') {\n return Promise.reject(new Error('nodeChat is not available on the window'))\n }\n return Promise.resolve(window.nodeChat)\n}\n\n/**\n * checks if chat bot already opened in the web page\n */\nexport const isChatBotExists = (targetNode = null) => {\n let nodeChatElement\n if (targetNode) {\n nodeChatElement = targetNode\n } else {\n nodeChatElement = document.getElementById('node-chat') || null\n }\n if (nodeChatElement) {\n // Old node-chat implementation check\n if (nodeChatElement.style.display) {\n return nodeChatElement.style.display === 'block'\n }\n\n // New node-chat implementation\n return (\n nodeChatElement.style.visibility &&\n nodeChatElement.style.visibility === 'visible'\n )\n }\n return false\n}\n\n/**\n * checks if async chat bot exists in environment or not\n */\nexport const asyncChatValidator = () => {\n const { nodeChat } = window\n if (!nodeChat || typeof nodeChat.showAsync !== 'function') {\n return Promise.reject(new Error('nodeChat is not available on the window'))\n }\n return Promise.resolve()\n}\n"],"names":["_templateObject","_templateObject2","_templateObject3","_excluded","iconMap","info","success","warning","error","ContextualAlert","_ref","className","_ref$type","type","_ref$typeIconAriaLabe","typeIconAriaLabel","children","_ref$noPadding","noPadding","rest","tokens","u","_styles","useMemo","Object","keys","length","sysSpaceSm","sysSpaceLg","sysSizeIconXs","textCaption","caption","base","css","statusIcon","styles","iconCssVal","StatusIcon","baseCSS","jsx","role","size","color","Alerts","pageName","suppressError","componentName","COMPONENT_NAME","fptiOptions","pgrp","FPTI_PREFIX","page","componentNames","ALERT","propTypes","ALERTS_DATA","CONTACT_OPTIONS","COMMUNITY","CHAT","CHAT_BOT","RES_CENTER","PHONE","EMAIL","ContactChannel","formattedName","name","onClick","IconComponent","secondary","iconComponent","replace","toLowerCase","Message","id","CONTACT_CHANNEL_DATA","CLICK_TYPES","MSG_US_LOGIN_DIALOG","MessageUsLoginDialog","isDialogOpen","onLoginClick","recoverPasssword","onClose","trackActivity","useTracking","useEffect","fptiTypes","SUCCESS","center","isOpen","isFullView","as","fullWidthOnMobile","MESSAGE_US_LOGIN_DIALOG_DATA","Divider","inverse","sysColorStructureDivider","sysSpaceMd","sysBorderThicknessNormal","sysColorPrimaryContrast","cssVal","CALL_US_LOGIN_SHEET","CallUsLoginPrompt","onLoginDialogClose","trackClick","appCtx","useAppContext","onCloseComplete","hideTitle","footerAlign","e","stopPropagation","loginBtnClickHandler","href","troubleLogInClickHandler","link","innerMessage","strong","ON_CLICK","navigateToCallUsWithAppCtx","callUsAsGuestClickHandler","CALL_US_LOGIN_DIALOG_DATA","setContactChannelSession","channel","sessionStorage","setItem","resetContactChannelSession","removeItem","getActiveContactChannel","getItem","setAuthSession","getMessage","useMessage","pageProps","isLoggedIn","reqContextData","getAPI","useAPI","setIsLoader","useCommonUIContext","useState","riskInfo","setRiskInfo","isStepUpDialog","setIsStepUpDialog","isDialogAvailable","useCallback","topicRefId","performStepupAuth","contextId","contactChannel","stepUpCallback","CONTACT_CHANNEL_API_MAPPING","API_NAMES","STEP_UP_AUTH","queryParams","returnUrl","location","pathname","fptiParams","hc_event_info","data","authUrl","window","open","stepupRiskCheck","attempt","getStepUpDecision","Array","isArray","decisions","decision_code","intentId","STEP_UP_RISK_CHECK","decision","authflow_context_id","STEPUP_STATUS","ALLOW","SECOND","CONTINGENT","STEP_UP","ERROR","initiateStepup","FIRST","actionHandler","STEP_UP_DIALOG","YES","NO","isPageEligibleForStepUp","STEP_AUTH_PAGES","includes","isStepUpAuthApplicable","STEPUP_AUTH_CONTACT_OPTIONS","CHAT_CHANNELS","StepUpDialog","isDialog","DISMISS","STEPUP_DIALOG_DATA","StepUp","isStepUp","useStepUp","VALIDATION_ERROR","STEPUP_DATA","ContactChannels","channels","urls","chatEntryPointName","useChatBot","initializeAsyncChat","initializeChatBot","isLoginDialog","setIsLoginDialog","setIsStepUp","setContactChannel","callUsLoginPromptOpen","setCallUsLoginPromptOpen","openChatBot","isAutoLaunch","botType","ASYNC_CHAT_BOT","isChatBotExists","chatBotParams","entryPoint","getChatEntryPoint","sessionType","CONTACT_CHANNEL","JSON","stringify","navigateToChannel","onChannelClick","clickType","channelList","reduce","list","push","CONTACT_CHANNELS","join","activeChannel","channelApplicable","loginUrl","URL","getLoginHostUrl","searchParams","set","isLoginRedirect","AUTHFLOW_PASSWORD_RECOVERY_URL","useContactChannels","recommended","others","slice","recommendedChannels","otherChannels","map","key","setOponen","CONTACT_CHANNELS_DATA","searchBar","SearchBarComponent","React","HeroModule","props","searchQuery","appliedFilter","useHelper","getDisplayName","generateLinkWithCoBrand","getPageName","getUserUiExp","getHomePathByExperience","isSearchReady","setIsSearchReady","HERO_MODULE","experiencePath","isExpHomePage","PERSONAL","BUSINESS","TECHNICAL","isContactUsPages","pageNames","CONTACT_US","TOPIC_DETAILS","getUserExperienceLabel","mapping","userExperienceLabel","AUPVIOLATION","xxl","urlConstants","CSHELP_HOME","DEFAULT_COMMUNITY_LINK","DISPUTES","greeting","Suspense","fallback","HERO_MODULE_DATA","ShimmerLoader","customStyle","shimmers","customLoaderStyle","rows","height","width","marginBottom","from","_","i","style","isLoading","PropTypes","defaultProps","AI_SEARCH_STREAM_URL","CHECK_BOT_ELIGIBILITY","MMT_CONVERSATIONS","OCP_SET_CONTEXT","UPDATE_BNA","FULL_SEARCH","AI_SEARCH_STREAM","SEARCH_SUGGESTIONS","SEND_EMAIL","TOPIC_TREE","STEPUP_AUTH_VALIDATION","SEND_WEBFORM","API_URLS","attachQueryParams","url","param","encodeURIComponent","_csrf","apiName","options","body","axios","get","response","postAPI","post","openAsyncChat","params","mmtResponse","Error","device_type","asyncParams","hasReply","isExtended","conversationProfile","topicName","chatBotMessageUsRefIdsMapping","GENERIC","deviceType","origin","subject","customerIntent","customer_intent","intentCode","intent_code","protocol","_isEmpty","isConversationActive","serviceError","nodeChat","showAsync","initiateChatBot","show","invokingAsyncChat","poll","asyncChatValidator","callMMTConversationsAPI","conversations","nodeChatOnPageValidator","coBrand","user","country","JP","lastName","firstName","userUiExp","exp","experience","worldReady","useContext","WorldReadyContext","messageId","MessageFormat","format","Promise","resolve","reject","nodeChatElement","document","getElementById","display","visibility"],"sourceRoot":""}