{"version":3,"sources":["webpack:///./pagination/index.js","webpack:///./utils/session-timer.js","webpack:///./screens/session-timer/index.js","webpack:///./screens/shopslayout/index.js","webpack:///./screens/simplelayout/index.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","hideLogo","title","hideTitle","overpanel","onClose","closeOnBackgroundClick","closeButtonLabel","src","ILLUSTRATIONS","WARNING","alt","width","height","disabled","onClick","position","background","tableLayout","top","SpinnerContainer","left","backgroundColor","animation","White","right","overflow","overflowY","maxWidth","margin","padding","phoneLandscapeMaxAndSmaller","Content","tabletLandscapeMaxAndSmaller","phoneLandscapeMinAndSmaller","navigationItemStylingFix","cursor","NavLink","verticalAlign","Navigation","linkName","trackAction","currentPath","slug","hasSlugInUrl","includes","pathSplit","split","length","index","pathName","INSTRUMENTATION","SELLER_INSTRUMENTATION_MAP","Events","tracking","e","type","key","trackClick","goBack","tabIndex","onKeyDown","handleBackButton","data-testid","aria-label","_closeLink","React","createRef","current","focus","style","dir","renderBackButton","isTimeoutPage","href","flowCancelUrl","ref","Layout","document","getElementById","scrollTop","match","url","id","SPINNER_ID","size","screenReaderText","isNativeApp","WhiteWidth","isFullScreen","isSellerDashboardPreview","isSellerProducts","isMyProfile","contentMarginTop","marginBottom","isProfileTreatment","widerPage","getCurrentPath","isSellerRoute","trackSellerClick","subPathName","INSTRUMENTATION_MAP","NEW","state","error","headerKey","instrumentationObj","decisionMsg","photoFlow","isMediaservError","error_source","error_code","photo_uploaded_flag","push","isSellerSettings","replace","showBackLink","isSettingsPage","isSuccessPage","isLandingPage","isSellerDashboard","data-test-id","matchUrl","urlMatchArr","positions","paths","i","isSellerProfile","isNewUser","isPersonalProfileSlug","isVisaPlus","theme","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\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, v2white } 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 { SELLER_INSTRUMENTATION_MAP } from 'utils/constants'\nimport { tracking, trackAction } from '../../lib/analytics'\nimport Events from 'lib/analytics/event-tags'\nimport {\n phoneLandscapeMaxAndSmaller,\n tabletLandscapeMaxAndSmaller,\n phoneLandscapeMinAndSmaller,\n} from '../../lib/styles/media-queries'\nconst l10n = getContent('pages/settings')\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})\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})\nconst White = glamorous.div({\n position: 'fixed',\n right: 0,\n left: 0,\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 width: '90%',\n height: '100%',\n maxWidth: '700px',\n margin: '0 auto',\n padding: '0 20px',\n background: v2white,\n [phoneLandscapeMaxAndSmaller]: {\n width: '100%',\n padding: '0 20px',\n },\n})\nconst Content = glamorous.div({\n margin: '104px 0',\n padding: '0 13%',\n [tabletLandscapeMaxAndSmaller]: {\n padding: '0 12.5%',\n },\n [phoneLandscapeMaxAndSmaller]: {\n padding: '0 8.33%',\n },\n [phoneLandscapeMinAndSmaller]: {\n padding: '0',\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}\nconst NavLink = glamorous.a(\n 'vx_backBtn vx_backBtn_flow',\n navigationItemStylingFix,\n {\n display: 'flex',\n alignItems: 'center',\n height: '1.5em',\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 marginTop: -2,\n },\n },\n)\ntype NavigationProps = {\n history: RouterHistory,\n isTimeoutPage: boolean,\n}\nclass Navigation extends Component {\n constructor(props) {\n super(props)\n this._closeLink = React.createRef()\n }\n componentDidMount() {\n // for a11y, set the focus on the close link everytime it renders\n if (this._closeLink.current) {\n this._closeLink.current.focus()\n }\n }\n trackClick = linkName => {\n // FPTI back instrumentation handled automatically via event handlers\n if (linkName === 'close') {\n trackAction('close')\n }\n const currentPath = _.get(this.props, 'history.location.pathname', '')\n const slug = _.get(clientData, 'sellerProfileDetails.id')\n const hasSlugInUrl = slug && currentPath.includes(slug)\n const pathSplit = currentPath.split('/')\n if (!pathSplit.length) return\n\n // Start index if slug is there should be 3 so we can strip out the slug\n let index = hasSlugInUrl ? 3 : 2\n\n let pathName = pathSplit[index]\n index++\n\n while (index <= pathSplit.length - 1) {\n pathName += `/${pathSplit[index]}`\n index++\n }\n\n // TODO: replace with shops instrumentation when available\n const INSTRUMENTATION = SELLER_INSTRUMENTATION_MAP[pathName]\n\n if (\n INSTRUMENTATION &&\n INSTRUMENTATION[linkName] &&\n Events[INSTRUMENTATION[linkName]]\n ) {\n tracking(Events[INSTRUMENTATION[linkName]]({}))\n }\n }\n\n handleBackButton = e => {\n if (e.type === 'click' || e.key === 'Enter') {\n this.trackClick('back')\n this.props.history.goBack()\n }\n }\n componentDidUpdate() {\n if (this._closeLink.current) {\n this._closeLink.current.focus()\n }\n }\n\n renderBackButton = () => {\n const showBackLink = true\n\n return (\n <>\n {showBackLink ? (\n \n {l10n('button.back')}\n \n ) : null}\n \n )\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.renderBackButton()}\n {!this.props.isTimeoutPage ? (\n this.trackClick('close')}\n >\n {l10n('icon.close')}\n \n ) : null}\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 render() {\n const urlMatchArr = this.props.match.url.split('/')\n const isTimeoutPage = urlMatchArr[2] === 'session-timeout'\n return (\n \n \n \n \n \n {!isNativeApp && (\n \n )}\n {this.props.children}\n \n \n )\n }\n}\nexport default withRouter(Layout)\n","// @flow\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 {\n INSTRUMENTATION_MAP,\n SELLER_INSTRUMENTATION_MAP,\n} from 'utils/constants'\nimport { tracking, trackAction } from '../../lib/analytics'\nimport Events from 'lib/analytics/event-tags'\nimport {\n phoneLandscapeMaxAndSmaller,\n tabletLandscapeMaxAndSmaller,\n phoneLandscapeMinAndSmaller,\n} from '../../lib/styles/media-queries'\nconst l10n = getContent('pages/settings')\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})\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})\nconst White = glamorous.div(props => ({\n position: 'fixed',\n right: 0,\n left: 0,\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 width: props.WhiteWidth,\n height: '100%',\n maxWidth: !props.isFullScreen && '700px',\n margin: '0 auto',\n padding: '0 20px',\n background:\n props.isSellerDashboardPreview || props.isSellerProducts\n ? 'none'\n : '#ffffff',\n [phoneLandscapeMaxAndSmaller]: {\n width: '100%',\n padding: props.isMyProfile ? '0' : '0 20px',\n },\n}))\nconst Content = glamorous.div(props => ({\n marginTop: props.contentMarginTop,\n marginBottom: props.isFullScreen ? 0 : 104,\n padding: props.isProfileTreatment\n ? '0 25%'\n : props.widerPage\n ? '0 13%'\n : '0 25%',\n [tabletLandscapeMaxAndSmaller]: {\n padding: '0 12.5%',\n },\n [phoneLandscapeMaxAndSmaller]: {\n padding: '0 8.33%',\n },\n [phoneLandscapeMinAndSmaller]: {\n padding: '0',\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}\nconst NavLink = glamorous.a(\n 'vx_backBtn vx_backBtn_flow',\n navigationItemStylingFix,\n {\n display: 'flex',\n alignItems: 'center',\n height: '1.5em',\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 marginTop: -2,\n },\n },\n)\n\ntype NavigationProps = {\n history: RouterHistory,\n isMyProfile: boolean,\n isSettingsPage: boolean,\n isTimeoutPage: boolean,\n isSellerDashboard: boolean,\n isSuccessPage: boolean,\n isLandingPage: boolean,\n isSellerSettings: boolean,\n}\nclass Navigation extends Component {\n constructor(props) {\n super(props)\n this._closeLink = React.createRef()\n }\n componentDidMount() {\n // for a11y, set the focus on the close link everytime it renders\n if (this._closeLink.current) {\n this._closeLink.current.focus()\n }\n }\n\n getCurrentPath = history => {\n return _.get(history, 'location.pathname', '')\n }\n\n trackClick = linkName => {\n const currentPath = this.getCurrentPath(this.props.history)\n const isSellerRoute = currentPath.split('/')[1] === 'seller'\n\n // FPTI back instrumentation handled automatically via event handlers\n if (linkName === 'close') {\n trackAction('close')\n }\n\n if (isSellerRoute) {\n return this.trackSellerClick(linkName)\n }\n\n let pathName = currentPath.split('/')[2]\n const subPathName = currentPath.split('/')[3]\n if (subPathName) {\n pathName += `/${subPathName}`\n }\n\n const INSTRUMENTATION = INSTRUMENTATION_MAP[pathName]\n if (\n INSTRUMENTATION &&\n INSTRUMENTATION.NEW &&\n INSTRUMENTATION.NEW[linkName] &&\n Events[INSTRUMENTATION.NEW[linkName]]\n ) {\n tracking(Events[INSTRUMENTATION.NEW[linkName]]({}))\n }\n }\n trackSellerClick = linkName => {\n const slug = _.get(clientData, 'sellerProfileDetails.id')\n const currentPath = this.getCurrentPath(this.props.history)\n const hasSlugInUrl = slug && currentPath.includes(slug)\n const pathSplit = currentPath.split('/')\n if (!pathSplit.length) return\n\n // Start index if slug is there should be 3 so we can strip\n // out the slug to check SELLER_INSTRUMENTATION_MAP\n let index = hasSlugInUrl ? 3 : 2\n\n let pathName = pathSplit[index]\n index++\n\n while (index <= pathSplit.length - 1) {\n pathName += `/${pathSplit[index]}`\n index++\n }\n\n const INSTRUMENTATION = SELLER_INSTRUMENTATION_MAP[pathName]\n\n if (\n INSTRUMENTATION &&\n INSTRUMENTATION[linkName] &&\n Events[INSTRUMENTATION[linkName]]\n ) {\n if (pathName === 'error') {\n const {\n location: {\n state: {\n error: {\n headerKey = '',\n instrumentationObj: {\n decisionMsg = '',\n photoFlow = 'profile',\n isMediaservError = false,\n },\n } = {},\n } = {},\n } = {},\n } = this.props.history\n if (headerKey === 'badPhoto') {\n tracking(\n Events[INSTRUMENTATION[linkName]]({\n error_source: 'image_screen',\n error_code: decisionMsg,\n photo_uploaded_flag: photoFlow,\n }),\n )\n } else if (headerKey === 'uploadPhoto' && isMediaservError) {\n // isMediaservError distinction is needed for instrumentation since Edit photo uses the same error codes to display the error screen\n tracking(\n Events[INSTRUMENTATION[linkName]]({\n error_source: 'mediaserv',\n error_code: 'SERVICE_ERROR',\n photo_uploaded_flag: photoFlow,\n }),\n )\n }\n } else {\n tracking(Events[INSTRUMENTATION[linkName]]({}))\n }\n }\n }\n handleBackButton = e => {\n const currentPath = this.getCurrentPath(this.props.history)\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 if (this.props.isSellerSettings) {\n this.props.history.push(currentPath.replace('/settings', '/dashboard'))\n } else {\n this.props.history.goBack()\n }\n }\n }\n componentDidUpdate() {\n if (this._closeLink.current) {\n this._closeLink.current.focus()\n }\n }\n\n renderBackButton = () => {\n const showBackLink = !(\n this.props.isSettingsPage ||\n this.props.isTimeoutPage ||\n this.props.isSuccessPage ||\n this.props.isLandingPage ||\n this.props.isSellerDashboard\n )\n\n return (\n <>\n {showBackLink ? (\n \n \n {this.props.isMyProfile\n ? l10n('button.manage')\n : l10n('button.back')}\n \n \n ) : null}\n \n )\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.renderBackButton()}\n {!this.props.isTimeoutPage ? (\n this.trackClick('close')}\n >\n {l10n('icon.close')}\n \n ) : null}\n
\n )\n }\n}\ntype LayoutProps = {\n children: Node,\n history: RouterHistory,\n match: {\n url: string,\n },\n}\n\n// NOTE: Update all matches to use this function\n/**\n *\n * @param {*} urlMatchArr - contains url split by '/'\n * @param {*} positions - array containing indices in urlMatchArr we want to check\n * @param {*} path - array containing path string to be matched with indices\n * @returns whether a url matches what we are expecting\n */\nconst matchUrl = (urlMatchArr, positions, paths) => {\n for (let i = 0; i < positions.length; i++) {\n if (urlMatchArr[positions[i]] !== paths[i]) {\n return false\n }\n }\n return true\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 render() {\n const urlMatchArr = this.props.match.url.split('/')\n const isMyProfile = urlMatchArr[2] === 'profile'\n const isSellerProfile = urlMatchArr[1] === 'seller'\n const isSettingsPage = urlMatchArr[2] === 'settings'\n const isSuccessPage = isSellerProfile && urlMatchArr[2] === 'success'\n const isLandingPage = isSellerProfile && urlMatchArr[2] === 'landing'\n const isSellerDashboard = isSellerProfile && urlMatchArr[3] === 'dashboard'\n const isSellerDashboardPreview =\n isSellerDashboard && urlMatchArr[4] === 'preview'\n const isSellerProducts = isSellerProfile && urlMatchArr[5] === 'products'\n // Match length to ensure it only matches '/settings' and not '/setttings/*'\n const isSellerSettings =\n isSellerProfile &&\n urlMatchArr[3] === 'settings' &&\n urlMatchArr.length === 4\n const isNewUser = _.get(clientData, 'myProfileData.isNewUser')\n const isTimeoutPage = urlMatchArr[2] === 'session-timeout'\n // We are expecting index 1 of urlMatchArr to be 'my' and index 2 to be 'createusername'\n const isPersonalProfileSlug = matchUrl(\n urlMatchArr,\n [1, 2],\n ['my', 'createusername'],\n )\n const isVisaPlus = matchUrl(urlMatchArr, [1], ['visa-plus'])\n const isFullScreen = isPersonalProfileSlug || isVisaPlus\n\n let WhiteWidth = '66.6%'\n let contentMarginTop = 104\n if (isFullScreen) {\n WhiteWidth = '100%'\n contentMarginTop = 0\n } else if (isSellerProfile) {\n WhiteWidth = '90%'\n }\n\n if (isSettingsPage) {\n contentMarginTop = 84\n }\n\n return (\n \n \n \n \n \n {!isFullScreen &&\n !isNewUser &&\n !isNativeApp &&\n !isSellerDashboardPreview && (\n \n )}\n \n {this.props.children}\n \n \n \n )\n }\n}\nexport default withRouter(Layout)\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":""}