{"version":3,"file":"870.bundle.js","mappings":"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","sources":["webpack:///./components/interpolate-component.js","webpack:///./lib/app-download-events.js","webpack:///./utils/world-ready.js","webpack:///./components/qrc-component.js","webpack:///./screens/app-download/reusable-components.js","webpack:///./screens/app-download/index.js","webpack:///./utils/analytics.js"],"sourcesContent":["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 { 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, setSmsSuccess },\n phoneNumber,\n) => {\n const parsedPhone = parsePhoneNumber(country, phoneNumber)\n if ('errors' in parsedPhone) {\n setSmsButtonDisabled(true)\n setError(getErrorMessage(errorMessages, 400))\n setSmsSuccess(false)\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 phones,\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 =\n phones.length > 1\n ? '#dropdownMenuSelect_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 phones.length <= 1 &&\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: phones.length > 1 ? 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 setSmsSuccess(false)\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 setSmsSuccess(false)\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 isIncentive = false,\n isSms = false,\n isQrc = false,\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 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 (isIncentive && isMobile) {\n pageType = 'MWEB_INCENTIVE' // Incentive mWeb\n } else if (isMobile) {\n pageType = 'MWEB' // Non-incentive mWeb\n } else if (isIncentive) {\n pageType = 'DESKTOP_INCENTIVE' // Incentive Desktop QRC and SMS\n } else if (isQrc && !isSms) {\n pageType = 'DESKTOP_QRC'\n } else if (isSms && !isQrc) {\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 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 Link,\n Row,\n Col,\n LoadingSpinner,\n Alert,\n PhoneInput,\n DropdownMenu,\n} from '@paypalcorp/pp-react'\n\n// eslint-disable-next-line complexity\nconst SmsQrc = ({\n smsData = {},\n clickHandler,\n phoneNos = [],\n qrcUrl,\n country,\n onCompleteHandler,\n isSmsButtonDisabled,\n isSmsSuccess,\n setSmsSuccess,\n isSms,\n isQrc,\n selectedPhoneValue,\n setSelectedPhoneValue,\n isInAppDownloadQRCCreativeTest = false,\n}) => {\n const { ctaLabel = '', privacyPolicyDisclaimer = {}, label = '' } = smsData\n const phoneInputProps = phoneNos.length === 1 && {\n value: phoneNos[0].phoneNumber,\n readOnly: true,\n disabled: true,\n }\n\n const handlePhoneDropDownChange = (event) => {\n setSelectedPhoneValue(event.target.value)\n }\n\n return (\n (isSms || isQrc) && (\n \n {isSmsSuccess && isSms && (\n \n {\n setSmsSuccess(false)\n },\n }}\n >\n {smsData.successHeader}\n \n \n )}\n \n {isQrc && (\n \n \n \n )}\n {isSms && (\n \n \n {phoneNos.length <= 1 ? (\n onCompleteHandler(val)}\n {...phoneInputProps}\n />\n ) : (\n {\n let phoneValue = `${phone.phoneNumber}`\n return {\n primaryText: `+${phone.countryCode} ${phone.phoneString}`,\n value: `${phoneValue}`,\n }\n })}\n value={selectedPhoneValue}\n onChange={handlePhoneDropDownChange}\n />\n )}\n \n \n \n {privacyPolicyDisclaimer.smsDisclaimerContent && (\n <>\n (\n \n {children}\n \n )}\n />\n \n )}\n \n \n \n )}\n \n {isSms && (\n \n \n \n {ctaLabel}\n \n \n \n )}\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 } = props\n return (\n \n {errorMessage}\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}) => {\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=\"v2\"\n className=\"downloadbadge_container downloadbadge_container_lite\"\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\nAlertComponent.propTypes = {\n errorMessage: PropTypes.string,\n}\n\nSpinnerComponent.propTypes = {\n isSpinner: PropTypes.bool,\n screenReaderText: PropTypes.string,\n}\n\nSkipLink.propTypes = {\n url: PropTypes.string,\n label: PropTypes.string,\n title: PropTypes.string,\n clickHandler: PropTypes.func,\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}\n\nTerms.propTypes = {\n termsContent: PropTypes.object,\n}\n\nSmsQrc.propTypes = {\n smsData: PropTypes.object,\n phoneNos: PropTypes.array,\n clickHandler: PropTypes.func,\n qrcUrl: PropTypes.string,\n country: PropTypes.string,\n onCompleteHandler: PropTypes.func,\n isSmsButtonDisabled: PropTypes.bool,\n isSmsSuccess: PropTypes.bool,\n setSmsSuccess: PropTypes.func,\n isSms: PropTypes.bool,\n isQrc: PropTypes.bool,\n selectedPhoneValue: PropTypes.string,\n setSelectedPhoneValue: PropTypes.func,\n isInAppDownloadQRCCreativeTest: PropTypes.bool,\n}\n\nexport {\n Header,\n SubHeader,\n SpinnerComponent,\n SkipLink,\n IllustrationImage,\n AppStoreLinks,\n AlertComponent,\n Terms,\n SmsQrc,\n}\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 IllustrationImage,\n SkipLink,\n Header,\n SubHeader,\n AppStoreLinks,\n Terms,\n SmsQrc,\n} from './reusable-components'\nimport '../../styles/app-download.less'\nimport { get, isEmpty } from 'lodash'\nimport { Header as MPPHeader, Footer as MPPFooter } from 'marketing-components'\n\nconst AppDownload = ({ serverData }) => {\n const [isSpinner, setSpinner] = useState(false),\n [errorMessage, setError] = useState(''),\n [isSmsSuccess, setSmsSuccess] = useState(false),\n [selectedPhoneValue, setSelectedPhoneValue] = useState(''),\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 illustration,\n store = {},\n headerText,\n subHeaderText,\n isLiteDesign,\n isIncentive = false,\n isSms = false,\n isQrc = false,\n terms,\n errorMessages = {},\n } = {},\n _csrf,\n requestURI = '/cgp',\n flow,\n flowName = '',\n intent,\n trafficSource = '',\n user: { phones = [] } = {},\n navigation: {\n header: { content: { contentLoggedOut = {}, config = {} } = {} } = {},\n } = {},\n showMarketingNav = false,\n flags: { isInAppDownloadQRCCreativeTest = false },\n } = serverData,\n footerContent = get(serverData, 'navigation.footer.content.content', {}),\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 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 phones,\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 setSmsSuccess,\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 (isIncentive && termsTracking.impression_url) {\n trackMORS({\n method: 'GET',\n url: termsTracking.impression_url,\n })\n }\n }\n\n useEffect(impressionTracking, [])\n const mppHeaderConfig = {\n ...config,\n useMinimalHeader: true,\n dwHeader: true,\n enhanced: true,\n }\n const mppFooterConfig = {\n footerType: 'minimal-footer',\n }\n\n const mppHeaderProps = !isEmpty(contentLoggedOut)\n ? {\n content: contentLoggedOut,\n config: mppHeaderConfig,\n }\n : {\n config: mppHeaderConfig,\n }\n const mppFooterProps = !isEmpty(footerContent)\n ? {\n content: footerContent,\n config: mppFooterConfig,\n }\n : {\n config: mppFooterConfig,\n }\n\n return (\n <>\n {showMarketingNav && (\n
\n \n
\n )}\n \n \n
\n \n {errorMessage && }\n {/** Illustration Content - Image and Cancel Button */}\n {}\n {/** Header Content */}\n
\n {/** Subheader Content */}\n \n {/** SMS - Dropdown, Link Button, Disclaimer */}\n {!deviceDetails.isMobile && (\n \n )}\n {/** App Badges Content */}\n {deviceDetails.isMobile && (\n \n )}\n {/** Skip Link Content */}\n \n
\n {isIncentive && }\n
\n \n {showMarketingNav && (\n
\n \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"],"names":["InterpolateComponent","source","placeholder","replacement","newComponent","split","RegExp","map","part","idx","nextPart","key","InterpolateTagWithComponent","content","tagName","regex","matches","match","replacedComponent","propTypes","PropTypes","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","setSmsSuccess","parsedPhone","PhoneNumberFormat","phoneRegion","parse","parsePhoneNumber","nationalNumber","trackPostResponse","isError","pageName","page","trackImpression","postHandler","_csrf","intent","src","tsrce","setSpinner","isLoggedIn","phones","isIncentive","isMobile","redirectUrl","phoneElementId","length","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","defaultProps","SmsQrc","smsData","clickHandler","phoneNos","qrcUrl","onCompleteHandler","isSmsButtonDisabled","isSmsSuccess","isSms","isQrc","selectedPhoneValue","setSelectedPhoneValue","isInAppDownloadQRCCreativeTest","ctaLabel","privacyPolicyDisclaimer","label","phoneInputProps","readOnly","disabled","noGutters","align","type","theme","closeButton","onClick","successHeader","xs","sm","md","name","id","countryOptions","formatType","onComplete","val","tabIndex","phone","phoneValue","primaryText","countryCode","phoneString","onChange","smsDisclaimerContent","children","href","privacyLinkUrl","SpinnerComponent","isSpinner","screenReaderText","AlertComponent","errorMessage","IllustrationImage","illustration","img","alt","Header","headerText","SubHeader","subHeaderText","SkipLink","title","tertiary","AppStoreLinks","storeData","dataName","version","PLATFORMS","Terms","termsContent","header","body","term","i","text","AppDownload","skipLinkUrl","serverData","useState","deviceDetails","locality","personalization","tracking","impression_url","click_url","termsTracking","downloadSource","viewName","sms","skipLink","qrc","store","isLiteDesign","terms","requestURI","flow","flowName","trafficSource","user","navigation","contentLoggedOut","config","showMarketingNav","flags","footerContent","urlContext","pageType","getFPTIPageName","pgrp","msg_id","getGlobalPayload","clickPostHandler","bind","validatePhone","defaultClickHandler","clickHandlerWithMors","useEffect","mppHeaderConfig","useMinimalHeader","dwHeader","enhanced","mppFooterConfig","footerType","mppHeaderProps","mppFooterProps","ppRef","calId","isAppInstalled","isConsumerUser","deviceType","deviceOS","browserName","encryptedAccountNumber","isBusinessUser","culture","utm","medium","campaign","unptid","share","custId","sessionId","lcid","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"],"sourceRoot":""}