{"version":3,"sources":["webpack:///./pagination/index.js","webpack:///./utils/session-timer.js","webpack:///./screens/session-timer/index.js","webpack:///./screens/simplelayout/index.js","webpack:///./utils/constants.js","webpack:///./utils/loader.js","webpack:///./utils/venice.js"],"names":["AnimatedSwitchPagination","previousPage","undefined","currentPage","stack","styles","offset","opacity","transform","window","scrollTo","className","runOnMount","location","pathname","atEnter","action","this","props","history","atLeave","atActive","mapStyles","children","Component","withRouter","signoutTimer","warningTimer","onWarning","init","options","clientData","isUserLoggedIn","venice","setTimeout","startWebAuthTimer","assign","STYLES","MODAL","css","zIndex","Wrapper","glamorous","div","display","justifyContent","Container","flexDirection","alignItems","ButtonContainer","marginTop","l10n","getContent","SessionTimer","useState","isOpen","setIsOpen","isLoading","setIsLoading","useEffect","initSessionTimer","onSubmit","a","axios","clearTimeout","ReactDOM","unstable_batchedUpdates","overpanel","onClose","closeOnBackgroundClick","src","ILLUSTRATIONS","WARNING","alt","width","height","disabled","onClick","position","background","tableLayout","top","SpinnerContainer","left","backgroundColor","animation","White","right","overflow","overflowY","maxWidth","margin","padding","isMyProfile","Content","isSettingsPage","marginBottom","isProfileTreatment","navigationItemStylingFix","cursor","NavLink","verticalAlign","Navigation","linkName","pathName","split","trackAction","INSTRUMENTATION","INSTRUMENTATION_MAPPING","tracking","EVENT_TYPE","CLICK","e","type","key","trackClick","push","goBack","_closeLink","React","createRef","current","focus","style","dir","isTimeoutPage","tabIndex","onKeyDown","handleBackButton","data-testid","aria-label","data-pagename","data-pagename2","data-nextpagegroup","data-nextpagename","fontWeight","href","flowCancelUrl","ref","Layout","document","getElementById","scrollTop","match","url","isNewUser","id","SPINNER_ID","size","screenReaderText","isNativeApp","DEFAULT_PROFILE_PHOTO","COVER_PHOTO_URLS","GREEN","RASTER","VECTOR","BLUE","PURPLE","RED","YELLOW","SETTINGS_EDIT_NAME_INSTRUMENTATION","EDIT_USERNAME","PROFILE_EDIT_NAME_INSTRUMENTATION","PAGE_GROUP","PAGE_NAME","IMPRESSION","BACK","CLOSE","ON_FOCUS","TYPING","SELECT_USERNAME_SUGGESTION","SAVE_USERNAME","PROFILE_EDIT_NAME_ERROR_INSTRUMENTATION","PROFILE_SLUG_INSTRUMENTATION","SEND","REQUEST","REPORT","EDIT_PROFILE_INSTRUMENTATION","EDIT_BACKGROUND","EDIT_PHOTO","SHARE","EDIT_LOCATION","EDIT_ABOUT","EDIT_PROFILE_STATUS","EDIT_EMAIL_STATUS","EDIT_PHONE_STATUS","TERMS_AND_CONDITIONS","ABOUT_INSTRUMENTATION","FOCUS","TYPING_START","SAVE","ABOUT_ERROR_INSTRUMENTATION","LOCATION_INSTRUMENTATION","CITY","STATE","NOT_SHOW","LOCATION_ERROR_INSTRUMENTATION","TURN_OFF_CONFIRMATION_INSTRUMENTATION","CONFIRM","CANCEL","settings","close","username","back","about","confirm","addLoader","overlayedElement","removeProperty","removeLoader","elementWithSpinner","setProperty","Boolean","isIOS","navigator","platform","test","onShareText","obj","shareText","text","onProfileSave","photoDataURI","profileSave","profileImageChanged","reAuth"],"mappings":"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","file":"ppme-shared.bundle.js","sourcesContent":["// @flow\n\nimport React, { Component } from 'react'\nimport { AnimatedSwitch } from 'react-router-transition'\nimport { withRouter } from 'react-router-dom'\nimport type { RouterHistory } from 'react-router'\nimport './index.css'\n\ntype Props = {\n children: React$Element,\n history: RouterHistory,\n}\n\ntype State = {\n invert: boolean,\n currentPage: ?string,\n previousPage: ?string,\n stack: Array,\n}\n\nfunction pageTransitions(action) {\n return {\n atEnter: {\n offset: action === 'PUSH' ? 600 : -600,\n opacity: 1,\n },\n atLeave: {\n offset: action === 'PUSH' ? -600 : 600,\n opacity: 0,\n },\n atActive: {\n offset: 0,\n opacity: 1,\n },\n }\n}\n\nclass AnimatedSwitchPagination extends Component {\n state = {\n previousPage: undefined,\n currentPage: undefined,\n stack: [],\n }\n\n mapStyles = styles => {\n let offset = styles.offset\n offset = `${offset}px`\n\n return {\n opacity: styles.opacity,\n transform: `translateX(${offset})`,\n }\n }\n\n componentWillReceiveProps() {\n window.scrollTo(0, 0)\n }\n\n render() {\n return (\n \n {this.props.children}\n \n )\n }\n}\n\nexport default withRouter(AnimatedSwitchPagination)\n","// @flow\n// after 15 minutes of inactivity, the user's session expires\n// we warn them of this after 14 minutes to give them a minute to interact\n// with the app and extend their session.\nimport * as venice from './venice'\nimport clientData from './client-data'\n\nlet signoutTimer\nlet warningTimer\nlet onWarning\n\nfunction init(options) {\n if (!clientData.isUserLoggedIn) {\n // no reason to log them out if they're not logged in\n return\n }\n onWarning = options.onWarning\n if (venice.isNativeApp) {\n startNativeAuthTimer()\n } else {\n startWebAuthTimer()\n }\n}\n\nfunction startNativeAuthTimer() {\n const TIMEOUT = 15.02 * 60 * 1000 // 15 minutes and 1.2 seconds\n setTimeout(venice.reAuth, TIMEOUT)\n}\n\nfunction startWebAuthTimer() {\n const TIMEOUT = 14 * 60 * 1000 // 14 minutes\n warningTimer = setTimeout(() => {\n onWarning()\n signoutTimer = setTimeout(() => {\n window.location.assign('/signin')\n }, 60 * 1000) // 1 minute\n }, TIMEOUT)\n}\n\nfunction onSessionExtended() {\n clearTimeout(signoutTimer)\n clearTimeout(warningTimer)\n startWebAuthTimer()\n}\n\nexport { init, onSessionExtended }\n","// @flow\n\nimport React, { useState, useEffect } from 'react'\nimport ReactDOM from 'react-dom'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport getContent from 'pp-react-l10n'\nimport axios from 'axios'\nimport { Modal, Button } from '@paypalcorp/pp-react'\n\nimport { ILLUSTRATIONS } from 'utils/constants'\n\nimport {\n init as initSessionTimer,\n onSessionExtended,\n} from 'utils/session-timer'\n\nconst STYLES = {\n MODAL: css({ zIndex: 99999 }),\n}\n\nconst Wrapper = glamorous.div({\n display: 'flex',\n justifyContent: 'center',\n})\nconst Container = glamorous.div({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n})\n\nconst ButtonContainer = glamorous.div({ marginTop: '2rem' })\n\nconst l10n = getContent('pages/session-timer')\n\nfunction SessionTimer() {\n const [isOpen, setIsOpen] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n useEffect(() => {\n initSessionTimer({\n onWarning: () => {\n setIsOpen(true)\n },\n })\n }, [])\n\n const onClose = () => {\n setIsOpen(false)\n }\n\n const onSubmit = async () => {\n // double check since React does not guarantee renders between event boundaries\n if (isLoading) {\n return\n }\n\n setIsLoading(true)\n\n try {\n await axios('/auth/extend')\n\n onSessionExtended()\n\n ReactDOM.unstable_batchedUpdates(() => {\n setIsLoading(false)\n setIsOpen(false)\n })\n } catch (e) {\n setIsLoading(false)\n }\n }\n\n return (\n \n \n \n \"\"\n

{l10n('session.all_done')}

\n {l10n('session.we_will_log_you_out')}\n \n \n \n
\n
\n \n )\n}\n\nexport default SessionTimer\n","// @flow\n\nimport React, { Component } from 'react'\nimport glamorous from 'glamorous'\nimport getContent from 'pp-react-l10n'\nimport { withRouter } from 'react-router-dom'\nimport { LoadingSpinner as Spinner } from '@paypalcorp/pp-react'\nimport type { RouterHistory } from 'react-router'\nimport clientData from 'utils/client-data'\nimport _ from 'lodash'\nimport { isNativeApp } from 'utils/venice'\nimport { SPINNER_ID } from 'utils/loader'\nimport { INSTRUMENTATION_MAPPING, EVENT_TYPE } from 'utils/constants'\nimport { tracking, trackAction } from '../../lib/analytics'\n\nconst l10n = getContent('pages/settings')\n\nconst Wrapper = glamorous.div({\n position: 'absolute',\n zIndex: '1050',\n width: '100%',\n height: '100%',\n background: '#f4f6f9',\n display: 'table',\n tableLayout: 'fixed',\n top: '0',\n})\n\nconst SpinnerContainer = glamorous.div({\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(255, 255, 255, 0.6)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n animation: 'vx_fade-in 0.3s ease-out 0s both',\n zIndex: 1,\n})\n\nconst White = glamorous.div(props => ({\n position: 'fixed',\n right: 0,\n left: 0,\n\n // super important for animations to work because as our route\n // \"leaves\" to the right/left of the screen, it will be hidden\n overflow: 'hidden',\n overflowY: 'auto',\n\n width: '66.6%',\n height: '100%',\n maxWidth: '700px',\n margin: '0 auto',\n padding: '0 20px',\n background: '#ffffff',\n\n '@media (max-width: 640px)': {\n width: '100%',\n padding: props.isMyProfile ? '0' : '0 20px',\n },\n}))\n\nconst Content = glamorous.div(props => ({\n marginTop: props.isSettingsPage ? 84 : 104,\n marginBottom: 104,\n padding: props.isProfileTreatment\n ? '0 25%'\n : props.isMyProfile\n ? '0 13%'\n : '0 25%',\n\n '@media (max-width: 1024px)': {\n padding: '0 12.5%',\n },\n\n '@media (max-width: 640px)': {\n padding: '0 8.33%',\n },\n\n '@media (max-width: 480px)': {\n padding: '0',\n },\n}))\n\n// the x and back button on the modal corners has a weird bounding\n// box due to use of padding instead of margin\nconst navigationItemStylingFix = {\n padding: 0,\n margin: '24px 4px 0',\n cursor: 'pointer',\n}\n\nconst NavLink = glamorous.a(\n 'vx_backBtn vx_backBtn_flow',\n navigationItemStylingFix,\n {\n // these overrides are to ensure the back arrow always points backwards\n // this overrides the [dir=rtl] style ruls from vx\n ':before': {\n verticalAlign: 'inherit',\n transform: 'none',\n },\n },\n)\n\ntype NavigationProps = {\n history: RouterHistory,\n isMyProfile: boolean,\n isSettingsPage: boolean,\n isTimeoutPage: boolean,\n}\n\nclass Navigation extends Component {\n constructor(props) {\n super(props)\n this._closeLink = React.createRef()\n }\n\n componentDidMount() {\n // for a11y, set the focus on the close link everytime it renders\n if (this._closeLink.current) this._closeLink.current.focus()\n }\n\n trackClick = linkName => {\n const currentPath = _.get(this.props, 'history.location.pathname', '')\n const pathName = currentPath.split('/')[2]\n // FPTI back instrumentation handled automatically via event handlers\n if (linkName === 'close') {\n trackAction('close')\n }\n const INSTRUMENTATION = INSTRUMENTATION_MAPPING[pathName]\n if (INSTRUMENTATION && INSTRUMENTATION[linkName]) {\n tracking(INSTRUMENTATION[linkName], EVENT_TYPE.CLICK)\n }\n }\n\n handleBackButton = e => {\n if (e.type === 'click' || e.key === 'Enter') {\n this.trackClick('back')\n if (this.props.isMyProfile) {\n this.props.history.push('/my/settings')\n } else {\n this.props.history.goBack()\n }\n }\n }\n\n componentDidUpdate() {\n if (this._closeLink.current) this._closeLink.current.focus()\n }\n\n render() {\n // the navigation flow is directionality specific and should always go\n // from left to right. So we'll make sure things flow that way here too\n return (\n
\n {!(this.props.isSettingsPage || this.props.isTimeoutPage) ? (\n \n {this.props.isMyProfile ? (\n \n {l10n(\n clientData.isProfileTreatment\n ? 'button.back'\n : 'button.manage',\n )}\n \n ) : (\n {l10n('button.back')}\n )}\n \n ) : null}\n {!this.props.isTimeoutPage ? (\n this.trackClick('close')}\n >\n {l10n('icon.close')}\n \n ) : null}\n
\n )\n }\n}\n\ntype LayoutProps = {\n children: Node,\n history: RouterHistory,\n match: {\n url: string,\n },\n}\nclass Layout extends Component {\n componentDidUpdate() {\n const overpanel = document.getElementById('core-white-overpanel-navigation')\n if (overpanel) {\n overpanel.scrollTop = 0\n }\n }\n\n render() {\n const isMyProfile = this.props.match.url.split('/')[2] === 'profile'\n const isSettingsPage = this.props.match.url.split('/')[2] === 'settings'\n const isNewUser = _.get(clientData, 'myProfileData.isNewUser')\n const isTimeoutPage =\n this.props.match.url.split('/')[2] === 'session-timeout'\n return (\n \n \n \n \n \n {!isNewUser && !isNativeApp && (\n \n )}\n \n {this.props.children}\n \n \n \n )\n }\n}\nexport default withRouter(Layout)\n","export const DEFAULT_PROFILE_PHOTO =\n 'https://www.paypalobjects.com/digitalassets/c/consumer/paypalme/networkidentity/profile_man.svg'\n\nexport const COVER_PHOTO_URLS = {\n GREEN: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/green.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/green.svg',\n },\n BLUE: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/blue.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/blue.svg',\n },\n PURPLE: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/purple.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/purple.svg',\n },\n RED: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/red.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/red.svg',\n },\n YELLOW: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/yellow.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/yellow.svg',\n },\n}\n\nexport const SETTINGS_EDIT_NAME_INSTRUMENTATION = {\n EDIT_USERNAME: 'edit_username',\n}\nexport const PROFILE_EDIT_NAME_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppmeusername',\n PAGE_NAME: 'main:ppmeusername:::change',\n IMPRESSION: 'p2p_edit_username_screen_shown​',\n BACK: 'p2p_edit_username_back_pressed​',\n CLOSE: 'p2p_edit_username_close_pressed​',\n ON_FOCUS: 'p2p_edit_username_field_pressed​',\n TYPING: 'p2p_edit_username_typing_started​',\n SELECT_USERNAME_SUGGESTION: 'p2p_edit_username_suggestion_pressed​',\n SAVE_USERNAME: 'p2p_edit_username_save_pressed​',\n}\nexport const PROFILE_EDIT_NAME_ERROR_INSTRUMENTATION = {\n IMPRESSION: 'p2p_editusername_error_screen_shown',\n}\n\nexport const MY_PROFILE_INSTRUMENTATION = {\n IMPRESSION: 'p2p_myprofile_screen_shown',\n EDIT_PROFILE: 'p2p_myprofile_edit_pressed',\n BACK: 'p2p_myprofile_back_pressed',\n SHARE: 'p2p_myprofile_share_pressed',\n}\nexport const PROFILE_SLUG_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:recipientprofile',\n PAGE_NAME: 'main:ppme:recipientprofile:::',\n IMPRESSION: 'p2p_profile_screen_shown',\n SEND: 'p2p_profile_send_pressed',\n REQUEST: 'p2p_profile_request_pressed',\n REPORT: 'p2p_profile_report_pressed',\n}\n\nexport const EDIT_PROFILE_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:settings',\n PAGE_NAME: 'main:ppme:settings:::',\n IMPRESSION: 'p2p_edit_profile_screen_shown',\n EDIT_BACKGROUND: 'p2p_edit_profile_background_pressed',\n EDIT_PHOTO: 'p2p_edit_profile_photo_pressed​',\n SHARE: 'p2p_edit_profile_share_pressed​',\n EDIT_USERNAME: 'p2p_edit_profile_username_pressed​',\n EDIT_LOCATION: 'p2p_edit_profile_location_pressed​',\n EDIT_ABOUT: 'p2p_edit_profile_about_pressed​',\n EDIT_PROFILE_STATUS: 'p2p_edit_profile_status_toggle_pressed​',\n EDIT_EMAIL_STATUS: 'p2p_edit_profile_email_toggle_pressed​',\n EDIT_PHONE_STATUS: 'p2p_edit_profile_phone_toggle_pressed',\n TERMS_AND_CONDITIONS: 'p2p_edit_profile_terms_pressed',\n}\n\nexport const ABOUT_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:about',\n PAGE_NAME: 'main:ppme:about:::change',\n IMPRESSION: 'p2p_edit_about_screen_shown​',\n BACK: 'p2p_edit_about_back_pressed​',\n CLOSE: 'p2p_edit_about_close_pressed​',\n FOCUS: 'p2p_edit_about_field_pressed',\n TYPING_START: 'p2p_edit_about_typing_started​',\n SAVE: 'p2p_edit_about_save_pressed​',\n}\nexport const ABOUT_ERROR_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:personalmessage:error',\n PAGE_NAME: 'main:ppme:personalmessage:error',\n IMPRESSION: 'p2p_edit_about_error_screen_shown',\n}\n\nexport const LOCATION_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:location',\n PAGE_NAME: 'main:ppme:location:::change',\n IMPRESSION: 'p2p_edit_location_screen_shown​',\n BACK: 'p2p_edit_location_back_pressed',\n CLOSE: 'p2p_edit_location_close_pressed',\n CITY: 'p2p_edit_location_city_pressed​',\n STATE: 'p2p_edit_location_state_pressed​',\n NOT_SHOW: 'p2p_edit_location_dont_show_pressed​',\n SAVE: 'p2p_edit_location_save_pressed​',\n}\nexport const LOCATION_ERROR_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:location:error',\n PAGE_NAME: 'main:ppme:location:error',\n IMPRESSION: 'p2p_edit_location_error_screen_shown',\n}\n\nexport const TURN_OFF_CONFIRMATION_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:hide:confirm',\n PAGE_NAME: 'main:ppme:hide:confirm',\n IMPRESSION: 'p2p_hide_profile_confirmation_screen_shown​',\n BACK: 'p2p_hide_profile_confirmation_back_pressed​',\n CLOSE: 'p2p_hide_profile_confirmation_close_pressed​',\n CONFIRM: 'p2p_hide_profile_confirmation_turnoff_pressed',\n CANCEL: 'p2p_hide_profile_confirmation_cancel_pressed​',\n}\n\nexport const EVENT_TYPE = {\n CLICK: 'cl',\n IMPRESSION: 'im',\n}\n\nexport const INSTRUMENTATION_MAPPING = {\n settings: {\n close: EDIT_PROFILE_INSTRUMENTATION.CLOSE,\n },\n username: {\n back: PROFILE_EDIT_NAME_INSTRUMENTATION.BACK,\n close: PROFILE_EDIT_NAME_INSTRUMENTATION.CLOSE,\n },\n about: {\n back: ABOUT_INSTRUMENTATION.BACK,\n close: ABOUT_INSTRUMENTATION.CLOSE,\n },\n location: {\n back: LOCATION_INSTRUMENTATION.BACK,\n close: LOCATION_INSTRUMENTATION.CLOSE,\n },\n confirm: {\n back: TURN_OFF_CONFIRMATION_INSTRUMENTATION.BACK,\n close: TURN_OFF_CONFIRMATION_INSTRUMENTATION.CLOSE,\n },\n}\n\nexport const ILLUSTRATIONS = {\n WARNING:\n 'https://www.paypalobjects.com/paypal-ui/illustrations/svg/warning.svg',\n}\n","// @flow\n\nexport const SPINNER_ID = 'core-white-overpanel-spinner'\n\nexport const addLoader = function() {\n const overlayedElement = document.getElementById(SPINNER_ID)\n\n if (overlayedElement) {\n overlayedElement.style.removeProperty('display')\n }\n}\n\nexport const removeLoader = function() {\n const elementWithSpinner = document.getElementById(SPINNER_ID)\n\n if (elementWithSpinner) {\n elementWithSpinner.style.setProperty('display', 'none')\n }\n}\n","/**\n * For mobile apps communicate through the venice bridge when certain\n * events happen.\n *\n * @flow\n */\n\nexport const isNativeApp = Boolean(\n typeof window !== 'undefined' && window.venice,\n)\n\nconst isIOS = Boolean(\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n /iPad|iPhone|iPod/.test(navigator.platform),\n)\n\ntype ShareText = { text: string, url: string }\nexport function onShareText(obj: ShareText) {\n if (!isNativeApp) return\n if (isIOS) {\n window.venice.shareText(obj)\n } else {\n window.venice.shareText(obj.text)\n }\n}\n\ntype ProfileOptions = { profilePhotoUrl?: string }\nexport function onProfileSave({ photoDataURI = '' }: ProfileOptions = {}) {\n if (!isNativeApp) return\n\n // doesn't seem to exist for IOS at least\n if (!isIOS) {\n window.venice.profileSave()\n }\n\n // we need to check these methods exist, becuase they don't always...\n if (photoDataURI && isIOS) {\n window.venice.profileImageChanged(photoDataURI)\n }\n}\n\n// this is something about resetting the image\n// when we don't go through with profile creation\nexport function onProfileCancel() {\n if (!isNativeApp) return\n\n // doesn't seem to exist for IOS at least\n if (window.venice.profileCancel) {\n window.venice.profileCancel()\n }\n}\n\nexport function reAuth() {\n return window.venice.reAuth()\n}\n"],"sourceRoot":""}