{"version":3,"file":"815.bundle.js","mappings":"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","sources":["webpack:///./lib/app-download-events.js","webpack:///./utils/world-ready.js","webpack:///./components/qrc-component.js","webpack:///./components/interpolate-component.js","webpack:///./screens/app-download/reusable-components.js","webpack:///./screens/app-download/sms-success.js","webpack:///./screens/app-download/index.js","webpack:///./utils/analytics.js","webpack:///../../server/src/constants/index.js"],"sourcesContent":["import { trackImpression, trackMORS, trackClick } from './fpti-analytics'\nimport { parsePhoneNumber } from '../utils/world-ready'\n\n/**\n * Click handler with FPTI and MORS tracking\n * @param {*} param0\n * @param {*} event\n * @param {*} url\n * @param {*} target\n */\nexport const handleClick = (\n { fptiData, morsClickTrackingUrl },\n event,\n url = null,\n target = '_self',\n) => {\n event.preventDefault()\n const element = event.currentTarget,\n link = element.getAttribute('data-name')\n trackClick({\n options: {\n ...fptiData,\n link,\n },\n })\n if (morsClickTrackingUrl) {\n trackMORS({\n method: 'GET',\n url: morsClickTrackingUrl,\n })\n }\n if (url) {\n window.open(url, target)\n }\n}\n\nconst getErrorMessage = (errorMessages, status = 500) => {\n return errorMessages[`${status}`] || errorMessages.default\n}\n\n/**\n * Validate phone number and set state variables\n * @param {*} param0\n * @param {*} phoneNumber\n */\nexport const phoneValidator = (\n { country, setSmsButtonDisabled, setError, errorMessages },\n phoneNumber,\n) => {\n const parsedPhone = parsePhoneNumber(country, phoneNumber)\n if ('errors' in parsedPhone) {\n setSmsButtonDisabled(true)\n setError(getErrorMessage(errorMessages, 400))\n return null\n }\n setSmsButtonDisabled(false)\n setError('')\n return parsedPhone.nationalNumber\n}\n\n/**\n * FPTI tracking for success or failure response\n */\nconst trackPostResponse = (fptiData, isError = false) => {\n let pageName = `${fptiData.page}:SUCCESS`\n if (isError) {\n pageName = `${fptiData.page}:ERROR`\n }\n trackImpression({\n options: {\n ...fptiData,\n page: pageName,\n },\n })\n}\n\n/**\n * Init POST request\n * @param {*} fptiData\n * @param {*} morsClickTrackingUrl\n * @param {*} setSpinner\n * @param {*} event\n */\nconst initPost = (fptiData, morsClickTrackingUrl, setSpinner, event) => {\n setSpinner(true)\n handleClick({ fptiData, morsClickTrackingUrl }, event)\n event.target.blur()\n const formElements = document.querySelectorAll('[tabindex=\"0\"]')\n formElements.forEach((element) => {\n element.setAttribute('tabindex', -1)\n })\n}\n\n/**\n * POST request handler\n * @param {*} param0\n * @param {*} event\n */\nexport const postHandler = (\n {\n fptiData,\n morsClickTrackingUrl,\n _csrf,\n intent,\n src,\n tsrce,\n setSpinner,\n setSmsSuccess,\n setError,\n setSmsButtonDisabled,\n isLoggedIn,\n hasConfirmedPhone,\n isIncentive,\n isMobile,\n redirectUrl,\n errorMessages,\n country,\n },\n event,\n) => {\n try {\n const urlPrefix = isLoggedIn\n ? '/cgp/api/app-download/'\n : '/cgp/public/api/app-download/'\n const url = isIncentive ? `${urlPrefix}incentive` : `${urlPrefix}sms`\n const phoneElementId = hasConfirmedPhone\n ? '#appDownload_phoneSelect'\n : '#appDownload_phoneInput'\n const phoneElement = document.querySelector(phoneElementId)\n let phoneNumber\n\n // Desktop Safe check\n if (!isMobile && !phoneElement) {\n setError(getErrorMessage(errorMessages))\n } else {\n initPost(fptiData, morsClickTrackingUrl, setSpinner, event)\n // Validate phone number only for manual input\n // For pre-populated phone, validate phone number against user data\n if (\n !isMobile &&\n !hasConfirmedPhone &&\n (phoneNumber = phoneValidator(\n { country, setSmsButtonDisabled, setError, errorMessages },\n phoneElement.value,\n )) === null\n ) {\n setSpinner(false)\n } else {\n setError('')\n setSmsButtonDisabled(false)\n let requestPayload = {\n _csrf,\n tsrce,\n src,\n intent,\n cgp: true,\n }\n // Add phone number to payload only for non-mWeb use cases\n if (!isMobile) {\n requestPayload = {\n ...requestPayload,\n phoneNumber: hasConfirmedPhone ? phoneElement.value : phoneNumber,\n }\n }\n const xmlhttp = new XMLHttpRequest()\n xmlhttp.open('POST', url, true)\n xmlhttp.setRequestHeader('Content-Type', 'application/json')\n xmlhttp.send(JSON.stringify(requestPayload))\n xmlhttp.onload = function () {\n setSpinner(false)\n // If error, set error message in state\n if (xmlhttp.status >= 400) {\n setError(getErrorMessage(errorMessages, xmlhttp.status))\n trackPostResponse(fptiData, true)\n } else {\n trackPostResponse(fptiData)\n // If mWeb, redirect to app\n if (isMobile && redirectUrl) {\n window.location.replace(redirectUrl)\n } else {\n // If non-mWeb, set sms success in state for success page\n setSmsSuccess(true)\n }\n }\n }\n xmlhttp.onerror = function () {\n setSpinner(false)\n setError(getErrorMessage(errorMessages))\n trackPostResponse(fptiData, true)\n }\n }\n }\n } catch (error) {\n setSpinner(false)\n setError(getErrorMessage(errorMessages))\n trackPostResponse(true)\n }\n}\n\n/**\n * Function to construct FPTI page name\n * @param {*} serverData\n */\nexport const getFPTIPageName = (serverData) => {\n const {\n personalization: {\n viewName = 'main:consappdownload:xsell:::',\n isNewVisual = false,\n isIncentive = false,\n qrc = {},\n sms = {},\n } = {},\n deviceDetails: { isMobile = false } = {},\n } = serverData\n let pageType = 'DESKTOP'\n\n // page name for MWEB page: main:consappdownload:xsell:::MWEB\n // page name for DESKTOP QRC page: main:consappdownload:xsell:::DESKTOP_QRC\n // page name for DESKTOP SMS page: main:consappdownload:xsell:::DESKTOP_SMS\n // page name for MWEB incentive version: main:consappdownload:xsell:::MWEB_INCENTIVE\n // page name for Desktop incentive SMS version: main:consappdownload:xsell:::DESKTOP_INCENTIVE_SMS\n // page name for Desktop incentive QRC version: main:consappdownload:xsell:::DESKTOP_INCENTIVE_QRC\n // page name for Desktop incentive QRC and SMS version: main:consappdownload:xsell:::DESKTOP_INCENTIVE\n // page name for Desktop non-incentive version (both QRC and SMS present): main:consappdownload:xsell:::DESKTOP\n\n if (isNewVisual) {\n if (isIncentive && isMobile) {\n pageType = 'MWEB_INCENTIVE' // Incentive mWeb\n } else if (isMobile) {\n pageType = 'MWEB' // Non-incentive mWeb\n } else if (isIncentive && qrc.title && !sms.label) {\n pageType = 'DESKTOP_INCENTIVE_QRC' // Incentive Desktop QRC\n } else if (isIncentive && sms.label && !qrc.title) {\n pageType = 'DESKTOP_INCENTIVE_SMS' // Incentive Desktop SMS\n } else if (isIncentive) {\n pageType = 'DESKTOP_INCENTIVE' // Incentive Desktop QRC and SMS {\n }\n } else if (isMobile) {\n pageType = 'MWEB'\n } else if (qrc && qrc.title) {\n pageType = 'DESKTOP_QRC'\n } else {\n pageType = 'DESKTOP_SMS'\n }\n return `${viewName}${pageType}`\n}\n","import { PhoneNumberFormat } from '@paypalcorp/worldready'\n\nconst parsePhoneNumber = (country, phoneNumber) => {\n const phoneNumberFormatter = new PhoneNumberFormat({\n phoneRegion: country,\n })\n return phoneNumberFormatter.parse(phoneNumber)\n}\n\nexport { parsePhoneNumber }\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\nimport QRCode from 'qrcode.react'\n\nconst defaultImageSettings = {\n src:\n 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA1OSAoODYxMjcpIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPlBQX0hvcml6b250YWxfY215a18yMDE2PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlBQX0hvcml6b250YWxfY215a18yMDE2IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR3JvdXAtMTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguMDAwMDAwLCAxLjAwMDAwMCkiPgogICAgICAgICAgICA8cGF0aCBkPSJNNzAuMTI2NDI0Miw4LjEzOTkzOTM5IEM2NS42MjQzNjM2LDMuMDEwMjgyODMgNTcuNDkxMzUzNSwwLjgxMjcwNzA3MSA0Ny4wODU1MzU0LDAuODEyNzA3MDcxIEwxNi44Nzg3Njc3LDAuODEyNzA3MDcxIEMxNC43NTI0NjQ2LDAuODEyNzA3MDcxIDEyLjk0MTkzOTQsMi4zNTk5MTkxOSAxMi42MTAzMjMyLDQuNDYwNDg0ODUgTDAuMDMyNjY2NjY2Nyw4NC4yMTk2MTYyIEMtMC4yMTU3OTc5OCw4NS43OTM1NTU2IDEuMDAwNzg3ODgsODcuMjE2MDQwNCAyLjU5MzUzNTM1LDg3LjIxNjA0MDQgTDIxLjI0MTI1MjUsODcuMjE2MDQwNCBMMTkuOTU0MzgzOCw5NS4zNzc3NTc2IEMxOS43Mzc1OTYsOTYuNzU0NzA3MSAyMC44MDA3NDc1LDk4IDIyLjE5NDUyNTMsOTggTDM3LjkxMjE0MTQsOTggQzM5Ljc3MzE1MTUsOTggNDEuMzU2OTg5OSw5Ni42NDU4MTgyIDQxLjY0NzAzMDMsOTQuODA4NTY1NyBMNDEuODAxNDU0NSw5NC4wMDk3MTcyIEw0NC43NjIyNDI0LDc1LjIzMzMxMzEgTDQ0Ljk1MzI5MjksNzQuMTk1ODk5IEM0NS4yNDMzMzMzLDcyLjM1NzY1NjYgNDYuODI3MTcxNyw3MS4wMDQ0NjQ2IDQ4LjY4NzE5MTksNzEuMDA0NDY0NiBMNTEuMDM4MjAyLDcxLjAwNDQ2NDYgQzY2LjI2NTgxODIsNzEuMDA0NDY0NiA3OC4xODkxNTE1LDY0LjgxNzU5NiA4MS42NzI2MDYxLDQ2LjkyNjE2MTYgQzgzLjEyODc0NzUsMzkuNDUwNDQ0NCA4Mi4zNzY0MjQyLDMzLjIxMDEyMTIgNzguNTI2NzA3MSwyOC44MjI4ODg5IEM3Ny4zNjE1OTYsMjcuNDk2NDI0MiA3NS45MTMzNzM3LDI2LjM5ODYyNjMgNzQuMjIzNjE2MiwyNS41MDM3NTc2IEM3NS40MDk1MTUyLDE3Ljk0Mzg5OSA3NC4yMTU2OTcsMTIuNzk5MzkzOSA3MC4xMjY0MjQyLDguMTM5OTM5MzkgWiIgaWQ9IkZpbGwtOCIgZmlsbD0iIzAwOTNDNyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNzQuMjIzNjE2MiwyNS41MDM3NTc2IEM3NS40MDk1MTUyLDE3Ljk0Mzg5OSA3NC4yMTU2OTcsMTIuNzk5MzkzOSA3MC4xMjY0MjQyLDguMTM5OTM5MzkgQzY1LjYyNDM2MzYsMy4wMTAyODI4MyA1Ny40OTEzNTM1LDAuODEyNzA3MDcxIDQ3LjA4NTUzNTQsMC44MTI3MDcwNzEgTDE2Ljg3ODc2NzcsMC44MTI3MDcwNzEgQzE0Ljc1MjQ2NDYsMC44MTI3MDcwNzEgMTIuOTQxOTM5NCwyLjM1OTkxOTE5IDEyLjYxMDMyMzIsNC40NjA0ODQ4NSBMMC4wMzI2NjY2NjY3LDg0LjIxOTYxNjIgQy0wLjIxNTc5Nzk4LDg1Ljc5MzU1NTYgMS4wMDA3ODc4OCw4Ny4yMTYwNDA0IDIuNTkzNTM1MzUsODcuMjE2MDQwNCBMMjEuMjQxMjUyNSw4Ny4yMTYwNDA0IEwyNS45MjU0NTQ1LDU3LjUxMzEzMTMgTDI1Ljc3OTkzOTQsNTguNDQ0NjI2MyBDMjYuMTExNTU1Niw1Ni4zNDQwNjA2IDI3LjkwNzIzMjMsNTQuNzk1ODU4NiAzMC4wMzM1MzU0LDU0Ljc5NTg1ODYgTDM4Ljg5NzA5MDksNTQuNzk1ODU4NiBDNTYuMzAzNDc0Nyw1NC43OTU4NTg2IDY5LjkzMjQwNCw0Ny43MjQwMjAyIDczLjkxNDc2NzcsMjcuMjcyNzA3MSBDNzQuMDMyNTY1NywyNi42Njc4Nzg4IDc0LjEzMzUzNTQsMjYuMDgwODY4NyA3NC4yMjM2MTYyLDI1LjUwMzc1NzYiIGlkPSJGaWxsLTkiIGZpbGw9IiMxQzFFNTgiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTMwLjk1NzExMTEsMjUuNjA0NzI3MyBDMzEuMTU3MDcwNywyNC4zNDA2MjYzIDMxLjk2Nzc5OCwyMy4zMDYxODE4IDMzLjA1OTY1NjYsMjIuNzgyNTI1MyBDMzMuNTU2NTg1OSwyMi41NDQ5NDk1IDM0LjExMDkyOTMsMjIuNDEyMzAzIDM0LjY5MiwyMi40MTIzMDMgTDU4LjM2OTM5MzksMjIuNDEyMzAzIEM2MS4xNzQ3Njc3LDIyLjQxMjMwMyA2My43OTAwODA4LDIyLjU5NjQyNDIgNjYuMTgwNjg2OSwyMi45ODE0OTQ5IEM2Ni44NjQ3MDcxLDIzLjA5MTM3MzcgNjcuNTI4OTI5MywyMy4yMTgwODA4IDY4LjE3NTMzMzMsMjMuMzYxNjE2MiBDNjguODIwNzQ3NSwyMy41MDQxNjE2IDY5LjQ0ODM0MzQsMjMuNjY0NTI1MyA3MC4wNTUxNTE1LDIzLjg0MjcwNzEgQzcwLjM1OTA1MDUsMjMuOTMwODA4MSA3MC42NTcwMTAxLDI0LjAyMzg1ODYgNzAuOTUxMDEwMSwyNC4xMjE4NTg2IEM3Mi4xMjUwMzAzLDI0LjUxMDg4ODkgNzMuMjE3ODc4OCwyNC45NzExOTE5IDc0LjIyMzYxNjIsMjUuNTAzNzU3NiBDNzUuNDA5NTE1MiwxNy45NDM4OTkgNzQuMjE1Njk3LDEyLjc5OTM5MzkgNzAuMTI2NDI0Miw4LjEzOTkzOTM5IEM2NS42MjQzNjM2LDMuMDEwMjgyODMgNTcuNDkxMzUzNSwwLjgxMjcwNzA3MSA0Ny4wODU1MzU0LDAuODEyNzA3MDcxIEwxNi44Nzg3Njc3LDAuODEyNzA3MDcxIEMxNC43NTI0NjQ2LDAuODEyNzA3MDcxIDEyLjk0MTkzOTQsMi4zNTk5MTkxOSAxMi42MTAzMjMyLDQuNDYwNDg0ODUgTDAuMDMyNjY2NjY2Nyw4NC4yMTk2MTYyIEMtMC4yMTU3OTc5OCw4NS43OTM1NTU2IDEuMDAwNzg3ODgsODcuMjE2MDQwNCAyLjU5MzUzNTM1LDg3LjIxNjA0MDQgTDIxLjI0MTI1MjUsODcuMjE2MDQwNCBMMzAuOTU3MTExMSwyNS42MDQ3MjczIiBpZD0iRmlsbC0xMCIgZmlsbD0iIzIxMzE2RiI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+',\n x: null,\n y: null,\n height: 20,\n width: 20,\n excavate: true,\n}\n\nexport default class QRCComponent extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render = () => {\n const imageSettings = {\n ...defaultImageSettings,\n ...this.props.imageSettings,\n }\n return (\n \n )\n }\n}\n\nQRCComponent.propTypes = {\n url: PropTypes.string,\n size: PropTypes.number,\n bgColor: PropTypes.string,\n fgColor: PropTypes.string,\n level: PropTypes.string,\n includeMargin: PropTypes.bool,\n renderAs: PropTypes.string,\n imageSettings: PropTypes.object,\n className: PropTypes.string,\n}\n\nQRCComponent.defaultProps = {\n size: 128,\n bgColor: '#ffffff',\n fgColor: '#003087',\n level: 'L',\n includeMargin: true,\n renderAs: 'svg',\n}\n","import * as React from 'react'\nimport PropTypes from 'prop-types'\n\n/**\n * @function InterpolateComponent - replaces placeholder in source string with supplied component and returns a new component to render\n * @param.source - string with placeholder in format '{placeholderName}'\n * @param.placeholder - key identifying section to be replaced\n * @param.replacement - React component to swap in to replace placeholder\n *\n * Usage:\n * \n */\nconst InterpolateComponent = ({\n source = '',\n placeholder = '',\n replacement,\n}) => {\n let newComponent = source\n .split(new RegExp(`(\\{${placeholder}\\})`))\n .map((part, idx) => {\n let nextPart = part === `{${placeholder}}` ? replacement : part\n return {nextPart}\n })\n\n return {newComponent}\n}\n\n/**\n * @function InterpolateTagWithComponent - replaces a tag in source string with supplied component and returns a new component to render\n * @param.content - string with tagName in format 'abc tagcontent def'\n * @param.tagName - name of the tag. ex link\n * @param.replacement - React component to swap in to replace placeholder\n *\n * Usage:\n * (\n *\t\t\t\n *\t\t\t\t\t{children}\n *\t\t\t\t\n *\t\t\t)}\n *\t\t/>\n */\nconst InterpolateTagWithComponent = ({\n content = '',\n tagName,\n replacement,\n}) => {\n let regex = new RegExp('^(.*)<' + tagName + '>(.+)(.*)'),\n matches = content.match(regex),\n ReplacementComponent = replacement\n\n if (!matches) {\n return {content}\n }\n\n let replacedComponent = (\n {matches[2]}\n )\n\n return (\n \n {matches[1]}\n {replacedComponent}\n {matches[3]}\n \n )\n}\n\nInterpolateComponent.propTypes = {\n source: PropTypes.string,\n placeholder: PropTypes.string,\n replacement: PropTypes.any,\n}\n\nInterpolateTagWithComponent.propTypes = {\n content: PropTypes.string,\n tagName: PropTypes.string,\n replacement: PropTypes.any,\n}\n\nexport { InterpolateComponent, InterpolateTagWithComponent }\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport QRCComponent from '../../components/qrc-component'\nimport { PLATFORMS } from '@paypalcorp/react-app-badges'\nimport { InterpolateTagWithComponent } from '../../components/interpolate-component'\n\nimport {\n BodyText,\n Button,\n HeadingText,\n Dropdown,\n Link,\n Row,\n Icon,\n IconButton,\n Col,\n LoadingSpinner,\n Alert,\n Divider,\n PhoneInput,\n} from '@paypalcorp/pp-react'\n\nconst BodyContent = ({ body = {} }) => {\n const messages = body.content || [],\n bodyType = body.type || ''\n\n return (\n bodyType && (\n \n {bodyType === 'plain' && (\n \n {messages.map((content, index) => {\n return content.text &&

{content.text}

\n })}\n \n )}\n {bodyType === 'icon' && (\n \n
    \n {messages.map((content, index) => {\n return (\n content.text && (\n
  • \n \n \n {content.text}\n \n
  • \n )\n )\n })}\n
\n \n )}\n \n )\n )\n}\n\nconst SmsQrc = ({\n smsData = {},\n clickHandler,\n phoneNos = [],\n isIncentive = false,\n qrcUrl,\n country,\n onCompleteHandler,\n isSmsButtonDisabled,\n}) => {\n const { ctaLabel = '', privacyPolicyDisclaimer = {}, label = '' } = smsData\n\n return (\n label && (\n \n \n {!isIncentive && (\n \n \n \n )}\n \n \n {phoneNos.length > 0 ? (\n {\n let phoneValue = `${phone.phoneNumber}`\n return {\n label: `+${phone.countryCode} ${phone.phoneString}`,\n value: `${phoneValue}`,\n }\n })}\n />\n ) : (\n onCompleteHandler(val)}\n />\n )}\n \n \n \n {privacyPolicyDisclaimer.smsDisclaimerContent && (\n <>\n (\n \n {children}\n \n )}\n />\n \n )}\n \n \n \n \n \n \n \n {ctaLabel}\n \n \n \n \n )\n )\n}\n\nconst Sms = ({ smsData = {}, clickHandler, phoneNos = [], isLiteDesign }) => {\n const { ctaLabel = '', disclaimer = '', label = '' } = smsData\n\n return (\n label &&\n phoneNos.length > 0 && (\n <>\n \n \n \n {\n let phoneValue = `${phone.phoneNumber}`\n return {\n label: `${phone.phoneString}`,\n value: `${phoneValue}`,\n }\n })}\n />\n \n \n \n {ctaLabel}\n \n \n \n
\n {disclaimer}\n
\n \n {isLiteDesign && }\n \n )\n )\n}\n\nconst SpinnerComponent = (props) => {\n const { isSpinner, screenReaderText = 'spinner loading' } = props\n return isSpinner ? (\n \n \n
\n \n ) : null\n}\n\nconst AlertComponent = (props) => {\n const { errorMessage, isLiteDesign = false } = props\n return (\n \n {errorMessage}\n \n )\n}\n\nconst QRCContainer = ({ qrc, isLiteDesign }) => {\n return qrc && qrc.title && qrc.steps ? (\n
\n {!isLiteDesign && (\n \n )}\n \n \n {qrc.title}\n \n \n \n \n \n \n
    \n {qrc.steps.map((step, index) => {\n return (\n
  1. \n {step}\n
  2. \n )\n })}\n
\n \n
\n \n {isLiteDesign && (\n \n )}\n
\n ) : null\n}\n\nconst CloseButton = ({ skipLinkUrl, clickHandler }) => {\n return skipLinkUrl ? (\n {\n clickHandler(event, skipLinkUrl)\n }}\n data-name=\"close-interstitial\"\n iconName=\"close\"\n aria-label=\"close\"\n tabIndex={0}\n />\n ) : null\n}\n\nconst Illustration = ({ illustration, isLiteDesign }) => {\n return (\n illustration && (\n \n {illustration.img && (\n \n )}\n \n )\n )\n}\n\nconst IllustrationImage = ({ illustration }) => {\n return (\n illustration && (\n \n {illustration.img && (\n \n )}\n \n )\n )\n}\n\nconst Header = ({ headerText }) => {\n return headerText ? (\n \n \n {headerText}\n \n \n ) : null\n}\n\nconst SubHeader = ({ subHeaderText }) => {\n return subHeaderText ? (\n \n {subHeaderText}\n \n ) : null\n}\n\nconst SkipLink = ({ url, label, title, clickHandler }) => {\n return url ? (\n \n {\n clickHandler(event, url)\n }}\n data-testid=\"skiplink-button\"\n >\n {label}\n \n \n ) : null\n}\n\nconst AppStoreLinks = ({\n storeData = {},\n clickHandler,\n isIncentive = false,\n isNewVisual = false,\n isLiteDesign = false,\n}) => {\n const dataName = `download_${storeData.type}`\n const version =\n storeData.type === 'android' ? PLATFORMS.ANDROID : PLATFORMS.IOS\n return storeData.ctaLabel && storeData.url ? (\n \n {\n clickHandler(event, isIncentive ? '' : storeData.url)\n }}\n theme=\"v1\"\n className={`downloadbadge_container ${\n isLiteDesign && isNewVisual ? 'downloadbadge_container_lite' : ''\n }`}\n tabIndex={0}\n data-name={dataName}\n data-automation-id={`${version}Button`}\n title={storeData.title}\n data-testid=\"app-download-appstorelinks-button\"\n >\n {storeData.ctaLabel}\n \n \n ) : null\n}\n\nconst Terms = ({ termsContent = {} }) => {\n const { header = '', body } = termsContent\n return header && body ? (\n \n \n {header}\n \n \n {body.map((term, i) => {\n return (\n term.title &&\n term.text && (\n

\n {term.title + ' ' + term.text}\n

\n )\n )\n })}\n
\n \n ) : null\n}\n\nHeader.propTypes = {\n headerText: PropTypes.string,\n}\n\nSubHeader.propTypes = {\n subHeaderText: PropTypes.string,\n}\n\nCloseButton.propTypes = {\n skipLinkUrl: PropTypes.string,\n clickHandler: PropTypes.func,\n}\n\nQRCContainer.propTypes = {\n qrc: PropTypes.object,\n isLiteDesign: PropTypes.bool,\n}\n\nAlertComponent.propTypes = {\n errorMessage: PropTypes.string,\n isLiteDesign: PropTypes.bool,\n}\n\nSpinnerComponent.propTypes = {\n isSpinner: PropTypes.bool,\n screenReaderText: PropTypes.string,\n}\n\nBodyContent.propTypes = {\n body: PropTypes.object,\n}\n\nSms.propTypes = {\n smsData: PropTypes.object,\n phoneNos: PropTypes.array,\n clickHandler: PropTypes.func,\n isLiteDesign: PropTypes.bool,\n}\n\nSkipLink.propTypes = {\n url: PropTypes.string,\n label: PropTypes.string,\n title: PropTypes.string,\n clickHandler: PropTypes.func,\n}\n\nIllustration.propTypes = {\n illustration: PropTypes.object,\n isLiteDesign: PropTypes.bool,\n}\n\nIllustrationImage.propTypes = {\n illustration: PropTypes.object,\n}\n\nAppStoreLinks.propTypes = {\n storeData: PropTypes.object,\n clickHandler: PropTypes.func,\n isIncentive: PropTypes.bool,\n isNewVisual: PropTypes.bool,\n isLiteDesign: PropTypes.bool,\n}\n\nTerms.propTypes = {\n termsContent: PropTypes.object,\n}\n\nSmsQrc.propTypes = {\n smsData: PropTypes.object,\n phoneNos: PropTypes.array,\n clickHandler: PropTypes.func,\n isIncentive: PropTypes.bool,\n qrcUrl: PropTypes.string,\n country: PropTypes.string,\n onCompleteHandler: PropTypes.func,\n isSmsButtonDisabled: PropTypes.bool,\n}\n\nexport {\n Header,\n SubHeader,\n BodyContent,\n QRCContainer,\n SpinnerComponent,\n Sms,\n SkipLink,\n Illustration,\n IllustrationImage,\n AppStoreLinks,\n AlertComponent,\n CloseButton,\n Terms,\n SmsQrc,\n}\n","import { React } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n Tile,\n Button,\n HeadingText,\n Row,\n Col,\n Icon,\n Text,\n IconButton,\n} from '@paypalcorp/pp-react'\n\nconst SuccessView = ({\n smsSuccessContent,\n url,\n setSmsSuccess,\n clickHandler,\n impressionTracking,\n}) => {\n return (\n \n \n \n {\n setSmsSuccess(false)\n clickHandler(event)\n impressionTracking()\n }}\n data-name=\"sms-success-back\"\n data-automation-id=\"smsSuccessBack\"\n aria-label=\"back\"\n />\n \n \n \n \n \n \n \n \n \n \n \n {smsSuccessContent.successHeader}\n \n \n \n \n {smsSuccessContent.successBody}\n \n \n \n {\n clickHandler(event, url)\n }}\n >\n {smsSuccessContent.successCtaLabel}\n \n \n \n \n )\n}\n\nSuccessView.propTypes = {\n smsSuccessContent: PropTypes.object,\n url: PropTypes.string,\n setSmsSuccess: PropTypes.func,\n clickHandler: PropTypes.func,\n impressionTracking: PropTypes.func,\n}\n\nexport default SuccessView\n","/* eslint-disable complexity */\nimport React, { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n handleClick,\n postHandler,\n phoneValidator,\n getFPTIPageName,\n} from '../../lib/app-download-events'\nimport { getGlobalPayload } from '../../utils/analytics'\nimport { trackImpression, trackMORS } from '../../lib/fpti-analytics'\nimport {\n SpinnerComponent,\n AlertComponent,\n Illustration,\n IllustrationImage,\n SkipLink,\n QRCContainer,\n Header,\n SubHeader,\n Sms,\n BodyContent,\n AppStoreLinks,\n Terms,\n SmsQrc,\n CloseButton,\n} from './reusable-components'\nimport SmsSuccessViewComponent from './sms-success'\nimport '../../styles/app-download.less'\nimport { SUMMARY_URL } from '../../../../server/src/constants'\nimport { get } from 'lodash'\n\nconst AppDownload = ({ serverData }) => {\n const [isSpinner, setSpinner] = useState(false),\n [errorMessage, setError] = useState(''),\n [isSmsSuccess, setSmsSuccess] = useState(false),\n {\n deviceDetails = {},\n src,\n isLoggedIn,\n locality: { country } = {},\n personalization: {\n tracking: { impression_url, click_url: morsClickTrackingUrl } = {},\n termsTracking = {},\n downloadSource,\n viewName = 'main:consappdownload:xsell:::',\n sms,\n skipLink,\n id,\n qrc,\n body,\n illustration,\n store = {},\n headerText,\n subHeaderText,\n isLiteDesign,\n isNewVisual = false,\n isIncentive = false,\n terms,\n errorMessages = {},\n } = {},\n _csrf,\n requestURI = '/cgp',\n flow,\n flowName = '',\n intent,\n trafficSource = '',\n user: { phones = [] } = {},\n } = serverData,\n [isSmsButtonDisabled, setSmsButtonDisabled] = useState(phones.length === 0),\n source = src || downloadSource || '',\n urlContext = isLoggedIn ? `${requestURI}/` : `${requestURI}/public/`,\n fptiPageName = getFPTIPageName(serverData),\n // persist downloadSource value in src query parameter for tracking & logging\n successPageDismissUrl = flow\n ? `${urlContext}flow-return/${flowName}?intent=${intent}&src=${source}`\n : skipLink.url || SUMMARY_URL,\n fptiData = {\n page: fptiPageName,\n pgrp: viewName,\n msg_id: id,\n ...getGlobalPayload(serverData),\n },\n clickPostHandler = postHandler.bind(this, {\n fptiData,\n morsClickTrackingUrl,\n _csrf,\n tsrce: trafficSource,\n src: source,\n intent,\n setSpinner,\n setSmsSuccess,\n setError,\n setSmsButtonDisabled,\n isLoggedIn,\n country,\n hasConfirmedPhone: phones.length > 0,\n isIncentive,\n redirectUrl: store.url || '',\n isMobile: deviceDetails.isMobile,\n errorMessages,\n }),\n validatePhone = phoneValidator.bind(this, {\n country,\n setSmsButtonDisabled,\n setError,\n errorMessages,\n }),\n defaultClickHandler = handleClick.bind(this, {\n fptiData,\n }),\n clickHandlerWithMors = handleClick.bind(this, {\n fptiData,\n morsClickTrackingUrl,\n })\n\n let skipLinkUrl\n if (skipLink && skipLink.url) {\n skipLinkUrl = flow\n ? `${urlContext}flow-cancel/${flowName}?intent=${intent}&src=${source}`\n : skipLink.url\n }\n const impressionTracking = () => {\n // page impression Tracking -- client side and MORS(personalization studio)\n trackImpression({\n options: {\n ...fptiData,\n msg_id: id,\n },\n })\n trackMORS({\n method: 'GET',\n url: impression_url,\n })\n // Fire MORS impression for terms content\n if (isNewVisual && isIncentive && termsTracking.impression_url) {\n trackMORS({\n method: 'GET',\n url: termsTracking.impression_url,\n })\n }\n }\n\n useEffect(impressionTracking, [])\n\n return (\n
\n {isSmsSuccess && (\n \n )}\n \n {!isSmsSuccess && (\n
\n \n {errorMessage && (\n \n )}\n {!isNewVisual && (\n \n )}\n {/** Illustration Content - Image and Cancel Button */}\n {isNewVisual ? (\n \n ) : (\n \n )}\n {/** Header Content */}\n
\n {/** Subheader Content */}\n \n {/** Body Content */}\n {body && }\n {/** SMS - Dropdown, Link Button, Disclaimer */}\n {isNewVisual && !deviceDetails.isMobile && (\n \n )}\n {!isNewVisual && !deviceDetails.isMobile && (\n \n )}\n {isLiteDesign && !isNewVisual && !deviceDetails.isMobile && (\n \n )}\n {/** App Badges Content */}\n {deviceDetails.isMobile && (\n \n )}\n {!isLiteDesign && !isNewVisual && !deviceDetails.isMobile && (\n \n )}\n {/** Skip Link Content */}\n \n
\n {isNewVisual && isIncentive && }\n
\n )}\n
\n )\n}\n\nAppDownload.propTypes = {\n serverData: PropTypes.object,\n}\n\nexport default AppDownload\n","/**\n *\n * @param {*} param0\n */\nconst getGlobalPayload = (serverData) => {\n const {\n downloadSource = '',\n trafficSource = '',\n ppRef = '',\n calId = '',\n isAppInstalled,\n isConsumerUser,\n isLoggedIn = false,\n deviceDetails: { deviceType = '', deviceOS = '', browserName = '' } = {},\n user: { encryptedAccountNumber = '', isBusinessUser } = {},\n locality: { culture = '', country = '' } = {},\n utm: {\n source = '',\n medium = '',\n campaign = '',\n content = '',\n unptid = '',\n term = '',\n } = {},\n share: { custId = '', sessionId = '', lcid = '' } = {},\n flags: { isHoneyExtnInstalled } = {},\n elmoTracking,\n } = serverData\n\n let appInstalledStatus = 'no_data',\n consumerUserStatus = 'no_data'\n\n // Explicit check of boolean values to set the FPTI tag value\n if (isAppInstalled === true) {\n appInstalledStatus = 'installed'\n } else if (isAppInstalled === false) {\n appInstalledStatus = 'not_installed'\n }\n if (isConsumerUser === true || isBusinessUser === false) {\n consumerUserStatus = 'y'\n } else if (isConsumerUser === false || isBusinessUser === true) {\n consumerUserStatus = 'n'\n }\n\n return {\n devc_type: deviceType,\n client_os: deviceOS,\n browser_type: browserName,\n cust: encryptedAccountNumber,\n rsta: culture,\n ccpg: country,\n utm_source: source,\n utm_medium: medium,\n utm_campaign: campaign,\n utm_content: content,\n utm_unptid: unptid,\n utm_term: term,\n product: 'growth',\n ref_tsrce: downloadSource, // App download source\n tsrce: trafficSource, // App download traffic source\n ref_vid: ppRef, // App download reference id (Payer ID / Visitor ID)\n source: downloadSource, // Page source\n honey_installed: `${isHoneyExtnInstalled}`, // Honey plugin installed?\n cmpn_id: campaign, // Honey redirect campaign\n bchn: medium, // Honey redirect channel\n calc: calId, // Correlation ID\n sndr_name: custId, // Payer ID of user shared EC\n fpti_tk: sessionId, // App session id for share\n sndr_lcid: lcid, // App LCID for share\n mobile_app: appInstalledStatus, // isAppInstalled?\n is_consumer_y_n: consumerUserStatus, // isConsumerUser?\n user_logged_in: isLoggedIn, // whether the user is logged in\n ...elmoTracking,\n }\n}\n\nexport { getGlobalPayload }\n","const _ = require('lodash')\n\nconst API = {\n PERSONALIZATION: 'personalization',\n RPS: 'rps',\n}\n\nconst STATUS = {\n SUCCESS: 'success',\n FAIL: 'fail',\n}\n\nconst AUTH_STATES = {\n LOGGEDIN: 'LOGGEDIN',\n IDENTIFIED: 'IDENTIFIED',\n}\n\nconst FLOWS = {\n APP_DOWNLOAD: 'app-download',\n APP_REDIRECT: 'app-redirect',\n HONEY_REDIRECT: 'honey-redirect',\n DONE_PAGE: 'done-page',\n}\nconst ACTIONS = {\n SMS: 'sms',\n REDIRECT: 'redirect',\n INCENTIVE: 'incentive',\n EMAIL_OPT_OUT: 'email_opt_out',\n}\n// Supported path params in the GET request\nconst APP_DOWNLOAD_INCENTIVE_TERMS_TOUCHPOINT = 'app_download_incentive_terms'\n\nconst TOUCH_POINTS = [\n {\n code: 'post_login_interstitial_mweb',\n message_count: 1,\n mobile: true,\n tablet: false,\n desktop: false,\n flow: FLOWS.APP_DOWNLOAD,\n isLoggedIn: true,\n },\n {\n code: 'post_login_interstitial_desktop',\n message_count: 1,\n mobile: false,\n tablet: true,\n desktop: true,\n flow: FLOWS.APP_DOWNLOAD,\n isLoggedIn: true,\n },\n {\n code: 'pre_login_interstitial_mweb',\n message_count: 1,\n mobile: true,\n tablet: false,\n desktop: false,\n flow: FLOWS.APP_DOWNLOAD,\n isLoggedIn: false,\n },\n {\n code: 'pre_login_interstitial_desktop',\n message_count: 1,\n mobile: false,\n tablet: true,\n desktop: true,\n flow: FLOWS.APP_DOWNLOAD,\n isLoggedIn: false,\n },\n {\n code: 'done_xsell',\n message_count: 1,\n mobile: true,\n tablet: true,\n desktop: true,\n flow: FLOWS.DONE_PAGE,\n isLoggedIn: true,\n },\n {\n code: APP_DOWNLOAD_INCENTIVE_TERMS_TOUCHPOINT,\n message_count: 1,\n mobile: true,\n tablet: true,\n desktop: true,\n flow: FLOWS.APP_DOWNLOAD,\n },\n]\n\n// Mapping of supported app download / app redirect intents\nconst APP_DOWNLOAD_INTENTS = {\n post_login: 'post_login',\n engage: 'engage',\n login: 'login',\n signup: 'signup',\n welcome: 'welcome',\n transfer: 'transfer',\n activate: 'activate',\n shop: 'shop',\n money_out: 'money_out',\n money_in: 'money_in',\n add_card: 'add_card',\n add_bank: 'add_bank',\n confirm_phone: 'confirm_phone',\n qrc: 'qrc',\n crypto: 'crypto',\n bill_pay: 'bill_pay',\n direct_deposit: 'direct_deposit',\n shop_mpp: 'shop_mpp',\n skip_shop: 'skip_shop',\n skip_shop_mpp: 'skip_shop_mpp',\n default: 'default',\n txn_details: 'txn_details',\n txn_details_home: 'txn_details_home',\n cash_check: 'cash_check',\n add_cash: 'add_cash',\n cash_card: 'cash_card',\n email_footer: 'email_footer',\n share: 'share',\n summary: 'summary',\n download: 'download',\n p2p_email_txn_details: 'p2p_email_txn_details',\n xo_email_txn_details: 'xo_email_txn_details',\n pay_later_email_credit_plans: 'pay_later_email_credit_plans',\n pay_later_email_smc: 'pay_later_email_smc',\n unified_onboarding: 'unified_onboarding',\n savings: 'savings',\n welcome_offer: 'welcome_offer',\n download_mktg: 'download_mktg',\n onboarding_pre_intent: 'onboarding_pre_intent',\n hys_email: 'hys_email',\n hys_email_summary: 'hys_email_summary',\n hys_email_manage: 'hys_email_manage',\n hys_email_txn_details: 'hys_email_txn_details',\n dw_mktg: 'dw_mktg',\n update_version: 'update_version',\n shopping: 'shopping',\n giving: 'giving',\n rewards: 'rewards',\n txn_history: 'txn_history',\n webview: 'webview',\n mktg_post_signup: 'mktg_post_signup',\n reward_card_summary: 'reward_card_summary',\n reward_card_payment: 'reward_card_payment',\n reward_card_shop: 'reward_card_shop',\n reward_card_download: 'reward_card_download',\n}\n\nconst APP_DOWNLOAD_INTENT_VALUES = _.values(APP_DOWNLOAD_INTENTS) // Used to sanitize intent query param value\n\nconst VALID_QUERY_PARAMS = {\n [FLOWS.APP_DOWNLOAD]: {\n intent: APP_DOWNLOAD_INTENT_VALUES,\n },\n [FLOWS.APP_REDIRECT]: {\n intent: APP_DOWNLOAD_INTENT_VALUES,\n },\n}\nconst DEVICES = {\n DESKTOP: 'Desktop',\n MOBILE: 'Mobile',\n TABLET: 'Tablet',\n}\n\nconst PLATFORM = {\n IOS: 'iOS',\n ANDROID: 'Android',\n WEB: 'Web',\n}\n\nconst METHOD = {\n GET: 'GET',\n POST: 'POST',\n HEAD: 'HEAD',\n}\nconst SUMMARY_URL = '/myaccount/summary'\nconst WALLET_URL = '/myaccount/money/'\nconst TRANSACTION_DETAILS_URL = '/myaccount/transactions/details/'\nconst TRANSACTION_HISTORY_URL = '/myaccount/transactions/'\nconst JOIN_HONEY_URL = 'https://www.joinhoney.com/paypal'\nconst CREDIT_PLANS_URL = '/myaccount/ppcredit/plans'\nconst SMC_URL = '/smc/async/home'\nconst DIRECT_DEPOSIT_URL = '/myaccount/bundle/vba/get-started'\nconst BILL_PAY_URL = '/myaccount/payments/?link_name=pay_your_bills'\nconst SAVINGS_URL = '/myaccount/savings'\n\nconst ERROR = {\n INTERNAL_SERVER_ERROR: 500,\n NOT_FOUND: 404,\n BAD_REQUEST: 400,\n FORBIDDEN: 403,\n}\n\nconst REDIRECT_URL_WHITELIST = [\n 'https://www.paypal.com/',\n 'https://www.paypal.cn/',\n 'https://www.joinhoney.com/',\n]\n\nconst DONE_PAGE_SOURCE_WHITELIST = ['accept_money', 'send_money', 'withdraw']\nconst DONE_PAGE_DEFAULT_SRC = 'withdraw'\nconst GLOBAL_FLOW_WHITELIST = [FLOWS.APP_REDIRECT, FLOWS.HONEY_REDIRECT]\n\nconst CDN_HOST_FALLBACK = 'www.paypalobjects.com'\nconst PP_DOMAIN_FALLBACK = 'paypal.com'\n\nconst DONE_PAGE_ENCODE_FIX_TREATMENT = 'Trmt_Done_Page_Encode_Fix_Withdraw'\n\nconst APP_DOWNLOAD_PUBLIC_SMS_ROUTE = '/cgp/public/api/app-download/sms'\n\nconst FPTI_PAGE_NAME = {\n [FLOWS.APP_REDIRECT]: {\n page: 'main:consappdownload:xsell::::APP_REDIRECT:',\n pgrp: 'main:consappdownload:',\n },\n [FLOWS.HONEY_REDIRECT]: {\n page: 'main:mktg:honey:redirect::::',\n pgrp: 'main:mktg:honey:redirect:',\n },\n}\n\nconst POST_SUPPORTED_FLOWS = [FLOWS.APP_DOWNLOAD]\nconst POST_SUPPORTED_ACTIONS = [ACTIONS.SMS, ACTIONS.INCENTIVE]\nconst SUPPORTED_METHODS = [METHOD.GET, METHOD.POST, METHOD.HEAD]\n\nmodule.exports = {\n AUTH_STATES,\n TOUCH_POINTS,\n FLOWS,\n API,\n STATUS,\n APP_DOWNLOAD_INTENTS,\n VALID_QUERY_PARAMS,\n DEVICES,\n METHOD,\n SUMMARY_URL,\n TRANSACTION_DETAILS_URL,\n TRANSACTION_HISTORY_URL,\n ERROR,\n ACTIONS,\n JOIN_HONEY_URL,\n CREDIT_PLANS_URL,\n SMC_URL,\n REDIRECT_URL_WHITELIST,\n DONE_PAGE_SOURCE_WHITELIST,\n DONE_PAGE_DEFAULT_SRC,\n GLOBAL_FLOW_WHITELIST,\n PLATFORM,\n DIRECT_DEPOSIT_URL,\n WALLET_URL,\n CDN_HOST_FALLBACK,\n PP_DOMAIN_FALLBACK,\n BILL_PAY_URL,\n DONE_PAGE_ENCODE_FIX_TREATMENT,\n APP_DOWNLOAD_PUBLIC_SMS_ROUTE,\n APP_DOWNLOAD_INCENTIVE_TERMS_TOUCHPOINT,\n FPTI_PAGE_NAME,\n POST_SUPPORTED_FLOWS,\n POST_SUPPORTED_ACTIONS,\n SUPPORTED_METHODS,\n SAVINGS_URL,\n}\n"],"names":["handleClick","event","fptiData","morsClickTrackingUrl","url","target","preventDefault","element","currentTarget","link","getAttribute","trackClick","options","trackMORS","method","window","open","getErrorMessage","errorMessages","status","default","phoneValidator","phoneNumber","country","setSmsButtonDisabled","setError","parsedPhone","PhoneNumberFormat","phoneRegion","parse","parsePhoneNumber","nationalNumber","trackPostResponse","isError","pageName","page","trackImpression","postHandler","_csrf","intent","src","tsrce","setSpinner","setSmsSuccess","isLoggedIn","hasConfirmedPhone","isIncentive","isMobile","redirectUrl","phoneElementId","phoneElement","document","querySelector","blur","querySelectorAll","forEach","setAttribute","initPost","value","requestPayload","cgp","xmlhttp","XMLHttpRequest","setRequestHeader","send","JSON","stringify","onload","location","replace","onerror","error","defaultImageSettings","x","y","height","width","excavate","QRCComponent","props","imageSettings","size","bgColor","fgColor","level","includeMargin","renderAs","className","React","propTypes","PropTypes","defaultProps","InterpolateTagWithComponent","content","tagName","replacement","regex","RegExp","matches","match","replacedComponent","BodyContent","body","messages","bodyType","type","align","noGutters","map","index","text","key","name","icon","SmsQrc","smsData","clickHandler","phoneNos","qrcUrl","onCompleteHandler","isSmsButtonDisabled","ctaLabel","privacyPolicyDisclaimer","label","xs","sm","md","length","tabIndex","id","phone","phoneValue","countryCode","phoneString","countryOptions","formatType","onComplete","val","smsDisclaimerContent","children","href","privacyLinkUrl","theme","onClick","disabled","Sms","isLiteDesign","disclaimer","secondary","SpinnerComponent","isSpinner","screenReaderText","AlertComponent","errorMessage","QRCContainer","qrc","title","steps","step","CloseButton","skipLinkUrl","iconName","Illustration","illustration","img","alt","IllustrationImage","Header","headerText","SubHeader","subHeaderText","SkipLink","AppStoreLinks","storeData","isNewVisual","dataName","version","PLATFORMS","Terms","termsContent","header","term","i","SuccessView","smsSuccessContent","impressionTracking","card","as","successHeader","successBody","successCtaLabel","AppDownload","serverData","useState","isSmsSuccess","deviceDetails","locality","personalization","tracking","impression_url","click_url","termsTracking","downloadSource","viewName","sms","skipLink","store","terms","requestURI","flow","flowName","trafficSource","user","phones","source","urlContext","fptiPageName","pageType","getFPTIPageName","successPageDismissUrl","SUMMARY_URL","pgrp","msg_id","getGlobalPayload","clickPostHandler","bind","validatePhone","defaultClickHandler","clickHandlerWithMors","useEffect","ppRef","calId","isAppInstalled","isConsumerUser","deviceType","deviceOS","browserName","encryptedAccountNumber","isBusinessUser","culture","utm","medium","campaign","unptid","share","custId","sessionId","lcid","flags","isHoneyExtnInstalled","elmoTracking","appInstalledStatus","consumerUserStatus","devc_type","client_os","browser_type","cust","rsta","ccpg","utm_source","utm_medium","utm_campaign","utm_content","utm_unptid","utm_term","product","ref_tsrce","ref_vid","honey_installed","cmpn_id","bchn","calc","sndr_name","fpti_tk","sndr_lcid","mobile_app","is_consumer_y_n","user_logged_in","_","FLOWS","APP_DOWNLOAD","APP_REDIRECT","HONEY_REDIRECT","DONE_PAGE","ACTIONS","SMS","REDIRECT","INCENTIVE","EMAIL_OPT_OUT","APP_DOWNLOAD_INCENTIVE_TERMS_TOUCHPOINT","TOUCH_POINTS","code","message_count","mobile","tablet","desktop","APP_DOWNLOAD_INTENTS","post_login","engage","login","signup","welcome","transfer","activate","shop","money_out","money_in","add_card","add_bank","confirm_phone","crypto","bill_pay","direct_deposit","shop_mpp","skip_shop","skip_shop_mpp","txn_details","txn_details_home","cash_check","add_cash","cash_card","email_footer","summary","download","p2p_email_txn_details","xo_email_txn_details","pay_later_email_credit_plans","pay_later_email_smc","unified_onboarding","savings","welcome_offer","download_mktg","onboarding_pre_intent","hys_email","hys_email_summary","hys_email_manage","hys_email_txn_details","dw_mktg","update_version","shopping","giving","rewards","txn_history","webview","mktg_post_signup","reward_card_summary","reward_card_payment","reward_card_shop","reward_card_download","APP_DOWNLOAD_INTENT_VALUES","values","VALID_QUERY_PARAMS","METHOD","GET","POST","HEAD","GLOBAL_FLOW_WHITELIST","FPTI_PAGE_NAME","POST_SUPPORTED_FLOWS","POST_SUPPORTED_ACTIONS","SUPPORTED_METHODS","module","exports","AUTH_STATES","LOGGEDIN","IDENTIFIED","API","PERSONALIZATION","RPS","STATUS","SUCCESS","FAIL","DEVICES","DESKTOP","MOBILE","TABLET","TRANSACTION_DETAILS_URL","TRANSACTION_HISTORY_URL","ERROR","INTERNAL_SERVER_ERROR","NOT_FOUND","BAD_REQUEST","FORBIDDEN","JOIN_HONEY_URL","CREDIT_PLANS_URL","SMC_URL","REDIRECT_URL_WHITELIST","DONE_PAGE_SOURCE_WHITELIST","DONE_PAGE_DEFAULT_SRC","PLATFORM","IOS","ANDROID","WEB","DIRECT_DEPOSIT_URL","WALLET_URL","CDN_HOST_FALLBACK","PP_DOMAIN_FALLBACK","BILL_PAY_URL","DONE_PAGE_ENCODE_FIX_TREATMENT","APP_DOWNLOAD_PUBLIC_SMS_ROUTE","SAVINGS_URL"],"sourceRoot":""}