{"version":3,"sources":["webpack:///./react-components/sessionTimer.js"],"names":["i18n","content","Image","styled","img","_templateObject","_taggedTemplateLiteral","SessionContainer","_Container","_templateObject2","ExtendButton","_Button","_templateObject3","smallAndSmaller","SessionTimer","_ref","confirmTime","expireTime","extendURL","onConfirmOpen","isGuest","env","isOpen","setIsOpen","useState","confirmationTimerRef","useRef","expirationTimerRef","startTimer","current","setTimeout","isIframe","window","top","location","href","clearTimer","clearTimeout","useEffect","ENV_TYPE","POOLS","close","onSessionExtended","bodyKey","buttonKey","imageSrc","concat","_get","serverProps","React","createElement","Overpanel","show","preset","handleClose","a11yTitle","zIndex","src","aria-hidden","_HeadingText","size","_BodyText","as","onClick","extendSession","$","ajax","type","url","success","dataType"],"mappings":"oQAcMA,EAAOC,YAAQ,0BAEfC,EAAQC,IAAOC,IAAGC,MAAAC,IAAA,yEAMlBC,EAAmBJ,YAAMK,IAANL,CAAiBM,MAAAH,IAAA,sDAKpCI,EAAeP,YAAMQ,IAANR,CAAcS,MAAAN,IAAA,kFAE/BO,KA2GWC,UA5FMC,IAOI,IAPH,YACpBC,EAAc,KAAc,WAC5BC,EAAa,IAAc,UAC3BC,EAAY,2BAA0B,cACtCC,EAAa,QACbC,EAAO,IACPC,GACkBN,GACXO,EAAQC,GAAaC,oBAAS,GAE/BC,EAAuBC,iBAAO,MAC9BC,EAAqBD,iBAAO,MAE5BE,EAAaA,KAEjBH,EAAqBI,QAAUC,WAAW,KACxCP,GAAU,GACVJ,KACCH,GAIHW,EAAmBE,QAAUC,WAAW,KAClCC,aACFC,OAAOC,IAAIC,SAASC,KAxDF,WA0DpBH,OAAOE,SA1Da,WA2DnBjB,IAGCmB,EAAaA,KACjBC,aAAaZ,EAAqBI,SAClCQ,aAAaV,EAAmBE,UAGlCS,oBAAU,KACJjB,IAAQkB,IAASC,OACnBZ,IAEK,IAAMQ,KACZ,IAEH,IAAMK,EAAQA,IAAMlB,GAAU,GAGxBmB,EAAoBA,KACxBD,IACAL,IACAR,KAYIe,EAAUvB,EACZ,kCACA,6BACEwB,EAAYxB,EACd,sCACA,iCAEEyB,EAAW,GAAHC,OAAMC,IAClBC,IACA,eACD,0DAED,OACEC,IAAAC,cAACC,UAAS,CACRC,KAAM9B,EACN+B,OAAO,OACPC,YAAab,EACbc,UAAWvD,EAAK,gCAChBwD,OAAQ,MAERP,IAAAC,cAAC3C,EAAgB,KACf0C,IAAAC,cAAChD,EAAK,CAACuD,IAAKZ,EAAUa,cAAY,SAClCT,IAAAC,cAAAS,IAAA,CAAaC,KAAK,MACf5D,EAAK,iCAERiD,IAAAC,cAAAW,IAAA,CAAUC,GAAG,KAAK9D,EAAK2C,IACvBM,IAAAC,cAACxC,EAAY,CAACqD,QAnCEC,KACpBC,IAAEC,KAAK,CACLC,KAAM,OACNC,IAAKlD,EACLmD,QAAS3B,EACT4B,SAAU,WA8B+BtE,EAAK4C","file":"sessionTimer.esm.js","sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\nimport styled from '@emotion/styled'\nimport { isIframe } from 'iframe-support'\nimport content from 'pp-react-l10n'\nimport $ from 'jquery'\nimport { get } from 'lodash'\nimport { BodyText, Button, Container, HeadingText } from '@paypalcorp/pp-react'\nimport Overpanel from 'react-components/overpanel'\nimport { smallAndSmaller } from 'lib/styles/media-queries'\nimport { ENV_TYPE } from '../../../lib/constants'\nimport serverProps from '../../js/transfer/utils/serverProps'\n\nconst loginRedirectPath = '/signin' // A full page load\n\nconst i18n = content('widgets/confirmSession')\n\nconst Image = styled.img`\n width: 10rem;\n height: 11.5rem;\n margin-bottom: 1.5rem;\n`\n\nconst SessionContainer = styled(Container)`\n text-align: center;\n max-width: 500px;\n`\n\nconst ExtendButton = styled(Button)`\n width: auto;\n ${smallAndSmaller} {\n width: 100%;\n }\n margin-top: 4.375rem;\n`\n\ntype SessionTimerProps = {\n confirmTime?: number,\n expireTime?: number,\n extendURL?: string,\n onConfirmOpen?: Function,\n isGuest?: boolean,\n env?: string,\n}\n\nconst SessionTimer = ({\n confirmTime = 14 * 60 * 1000, // 14 minutes\n expireTime = 15 * 60 * 1000, // 15 minutes\n extendURL = '/myaccount/extendSession',\n onConfirmOpen,\n isGuest,\n env,\n}: SessionTimerProps) => {\n const [isOpen, setIsOpen] = useState(false)\n\n const confirmationTimerRef = useRef(null)\n const expirationTimerRef = useRef(null)\n\n const startTimer = () => {\n // Add 14 minute timer to allow the user to rescue the session before it expires\n confirmationTimerRef.current = setTimeout(() => {\n setIsOpen(true)\n onConfirmOpen()\n }, confirmTime)\n\n // Add 15 minute timer to redirect user to login screen,\n // so that sensitive information is no longer viewable in the source\n expirationTimerRef.current = setTimeout(() => {\n if (isIframe) {\n window.top.location.href = loginRedirectPath\n }\n window.location = loginRedirectPath\n }, expireTime)\n }\n\n const clearTimer = () => {\n clearTimeout(confirmationTimerRef.current)\n clearTimeout(expirationTimerRef.current)\n }\n\n useEffect(() => {\n if (env !== ENV_TYPE.POOLS) {\n startTimer()\n }\n return () => clearTimer()\n }, [])\n\n const close = () => setIsOpen(false)\n\n /* istanbul ignore next */\n const onSessionExtended = () => {\n close()\n clearTimer()\n startTimer()\n }\n\n const extendSession = () => {\n $.ajax({\n type: 'POST',\n url: extendURL,\n success: onSessionExtended,\n dataType: 'json',\n })\n }\n\n const bodyKey = isGuest\n ? 'confirmSession.guestConfirmBody'\n : 'confirmSession.confirmBody'\n const buttonKey = isGuest\n ? 'confirmSession.guestConfirmContinue'\n : 'confirmSession.confirmContinue'\n\n const imageSrc = `${get(\n serverProps,\n 'cdnHostName'\n )}/paypal-ui/illustrations/focused/svg/empty-warning.svg`\n\n return (\n \n \n \n \n {i18n('confirmSession.confirmHeader')}\n \n {i18n(bodyKey)}\n {i18n(buttonKey)}\n \n \n )\n}\n\nexport default SessionTimer\n"],"sourceRoot":""}