{"version":3,"sources":["reducers/activeFormReducer.js","constants/actionTypes.js","base/colors.js","base/device.js","reducers/portalDataReducer.js","reducers/index.js","reducers/rootReducer.js","components/FormMessage/FormMessage.styles.js","components/FormMessage/FormMessage.js","components/FormMessage/index.js","components/FormLink/FormLink.styles.js","components/FormLink/FormLink.js","components/FormLink/index.js","forms/OfflineForm/index.js","forms/OfflineForm/OfflineForm.js","helpers/errors.js","components/ErrorMessage/ErrorMessage.styles.js","components/ErrorMessage/ErrorMessage.js","components/ErrorMessage/index.js","forms/NoDataErrorForm/index.js","forms/NoDataErrorForm/NoDataErrorForm.js","components/FormButton/FormButton.styles.js","components/FormButton/FormButton.js","components/FormButton/index.js","components/FormError/FormError.styles.js","components/FormError/FormError.js","components/FormError/index.js","components/FormTitle/FormTitle.styles.js","components/FormTitle/FormTitle.js","components/FormTitle/index.js","components/ChannelBox/ChannelBox.styles.js","components/FormIcon/FormIcon.styles.js","components/FormIcon/FormIcon.js","components/FormIcon/index.js","components/ChannelBox/ChannelBox.js","components/ChannelBox/index.js","forms/SendCodeForm/SendCodeForm.js","forms/withFormik.js","forms/SendCodeForm/index.js","components/FormCodeInput/FormCodeInput.styles.js","components/FormCodeInput/FormCodeInput.js","components/FormCodeInput/index.js","components/FormCheck/FormCheck.styles.js","components/FormCheck/FormCheck.js","components/FormCheck/index.js","forms/EnterCodeForm/EnterCodeForm.styles.js","helpers/urls.js","components/FormNav/FormNav.styles.js","components/FormNav/FormNav.js","forms/EnterCodeForm/EnterCodeForm.js","forms/EnterCodeForm/index.js","components/FormContainer/FormContainer.styles.js","components/FormPanel/FormPanel.styles.js","components/FormPanel/FormPanel.js","components/FormContainer/FormContainer.js","components/FormContainer/index.js","components/FormLoader/FormLoader.styles.js","components/FormLoader/FormLoader.js","components/FormLoader/index.js","helpers/browserDetection.js","api/errorLogger.js","api/apiUtils.js","api/sendAnalyticsAPI.js","helpers/redirects.js","actions/setActiveForm.js","helpers/cookie.js","actions/setPortalCode.js","api/validateTokensAPI.js","constants/cookieNames.js","constants/formTypes.js","actions/setPortalSsoCode.js","actions/checkCookies.js","api/fetchDataAPI.js","api/responseValidation.js","actions/loadPortalData.js","api/checkPortalUserAPI.js","actions/checkPortalUser.js","api/generateCodeAPI.js","api/sendCodeAPI.js","actions/sendPortalCode.js","PortalSignIn.styles.js","forms/SniperLinkForm/SniperLinkForm.styles.js","forms/SniperLinkForm/SniperLinkForm.js","forms/SniperLinkForm/index.js","forms/EnterEmailForm/EnterEmailForm.styles.js","components/FormInput/FormInput.styles.js","components/FormInput/FormInput.js","components/FormInput/index.js","components/CompanyLogo/CompanyLogo.styles.js","components/CompanyLogo/CompanyLogo.js","components/CompanyLogo/index.js","components/FormPoweredBy/FormPoweredBy.styles.js","components/FormPoweredBy/index.js","components/FormPoweredBy/FormPoweredBy.js","forms/EnterEmailForm/EnterEmailForm.js","forms/EnterEmailForm/index.js","helpers/colorTransformations.js","PortalSignIn.js","actions/generatePortalCode.js","actions/setErrorId.js","index.js"],"names":["defaultState","activeForm","formErrorId","activeFormReducer","state","arguments","length","undefined","action","produce","draft","type","payload","colors","black","blackHover","white","whiteHover","method-darkest","method-darker","method-dark","method","method-light","method-lighter","method-lightest","method-clear","blue-darkest","blue-darker","blue-dark","blue","blue-light","blue-lighter","blue-lightest","blue-clear","blue-alice","green-darkest","green-darker","green-dark","green","green-light","green-lighter","green-lightest","green-clear","fuchsia-darkest","fuchsia-darker","fuchsia-dark","fuchsia","fuchsia-light","fuchsia-lighter","fuchsia-lightest","fuchsia-clear","grey-darkest","grey-darker","grey-dark","grey","grey-light","grey-lighter","grey-lightest","grey-clear","grey-calendar-v2","grey-calendar-v2-menu-icon","grey-calendar-v2-menu-border","concrete","yellow-darkest","yellow-darker","yellow-dark","yellow","yellow-light","yellow-lighter","yellow-lightest","yellow-clear","red-darkest","red-darker","red-dark","red","red-light","red-lighter","red-lightest","red-clear","purple-darkest","purple-darker","purple-dark","purple","purple-light","purple-lighter","purple-lightest","purple-clear","orange-darkest","orange-darker","orange-dark","orange","orange-light","orange-lighter","orange-lightest","orange-clear","teal-darker","teal-dark","teal","teal-light","teal-lighter","light-gray","transparent","newPalette","lighter","light","base","dark","darker","text","steel","cyan","ice","fuschia","legacy","greyDark","greyDarkHover","greyHover","greyLight","pink","pinkHover","pink-light","blueHover","aqua","aquaHover","aqua-light","purpleHover","greenAlt","greenAltHover","redHover","yellowAlt","yellowAltHover","orangeAlt","orangeAltHover","navHover","lightPurple","mBlue","silver","mDarkGrey","paleGrey","appHeader","appHeaderHover","breakpoints","size","sm","md","lg","xl","xxl","mq","concat","mobileL","tablet","laptop","desktop","desktopL","AccountId","PortalName","Name","portalQueryCode","portalSsoCode","isPortalEnabled","PortalCompanyName","PortalLogo","PortalContactEmail","PortalLogoSignInVisible","PortalLogoHeaderVisible","PortalBrandingColor","userEmail","stayOn","userPhones","userSniperLink","userEmailProvider","portalDataReducer","Object","assign","data","rootReducer","combineReducers","FormMessage","_styled","target","_ref","fontSize","_ref2","lineHeight","_ref3","fontWeight","_ref4","color","_ref5","props","_ref$type","_ref$className","className","style","children","React","createElement","s","FormLink","name","styles","Anchor","Svg","Mobile","Desktop","email","onClick","Boolean","href","onclick","viewBox","fill","d","defaultProps","OfflineForm","companyEmail","companyName","handleContactClick","offlinemessage","Fragment","marginBottom","ERRORS","USER_NOT_FOUND","ACCOUNT_INACTIVE","EMAIL_FAILURE","RATE_LIMIT_EXCEEDED","EXPIRED_CODE","INVALID_CODE","NOT_FOUND_CODE","MISMATCH_CODE","errorIdMessage","status","id","handleSendCodeError","plainError","setErrors","title","message","includes","handleEnterEmailError","handleValidateCodeError","setStatus","isCodeExpired","handleSsoCodeError","ErrorMessage","ErrorTextContainer","ErrorIdContainer","errorText","errorId","dangerouslySetInnerHTML","__html","NoDataErrorForm","_blue","_white","_hoverBlue","_focusedBlue","Button","buttonStyle","disabled","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","ButtonIcon","_ref12","height","_ref13","width","FormButton","_ref$buttonStyle","buttonText","icon","String","toLowerCase","fillRule","clipRule","FormErrorBox","ErrorIconBackground","ErrorIcon","FormError","errorMessage","Title","hideTitle","FormTitle","titleText","hasTitle","GeneralBox","isSelected","TextContainer","IconBackground","centered","BoxIcon","FormIcon","backgroundSize","ChannelBox","value","textAlign","EMAIL","PHONE","PICKED","sendCode","component","SendCodeForm","values","errors","isSubmitting","setFieldValue","phone","_useState","useState","_useState2","_slicedToArray","selected","setSelected","useEffect","Form","maxWidth","withFormik","mapPropsToValues","handleSubmit","_handleSubmit2","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","setSubmitting","picked","handleSubmitError","wrap","_context2","prev","next","handleSendEmail","sent","stop","this","_x3","_x4","apply","validateOnChange","validationSchema","Yup","shape","required","CodeInputContainer","CodeInputCell","IsOnError","CodeInputCellContainer","Separator","FormCodeInput","handleChange","_ref$fields","fields","Array","valueArray","setValueArray","canHandleChange","useRef","focusNextOrPreviousItem","evt","isNext","form","index","_toConsumableArray","indexOf","elements","focus","preventDefault","handleLocalChange","current","individualValue","modifiedValueArray","map","x","join","setValueArrayDigit","currentTarget","isNumber","string","trim","Number","isNaN","handlePasteAnywhere","clipboardData","getData","split","manageExternalValue","arrayValueFilteredByInput","slice","count","i","push","window","addEventListener","removeEventListener","item","key","maxLength","onChange","onFocus","select","handleFocus","onKeyDown","handleKeyDown","onPaste","setTimeout","Label","Caption","CheckboxContainer","Icon","HiddenCheckbox","StyledCheckbox","checked","FormCheck","caption","_objectWithoutProperties","htmlFor","points","styled","div","_templateObject","SmallLink","u","_templateObject2","InlineCodeError","_templateObject3","MobileFormat","_templateObject4","mainDomain","_MAIN_DOMAIN","portalDomain","_PORTAL_DOMAIN","ExtractUrlData","_classCallCheck","pName","pQueryCode","pSsoCode","hasInvalidQuery","_Url","Url","pathname","query","extractNameFromUrl","extractCodesFromUrl","_createClass","path","substring","extractVariablesFromUrl","questionMarkIndex","queryString","forEach","keyValue","removeQueryFromUrl","location","qIndex","originalUrl","history","pushState","displayTitle","document","toUrlEncoded","obj","keys","k","encodeURIComponent","Back","Next","NavContainer","FormNav","handleBackPress","handleNextPress","isBackPressable","isNextPressable","xmlns","CODE","STAYON","MAX_FAILED_ATTEMPTS","TEN_MINUTES","RATE_LIMIT_ERROR","enterCode","EnterCodeForm","portalCode","queryCode","_handleSubmit3","_callee3","_context3","handleSendCode","_x5","_x6","matches","min","max","oneOf","resetForm","attemptCount","lastAttemptDateUTC","handleCountdownStop","isMaxAttemptsTimerOn","setIsMaxAttemptsTimerOn","_useState3","_useState4","attemptsCountdown","setAttemptsCountdown","_useState5","_useState6","resendCountdown","setResendCountdown","_useState7","_useState8","isSendCodeTimerOn","setIsSendCodeTimerOn","_useState9","_useState10","endCountdownDateUTC","setEndCountdownDateUTC","start","end","timeString","timestampToTryUTC","Date","getTime","timeRemaining","now","minutes","Math","floor","seconds","getTimeToTryAgain","interval","setInterval","clearInterval","timeElapsed","isFailedAttemptsExceededError","handleResendCode","_callee","reqStatus","_context","marginLeft","marginRight","getAddedErrorMessage","newValue","preserveAspectRatio","stroke","keyframes","FormContainer","Box","FormContent","Panel","PanelBackground","TaskItem","TaskIcon","TextBackground","FormPanel","itemIconRender","rx","strokeWidth","strokeLinecap","strokeLinejoin","alignSelf","opacity","cx","cy","r","BoxKeyframes","Container","InnerContainer","SvgContainer","FormLoader","findBrowserType","safari","isOpera","opr","addons","opera","navigator","userAgent","isIE","documentMode","isChrome","chrome","webstore","runtime","InstallTrigger","test","HTMLElement","pushNotification","toString","StyleMedia","CSS","logError","requestId","error","logData","requestid","uuid","url","browser","account","portalAccount","_ENVIRONMENT","console","log","axios","headers","Content-Type","t0","_x","apiDomain","domain","handleError","response","sendAnalytics","EventName","AccountName","isPortalActive","isAccountActive","sref","isIFrame","referrer","parent","method-client","method-request-id","userId","accountName","customAttributes","applicationType","siteReferrer","abrupt","_x2","redirecToSignIn","redirectToSales","redirectToPortal","portalName","accountLinkId","setActiveForm","formType","getCookie","sName","oCrumbles","cookie","oPair","sKey","decodeURIComponent","sValue","setCookie","hasExpiry","setExpired","daysToExpire","sCookie","isSafari","isIOS","MSStream","oDate","setYear","getFullYear","setDate","getDate","toGMTString","clearCookie","setPortalCode","validateTokens","SessionToken","AccessTokenV2","Client","COOKIE_NAME_V2","OFFLINE","NO_DATA","ENTER_CODE","SEND_CODE_BY_CHANNEL","ENTER_EMAIL","SNIPER_LINK","setPortalSsoCode","checkCookies","dispatch","_yield$validateTokens","fetchData","runValidation","schema","validate","catch","e","validatePortalDataSchema","yup","strict","isPortalRenamed","validateTokenSchema","portalSession","sessionToken","accessTokenV2","updatePortalData","checkUser","Email","setUserPortalData","portalUserPhones","portaluserSniperLink","portalUserMXResult","updateUserEmail","generateCode","BrandingColor","PortalSession","_args","setSessionStatus","PortalSignInWrapper","SniperLinkForm","provider","handleSniperLink","ssoLink","a","LineBreak","EmailInput","ErrorEmailInput","InlineError","_templateObject5","_templateObject6","FormButtons","_templateObject7","InputBox","hasError","isStatic","Input","FormInput","inputLabel","isActive","setIsActive","CompanyLogo","logoSource","src","alt","PoweredBy","FormPoweredBy","enterEmail","EnterEmailForm","_handleSubmit","handleEnterEmail","companyLogo","handleSso","ssoCode","countdown","setCountdown","handleSSOAsync","isRateLimitingError","rel","autoComplete","stroke-width","marginTop","hexToHSL","H","g","b","cmin","cmax","delta","h","l","round","abs","toFixed","HSLToHex","hue","saturation","c","m","PortalSignIn","_Component","_this","_possibleConstructorReturn","_getPrototypeOf","call","onSSO","_this$props","onSendCode","onGetUser","checkPortalUser","onSendEmail","userPhone","autoChangeForm","_this$props2","_hexToHSL","_args3","generatePortalCode","f","setState","_callee4","_this$props3","sendPortalCode","incrementedCount","_context4","displayLoading","_x7","_x8","_x9","_x10","onSniperLink","currentDate","userSniperLinkUncoded","replace","getMonth","padStart","userSniperLinkEncoded","encodeURI","open","onBackPress","_this$props4","onNextPress","_this$props5","onContactClick","_this$props6","renderForms","_this$props7","accountId","_inherits","nextProps","_ShadeAndTintHex","hex","_hexToHSL2","upperLimit","lowerColor","upperColor","ShadeAndTintHex","hslColor","css","head","getElementsByTagName","existingBrandingStyle","getElementById","removeChild","appendChild","setAttribute","styleSheet","cssText","createTextNode","_ExtractUrlData","loadPortalData","Component","connect","_objectSpread","_yield$generateCode","_yield$checkUser","phones","sniperLink","emailProvider","cookies","_yield$sendCode","errId","reduce","acc","_cookie$split","_cookie$split2","_toArray","ExistingSessionToken","_yield$fetchData","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","reducers","applyMiddleware","reduxThunk","App","_React$Component","info","componentStack","Provider","ReactDOM","render"],"mappings":"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","file":"static/js/main.f0c0fdef.chunk.js","sourcesContent":["import produce from 'immer';\r\nimport * as types from '../constants/actionTypes';\r\n\r\nconst defaultState = {\r\n activeForm: null, \r\n formErrorId: null\r\n};\r\n\r\nconst activeFormReducer = (state = defaultState, action) => {\r\n return produce(state, draft => {\r\n switch(action.type) {\r\n case types.SET_ACTIVE_FORM:\r\n draft.activeForm = action.payload;\r\n break;\r\n\r\n case types.SET_NO_DATA_ERROR:\r\n draft.formErrorId = action.payload;\r\n break;\r\n default:\r\n break;\r\n }\r\n })\r\n}\r\n\r\nexport default activeFormReducer;\r\n\r\n","export const SET_ACTIVE_FORM = 'SET_ACTIVE_FORM';\r\nexport const FETCH_DATA = 'FETCH_DATA';\r\nexport const UPDATE_PORTAL_DATA = 'UPDATE_PORTAL_DATA';\r\nexport const UPDATE_USER_EMAIL = 'UPDATE_USER_EMAIL';\r\nexport const SET_SESSION_STATUS = 'SET_SESSION_STATUS';\r\nexport const SET_NO_DATA_ERROR = 'SET_NO_DATA_ERROR';\r\nexport const SET_PORTAL_CODE = 'SET_PORTAL_CODE';\r\nexport const SET_PORTAL_SSO_CODE = 'SET_PORTAL_SSO_CODE';\r\nexport const SET_PORTAL_USER_DATA = 'SET_PORTAL_USER_DATA';","export default {\r\n black: '#000000',\r\n blackHover: '#1A1A1A',\r\n white: '#FFFFFF',\r\n whiteHover: '#EEF5F7',\r\n \r\n 'method-darkest': '#000A22',\r\n 'method-darker': '#0F1B31',\r\n 'method-dark': '#022266',\r\n method: '#022266',\r\n 'method-light': '#344A62',\r\n 'method-lighter': '#4D637B',\r\n 'method-lightest': '#677D95',\r\n 'method-clear': 'rgba(26, 48, 72, 0.3)',\r\n\r\n 'blue-darkest': '#022266',\r\n 'blue-darker': '#022266',\r\n 'blue-dark': '#064499',\r\n blue: '#0D71C8',\r\n 'blue-light': '#B3E5FF',\r\n 'blue-lighter': '#E5F7FF',\r\n 'blue-lightest': '#E5F7FF',\r\n 'blue-clear': '#EEF5F7',\r\n 'blue-alice': '#ECF4FB',\r\n\r\n 'green-darkest': '#053023',\r\n 'green-darker': '#053023',\r\n 'green-dark': '#115B40',\r\n green: '#007B4A',\r\n 'green-light': '#A9D9BF',\r\n 'green-lighter': '#E7F5F0',\r\n 'green-lightest': '#E7F5F0',\r\n 'green-clear': '#E7F5F0',\r\n\r\n 'fuchsia-darkest': '#470219',\r\n 'fuchsia-darker': '#470219',\r\n 'fuchsia-dark': '#940D33',\r\n fuchsia: '#D81F47',\r\n 'fuchsia-light': '#FFABB5',\r\n 'fuchsia-lighter': '#FFF0F0',\r\n 'fuchsia-lightest': '#FFF0F0',\r\n 'fuchsia-clear': '#FFF0F0',\r\n\r\n 'grey-darkest': '#0F1B31',\r\n 'grey-darker': '#0F1B31',\r\n 'grey-dark': '#2A394A',\r\n grey: '#545F67',\r\n 'grey-light': '#BACAD0',\r\n 'grey-lighter': '#EEF5F7',\r\n 'grey-lightest': '#EEF5F7', // #EDF8FF\r\n 'grey-clear': '#BACAD0',\r\n 'grey-calendar-v2': '#E5E7Eb',\r\n 'grey-calendar-v2-menu-icon': '#6B7280',\r\n 'grey-calendar-v2-menu-border': '#EFEFEF',\r\n concrete: '#F6FAFB',\r\n\r\n 'yellow-darkest': '#634002',\r\n 'yellow-darker': '#634002',\r\n 'yellow-dark': '#B07F0D',\r\n yellow: '#FDCB2E',\r\n 'yellow-light': '#FFEA80',\r\n 'yellow-lighter': '#FFFAD1',\r\n 'yellow-lightest': '#FFFAD1',\r\n 'yellow-clear': '#FFFAD1',\r\n\r\n 'red-darkest': '#540009',\r\n 'red-darker': '#540009',\r\n 'red-dark': '#A10007',\r\n red: '#DA211E',\r\n 'red-light': '#FFACA1',\r\n 'red-lighter': '#FFF3F0',\r\n 'red-lightest': '#FFF3F0',\r\n 'red-clear': '#FFF3F0',\r\n\r\n 'purple-darkest': '#0A1071',\r\n 'purple-darker': '#0A1071',\r\n 'purple-dark': '#1C26AA',\r\n purple: '#3B4AED',\r\n 'purple-light': '#91A2FF',\r\n 'purple-lighter': '#E3E9FF',\r\n 'purple-lightest': '#E3E9FF',\r\n 'purple-clear': '#E3E9FF',\r\n\r\n 'orange-darkest': '#471602',\r\n 'orange-darker': '#471602',\r\n 'orange-dark': '#94390D',\r\n orange: '#E05D2A',\r\n 'orange-light': '#FFCDAB',\r\n 'orange-lighter': '#FFFAF0',\r\n 'orange-lightest': '#FFFAF0',\r\n 'orange-clear': '#FFFAF0',\r\n\r\n 'teal-darker': '#03384F',\r\n 'teal-dark': '#0F7B9C',\r\n teal: '#2EC9E8',\r\n 'teal-light': '#84F3FF',\r\n 'teal-lighter': '#D6FEFF',\r\n\r\n 'light-gray': '#D9D9D9',\r\n transparent: '#00000000',\r\n \r\n // new palette\r\n newPalette: {\r\n method: {\r\n lighter: '#E5F7FF',\r\n light: '#B3E5FF',\r\n base: '#0D71C8',\r\n dark: '#064499',\r\n darker: '#022266',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#FFF',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n },\r\n steel: {\r\n lighter: '#EEF5F7',\r\n light: '#BACAD0',\r\n base: '#545F67',\r\n dark: '#2A394A',\r\n darker: '#0F1B31',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#FFF',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n },\r\n cyan: {\r\n lighter: '#D6FEFF',\r\n light: '#84F3FF',\r\n base: '#2EC9E8',\r\n dark: '#0F7B9C',\r\n darker: '#03384F',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#000',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n },\r\n ice: {\r\n lighter: '#E3E9FF',\r\n light: '#91A2FF',\r\n base: '#3B4AED',\r\n dark: '#1C26AA',\r\n darker: '#0A1071',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#FFF',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n },\r\n red: {\r\n lighter: '#FFF3F0',\r\n light: '#FFACA1',\r\n base: '#DA211E',\r\n dark: '#A10007',\r\n darker: '#540009',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#FFF',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n },\r\n yellow: {\r\n lighter: '#FFFAD1',\r\n light: '#FFEA80',\r\n base: '#FDCB2E',\r\n dark: '#B07F0D',\r\n darker: '#634002',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#000',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n },\r\n green: {\r\n lighter: '#E7F5F0',\r\n light: '#A9D9BF',\r\n base: '#007B4A',\r\n dark: '#115B40',\r\n darker: '#053023',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#000',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n },\r\n fuschia: {\r\n lighter: '#FFF0F0',\r\n light: '#FFABB5',\r\n base: '#D81F47',\r\n dark: '#940D33',\r\n darker: '#470219',\r\n text: {\r\n lighter: '#000',\r\n light: '#000',\r\n base: '#FFF',\r\n dark: '#FFF',\r\n darker: '#FFF'\r\n }\r\n }\r\n },\r\n\r\n legacy: {\r\n greyDark: '#2A394A',\r\n greyDarkHover: '#0F1B31',\r\n grey: '#BACAD0',\r\n greyHover: '#2A394A',\r\n greyLight: '#EEF5F7',\r\n pink: '#D81F47',\r\n pinkHover: '#940D33',\r\n 'pink-light': '#FFF0F0',\r\n blue: '#0D71C8',\r\n blueHover: '#064499',\r\n 'blue-light': '#E5F7FF',\r\n aqua: '#2EC9E8',\r\n aquaHover: '#0F7B9C',\r\n 'aqua-light': '#D6FEFF',\r\n purple: '#3B4AED',\r\n purpleHover: '#1C26AA',\r\n 'purple-light': '#E3E9FF',\r\n\r\n green: '#007B4A',\r\n 'green-light': '#E7F5F0',\r\n greenAlt: '#007B4A',\r\n greenAltHover: '#115B40',\r\n red: '#DA211E',\r\n redHover: '#A10007',\r\n 'red-light': '#FFF3F0',\r\n\r\n yellow: '#FDCB2E',\r\n yellowAlt: '#FDCB2E',\r\n yellowAltHover: '#B07F0D',\r\n 'yellow-light': '#FFFAD1',\r\n\r\n orange: '#E05D2A',\r\n orangeAlt: '#E05D2A',\r\n orangeAltHover: '#94390D',\r\n 'orange-light': '#FFFAF0',\r\n\r\n navHover: '#0D71C8',\r\n lightPurple: '#E5F7FF',\r\n mBlue: '#022266',\r\n silver: '#BACAD0',\r\n mDarkGrey: '#545F67',\r\n paleGrey: '#EEF5F7',\r\n appHeader: '#EEF5F7',\r\n appHeaderHover: '#BACAD0'\r\n }\r\n };","export const breakpoints = ['481px', '768px', '1024px', '1200px', '1440px'];\r\n\r\nexport const breakPointSuffix = ['sm', 'md', 'lg', 'xl', 'xxl'];\r\n\r\nexport const bpCount = breakPointSuffix.length;\r\n\r\nexport const size = {\r\n sm: breakpoints[0],\r\n md: breakpoints[1],\r\n lg: breakpoints[2],\r\n xl: breakpoints[3],\r\n xxl: breakpoints[4]\r\n};\r\n\r\nexport const device = {\r\n mobileL: `(min-width: ${size.sm})`,\r\n tablet: `(min-width: ${size.md})`,\r\n laptop: `(min-width: ${size.lg})`,\r\n desktop: `(min-width: ${size.xl})`,\r\n desktopL: `(min-width: ${size.xxl})`\r\n};\r\n\r\nexport const mq = {\r\n mobileL: `@media (min-width: ${size.sm})`,\r\n tablet: `@media (min-width: ${size.md})`,\r\n laptop: `@media (min-width: ${size.lg})`,\r\n desktop: `@media (min-width: ${size.xl})`,\r\n desktopL: `@media (min-width: ${size.xxl})`\r\n};\r\n","import produce from 'immer';\r\nimport { colors } from '../base';\r\nimport * as types from '../constants/actionTypes';\r\n\r\nconst defaultState = {\r\n AccountId: null,\r\n PortalName: \"\",\r\n Name: \"\",\r\n portalQueryCode: \"\",\r\n portalSsoCode: \"\", \r\n isPortalEnabled: false,\r\n PortalCompanyName: \"\",\r\n PortalLogo: \"\",\r\n PortalContactEmail: \"\",\r\n PortalLogoSignInVisible: false,\r\n PortalLogoHeaderVisible: false,\r\n PortalBrandingColor: colors.newPalette.method.base,\r\n userEmail: \"\",\r\n stayOn: false,\r\n userPhones: [],\r\n userSniperLink: '',\r\n userEmailProvider: '',\r\n};\r\n\r\nconst portalDataReducer = (state = defaultState, action) => {\r\n return produce(state, draft => {\r\n switch(action.type) {\r\n case types.UPDATE_PORTAL_DATA:\r\n Object.assign(draft, action.payload.data)\r\n break;\r\n case types.UPDATE_USER_EMAIL:\r\n draft.userEmail = action.payload\r\n break;\r\n case types.SET_SESSION_STATUS:\r\n draft.stayOn = action.payload\r\n break;\r\n case types.SET_PORTAL_CODE:\r\n draft.portalQueryCode = action.payload\r\n break;\r\n case types.SET_PORTAL_SSO_CODE:\r\n draft.portalSsoCode = action.payload\r\n break;\r\n case types.SET_PORTAL_USER_DATA:\r\n draft.userPhones = action.payload.userPhones;\r\n draft.userSniperLink = action.payload.userSniperLink;\r\n draft.userEmailProvider = action.payload.userEmailProvider;\r\n break;\r\n default:\r\n break;\r\n }\r\n })\r\n}\r\n\r\nexport default portalDataReducer;","import rootReducer from \"./rootReducer\";\r\nexport default rootReducer;","import { combineReducers } from 'redux';\r\nimport activeFormReducer from './activeFormReducer';\r\nimport portalDataReducer from './portalDataReducer';\r\n\r\nconst rootReducer = combineReducers({\r\n activeFormReducer,\r\n portalDataReducer\r\n});\r\n\r\nexport default rootReducer;","import styled from '@emotion/styled';\r\nimport { colors, mq } from '../../base';\r\n\r\nexport const FormMessage = styled.h2`\r\n box-sizing: border-box;\r\n width: 100%;\r\n margin: 0;\r\n margin-bottom: 32px;\r\n\r\n font-size: ${({ fontSize }) => (fontSize) ? `${fontSize} !important` : '16px'};\r\n line-height: ${({ lineHeight }) => (lineHeight) ? `${lineHeight} !important` : '24px'};\r\n font-weight: ${({ fontWeight }) => (fontWeight) ? `${fontWeight} !important` : 'normal'};\r\n text-align: center;\r\n color: ${({ color }) => (color) ? `${color} !important` : colors['method']};\r\n\r\n ${({ type }) =>\r\n type === 'error' &&\r\n `\r\n background-color: #FCEBEF; \r\n border-radius: 3px;\r\n padding: 8px 12px; \r\n text-align: left;\r\n margin-bottom: 16px;\r\n \r\n color: ${colors['fuchsia-darker']} !important;\r\n\r\n ${mq.mobileL} {\r\n padding: 12px 16px;\r\n }\r\n `}\r\n\r\n ${(props) => props.type === 'unavailable' && 'margin: 0'};\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormMessage.styles';\r\n\r\nfunction FormMessage({ type = '', className = '', fontWeight, lineHeight, fontSize, color, style, children }) {\r\n return {children};\r\n}\r\n\r\nFormMessage.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node\r\n ]),\r\n className: PropTypes.string,\r\n type: PropTypes.string,\r\n fontWeight: PropTypes.number, \r\n lineHeight: PropTypes.string, \r\n fontSize: PropTypes.string, \r\n color: PropTypes.string, \r\n style: PropTypes.instanceOf(Object), \r\n};\r\n\r\nexport default FormMessage;","import FormMessage from './FormMessage';\r\nexport default FormMessage;","import styled from '@emotion/styled';\r\nimport { colors, mq } from '../../base';\r\n\r\nexport const FormLink = styled.div`\r\n padding-bottom: 16px;\r\n`;\r\n\r\nexport const Anchor = styled.a`\r\n margin: 0;\r\n text-decoration: none;\r\n color: ${colors['blue']};\r\n font-weight: 500;\r\n font-size: 15px;\r\n line-height: 20px;\r\n vertical-align: middle;\r\n user-select: none; \r\n`;\r\n\r\nexport const Svg = styled.svg`\r\n color:${colors['blue']};\r\n height: 20px;\r\n width: 20px;\r\n padding-right: 8px;\r\n vertical-align: bottom;\r\n`;\r\n\r\nexport const Mobile = styled.span`\r\n ${mq.mobileL} {\r\n display:none;\r\n }\r\n`;\r\n\r\nexport const Desktop = styled.span`\r\n display: none;\r\n\r\n ${mq.mobileL} {\r\n display: inherit;\r\n }\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormLink.styles';\r\n\r\nfunction FormLink({ email, name, onClick }) {\r\n if( Boolean(email) ){\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {`Contact ${name}`}\r\n Contact Us\r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nFormLink.propTypes = {\r\n email: PropTypes.string,\r\n name: PropTypes.string\r\n}\r\n\r\nFormLink.defaultProps = {\r\n name: \"Us\",\r\n email: \"\",\r\n onClick: null\r\n}\r\n\r\nexport default FormLink;","import FormLink from './FormLink';\r\nexport default FormLink;","import OfflineForm from './OfflineForm';\r\nexport default OfflineForm;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FormMessage from '../../components/FormMessage';\r\nimport FormLink from '../../components/FormLink';\r\n\r\nconst OfflineForm = ({companyEmail, companyName, handleContactClick }) => {\r\n var offlinemessage = \"Sorry, the Customer Portal you are trying to access is inactive. \";\r\n \r\n if (Boolean(companyEmail)) {\r\n offlinemessage += \"Please use the contact email below for assistance.\";\r\n }\r\n\r\n return (\r\n <>\r\n {offlinemessage}\r\n {companyEmail && ( \r\n \r\n )} \r\n \r\n );\r\n};\r\n\r\nOfflineForm.propTypes = {\r\n companyEmail: PropTypes.string,\r\n companyName: PropTypes.string,\r\n handleContactClick: PropTypes.func\r\n}\r\n\r\nexport default OfflineForm;","export const generalError = \"Unknown error\";\r\nexport const codeError = \"Code is invalid or expired\";\r\n\r\n// ErrorTypes ---------------------\r\nexport const ERRORS = {\r\n ON_ENTER_EMAIL: {\r\n USER_NOT_FOUND: \"User was not found\",\r\n ACCOUNT_INACTIVE: \"Account is inactive\"\r\n },\r\n ON_SEND_CODE: {\r\n EMAIL_FAILURE: \"Failed to enqueue email\",\r\n ACCOUNT_INACTIVE: \"Account is inactive\",\r\n RATE_LIMIT_EXCEEDED: \"Rate limit exceeded\"\r\n },\r\n ON_VALIDATE_CODE: {\r\n EXPIRED_CODE: \"One time use code was expired\",\r\n INVALID_CODE: \"The entered code is invalid\",\r\n NOT_FOUND_CODE: \"One time use code wasn't found\"\r\n },\r\n ON_VALIDATE_SSO_CODE: {\r\n MISMATCH_CODE: \"SSO email mismatch with portal email\",\r\n NOT_FOUND_CODE: \"SSO email wasn't found\"\r\n },\r\n};\r\n\r\n// Error functions\r\nexport const errorIdMessage = (status, id) => `${status}: ${id}`;\r\n\r\nexport const handleSendCodeError = (plainError, setErrors) => {\r\n let title = generalError;\r\n let message = \"Something went wrong when sending the portal code. Please try refreshing your page or contact the administrator\";\r\n \r\n if (plainError.includes(ERRORS.ON_SEND_CODE.EMAIL_FAILURE)) {\r\n title = \"Unable to send code\";\r\n message = \"Sorry! We were unable to send code due to technical issue. Try again later.\";\r\n }\r\n else if (plainError.includes(ERRORS.ON_SEND_CODE.ACCOUNT_INACTIVE)) {\r\n title = \"Inactive account\";\r\n message = \"We detect this account is inactive. Please contact to admin to activate it.\";\r\n }\r\n else if (plainError.includes(ERRORS.ON_SEND_CODE.RATE_LIMIT_EXCEEDED)) {\r\n title = ERRORS.ON_SEND_CODE.RATE_LIMIT_EXCEEDED;\r\n message = plainError;\r\n }\r\n\r\n setErrors({\r\n title: title,\r\n message: message\r\n });\r\n return({title, message});\r\n}\r\n\r\nexport const handleEnterEmailError = (plainError, setErrors) => {\r\n let title = generalError;\r\n let message = \"Something went wrong when entering the email login. Please try refreshing your page or contact the administrator\";\r\n \r\n if (plainError.includes(ERRORS.ON_ENTER_EMAIL.USER_NOT_FOUND)) {\r\n title = \"Invalid sign in email\";\r\n message = \"We could not find a matching sign in email.\";\r\n } \r\n else if (plainError.includes(ERRORS.ON_ENTER_EMAIL.ACCOUNT_INACTIVE)) {\r\n title = \"Inactive account\";\r\n message = \"We detect this account is inactive. Please contact to admin to activate it.\";\r\n }\r\n else if (plainError.includes(ERRORS.ON_SEND_CODE.RATE_LIMIT_EXCEEDED)) {\r\n title = ERRORS.ON_SEND_CODE.RATE_LIMIT_EXCEEDED;\r\n message = plainError;\r\n }\r\n \r\n setErrors({\r\n title: title,\r\n message: message\r\n });\r\n return({title, message});\r\n}\r\n\r\nexport const handleValidateCodeError = (plainError, setErrors, setStatus) => {\r\n let title = generalError;\r\n let message = \"Something went wrong when validating the portal code. Please try refreshing your page or contact the administrator\";\r\n \r\n if (plainError.includes(ERRORS.ON_VALIDATE_CODE.EXPIRED_CODE)) {\r\n title = \"Secure code has expired\";\r\n message = \"Click Resend code to receive a new code.\";\r\n\r\n // set flag to true to enable re-send button\r\n setStatus({\r\n isCodeExpired: true\r\n });\r\n }\r\n else if (plainError.includes(ERRORS.ON_VALIDATE_CODE.INVALID_CODE)) {\r\n title = \"Invalid code\";\r\n message = \"The code your entered is invalid. Please try again.\";\r\n }\r\n else if (plainError.includes(ERRORS.ON_VALIDATE_CODE.NOT_FOUND_CODE)) {\r\n title = \"Invalid code\";\r\n message = \"The code your entered wasn't found. Please try again.\";\r\n } \r\n \r\n setErrors({\r\n title: title,\r\n message: message\r\n });\r\n return({title, message});\r\n}\r\n\r\nexport const handleSsoCodeError = (plainError, setErrors) => {\r\n let title = generalError;\r\n let message = \"Something went wrong in SSO process. Please try refreshing your page or contact the administrator\";\r\n \r\n if (plainError.includes(ERRORS.ON_VALIDATE_SSO_CODE.MISMATCH_CODE)) {\r\n title = \"Mismatch on SSO email\";\r\n message = \"Sorry! The expected email and SSO email are different. Please validate the expected email through SSO. Try again later.\";\r\n }\r\n else if (plainError.includes(ERRORS.ON_VALIDATE_SSO_CODE.NOT_FOUND_CODE)) {\r\n title = \"SSO email not found\";\r\n message = \"We couldn't find this contact email for the current portal.\";\r\n }\r\n \r\n setErrors({\r\n title: title,\r\n message: message\r\n });\r\n return({title, message});\r\n}\r\n","import styled from '@emotion/styled';\r\nimport { colors } from '../../base';\r\n\r\nexport const ErrorMessage = styled.span`\r\n opacity: 1;\r\n`;\r\n\r\nexport const ErrorTextContainer = styled.div`\r\n font-weight: 600;\r\n font-size: 18px;\r\n line-height: 24px;\r\n margin-bottom: 12px;\r\n color: ${colors['grey-darkest']};\r\n`;\r\n\r\nexport const ErrorIdContainer = styled.div`\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: ${colors['red-darkest']};\r\n`;","import React from 'react';\r\nimport * as s from './ErrorMessage.styles';\r\nimport PropTypes from 'prop-types';\r\n\r\nfunction ErrorMessage({ errorText, errorId }) {\r\n return \r\n {errorText}\r\n {errorId && (\r\n \r\n )}\r\n \r\n}\r\n\r\nexport default ErrorMessage;\r\n\r\nErrorMessage.propTypes = {\r\n errorId: PropTypes.string,\r\n errorText: PropTypes.string\r\n};","import ErrorMessage from \"./ErrorMessage\";\r\nexport default ErrorMessage;\r\n","import NoDataErrorForm from './NoDataErrorForm';\r\nexport default NoDataErrorForm;","import React from 'react';\r\nimport FormMessage from '../../components/FormMessage';\r\nimport { generalError } from '../../helpers/errors';\r\nimport ErrorMessage from '../../components/ErrorMessage';\r\n\r\n\r\nconst NoDataErrorForm = ({formErrorId}) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default NoDataErrorForm;","import styled from \"@emotion/styled\";\r\nimport { colors } from \"../../base\";\r\n\r\nconst _blue = colors['blue'];\r\nconst _white = colors['white'];\r\nconst _hoverBlue = colors['blue-dark'];\r\nconst _focusedBlue = colors['blue-darker'];\r\n\r\nexport const Button = styled.button`\r\n box-sizing: border-box;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n max-width: 384px;\r\n height: 48px;\r\n padding: 12px;\r\n margin: auto;\r\n margin-bottom: 16px;\r\n position: relative;\r\n\r\n cursor: pointer;\r\n border: 2px solid ${colors['blue']};\r\n border-radius: 48px;\r\n background-color: ${({ buttonStyle }) =>\r\n buttonStyle === 'primary' ? _blue : _white};\r\n opacity: ${({ disabled }) => (disabled ? '0.85' : '1')};\r\n\r\n font-size: ${({ buttonStyle }) => (buttonStyle === 'primary' ? '16px' : '17px')};\r\n font-weight: 600;\r\n line-height: ${({ buttonStyle }) => (buttonStyle === 'primary' ? '24px' : '20px')};\r\n text-align: center;\r\n user-select: none;\r\n\r\n color: ${({ buttonStyle }) => (buttonStyle === 'primary' ? _white : _blue)};\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n /* opacity: 0.85; */\r\n outline: none;\r\n }\r\n\r\n &:hover {\r\n background-color: ${({ buttonStyle }) =>\r\n buttonStyle === 'primary' ? _hoverBlue : _white};\r\n color: ${({ buttonStyle }) =>\r\n buttonStyle === 'primary' ? _white : _hoverBlue};\r\n border-color: ${_hoverBlue};\r\n }\r\n\r\n &:active {\r\n background-color: ${({ buttonStyle }) =>\r\n buttonStyle === 'primary' ? _focusedBlue : _white};\r\n color: ${({ buttonStyle }) =>\r\n buttonStyle === 'primary' ? _white : _focusedBlue};\r\n border-color: ${_focusedBlue};\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n cursor: default;\r\n\r\n &:hover {\r\n background-color: ${({ buttonStyle }) =>\r\n buttonStyle === 'primary' ? _blue : _white};\r\n color: ${({ buttonStyle }) =>\r\n buttonStyle === 'primary' ? _white : _blue};\r\n border-color: ${_blue};\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonIcon = styled.svg`\r\n height: ${({ height }) => (height) ? `${height}px` : `10px`};\r\n width: ${({ width }) => (width) ? `${width}px` : `10px`};\r\n fill: none;\r\n position: absolute;\r\n left: 14px;\r\n`;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormButton.styles';\r\n\r\nfunction FormButton({ buttonStyle = 'primary', buttonText, onClick, type, disabled, icon }) {\r\n return (\r\n \r\n {icon && String(icon).toLowerCase() === 'google' &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {icon && String(icon).toLowerCase() === 'google-2' &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {icon && String(icon).toLowerCase() === 'microsoft' &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {icon && String(icon).toLowerCase() === 'facebook' &&\r\n \r\n \r\n \r\n }\r\n {icon && String(icon).toLowerCase() === 'yahoo' &&\r\n \r\n \r\n \r\n }\r\n {buttonText}\r\n \r\n );\r\n }\r\n \r\n FormButton.propTypes = {\r\n buttonStyle: PropTypes.string,\r\n buttonText: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n type: PropTypes.string,\r\n icon: PropTypes.string,\r\n };\r\n \r\n FormButton.defaultProps = {\r\n buttonStyle: 'primary',\r\n buttonText: '',\r\n onClick: null\r\n };\r\n \r\n export default FormButton;","import FormButton from './FormButton';\r\nexport default FormButton;","import styled from \"@emotion/styled\";\r\nimport { colors, mq } from \"../../base\";\r\n\r\nexport const FormErrorBox = styled.div`\r\n box-sizing: border-box;\r\n width: 100%;\r\n max-width: 384px;\r\n margin: 16px auto;\r\n\r\n background-color: ${colors['red-lighter']};\r\n border-radius: 3px;\r\n padding: 8px 12px;\r\n display: flex;\r\n\r\n color: ${colors['fuchsia-darker']};\r\n font-size: 16px;\r\n line-height: 24px;\r\n font-weight: normal;\r\n text-align: left;\r\n\r\n & > p {\r\n margin: 0;\r\n }\r\n\r\n ${mq.mobileL} {\r\n padding: 16px;\r\n padding-right: 24px;\r\n }\r\n`;\r\n\r\nexport const ErrorIconBackground = styled.div`\r\n height: 32px;\r\n width: 32px;\r\n min-width: 32px;\r\n border-radius: 32px;\r\n background-color: ${colors['red']};\r\n \r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-right: 16px;\r\n`;\r\n\r\nexport const ErrorIcon = styled.svg`\r\n height: 16px;\r\n width: 16px;\r\n`;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ErrorMessage from '../ErrorMessage';\r\nimport * as s from './FormError.styles';\r\n\r\nfunction FormError({ errorMessage, errorId }) {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nFormError.propTypes = {\r\n errorMessage: PropTypes.string,\r\n errorId: PropTypes.string\r\n};\r\n\r\nFormError.defaultProps = {\r\n errorMessage: ''\r\n};\r\n\r\nexport default FormError;\r\n","import FormError from \"./FormError\";\r\nexport default FormError;","import styled from '@emotion/styled';\r\nimport { colors, mq } from '../../base';\r\n\r\nexport const Title = styled.h1`\r\n margin: 0;\r\n padding-bottom: 16px;\r\n\r\n text-align: center;\r\n font-weight: 600;\r\n font-size: 24px !important;\r\n line-height: 28px;\r\n color: ${colors['black']};\r\n user-select: none;\r\n ${(props) => props.hideTitle && 'display: none'};\r\n\r\n ${mq.mobileL} {\r\n font-size: 28px !important;\r\n line-height: 36px;\r\n }\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormTitle.styles';\r\n\r\nfunction FormTitle({ titleText }) {\r\n const hasTitle = Boolean(titleText);\r\n return (\r\n {hasTitle ? titleText : 'Sign In'}\r\n );\r\n};\r\n\r\nFormTitle.propTypes = {\r\n titleText: PropTypes.string\r\n}\r\n\r\nexport default FormTitle;","import FormTitle from './FormTitle';\r\nexport default FormTitle;","import styled from \"@emotion/styled\";\r\nimport { colors, mq } from \"../../base\";\r\n\r\nexport const GeneralBox = styled.div`\r\n display: flex;\r\n justify-content: flex-start;\r\n border: solid ${({ isSelected }) => (isSelected) ? colors['blue'] : colors['grey-light']};\r\n background-color: ${({ isSelected }) => (isSelected) ? colors['blue-alice'] : ``};\r\n border-width: 2px;\r\n border-radius: 15px;\r\n overflow: hidden;\r\n padding: 0 2px;\r\n\r\n &:hover{\r\n background-color: ${colors['blue-alice']};\r\n cursor: pointer;\r\n }\r\n \r\n ${mq.mobileL} {\r\n margin-bottom: 16px;\r\n & img {\r\n max-height: 112px;\r\n }\r\n }\r\n\r\n ${mq.mobileL} {\r\n & img {\r\n max-height: 148px;\r\n }\r\n }\r\n`;\r\n\r\nexport const TextContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 20px 0px;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { colors } from '../../base';\r\n\r\nexport const IconBackground = styled.div`\r\n height: ${({size}) => (size) ? `${size}px` : `42px`};\r\n width: ${({size}) => (size) ? `${size}px` : `42px`};\r\n border-radius: 42px;\r\n display: flex;\r\n align-items: center;\r\n align-content: center;\r\n justify-items: center;\r\n justify-content: center;\r\n margin: 16px ${({centered}) => (centered) ? `auto` : `14px`};\r\n background-color: ${({isSelected}) => (isSelected) ? colors['blue-light'] : colors['blue-lighter']};\r\n`;\r\n\r\nexport const BoxIcon = styled.svg`\r\n color: ${({isSelected}) => (isSelected) ? colors['method'] : colors['blue']};\r\n height: 18px;\r\n width: 24px;\r\n fill: none;\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormIcon.styles';\r\n\r\nfunction FormIcon ({ icon, backgroundSize, width, height, isSelected, style }) {\r\n return (\r\n \r\n \r\n {icon && icon.toLowerCase() === 'email' && (\r\n \r\n )}\r\n {icon && icon.toLowerCase() === 'lock' && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nFormIcon.propTypes = {\r\n icon: PropTypes.string,\r\n backgroundSize: PropTypes.number,\r\n height: PropTypes.number,\r\n width: PropTypes.number,\r\n isSelected: PropTypes.bool,\r\n style: PropTypes.instanceOf(Object),\r\n}\r\n\r\nexport default FormIcon;","import FormIcon from './FormIcon';\r\nexport default FormIcon;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './ChannelBox.styles';\r\nimport FormMessage from '../FormMessage';\r\nimport FormIcon from '../FormIcon';\r\n\r\nfunction ChannelBox ({ icon, title, value, onClick, isSelected }) {\r\n return (\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n {value}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nChannelBox.propTypes = {\r\n icon: PropTypes.string,\r\n title: PropTypes.string,\r\n value: PropTypes.string,\r\n isSelected: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n}\r\n\r\nChannelBox.defaultProps = {\r\n title: 'title',\r\n value: 'value',\r\n};\r\n\r\nexport default ChannelBox;","import ChannelBox from './ChannelBox';\r\nexport default ChannelBox;","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form } from \"formik\";\r\nimport { sendCode } from \"../withFormik\";\r\n\r\nimport FormButton from '../../components/FormButton';\r\nimport FormMessage from '../../components/FormMessage';\r\nimport FormError from '../../components/FormError';\r\nimport FormTitle from '../../components/FormTitle';\r\nimport ChannelBox from '../../components/ChannelBox';\r\n\r\nconst EMAIL = 'email';\r\nconst PHONE = 'phone';\r\nconst PICKED = 'picked';\r\n\r\nfunction SendCodeForm({ \r\n values, \r\n errors, \r\n isSubmitting, \r\n setFieldValue, \r\n phone\r\n}) {\r\n const [selected, setSelected] = useState(EMAIL);\r\n \r\n useEffect(() => {\r\n setFieldValue(PHONE, phone);\r\n }, [phone]);\r\n\r\n return (\r\n
\r\n \r\n {errors.title && (\r\n \r\n )}\r\n \r\n Sign in instanly with a secure code\r\n \r\n \r\n How you would like to receive code?\r\n \r\n { setSelected(EMAIL); }} \r\n icon={EMAIL} \r\n title='Email'\r\n values={[`${values[EMAIL]}`]} \r\n isSelected={selected === EMAIL}\r\n />\r\n {values[PHONE] && \r\n { setSelected(PHONE); }} \r\n icon={PHONE} \r\n title='SMS' \r\n values={[`${values[PHONE]}`]}\r\n isSelected={selected === PHONE}\r\n />\r\n }\r\n\r\n setFieldValue(PICKED, selected)}\r\n />\r\n \r\n )\r\n};\r\n\r\nSendCodeForm.propTypes = {\r\n errors: PropTypes.instanceOf(Object),\r\n isSubmitting: PropTypes.bool,\r\n values: PropTypes.instanceOf(Object),\r\n setFieldValue: PropTypes.func, \r\n phone: PropTypes.number,\r\n}\r\n\r\nexport default sendCode(SendCodeForm);","import { withFormik } from \"formik\";\r\nimport * as Yup from 'yup';\r\nimport { handleEnterEmailError, handleSendCodeError, handleValidateCodeError } from \"../helpers/errors\";\r\n\r\n/*--------------------------------\r\n * ENTER EMAIL FORM LOGIC\r\n * ------------------------------*/\r\nexport const enterEmail = (component) =>\r\n withFormik({\r\n mapPropsToValues({ email }) {\r\n return {\r\n email: email || ''\r\n };\r\n },\r\n\r\n handleSubmit: async (values, { setErrors, setSubmitting, setStatus, props }) => {\r\n const {email} = values;\r\n\r\n // must show errorId after api call failure.\r\n // it is easier to get the errorId directly from the response\r\n // instead of redux. so we pass in this callback function to thunk action\r\n // which gets errorId as a param when axios call fails\r\n const handleSubmitError = (plainError) => {\r\n handleEnterEmailError(plainError, setErrors);\r\n }\r\n\r\n const reqStatus = await props.handleEnterEmail(email, handleSubmitError); // callback for api-call action\r\n \r\n if (reqStatus !== 200) {\r\n setSubmitting(false); // must keep the button disabled while request is being processed\r\n }\r\n },\r\n\r\n validateOnChange: false,\r\n\r\n validationSchema: Yup.object().shape({\r\n email: Yup.string()\r\n .email('Please enter a valid email address')\r\n .required(\r\n 'Please enter your email address. We need this to send you the sign in code'\r\n )\r\n })\r\n })(component);\r\n\r\n/*--------------------------------\r\n * SEND CODE FORM LOGIC\r\n * ------------------------------*/\r\nexport const sendCode = ( component ) => withFormik({\r\n mapPropsToValues({ email, phone }) {\r\n return {\r\n email: email || '',\r\n phone: phone || '',\r\n }\r\n },\r\n\r\n handleSubmit: async (values, { setErrors, setSubmitting, props} ) => {\r\n const {phone, picked} = values;\r\n\r\n // must show errorId after api call failure.\r\n // it is easier to get the errorId directly from the response\r\n // instead of redux. so we pass in this function to thunk action \r\n // which gets errorId as a param when axios call fails\r\n const handleSubmitError = (plainError) => {\r\n handleSendCodeError(plainError, setErrors);\r\n }\r\n \r\n const reqStatus = await props.handleSendEmail(phone, picked, handleSubmitError);\r\n\r\n if (reqStatus !== 200) {\r\n setSubmitting(false); // must keep the button disabled while request is being processed\r\n }\r\n },\r\n\r\n validateOnChange: false,\r\n\r\n validationSchema: Yup.object().shape({\r\n email: Yup.string()\r\n .email('Please enter a valid email address')\r\n .required('Please enter your email address. We need this to send you the sign in code'),\r\n })\r\n})(component);\r\n\r\n\r\n/*--------------------------------\r\n * ENTER CODE FORM LOGIC\r\n * ------------------------------*/\r\nexport const enterCode = ( component ) => withFormik({\r\n mapPropsToValues({ portalCode, stayOn, queryCode }) {\r\n return {\r\n portalCode: portalCode || queryCode,\r\n stayOn: stayOn || false,\r\n }\r\n },\r\n\r\n handleSubmit: async (values, { setErrors, setSubmitting, setStatus, props }) => {\r\n const {portalCode, stayOn} = values;\r\n\r\n // must show errorId after api call failure.\r\n // it is easier to get the errorId directly from the response\r\n // instead of redux. so we pass in this function to thunk action \r\n // which gets errorId as a param when axios call fails\r\n const handleSubmitError = (plainError) => {\r\n handleValidateCodeError(plainError, setErrors, setStatus);\r\n }\r\n\r\n const reqStatus = await props.handleSendCode(\r\n portalCode, \r\n stayOn, \r\n '',\r\n handleSubmitError\r\n );\r\n\r\n // must keep the button disabled while request is being processed \r\n // or response is 200 and sign-in is in process\r\n if (reqStatus !== 200) {\r\n setSubmitting(false); \r\n }\r\n\r\n },\r\n\r\n validateOnChange: false,\r\n\r\n validationSchema: Yup.object().shape({\r\n portalCode: Yup.string()\r\n .matches(/^[0-9]+$/, \"Please enter only digits for the code.\")\r\n .min(6, 'Code must be exactly 6 digits.')\r\n .max(6, 'Code must be exactly 6 digits.')\r\n .required('Please enter your verification code'),\r\n stayOn: Yup.mixed().oneOf([true, false]),\r\n })\r\n})(component);","import SendCodeForm from './SendCodeForm';\r\nexport default SendCodeForm;","import styled from \"@emotion/styled\";\r\nimport { colors, mq } from '../../base';\r\n\r\nexport const CodeInputContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 32px;\r\n`;\r\n\r\nexport const CodeInputCell = styled.input`\r\n box-sizing: border-box;\r\n width: 48px;\r\n height: 66px;\r\n border: 1px solid ${(props) => (props.IsOnError && !props.disabled) ? colors['red'] : colors['grey-light']};\r\n color: ${colors['black']};\r\n margin: 0 4px;\r\n text-align: center;\r\n font-weight: 600 !important;\r\n font-size: 28px;\r\n line-height: 36px; \r\n outline: none !important; \r\n caret-color: ${colors['grey-light']};\r\n\r\n ${mq.mobileL} {\r\n margin: 0 8px;\r\n }\r\n`;\r\n\r\nexport const CodeInputCellContainer = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const Separator = styled.div`\r\n min-width: 16px;\r\n width: 4px; \r\n \r\n ${mq.mobileL} {\r\n width: 16px;\r\n }\r\n`;","import React, { useEffect, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormCodeInput.styles';\r\n\r\nfunction FormCodeInput ({ \r\n value, \r\n handleChange, \r\n fields = 6,\r\n IsOnError,\r\n disabled,\r\n}) {\r\n const [valueArray, setValueArray] = useState(Array(fields).fill(''));\r\n const canHandleChange = useRef(true);\r\n\r\n function focusNextOrPreviousItem(evt, isNext){\r\n const { form } = evt.target;\r\n const index = [...form].indexOf(evt.target);\r\n\r\n if (isNext)\r\n form.elements[index + 1].focus();\r\n else\r\n form.elements[index - 1].focus();\r\n\r\n evt.preventDefault();\r\n }\r\n\r\n function setValueArrayDigit(index, individualValue) {\r\n const modifiedValueArray = [...valueArray];\r\n modifiedValueArray[index] = individualValue;\r\n\r\n setValueArray(modifiedValueArray);\r\n handleChange(modifiedValueArray.map((x) => (x === '') ? ' ' : x).join(''));\r\n }\r\n\r\n function handleLocalChange(evt, index) {\r\n if(!canHandleChange.current) {\r\n return;\r\n } \r\n\r\n setValueArrayDigit(index, evt.currentTarget.value);\r\n focusNextOrPreviousItem(evt, true);\r\n }\r\n \r\n function handleFocus(evt) {\r\n evt.target.select();\r\n }\r\n\r\n function isNumber(string){ \r\n if (typeof string !== 'string') {\r\n return false;\r\n }\r\n\r\n if (string.trim() === '') {\r\n return false;\r\n }\r\n\r\n return !Number.isNaN(string);\r\n }\r\n \r\n function handleKeyDown(evt, index, item) {\r\n if (evt.key === 'ArrowLeft' && index > 0) {\r\n focusNextOrPreviousItem(evt, false);\r\n }\r\n else if (evt.key === 'ArrowRight' && index < (fields - 1)) {\r\n focusNextOrPreviousItem(evt, true);\r\n }\r\n // else if (evt.key === 'Backspace') {\r\n \r\n // }\r\n // else if (evt.key === 'Delete') {\r\n\r\n // }\r\n // If it's a number and this number is the same it was (doesn't trigger the onChange) then just move to the next\r\n else if (isNumber(evt.key) !== '' && (isNumber(evt.key) && evt.key === item)) {\r\n focusNextOrPreviousItem(evt, true);\r\n }\r\n }\r\n\r\n function handlePasteAnywhere(evt) {\r\n if (isNumber(evt.clipboardData.getData('text')) && evt.clipboardData.getData('text').length === fields){\r\n setValueArray(evt.clipboardData.getData('text').split(''));\r\n handleChange(evt.clipboardData.getData('text'));\r\n }\r\n };\r\n\r\n function handleLocalPasting() {\r\n canHandleChange.current = false;\r\n setTimeout(() => { canHandleChange.current = true; }, 100);\r\n };\r\n\r\n function manageExternalValue() {\r\n const valueFilteredByInput = String(value).slice(0, fields);\r\n const arrayValueFilteredByInput = valueFilteredByInput.split('');\r\n\r\n if (arrayValueFilteredByInput.length < fields) {\r\n const count = fields - arrayValueFilteredByInput.length;\r\n for (let i = 0; i < count; i++) {\r\n arrayValueFilteredByInput.push('');\r\n }\r\n }\r\n\r\n setValueArray(arrayValueFilteredByInput.map((x) => (x === ' ') ? '' : x));\r\n handleChange(arrayValueFilteredByInput.join(''));\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener('paste', handlePasteAnywhere);\r\n if (value) {\r\n manageExternalValue();\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('paste', handlePasteAnywhere);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n manageExternalValue();\r\n }, [value]);\r\n\r\n return (\r\n \r\n {valueArray.map((item, index) => \r\n \r\n handleLocalChange(evt, index)}\r\n onFocus={(evt) => handleFocus(evt)} \r\n onKeyDown={(evt) => handleKeyDown(evt, index, item)}\r\n onPaste={(evt) => handleLocalPasting(evt)}\r\n IsOnError={IsOnError}\r\n disabled={disabled}\r\n />\r\n { index === 2 && \r\n \r\n }\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nFormCodeInput.propTypes = {\r\n value: PropTypes.string,\r\n handleChange: PropTypes.func,\r\n fields: PropTypes.number,\r\n IsOnError: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n}\r\n\r\nexport default FormCodeInput;","import FormCodeInput from './FormCodeInput';\r\nexport default FormCodeInput;","import styled from '@emotion/styled';\r\nimport { colors } from '../../base';\r\n\r\nexport const Label = styled.label`\r\n display: flex;\r\n flex-flow: row nowrap;\r\n justify-content: flex-start;\r\n align-items: center;\r\n align-self: flex-start;\r\n\r\n margin-bottom: 10px;\r\n\r\n cursor: pointer;\r\n text-align: left;\r\n font-size: 14px;\r\n line-height: 16px;\r\n user-select: none;\r\n`;\r\n\r\nexport const Caption = styled.span`\r\n padding-left: 8px;\r\n vertical-align: middle;\r\n`;\r\n\r\nexport const CheckboxContainer = styled.div`\r\n display: inline-block;\r\n vertical-align: middle;\r\n`;\r\n\r\nexport const Icon = styled.svg`\r\n fill: none;\r\n stroke: white;\r\n stroke-width: 2px;\r\n`;\r\n\r\n// Hide checkbox visually but remain accessible to screen readers.\r\n// Source: https://polished.js.org/docs/#hidevisually\r\nexport const HiddenCheckbox = styled.input`\r\n border: 0;\r\n clip: rect(0 0 0 0);\r\n clip-path: inset(50%);\r\n height: 1px;\r\n margin: -1px;\r\n overflow: hidden;\r\n padding: 0;\r\n position: absolute;\r\n white-space: nowrap;\r\n width: 1px;\r\n`;\r\n\r\nexport const StyledCheckbox = styled.div`\r\n display: inline-block;\r\n width: 16px;\r\n height: 16px;\r\n background: ${({ checked }) => checked ? colors['blue'] : colors['white']};\r\n border-radius: 3px;\r\n transition: all 150ms;\r\n border: 1px solid ${colors['grey-light']};\r\n\r\n ${Icon} {\r\n visibility: ${({ checked }) => checked ? 'visible' : 'hidden'};\r\n }\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormCheck.styles';\r\n\r\nfunction FormCheck({name, className, checked, caption, onChange, ...props}) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {caption}\r\n \r\n );\r\n};\r\n\r\nFormCheck.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n checked: PropTypes.bool,\r\n caption: PropTypes.string,\r\n};\r\n\r\nFormCheck.defaultProps = {\r\n className: \"\",\r\n checked: false,\r\n caption: \"\",\r\n};\r\n\r\nexport default FormCheck;","import FormCheck from './FormCheck';\r\nexport default FormCheck;","import styled from 'styled-components';\r\nimport { colors, mq } from '../../base';\r\n\r\nexport const LineBreak = styled.div`\r\n box-sizing: border-box;\r\n display: inline-block;\r\n position: relative;\r\n width: 100%;\r\n height: 1px;\r\n margin: 4px 0;\r\n background-color: ${colors['grey']};\r\n\r\n font-size: 14px;\r\n line-height: 16px;\r\n\r\n span {\r\n position: absolute;\r\n background: white;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n padding: 4px;\r\n color: ${colors['grey']};\r\n user-select: none;\r\n }\r\n`;\r\n\r\nexport const SmallLink = styled.u`\r\n color: ${colors['blue']};\r\n text-decoration: none;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n color: ${colors['blue-dark']};\r\n }\r\n\r\n &:active {\r\n outline: none;\r\n text-decoration: underline;\r\n box-shadow: 0 0 0 2px ${colors['white']}, 0 0 0 4px ${colors['blue']};\r\n }\r\n`;\r\n\r\nexport const InlineCodeError = styled.div`\r\n color: red;\r\n display: flex;\r\n align-items: center;\r\n margin: -14px 0px 16px;\r\n\r\n #InlineErrorIcon {\r\n padding: 0px 4px;\r\n }\r\n\r\n #InlineErrorText {\r\n font-size: 12px;\r\n }\r\n`;\r\n\r\nexport const MobileFormat = styled.div`\r\n .enterCodeText {\r\n font-size: 28px;\r\n line-height: 36px;\r\n }\r\n\r\n .formMessageText {\r\n font-size: 16px;\r\n line-height: 24px;\r\n }\r\n\r\n ${mq.mobileL} {\r\n .enterCodeText {\r\n font-size: 20px;\r\n line-height: 24px;\r\n }\r\n \r\n .formMessageText {\r\n font-size: 14px;\r\n line-height: 16px;\r\n }\r\n }\r\n`;","import * as env from '../constants/envTypes';\r\nimport Url from 'url-parse';\r\n\r\n\r\nexport const mainDomain = () => window._MAIN_DOMAIN;\r\n\r\nexport const portalDomain = () => window._PORTAL_DOMAIN;\r\n\r\n\r\nexport class ExtractUrlData {\r\n pName = \"\";\r\n pQueryCode = \"\";\r\n pSsoCode = \"\";\r\n hasInvalidQuery = false;\r\n\r\n constructor(href) {\r\n if (href && (typeof href === 'string')) {\r\n const {pathname, query} = new Url(href);\r\n \r\n this.extractNameFromUrl(pathname);\r\n\r\n (typeof query === 'string') \r\n && this.extractCodesFromUrl(query);\r\n }\r\n }\r\n\r\n extractNameFromUrl(path) {\r\n if (typeof path === 'string' && path.length > 1) {\r\n this.pName = path.substring(1);\r\n }\r\n }\r\n\r\n extractCodesFromUrl(query) {\r\n const { values } = extractVariablesFromUrl(query);\r\n\r\n if (query.length > 1 && ('code' in values)) {\r\n this.pQueryCode = values['code'];\r\n } \r\n if (query.length > 1 && ('ssoCode' in values)) {\r\n this.pSsoCode = values['ssoCode'];\r\n } \r\n\r\n if (query.length > 1 && this.pQueryCode === \"\" && this.pSsoCode === \"\") {\r\n this.hasInvalidQuery = true;\r\n }\r\n }\r\n}\r\n\r\nexport const extractVariablesFromUrl = (href) => { \r\n const values = {};\r\n\r\n if (href && typeof href === 'string' && href.length > 1) {\r\n const questionMarkIndex = href.indexOf('?');\r\n let queryString = '';\r\n\r\n if (questionMarkIndex !== -1)\r\n queryString = href.slice(questionMarkIndex + 1, href.length);\r\n \r\n if (queryString.length > 1) {\r\n const pairs = queryString.split('&');\r\n pairs.forEach((item) => {\r\n const keyValue = item.split('=');\r\n\r\n if (keyValue.length === 2)\r\n values[`${keyValue[0]}`] = keyValue[1]; // eslint-disable-line\r\n })\r\n } \r\n }\r\n\r\n return {\r\n values\r\n };\r\n};\r\n\r\nexport const removeQueryFromUrl = () => {\r\n // main url is the portal screen url without any codes\r\n const { href } = window.location;\r\n const qIndex = href.indexOf('?');\r\n\r\n if (qIndex > -1) {\r\n const originalUrl = href.slice(0, qIndex);\r\n\r\n if (window.history.pushState) {\r\n window.history.pushState(null, null, originalUrl);\r\n } else {\r\n window.location = originalUrl;\r\n }\r\n }\r\n};\r\n\r\n// update browser window/tab title based on given portal data\r\nexport const displayTitle = (title) => {\r\n document.title = title ? `| ${title}` : '|';\r\n}\r\n\r\n// url encoder for errorLogger body\r\nexport const toUrlEncoded = obj => Object.keys(obj).map(k => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])).join('&');\r\n\r\n","import styled from '@emotion/styled';\r\nimport { mq } from '../../base';\r\n\r\nexport const Back = styled.div`\r\n cursor: pointer;\r\n height: fit-content;\r\n margin-top: 25px;\r\n\r\n ${mq.mobileL} {\r\n margin-top: 0px;\r\n }\r\n`;\r\n\r\nexport const Next = styled.div`\r\n cursor: pointer;\r\n height: fit-content;\r\n margin-top: 25px;\r\n\r\n ${mq.mobileL} {\r\n margin-top: 0px;\r\n }\r\n`;\r\n\r\nexport const NavContainer = styled.div`\r\n position: absolute;\r\n left: 0px;\r\n top: 0px;\r\n width: 100%;\r\n padding: 38px 24px;\r\n display: flex;\r\n justify-content: space-between;\r\n \r\n ${mq.laptop} {\r\n padding: 38px 33px;\r\n }\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormNav.styles';\r\n\r\nfunction FormNav ({\r\n handleBackPress,\r\n handleNextPress,\r\n isBackPressable,\r\n isNextPressable,\r\n}) {\r\n return ( \r\n \r\n {isBackPressable() && handleBackPress && \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {isNextPressable() && handleNextPress && \r\n \r\n \r\n \r\n \r\n \r\n } \r\n \r\n );\r\n};\r\n\r\nFormNav.propTypes = {\r\n handleBackPress: PropTypes.func,\r\n handleNextPress: PropTypes.func,\r\n isBackPressable: PropTypes.func,\r\n isNextPressable: PropTypes.func,\r\n}\r\n\r\nFormNav.defaultProps = {\r\n};\r\n\r\nexport default FormNav;","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form } from \"formik\";\r\nimport { enterCode } from \"../withFormik\";\r\nimport { colors } from '../../base';\r\n\r\nimport FormCodeInput from '../../components/FormCodeInput';\r\nimport FormButton from '../../components/FormButton';\r\nimport FormCheck from '../../components/FormCheck';\r\nimport FormMessage from '../../components/FormMessage';\r\nimport FormError from '../../components/FormError';\r\nimport * as s from './EnterCodeForm.styles';\r\nimport FormIcon from '../../components/FormIcon';\r\nimport { handleSendCodeError } from '../../helpers/errors';\r\nimport { removeQueryFromUrl } from '../../helpers/urls';\r\nimport FormNav from '../../components/FormNav/FormNav';\r\n\r\nconst CODE = 'portalCode';\r\nconst STAYON = 'stayOn';\r\nconst MAX_FAILED_ATTEMPTS = 5;\r\nconst TEN_MINUTES = 10 * 60 * 1000;\r\nconst RATE_LIMIT_ERROR = 'Rate limit exceeded';\r\n\r\nfunction EnterCodeForm({\r\n email,\r\n values,\r\n setFieldValue,\r\n status,\r\n errors,\r\n setErrors,\r\n isSubmitting,\r\n setSubmitting,\r\n handleChange,\r\n resetForm,\r\n attemptCount,\r\n lastAttemptDateUTC,\r\n handleSendEmail,\r\n handleBackPress,\r\n handleNextPress,\r\n isBackPressable,\r\n isNextPressable,\r\n handleCountdownStop,\r\n}) {\r\n const [isMaxAttemptsTimerOn, setIsMaxAttemptsTimerOn] = useState(false);\r\n const [attemptsCountdown, setAttemptsCountdown] = useState('10:00');\r\n const [resendCountdown, setResendCountdown] = useState('10:00');\r\n const [isSendCodeTimerOn, setIsSendCodeTimerOn] = useState(false);\r\n const [endCountdownDateUTC, setEndCountdownDateUTC] = useState(null);\r\n\r\n const getTimeToTryAgain = () => {\r\n if (errors.title && errors.title.includes(RATE_LIMIT_ERROR)) {\r\n // get time when client can try again\r\n const start = errors.message.indexOf('Try at') + 6; // Add 6 to skip past 'at '\r\n const end = errors.message.indexOf('UTC.');\r\n const timeString = errors.message.substring(start, end).trim();\r\n const timestampToTryUTC = new Date(timeString).getTime();\r\n setEndCountdownDateUTC(timestampToTryUTC);\r\n\r\n // set initial countdown\r\n const timeRemaining = timestampToTryUTC - Date.now();\r\n const minutes = Math.floor(timeRemaining / 60000);\r\n const seconds = Math.floor((timeRemaining % 60000) / 1000);\r\n setResendCountdown(`${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getTimeToTryAgain();\r\n }, [errors.message]);\r\n\r\n useEffect(() => {\r\n if (!endCountdownDateUTC || endCountdownDateUTC < Date.now()) {\r\n setIsSendCodeTimerOn(false);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n const timeRemaining = endCountdownDateUTC - Date.now();\r\n const minutes = Math.floor(timeRemaining / 60000);\r\n const seconds = Math.floor((timeRemaining % 60000) / 1000);\r\n\r\n if (minutes <= 0 && seconds <= 0) {\r\n setIsSendCodeTimerOn(false);\r\n setResendCountdown(\"0:00\");\r\n clearInterval(interval);\r\n resetForm();\r\n handleCountdownStop();\r\n } else {\r\n setIsSendCodeTimerOn(true);\r\n setResendCountdown(`${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`);\r\n }\r\n }, 1000);\r\n\r\n return () => clearInterval(interval);\r\n }, [endCountdownDateUTC]);\r\n\r\n useEffect(() => {\r\n if (MAX_FAILED_ATTEMPTS - attemptCount <= 0) {\r\n const interval = setInterval(() => {\r\n const currentDate = Date.now();\r\n const timeElapsed = currentDate - lastAttemptDateUTC;\r\n const timeRemaining = TEN_MINUTES - timeElapsed;\r\n const minutes = Math.floor(timeRemaining / 60000);\r\n const seconds = Math.floor((timeRemaining % 60000) / 1000);\r\n\r\n if (timeElapsed >= TEN_MINUTES) {\r\n setIsMaxAttemptsTimerOn(false);\r\n setAttemptsCountdown('0:00');\r\n setFieldValue(CODE, \"\");\r\n resetForm();\r\n handleCountdownStop();\r\n } else {\r\n setIsMaxAttemptsTimerOn(true);\r\n setAttemptsCountdown(`${minutes}:${seconds < 10 ? '0' : ''}${seconds}`);\r\n }\r\n }, 1000);\r\n\r\n return () => clearInterval(interval);\r\n }\r\n }, [lastAttemptDateUTC, attemptCount]);\r\n\r\n const getAddedErrorMessage = () => {\r\n if (attemptCount > 0 && !(status && status.isCodeExpired)) {\r\n return `You have ${(MAX_FAILED_ATTEMPTS - attemptCount) >= 0 ? (MAX_FAILED_ATTEMPTS - attemptCount) : '0'} attempt(s) left.`\r\n }\r\n };\r\n\r\n const getErrorTitle = () => {\r\n if (isFailedAttemptsExceededError()) {\r\n return 'No more attempts left!';\r\n } else if (errors && errors.title && errors.title.includes(RATE_LIMIT_ERROR)) {\r\n return 'Unable to resend code';\r\n }\r\n return errors.title;\r\n };\r\n\r\n const getErrorMessage = () => {\r\n if (isFailedAttemptsExceededError()) {\r\n return `Please note that you will have to wait ${attemptsCountdown} to Resend code and try again.`;\r\n }\r\n else if (errors && errors.title && errors.title.includes(RATE_LIMIT_ERROR)) {\r\n return `You’ve recently requested a code. Please check your spam folder or wait ${resendCountdown} before requesting another. This helps keep your account secure.`;\r\n }\r\n return `${errors.message} ${getAddedErrorMessage()}`;\r\n };\r\n\r\n const isFailedAttemptsExceededError = () => {\r\n return (MAX_FAILED_ATTEMPTS - attemptCount) <= 0;\r\n };\r\n\r\n const handleResendCode = async () => {\r\n setSubmitting(true);\r\n\r\n const handleSubmitError = (plainError) => {\r\n handleSendCodeError(plainError, setErrors);\r\n }\r\n\r\n const reqStatus = await handleSendEmail('', 'email', handleSubmitError, false);\r\n\r\n if (reqStatus >= 200 && reqStatus < 300) {\r\n removeQueryFromUrl();\r\n setFieldValue(CODE, \"\");\r\n resetForm();\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n return (\r\n <>\r\n isBackPressable() && !((MAX_FAILED_ATTEMPTS - attemptCount) <= 0) && !(status && status.isCodeExpired)}\r\n isNextPressable={isNextPressable}\r\n />\r\n
\r\n \r\n \r\n \r\n Enter secure code\r\n \r\n {errors && errors.title && (!errors.title.includes(RATE_LIMIT_ERROR) || !!endCountdownDateUTC)\r\n && (\r\n \r\n )}\r\n \r\n Please enter the 6-digit code sent to {email ? {email} : ' your email'}\r\n \r\n \r\n Didn't get it? {email ? Resend code : ' Please refresh and try again later.'}\r\n \r\n\r\n {\r\n setFieldValue(CODE, newValue);\r\n }}\r\n fields={6}\r\n IsOnError={(!!errors.title && !isSendCodeTimerOn) || isMaxAttemptsTimerOn}\r\n name=\"portalCode\"\r\n disabled={isSubmitting || (isMaxAttemptsTimerOn && isFailedAttemptsExceededError())}\r\n />\r\n\r\n {errors.portalCode && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Please match the requested format.\r\n
\r\n
\r\n )}\r\n\r\n \r\n {!(status && status.isCodeExpired) &&\r\n \r\n }\r\n {(status && status.isCodeExpired) &&\r\n \r\n }\r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nEnterCodeForm.propTypes = {\r\n values: PropTypes.instanceOf(Object),\r\n errors: PropTypes.instanceOf(Object),\r\n isSubmitting: PropTypes.bool,\r\n handleChange: PropTypes.func,\r\n email: PropTypes.string,\r\n setFieldValue: PropTypes.func,\r\n status: PropTypes.instanceOf(Object),\r\n setErrors: PropTypes.func,\r\n setSubmitting: PropTypes.func,\r\n resetForm: PropTypes.func,\r\n attemptCount: PropTypes.number,\r\n lastAttemptDateUTC: PropTypes.number,\r\n handleSendEmail: PropTypes.func,\r\n handleBackPress: PropTypes.func,\r\n handleNextPress: PropTypes.func,\r\n isBackPressable: PropTypes.func,\r\n isNextPressable: PropTypes.func,\r\n handleCountdownStop: PropTypes.func,\r\n}\r\n\r\nexport default enterCode(EnterCodeForm);","import EnterCodeForm from './EnterCodeForm';\r\nexport default EnterCodeForm;","import {keyframes} from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { mq } from \"../../base\";\r\n\r\nexport const BoxKeyframes = keyframes`\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n`;\r\n\r\nexport const FormContainer = styled.div`\r\n \r\n flex-direction: row;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n margin: auto 0px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 665px;\r\n max-width: 495px;\r\n min-height: 665px !important;\r\n overflow: hidden;\r\n\r\n background-color: rgba(256, 256, 256, 0);\r\n border-radius: 12px;\r\n \r\n ${mq.laptop} {\r\n max-width: 990px;\r\n margin: auto;\r\n width: 990px;\r\n box-shadow: 0px 29px 50px rgba(13, 113, 200, 0.15);\r\n }\r\n`;\r\n\r\n\r\nexport const Box = styled.div`\r\n \r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n \r\n position: relative;\r\n box-sizing: border-box;\r\n\r\n width: 100%;\r\n max-width: 495px;\r\n height: 665px;\r\n border-radius: 12px 0px 0px 12px;\r\n\r\n color:#525a5f;\r\n font-family: \"Open Sans\", \"Source Sans Pro\", sans-serif;\r\n\r\n background: white;\r\n\r\n /* animation-name: ${BoxKeyframes};\r\n animation-duration: 0.65s;\r\n animation-timing-function: ease-in;\r\n animation-delay: 0s;\r\n animation-iteration-count: 1;\r\n animation-direction: normal;\r\n animation-fill-mode: forwards;\r\n animation-play-state: running; */\r\n \r\n ${mq.laptop} {\r\n width: 50%;\r\n width: 495px;\r\n }\r\n`;\r\n\r\nexport const FormContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n box-sizing: border-box;\r\n\r\n width: 100%;\r\n height: 100%;\r\n max-height: 100%;\r\n position: relative;\r\n padding: 0px 24px;\r\n \r\n ${mq.laptop} {\r\n padding: 0px 55px;\r\n }\r\n`;\r\n\r\n\r\nexport const FormFooter = styled.div`\r\n display: flex;\r\n flex-flow: column nowrap;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n box-sizing: border-box;\r\n width: 100%;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { mq } from '../../base';\r\n\r\nexport const Panel = styled.div`\r\n height: 665px;\r\n width: 50%;\r\n\r\n background: linear-gradient(210.98deg, #005AA8 1.09%, #3591E0 101.6%);\r\n border-radius: 0px 12px 12px 0px;\r\n\r\n display: none;\r\n position: relative;\r\n \r\n ${mq.laptop} {\r\n display: flex;\r\n width: 495px;\r\n }\r\n`;\r\n\r\nexport const PanelBackground = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n\r\n display: flex;\r\n justify-content: space-between; \r\n`;\r\n\r\nexport const TextContainer = styled.div`\r\n\r\n`;\r\n\r\nexport const TaskItem = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const TaskIcon = styled.svg`\r\n margin-right: 24px;\r\n`;\r\n\r\n\r\nexport const TextBackground = styled.div`\r\n position: absolute;\r\n\r\n width: 100%;\r\n height: 100%; \r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\n","import React from 'react';\r\nimport * as s from './FormPanel.styles';\r\nimport FormMessage from '../FormMessage';\r\nimport { colors } from '../../base';\r\n\r\n\r\nfunction FormPanel() {\r\n const itemIconRender = function() {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Welcome to your portal\r\n \r\n\r\n \r\n {itemIconRender()}\r\n \r\n Secure and online\r\n \r\n \r\n \r\n {itemIconRender()}\r\n \r\n Access transaction history\r\n \r\n \r\n \r\n {itemIconRender()}\r\n \r\n Update personal information\r\n \r\n \r\n \r\n \r\n \r\n)}\r\n\r\nFormPanel.propTypes = {\r\n};\r\n\r\nexport default FormPanel;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormContainer.styles';\r\nimport FormPanel from '../FormPanel/FormPanel';\r\n\r\nfunction FormContainer({\r\n id,\r\n children,\r\n }) {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n FormContainer.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node\r\n ]),\r\n companyName: PropTypes.string,\r\n companyLogo: PropTypes.string,\r\n id: PropTypes.string,\r\n };\r\n \r\n export default FormContainer;","import FormContainer from './FormContainer';\r\nexport default FormContainer;","import { keyframes } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { colors } from '../../base';\r\n\r\nexport const BoxKeyframes = keyframes`\r\n 0% { \r\n -ms-transform: rotate(0deg);\r\n -moz-transform: rotate(0deg);\r\n -webkit-transform: rotate(0deg);\r\n -o-transform: rotate(0deg);\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n -ms-transform: rotate(360deg);\r\n -moz-transform: rotate(360deg);\r\n -webkit-transform: rotate(360deg);\r\n -o-transform: rotate(360deg);\r\n transform: rotate(360deg);\r\n }\r\n`;\r\n\r\nexport const Container = styled.div`\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n background-color: ${colors['white']};\r\n align-items: center;\r\n justify-content: center;\r\n overflow: hidden; \r\n`;\r\n\r\nexport const InnerContainer = styled.div`\r\n display: block; \r\n`;\r\n\r\nexport const SvgContainer = styled.div`\r\n display: flex;\r\n padding-bottom: 5px;\r\n\r\n animation-name: ${BoxKeyframes};\r\n animation-duration: 0.7s;\r\n animation-timing-function: steps(8, end);\r\n animation-delay: 0s;\r\n animation-iteration-count: infinite;\r\n animation-direction: normal;\r\n animation-fill-mode: forwards;\r\n animation-play-state: running;\r\n`;\r\n\r\nexport const Svg = styled.svg`\r\n margin: auto;\r\n`;\r\n","import React from 'react';\r\nimport FormMessage from '../FormMessage';\r\nimport * as s from './FormLoader.styles';\r\n\r\nfunction FormLoader() {\r\n return (\r\n \r\n \r\n \r\n Welcome!\r\n \r\n \r\n We are signing you in to your portal\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nFormLoader.propTypes = {\r\n};\r\n\r\nFormLoader.defaultProps = {\r\n};\r\n\r\nexport default FormLoader;","import FormLoader from './FormLoader';\r\nexport default FormLoader;","export const findBrowserType = () => {\r\n var opr = opr || undefined;\r\n var safari = safari || undefined;\r\n \r\n const isOpera = (!!window.opr && !!window.opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;\r\n const isIE = /*@cc_on!@*/false || !!document.documentMode;\r\n const isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);\r\n // Opera 8.0+\r\n if (isOpera) {\r\n return 'Opera';\r\n }\r\n // Firefox 1.0+\r\n else if (typeof InstallTrigger !== 'undefined') {\r\n return 'Firefox';\r\n }\r\n // Safari 3.0+ \"[object HTMLElementConstructor]\" \r\n else if (/constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification))) {\r\n return 'Safari';\r\n }\r\n // Internet Explorer 6-11\r\n else if (isIE) {\r\n return 'Internet Explorer';\r\n }\r\n // Edge 20+\r\n else if (!isIE && !!window.StyleMedia) {\r\n return 'Edge';\r\n }\r\n // Chrome 1 - 71\r\n else if (isChrome) {\r\n return 'Chrome';\r\n }\r\n // Blink engine detection\r\n else if ((isChrome || isOpera) && !!window.CSS) {\r\n return 'Blink';\r\n } \r\n else {\r\n return `Unknown: ${window.navigator.userAgent}`;\r\n }\r\n\r\n}","import axios from 'axios';\r\nimport uuid from 'uuid';\r\nimport { findBrowserType } from '../helpers/browserDetection';\r\nimport { portalDomain, toUrlEncoded} from '../helpers/urls';\r\n\r\nexport const logError = async ( {requestId, error, query }) => {\r\n \r\n const logData = {\r\n requestid: requestId || uuid(),\r\n url: window.location.href,\r\n browser: findBrowserType(),\r\n account: window.portalAccount,\r\n error: error,\r\n query: query\r\n };\r\n\r\n if (process.env.NODE_ENV !== 'test') {\r\n\r\n if (window._ENVIRONMENT === \"LOCALMACHINE\") {\r\n console.log(logData);\r\n }\r\n\r\n try {\r\n await axios({\r\n method: \"post\",\r\n // url: `https://signin.methodportalbuilder.com/health/log/`,\r\n url: `https://signin.${portalDomain()}/health/log/`,\r\n headers: { \r\n \"Content-Type\" : \"application/x-www-form-urlencoded;charset=UTF-8\",\r\n },\r\n data: toUrlEncoded(logData)\r\n });\r\n } \r\n catch(error) {\r\n error.status = 'status' in error ? error.status : 400;\r\n console.error(error)\r\n }\r\n }\r\n}\r\n","import { mainDomain } from \"../helpers/urls\";\r\nimport { logError } from \"./errorLogger\";\r\n\r\n/*-----------------\r\n * ApiDomain\r\n *---------------*/\r\n\r\nexport const apiDomain = () => {\r\n let domain = `https://api.${mainDomain()}`;\r\n\r\n if (mainDomain() === 'methodlocal.com') {\r\n domain += '/v2';\r\n }\r\n \r\n return domain;\r\n};\r\n\r\n\r\n/*-----------------\r\n * HandleResponse\r\n *\r\n * required for axios inceptors \r\n *---------------*/\r\nexport const handleResponse = (response) => {\r\n return response;\r\n};\r\n\r\n\r\n/*-----------------\r\n * HandleError\r\n *\r\n * axios inceptors only accept function references.\r\n * so we need to use closure to give handleError access to requestId \r\n *---------------*/\r\nexport const handleError = (requestId, error, query) => {\r\n \r\n logError({\r\n error: `${error.message}`,\r\n requestId,\r\n query\r\n });\r\n\r\n if (!error.response) {\r\n error.response = {\r\n status: error.status || 400,\r\n data: requestId\r\n }\r\n }\r\n\r\n if (error.response.status >= 400) error.response.requestId = requestId; \r\n // return Promise.reject(error.response);\r\n return error.response;\r\n};","import axios from 'axios';\r\nimport uuid from 'uuid';\r\nimport { apiDomain, handleError} from './apiUtils';\r\n\r\nexport const sendAnalytics = async (EventName, AccountId, AccountName, isPortalActive, isAccountActive) => {\r\n const requestId = uuid();\r\n const sref = ((document.referrer === \"\") ? window.location.href : document.referrer);\r\n const isIFrame = ((window.location !== window.parent.location) ? true : false);\r\n let url;\r\n\r\n try { \r\n url = `${apiDomain()}/analytics/events/`;\r\n\r\n return await axios({\r\n method: \"post\",\r\n url: url, \r\n headers: { \r\n \"Content-Type\" : \"application/json\",\r\n \"method-client\" : \"portal-signin\",\r\n \"method-request-id\": requestId\r\n },\r\n data: {\r\n \"userId\": AccountId + \".Portal\",\r\n \"name\": EventName,\r\n \"accountName\": AccountName,\r\n \"customAttributes\" : {\r\n \"applicationType\" : \"portal-signin\",\r\n \"isPortalActive\" : isPortalActive,\r\n \"isAccountActive\" : isAccountActive,\r\n \"siteReferrer\" : sref,\r\n \"isIFrame\" : isIFrame,\r\n \"userAgent\" : navigator.userAgent\r\n }\r\n }\r\n });\r\n } \r\n catch(error) {\r\n return handleError(requestId, error, url);\r\n }\r\n}\r\n","import { portalDomain, mainDomain } from \"./urls\";\r\n\r\nexport const redirecToSignIn = (account) => {\r\n const domain = (mainDomain() === 'methodlocal.com' && portalDomain() !== 'methodportallocal.com')\r\n ? `http://localhost:3000/${account}`\r\n : `https://signin.${portalDomain()}/${account}`;\r\n window.location = domain;\r\n return domain;\r\n}\r\n\r\n\r\nexport const redirectToSales = () => {\r\n const domain = `https://www.${mainDomain()}`;\r\n window.location = domain;\r\n return domain;\r\n}\r\n\r\nexport const redirectToPortal = (portalName, accountLinkId) => {\r\n const domain = (mainDomain() === 'methodlocal.com')\r\n ? `https://${portalName}.methodportallocal.com/apps/${accountLinkId}#/`\r\n : `https://${portalName}.${portalDomain()}/apps/${accountLinkId}#/`;\r\n\r\n window.location = domain;\r\n return domain;\r\n}\r\n","import * as types from '../constants/actionTypes';\r\n\r\nexport const setActiveForm = formType => ({\r\n type: types.SET_ACTIVE_FORM,\r\n payload: formType\r\n});","/*********************************************************\r\ngets the value of a cookie\r\n**********************************************************/\r\n\r\nexport const getCookie = (sName) => {\r\n sName = sName.toLowerCase();\r\n let oCrumbles = document.cookie.split('; ');\r\n for(let i=0; i1?oPair[1]:'';\r\n if(sKey == sName)\r\n return decodeURIComponent(sValue);\r\n }\r\n return '';\r\n}\r\n/*********************************************************\r\nsets the value of a cookie\r\n**********************************************************/\r\nexport const setCookie = (sName, sValue, hasExpiry, setExpired, daysToExpire) => {\r\n let sCookie = `${sName}=${sValue}`;\r\n let isChrome = window.navigator.userAgent.indexOf(\"Chrome\") > -1;\r\n let isSafari = window.navigator.userAgent.indexOf(\"Safari\") > -1;\r\n let isIOS = /iPad|iPhone|iPod/.test(window.navigator.userAgent) && !window.MSStream;\r\n\r\n if (isChrome && isSafari) {\r\n isSafari = false;\r\n }\r\n\r\n if (hasExpiry) {\r\n let oDate = new Date();\r\n if (setExpired){\r\n oDate.setYear(oDate.getFullYear() - 1);\r\n }\r\n else if (daysToExpire) {\r\n oDate.setDate(oDate.getDate() + daysToExpire);\r\n }\r\n else {\r\n oDate.setYear(oDate.getFullYear() + 1);\r\n }\r\n \r\n sCookie += `;expires=${oDate.toGMTString()}`;\r\n }\r\n sCookie += ';path=/';\r\n sCookie += `;domain=${window._PORTAL_DOMAIN}`;\r\n \r\n //safari doesnt support samesite attribute\r\n if (!isSafari && !isIOS) {\r\n sCookie += ';SameSite=None; Secure';\r\n }\r\n window.document.cookie= sCookie;\r\n return sCookie;\r\n}\r\n/*********************************************************\r\nremoves the value of a cookie and expires it\r\n**********************************************************/\r\n\r\nexport const clearCookie = (sName) => {\r\n setCookie(sName, '', true, true);\r\n}\r\n\r\n\r\n\r\n/* export const clearCookie = (sName) => {\r\n let sCookie = `${encodeURIComponent(sName)}=`;\r\n let sDate = ';expires=';\r\n \r\n sName = sName.toLowerCase();\r\n let oCrumbles = document.cookie.split(';');\r\n for(let i=0; i 1) ? oPair[1] : '';\r\n if (sKey == 'expires')\r\n sDate += sValue;\r\n }\r\n \r\n sCookie += sDate;\r\n window.document.cookie = sCookie;\r\n\r\n} */","import * as types from '../constants/actionTypes';\r\n\r\nexport const setPortalCode = (portalQueryCode) => {\r\n return {\r\n type: types.SET_PORTAL_CODE,\r\n payload: portalQueryCode\r\n }\r\n}","import axios from 'axios';\r\nimport uuid from 'uuid';\r\nimport { apiDomain, handleError } from './apiUtils';\r\n\r\nexport const validateTokens = async ({AccountId, SessionToken, AccessTokenV2}) => {\r\n const requestId = uuid();\r\n let url;\r\n\r\n try {\r\n url = `${apiDomain()}/authentication/portal/sessions`;\r\n\r\n return await axios({\r\n method: \"post\",\r\n url: url, \r\n headers: { \r\n \"Content-Type\" : \"application/json\",\r\n \"method-client\" : \"portal-signin\",\r\n \"method-request-id\": requestId\r\n },\r\n data: {\r\n AccountId,\r\n SessionToken,\r\n AccessTokenV2,\r\n Client: \"portal-signin\"\r\n }\r\n });\r\n } \r\n catch(error) {\r\n return handleError(requestId, error, url);\r\n }\r\n}","export const COOKIE_NAME = 'guest-token';\r\nexport const COOKIE_NAME_V2 = `${COOKIE_NAME}-v2`;","export const OFFLINE = 'OFFLINE';\r\nexport const NO_DATA = 'NO_DATA';\r\nexport const ENTER_CODE = 'ENTER_CODE';\r\nexport const SEND_CODE_BY_CHANNEL = 'SEND_CODE_BY_CHANNEL';\r\nexport const ENTER_EMAIL = 'ENTER_EMAIL';\r\nexport const SNIPER_LINK = 'SNIPER_LINK';\r\n","import * as types from '../constants/actionTypes';\r\n\r\nexport const setPortalSsoCode = (portalSsoCode) => {\r\n return {\r\n type: types.SET_PORTAL_SSO_CODE,\r\n payload: portalSsoCode\r\n }\r\n}","import { getCookie, clearCookie } from \"../helpers/cookie\";\r\nimport { redirectToPortal } from \"../helpers/redirects\";\r\nimport { setActiveForm } from \"./setActiveForm\";\r\nimport { setPortalCode } from \"./setPortalCode\";\r\nimport { validateTokens } from \"../api/validateTokensAPI\";\r\nimport { COOKIE_NAME, COOKIE_NAME_V2 } from \"../constants/cookieNames\";\r\nimport { ENTER_CODE, ENTER_EMAIL} from '../constants/formTypes';\r\nimport { setPortalSsoCode } from \"./setPortalSsoCode\";\r\nimport { removeQueryFromUrl } from \"../helpers/urls\";\r\n// import { mockValidateTokens } from \"../api/apiMocks\";\r\n\r\n// check if user is already logged in through session cookies\r\nexport const checkCookies = (AccountId, portalName, portalQueryCode, portalSsoCode) => async (dispatch) => {\r\n const SessionToken = getCookie(COOKIE_NAME);\r\n const AccessTokenV2 = getCookie(COOKIE_NAME_V2);\r\n\r\n if (SessionToken && AccessTokenV2) {\r\n const {status, data} = await validateTokens({AccountId, SessionToken, AccessTokenV2});\r\n // const { status } = await mockValidateTokens();\r\n if ( status >= 200 && status < 300 ) {\r\n redirectToPortal(portalName, data.accountLinkId);\r\n return;\r\n } \r\n \r\n if ( status >= 400 && status < 500 ) {\r\n clearCookie(COOKIE_NAME);\r\n clearCookie(COOKIE_NAME_V2);\r\n } \r\n }\r\n\r\n if (portalQueryCode) {\r\n // if no cookie but url includes the code as query\r\n dispatch(setPortalCode(portalQueryCode));\r\n dispatch(setActiveForm(ENTER_CODE));\r\n\r\n } else if (portalSsoCode) {\r\n // if no cookie but url includes the ssO code as query \r\n dispatch(setActiveForm(ENTER_EMAIL));\r\n dispatch(setPortalSsoCode(portalSsoCode));\r\n removeQueryFromUrl();\r\n } else {\r\n // go signin page if anything goes wrong\r\n dispatch(setActiveForm(ENTER_EMAIL));\r\n }\r\n}","import axios from 'axios';\r\nimport uuid from 'uuid';\r\nimport { apiDomain, handleError } from './apiUtils';\r\n\r\n\r\nexport const fetchData = async (PortalName) => {\r\n const requestId = uuid();\r\n let url;\r\n\r\n try {\r\n url = `${apiDomain()}/account/accounts/portaldata/${PortalName}`;\r\n\r\n return await axios({\r\n method: \"get\",\r\n url: url,\r\n headers: { \r\n \"method-client\" : \"portal-signin\",\r\n \"method-request-id\": requestId\r\n }\r\n });\r\n } \r\n catch (error) {\r\n return handleError(requestId, error, url);\r\n }\r\n};","import * as yup from 'yup';\r\nimport { logError } from './errorLogger';\r\n\r\nconst runValidation = (schema, data) => {\r\n schema.validate(data)\r\n .catch((e)=> {\r\n logError({\r\n error: `(${e.type}) ${e.message}`\r\n });\r\n });\r\n}\r\n\r\n// log an error if portal data model is not valid\r\nexport const validatePortalDataSchema = (data = {}) => { \r\n const schema = yup.object().shape({\r\n AccountId: yup.number().strict().required(),\r\n Name: yup.string().strict().required(),\r\n PortalCompanyName: yup.string().strict(),\r\n PortalContactEmail: yup.string().strict(),\r\n PortalLogo: yup.string().strict(),\r\n PortalName: yup.string().strict(),\r\n isPortalEnabled: yup.boolean().strict().required(),\r\n isPortalRenamed: yup.boolean().strict(),\r\n });\r\n\r\n runValidation(schema, data);\r\n \r\n}\r\n\r\n// log an error if cookie tokens model is not valid\r\nexport const validateTokenSchema = (data = {}) => {\r\n const schema = yup.object().shape({\r\n portalSession: yup.object().shape({\r\n sessionToken: yup.string().strict().required(),\r\n accessTokenV2: yup.string().strict().required(),\r\n }).strict().required()\r\n })\r\n\r\n runValidation(schema, data);\r\n}","import { setActiveForm } from \"./setActiveForm\";\r\nimport { checkCookies } from \"./checkCookies\";\r\nimport { setErrorId } from \"./setErrorId\";\r\nimport { fetchData } from \"../api/fetchDataAPI\";\r\nimport { sendAnalytics } from \"../api/sendAnalyticsAPI\";\r\n\r\nimport { redirecToSignIn, redirectToSales } from \"../helpers/redirects\";\r\nimport { errorIdMessage } from \"../helpers/errors\";\r\nimport { displayTitle } from \"../helpers/urls\";\r\nimport { validatePortalDataSchema } from '../api/responseValidation';\r\n\r\nimport * as types from '../constants/actionTypes';\r\nimport * as f from '../constants/formTypes';\r\n\r\nexport const loadPortalData = (pName, pQueryCode, pSsoCode) => async (dispatch) => {\r\n\r\n if (pName) {\r\n window.portalAccount = pName; // needed for logging. use portalName since there's no account name yet\r\n \r\n const {status, data} = await fetchData(pName);\r\n // const {status, data} = await mockFetchData(pName);\r\n\r\n if ((status >= 200 && status < 300) && data.isPortalEnabled && (data.PortalName !== pName)) {\r\n // redirect - PL-23373\r\n redirecToSignIn(data.PortalName);\r\n displayTitle();\r\n\r\n } else if ((status >= 200 && status < 300) && data.isPortalEnabled) {\r\n \r\n validatePortalDataSchema(data);\r\n dispatch(updatePortalData(data)); // needed for signin page if cookies are expired or don't exist\r\n dispatch(checkCookies(data.AccountId, data.PortalName, pQueryCode, pSsoCode));\r\n displayTitle(data.PortalCompanyName || 'Portal Sign In'); \r\n sendAnalytics(\"Portal Login Screen Loaded\",data.AccountId,data.Name,data.isPortalEnabled,data.isActive,document.referrer);\r\n\r\n } else if ((status >= 200 && status < 300) && !data.isPortalEnabled) {\r\n dispatch(setActiveForm(f.OFFLINE));\r\n displayTitle( data.PortalCompanyName || 'Portal Sign In');\r\n sendAnalytics(\"Portal Login Screen Loaded\",data.AccountId,data.Name,data.isPortalEnabled,data.isActive,document.referrer);\r\n\r\n } else if (status >= 300 && status < 400) {\r\n redirecToSignIn(data.PortalName);\r\n displayTitle();\r\n\r\n } else {\r\n const errId = errorIdMessage(status, data);\r\n dispatch(setErrorId(errId));\r\n dispatch(setActiveForm(f.NO_DATA));\r\n displayTitle('Portal Sign In');\r\n } \r\n\r\n } else {\r\n redirectToSales();\r\n }\r\n} \r\n \r\nexport const updatePortalData = data => ({\r\n type: types.UPDATE_PORTAL_DATA,\r\n payload: { data }\r\n});\r\n","import axios from 'axios';\r\nimport { apiDomain, handleError } from './apiUtils';\r\nimport uuid from 'uuid';\r\n\r\nexport const checkUser = async (AccountId, Email) => {\r\n const requestId = uuid();\r\n let url;\r\n\r\n try {\r\n url = `${apiDomain()}/authentication/portal/portaluser`;\r\n\r\n return await axios({\r\n method: 'post',\r\n url: url,\r\n headers: {\r\n \"Content-Type\" : \"application/json\",\r\n \"method-client\" : \"portal-signin\",\r\n \"method-request-id\": requestId\r\n },\r\n data: {\r\n AccountId,\r\n Email\r\n }\r\n });\r\n } catch (error) {\r\n return handleError(requestId, error, url);\r\n }\r\n};","import { checkUser } from \"../api/checkPortalUserAPI\";\r\nimport * as types from '../constants/actionTypes';\r\n\r\n\r\n// Get portal user with their respective phone for future SMS\r\nexport const checkPortalUser = ({\r\n AccountId,\r\n userEmail,\r\n handleSubmitError\r\n}) => async (dispatch) => {\r\n const { status, data } = await checkUser(AccountId, userEmail);\r\n\r\n if (status >= 200 && status < 300) {\r\n dispatch(updateUserEmail(userEmail));\r\n dispatch(setUserPortalData(data.phones, data.sniperLink, data.emailProvider));\r\n }\r\n\r\n if (status >= 400 && status < 600 && handleSubmitError) {\r\n handleSubmitError(data); // comes through withFormik\r\n }\r\n\r\n return status;\r\n};\r\n\r\nexport const setUserPortalData = (portalUserPhones, portaluserSniperLink, portalUserMXResult) => ({\r\n type: types.SET_PORTAL_USER_DATA,\r\n payload: {\r\n userPhones: portalUserPhones,\r\n userSniperLink: portaluserSniperLink,\r\n userEmailProvider: portalUserMXResult\r\n }\r\n});\r\n\r\nexport const updateUserEmail = (userEmail) => {\r\n return {\r\n type: types.UPDATE_USER_EMAIL,\r\n payload: userEmail\r\n }\r\n }","import axios from 'axios';\r\nimport uuid from 'uuid';\r\nimport { apiDomain, handleError } from './apiUtils';\r\n\r\nexport const generateCode = async (AccountId, Email, BrandingColor) => {\r\n const requestId = uuid();\r\n let url;\r\n\r\n try {\r\n url = `${apiDomain()}/authentication/portal/codes`;\r\n\r\n return await axios({\r\n method: \"post\",\r\n url: url,\r\n headers: { \r\n \"Content-Type\" : \"application/json\",\r\n \"method-client\" : \"portal-signin\",\r\n \"method-request-id\": requestId\r\n },\r\n data: {\r\n AccountId,\r\n Email,\r\n BrandingColor\r\n }\r\n });\r\n } \r\n catch(error) {\r\n return handleError(requestId, error, url);\r\n }\r\n}","import axios from 'axios';\r\nimport uuid from 'uuid';\r\nimport { apiDomain, handleError} from './apiUtils';\r\n\r\nexport const sendCode = async (AccountId, Email, portalCode, portalSsoCode = null, PortalSession = {}) => {\r\n const requestId = uuid();\r\n const defaultNonePortalCode = '000000';\r\n let url;\r\n\r\n try { \r\n url = `${apiDomain()}/authentication/portal/codes/${portalCode || defaultNonePortalCode}${portalSsoCode ? `?portalSsoCode=${portalSsoCode}` : ``}`;\r\n \r\n return await axios({\r\n method: \"post\",\r\n url: url,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"method-client\": \"portal-signin\",\r\n \"method-request-id\": requestId,\r\n },\r\n data: {\r\n AccountId,\r\n PortalSession,\r\n Email\r\n }\r\n });\r\n } \r\n catch(error) {\r\n return handleError(requestId, error, url);\r\n }\r\n}\r\n","import { sendCode } from \"../api/sendCodeAPI\";\r\nimport { setCookie } from \"../helpers/cookie\";\r\nimport { redirectToPortal } from \"../helpers/redirects\";\r\nimport { errorIdMessage } from \"../helpers/errors\";\r\nimport { COOKIE_NAME, COOKIE_NAME_V2 } from '../constants/cookieNames';\r\nimport * as types from '../constants/actionTypes';\r\nimport { validateTokenSchema } from \"../api/responseValidation\";\r\n\r\n// send the code for validation\r\n// save session cookies if code is valid\r\nexport const sendPortalCode = ({AccountId, PortalName, userEmail, portalCode, stayOn, portalSsoCode, handleSubmitError}) => async (dispatch) => {\r\n\r\n const cookies = document.cookie\r\n .split('; ')\r\n .reduce((acc, cookie) => {\r\n const [name, ...valueParts] = cookie.split('='); \r\n const value = valueParts.join('=');\r\n acc[name] = value;\r\n return acc;\r\n }, {});\r\n\r\n const sessionToken = cookies[COOKIE_NAME] || \"\";\r\n\r\n const { status, data } = await sendCode(AccountId, userEmail, portalCode, portalSsoCode, {\r\n PortalSession: {\r\n ExistingSessionToken: sessionToken,\r\n },\r\n });\r\n\r\n if ( status >= 200 && status < 300 ) {\r\n dispatch(setSessionStatus(stayOn));\r\n validateTokenSchema(data);\r\n setCookie(COOKIE_NAME, data.portalSession.sessionToken, stayOn, false, 30);\r\n setCookie(COOKIE_NAME_V2, data.portalSession.accessTokenV2, stayOn, false, 30);\r\n redirectToPortal(PortalName, data.accountLinkId);\r\n return status;\r\n } \r\n\r\n if ( status >= 400 && status < 600 ) {\r\n const errId = errorIdMessage(status, data);\r\n handleSubmitError(errId);\r\n return status;\r\n } \r\n}\r\n\r\nexport const setSessionStatus = (stayOn) => {\r\n return {\r\n type: types.SET_SESSION_STATUS,\r\n payload: stayOn\r\n }\r\n}\r\n","import styled from '@emotion/styled';\r\nimport { colors, mq } from '../src/base';\r\n\r\nexport const PortalSignInWrapper = styled.div`\r\n display: flex;\r\n position: absolute;\r\n flex-basis: 100%;\r\n width: 100vw;\r\n height: 100vh;\r\n justify-content: center;\r\n align-items: stretch;\r\n background: ${colors['white']};\r\n overflow: auto;\r\n\r\n ${mq.laptop} {\r\n background: ${colors['blue-alice']};\r\n }\r\n`;","import styled from '@emotion/styled';\r\nimport { mq } from '../../base';\r\n\r\nexport const Container = styled.div`\r\n width: 100%\r\n`;\r\n\r\nexport const MobileFormat = styled.div`\r\n .codeSentText {\r\n font-size: 28px;\r\n line-height: 36px;\r\n }\r\n\r\n .formMessageText {\r\n font-size: 16px;\r\n line-height: 24px;\r\n }\r\n\r\n .formShortcutText {\r\n font-size: 16px;\r\n line-height: 24px;\r\n }\r\n\r\n ${mq.mobileL} {\r\n .codeSentText {\r\n font-size: 20px;\r\n line-height: 24px;\r\n }\r\n\r\n .formMessageText {\r\n font-size: 14px;\r\n line-height: 20px;\r\n }\r\n\r\n .formShortcutText {\r\n font-size: 14px;\r\n line-height: 16px;\r\n }\r\n }\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FormMessage from '../../components/FormMessage';\r\nimport FormButton from '../../components/FormButton';\r\nimport FormIcon from '../../components/FormIcon';\r\nimport FormNav from '../../components/FormNav/FormNav';\r\nimport * as s from './SniperLinkForm.styles';\r\nimport { colors } from '../../base';\r\n\r\nfunction SniperLinkForm({ \r\n provider, \r\n email, \r\n handleSniperLink,\r\n handleBackPress,\r\n handleNextPress,\r\n isBackPressable,\r\n isNextPressable,\r\n}) {\r\n return (\r\n <> \r\n \r\n \r\n \r\n \r\n \r\n Code sent! Check your inbox.\r\n \r\n \r\n Sign in instantly by copying the secure code sent to {email}.\r\n \r\n \r\n Here’s a shortcut to make it even easier for you:\r\n \r\n \r\n handleSniperLink()}/>\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SniperLinkForm;\r\n\r\nSniperLinkForm.propTypes = {\r\n provider: PropTypes.string, \r\n email: PropTypes.string, \r\n handleSniperLink: PropTypes.func,\r\n handleBackPress: PropTypes.func,\r\n handleNextPress: PropTypes.func,\r\n isBackPressable: PropTypes.func,\r\n isNextPressable: PropTypes.func,\r\n};","import SniperLinkForm from './SniperLinkForm';\r\nexport default SniperLinkForm;","import styled from 'styled-components';\r\nimport { colors, mq } from '../../base';\r\n\r\nexport const ssoLink = styled.a`\r\n text-decoration: none;\r\n`;\r\n\r\nexport const LineBreak = styled.div`\r\n box-sizing: border-box;\r\n position: relative;\r\n max-width: 384px;\r\n width: 100%; \r\n height: 1px; \r\n margin: 30px auto;\r\n background-color: ${colors['grey-light']};\r\n\r\n font-weight: 600;\r\n font-size: 14px;\r\n line-height: 16px;\r\n\r\n span {\r\n width: 47px;\r\n text-align: center;\r\n position: absolute;\r\n background: white;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n padding: 4px;\r\n font-weight: 600;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: ${colors['grey-dark']};\r\n user-select: none;\r\n }\r\n`;\r\n\r\nexport const EmailInput = styled.div`\r\n #portal-signin-email-input {\r\n border: 1px solid ${colors['grey-light']};\r\n background: ${colors['white']} !important;\r\n border-radius: 2px !important;\r\n padding: 8px;\r\n font-size: 16px !important;\r\n height: 48px !important;\r\n }\r\n\r\n #portal-signin-email-input:focus {\r\n border: 1px solid ${colors.newPalette.method['base']};\r\n }\r\n\r\n label {\r\n color: ${colors['grey']};\r\n background-color: ${colors['white']};\r\n padding: 0px 4px;\r\n left: 4px;\r\n font-size: 16px;\r\n line-height: 26px;\r\n font-weight: 400;\r\n }\r\n\r\n .Active {\r\n font-size: 14pt;\r\n line-height: 16px;\r\n font-weight: 600;\r\n }\r\n\r\n &:focus-within label {\r\n font-size: 14pt;\r\n line-height: 16px;\r\n font-weight: 600;\r\n }\r\n\r\n input:-webkit-autofill,\r\n input:-webkit-autofill:hover,\r\n input:-webkit-autofill:focus,\r\n input:-webkit-autofill:active {\r\n -webkit-box-shadow: 0 0 0 30px ${colors['white']} inset !important;\r\n }\r\n`;\r\n\r\nexport const ErrorEmailInput = styled.div`\r\n #portal-signin-email-input {\r\n border: 1px solid red;\r\n background: ${colors['white']} !important;\r\n border-radius: 2px !important;\r\n padding: 8px;\r\n font-size: 16px !important;\r\n height: 48px !important;\r\n }\r\n\r\n #portal-signin-email-input:focus {\r\n border: 1px solid red;\r\n }\r\n\r\n label {\r\n color: red;\r\n background-color: ${colors['white']};\r\n padding: 0px 4px;\r\n left: 4px;\r\n font-size: 16px;\r\n line-height: 26px;\r\n font-weight: 400;\r\n }\r\n\r\n .Active {\r\n color: red;\r\n font-size: 14pt;\r\n line-height: 16px;\r\n font-weight: 600;\r\n }\r\n\r\n &:focus-within label {\r\n color: red;\r\n font-size: 14pt;\r\n line-height: 16px;\r\n font-weight: 600;\r\n }\r\n\r\n input:-webkit-autofill,\r\n input:-webkit-autofill:hover,\r\n input:-webkit-autofill:focus,\r\n input:-webkit-autofill:active {\r\n -webkit-box-shadow: 0 0 0 30px ${colors['white']} inset !important;\r\n }\r\n`;\r\n\r\nexport const InlineError = styled.div`\r\n color: red;\r\n display: flex;\r\n align-items: center;\r\n margin: -14px 0px 16px;\r\n\r\n #InlineErrorIcon {\r\n padding: 0px 4px;\r\n }\r\n\r\n #InlineErrorText {\r\n font-size: 12px;\r\n }\r\n`;\r\n\r\nexport const MobileFormat = styled.div`\r\n .signInText {\r\n font-size: 24px;\r\n line-height: 32px;\r\n }\r\n\r\n .formMessageText {\r\n font-size: 16px;\r\n line-height: 24px;\r\n }\r\n\r\n ${mq.mobileL} {\r\n .signInText {\r\n font-size: 20px;\r\n line-height: 24px;\r\n }\r\n\r\n .formMessageText {\r\n font-size: 16px;\r\n line-height: 24px;\r\n }\r\n }\r\n`;\r\n\r\nexport const FormButtons = styled.div`\r\n margin-top: 16px;\r\n`;","import styled from '@emotion/styled';\r\nimport { colors } from '../../base';\r\n\r\nexport const InputBox = styled.div`\r\n max-width: 384px;\r\n width: 100%;\r\n margin: auto;\r\n margin-bottom: 16px;\r\n display: flex;\r\n position: relative;\r\n\r\n .Active {\r\n transform: translate(0, -18px) scale(0.75);\r\n }\r\n\r\n label {\r\n transform-origin: top left;\r\n transition: all 0.2s ease-out;\r\n }\r\n \r\n :focus-within label {\r\n transform: translate(0, -18px) scale(0.75);\r\n }\r\n`;\r\n\r\nexport const Label = styled.label`\r\n display: block;\r\n\r\n text-align: left;\r\n font-size: 14px;\r\n line-height: 16px;\r\n font-weight: 600;\r\n user-select: none;\r\n position: absolute;\r\n top: 11px;\r\n left: 7px;\r\n background: ${colors['white']};\r\n color: ${({ hasError, isStatic }) => (hasError && !isStatic) ? colors['red'] : colors['grey-dark']};\r\n\r\n .Active {\r\n transform: translate(0, 12px) scale(0.75);\r\n }\r\n`;\r\n\r\nexport const Input = styled.input`\r\n box-sizing: border-box;\r\n display: block;\r\n \r\n width: 100%;\r\n height: 38px !important;\r\n margin: 0px !important;\r\n\r\n background: ${({ isStatic }) => isStatic ? colors['concrete'] : colors['white']} !important;\r\n border-radius: 3px !important;\r\n border: 1px solid ${({ hasError }) => (hasError) ? colors['red'] : colors['grey']};\r\n border-width: '1px';\r\n \r\n padding:'12px 8px' !important;\r\n\r\n ${({ isStatic }) =>\r\n isStatic &&\r\n `\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n `}\r\n \r\n font-size: 16px !important;\r\n padding: 12px 8px;\r\n color: ${colors['grey-dark']};\r\n \r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-expand: none;\r\n -webkit-font-smoothing: antialiased;\r\n\r\n &:focus, &:hover, &:active {\r\n border: 1px solid ${({ hasError }) => hasError ? colors['fuchsia-dark'] : colors['blue']};\r\n outline: none;\r\n } \r\n`;","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './FormInput.styles';\r\n\r\nfunction FormInput({\r\n className,\r\n id,\r\n type,\r\n name,\r\n value,\r\n inputLabel,\r\n hasError,\r\n handleChange,\r\n isStatic\r\n }) {\r\n const [isActive, setIsActive] = useState(false);\r\n\r\n useEffect(() => {\r\n if (value) {\r\n setIsActive(true);\r\n } else {\r\n setIsActive(false);\r\n }\r\n }, [value])\r\n \r\n return (\r\n \r\n \r\n \r\n {`${inputLabel}`} \r\n \r\n \r\n );\r\n }\r\n\r\nFormInput.propTypes = {\r\n className: PropTypes.string,\r\n id: PropTypes.string,\r\n type: PropTypes.string,\r\n inputLabel: PropTypes.string,\r\n value: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n handleChange: PropTypes.func.isRequired,\r\n hasError: PropTypes.bool,\r\n isStatic: PropTypes.bool\r\n}\r\n\r\nFormInput.defaultProps = {\r\n type: \"text\",\r\n hasError: false,\r\n inputLabel: '',\r\n}\r\n\r\nexport default FormInput;","import FormInput from './FormInput';\r\nexport default FormInput;","import styled from '@emotion/styled';\r\nimport { mq } from '../../base';\r\n\r\nexport const CompanyLogo = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n max-height: 148px;\r\n margin: 0px;\r\n margin-bottom: 20px;\r\n padding: 0 16px;\r\n \r\n & img {\r\n width: auto;\r\n max-height: 96px;\r\n max-width: 320px;\r\n border-radius: 4px;\r\n }\r\n\r\n ${mq.mobileL} {\r\n width: 100%;\r\n margin-bottom: 40px;\r\n & img {\r\n max-height: 112px;\r\n }\r\n }\r\n\r\n ${mq.mobileL} {\r\n & img {\r\n max-height: 148px;\r\n }\r\n }\r\n`;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as s from './CompanyLogo.styles';\r\n\r\nfunction CompanyLogo ({ logoSource, name }) {\r\n if (logoSource) {\r\n return (\r\n \r\n {name}/\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nCompanyLogo.propTypes = {\r\n logoSource: PropTypes.string,\r\n name: PropTypes.string\r\n}\r\n\r\nexport default CompanyLogo;","import CompanyLogo from './CompanyLogo';\r\nexport default CompanyLogo;","import styled from '@emotion/styled';\r\nimport { colors } from '../../base';\r\n\r\nexport const PoweredBy = styled.div`\r\n padding: 2px 0;\r\n margin-top: 46px;\r\n\r\n justify-content: center;\r\n align-items: center;\r\n display: flex;\r\n`;\r\n\r\nexport const Anchor = styled.a`\r\n height: 12px;\r\n margin-left: 2px;\r\n text-decoration: none;\r\n`;\r\n\r\nexport const Label = styled.span`\r\n color: ${colors['black']};\r\n font-size: 14px;\r\n font-weight: 400;\r\n line-height: 16px;\r\n user-select: none;\r\n`;\r\n\r\nexport const Svg = styled.svg`\r\n color: ${colors['method']};\r\n height: 12px;\r\n width: 51px;\r\n vertical-align: top;\r\n`;","import FormPoweredBy from './FormPoweredBy';\r\nexport default FormPoweredBy;","import React from 'react';\r\nimport * as s from './FormPoweredBy.styles';\r\n\r\nconst FormPoweredBy = () => {\r\n return (\r\n \r\n Powered by \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FormPoweredBy;","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form } from \"formik\";\r\nimport { enterEmail } from \"../withFormik\";\r\nimport * as s from './EnterEmailForm.styles';\r\nimport { colors } from '../../base';\r\n\r\nimport FormInput from '../../components/FormInput';\r\nimport FormButton from '../../components/FormButton';\r\nimport FormMessage from '../../components/FormMessage';\r\nimport FormError from '../../components/FormError';\r\nimport CompanyLogo from '../../components/CompanyLogo';\r\nimport PoweredBy from '../../components/FormPoweredBy';\r\nimport { handleSsoCodeError } from '../../helpers/errors';\r\nimport { apiDomain } from '../../api/apiUtils';\r\nimport FormNav from '../../components/FormNav/FormNav';\r\nimport { set } from 'core-js/core/dict';\r\nimport { setActiveForm } from '../../actions';\r\n\r\nconst EMAIL = 'email';\r\nconst TEN_MINUTES = 10 * 60 * 1000;\r\nconst RATE_LIMIT_ERROR = 'Rate limit exceeded';\r\n\r\nfunction EnterEmailForm({\r\n companyLogo,\r\n companyName,\r\n values,\r\n errors,\r\n setErrors,\r\n setSubmitting,\r\n isSubmitting,\r\n handleChange,\r\n handleSso,\r\n ssoCode,\r\n handleBackPress,\r\n handleNextPress,\r\n isBackPressable,\r\n isNextPressable,\r\n resetForm,\r\n handleCountdownStop,\r\n}) {\r\n const [isSendCodeTimerOn, setIsSendCodeTimerOn] = useState(false);\r\n const [countdown, setCountdown] = useState('10:00');\r\n const [endCountdownDateUTC, setEndCountdownDateUTC] = useState(null);\r\n\r\n useEffect(() => {\r\n const handleSSOAsync = async () => {\r\n if (ssoCode) {\r\n setSubmitting(true);\r\n\r\n const handleSubmitError = (plainError) => {\r\n handleSsoCodeError(plainError, setErrors);\r\n }\r\n\r\n const reqStatus = await handleSso(handleSubmitError); // callback for api-call action\r\n\r\n if (reqStatus !== 200) {\r\n setSubmitting(false); // must keep the button disabled while request is being processed\r\n }\r\n }\r\n }\r\n\r\n handleSSOAsync().catch();\r\n\r\n }, [ssoCode])\r\n\r\n const isRateLimitingError = () => {\r\n return errors && errors.title && errors.title.includes(RATE_LIMIT_ERROR);\r\n };\r\n\r\n const getTimeToTryAgain = () => {\r\n if (isRateLimitingError()) {\r\n // get time when client can try again\r\n const start = errors.message.indexOf('Try at') + 6; // Add 6 to skip past 'at '\r\n const end = errors.message.indexOf('UTC.');\r\n const timeString = errors.message.substring(start, end).trim();\r\n const timestampToTryUTC = new Date(timeString).getTime();\r\n setEndCountdownDateUTC(timestampToTryUTC);\r\n\r\n // set initial countdown\r\n const timeRemaining = timestampToTryUTC - Date.now();\r\n const minutes = Math.floor(timeRemaining / 60000);\r\n const seconds = Math.floor((timeRemaining % 60000) / 1000);\r\n setCountdown(`${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getTimeToTryAgain();\r\n }, [errors.message]);\r\n\r\n const getErrorTitle = () => {\r\n if (isRateLimitingError()) {\r\n return 'Unable to send email';\r\n }\r\n return errors.title;\r\n };\r\n\r\n const getSendCodeError = () => {\r\n if (isRateLimitingError()) {\r\n return `We couldn’t send the code to ${values[EMAIL]} due to an existing email already having been sent to your inbox. Please wait ${countdown} before trying again.`;\r\n } else {\r\n return errors.message;\r\n }\r\n };\r\n\r\n const toShowBackText = () => { \r\n return errors && errors.title && errors.title.includes(RATE_LIMIT_ERROR);\r\n };\r\n\r\n useEffect(() => {\r\n if (!endCountdownDateUTC || endCountdownDateUTC < Date.now()) {\r\n setIsSendCodeTimerOn(false);\r\n setCountdown(\"0:00\");\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n const timeRemaining = endCountdownDateUTC - Date.now();\r\n const minutes = Math.floor(timeRemaining / 60000);\r\n const seconds = Math.floor((timeRemaining % 60000) / 1000);\r\n\r\n if (minutes <= 0 && seconds <= 0) {\r\n setIsSendCodeTimerOn(false);\r\n setCountdown(\"0:00\");\r\n clearInterval(interval);\r\n resetForm();\r\n handleCountdownStop();\r\n } else {\r\n setIsSendCodeTimerOn(true);\r\n setCountdown(`${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`);\r\n }\r\n }, 1000);\r\n\r\n return () => clearInterval(interval);\r\n }, [endCountdownDateUTC]);\r\n\r\n return (\r\n <>\r\n {\r\n setEndCountdownDateUTC(null);\r\n setCountdown('0:00');\r\n setIsSendCodeTimerOn(false);\r\n handleBackPress();\r\n resetForm();\r\n }}\r\n handleNextPress={handleNextPress}\r\n isBackPressable={() => isBackPressable() || errors.title}\r\n isNextPressable={isNextPressable}\r\n />\r\n
\r\n \r\n \r\n {!isSendCodeTimerOn && !errors.title && \r\n Sign in to your portal\r\n }\r\n {errors && errors.title && (!errors.title.includes(RATE_LIMIT_ERROR) || endCountdownDateUTC) && (\r\n \r\n )}\r\n {!errors.title && (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n { /* \r\n \r\n */}\r\n\r\n Or\r\n \r\n Sign in easily with a one-time code\r\n \r\n \r\n )}\r\n\r\n {errors.email ? (\r\n <>\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n A valid email is required.\r\n
\r\n
\r\n \r\n ) : (\r\n !isSendCodeTimerOn && !errors.title && \r\n \r\n \r\n )}\r\n\r\n {toShowBackText() ? (\r\n <>\r\n \r\n Click Back to return to the sign in screen.\r\n \r\n {\r\n setEndCountdownDateUTC(null);\r\n setCountdown('0:00');\r\n setIsSendCodeTimerOn(false);\r\n handleBackPress();\r\n resetForm();\r\n }}\r\n />\r\n \r\n ) : (\r\n )}\r\n \r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nEnterEmailForm.propTypes = {\r\n errors: PropTypes.instanceOf(Object),\r\n handleChange: PropTypes.func,\r\n isSubmitting: PropTypes.bool,\r\n values: PropTypes.instanceOf(Object),\r\n companyLogo: PropTypes.string,\r\n companyName: PropTypes.string,\r\n handleSso: PropTypes.func,\r\n ssoCode: PropTypes.string,\r\n setErrors: PropTypes.func,\r\n setSubmitting: PropTypes.func,\r\n handleBackPress: PropTypes.func,\r\n handleNextPress: PropTypes.func,\r\n isBackPressable: PropTypes.func,\r\n isNextPressable: PropTypes.func,\r\n resetForm: PropTypes.func,\r\n handleCountdownStop: PropTypes.func,\r\n};\r\n\r\nexport default enterEmail(EnterEmailForm);","import EnterEmailForm from './EnterEmailForm';\r\nexport default EnterEmailForm;","/* This is obtained from https://css-tricks.com/converting-color-spaces-in-javascript/ */\r\n/* Hex to HSL */\r\nexport function hexToHSL(H) {\r\n // Convert hex to RGB first\r\n let r = 0;\r\n let g = 0;\r\n let b = 0;\r\n\r\n if (H.length === 4) {\r\n r = `0x${H[1]}${H[1]}`;\r\n g = `0x${H[2]}${H[2]}`;\r\n b = `0x${H[3]}${H[3]}`;\r\n } else if (H.length === 7) {\r\n r = `0x${H[1]}${H[2]}`;\r\n g = `0x${H[3]}${H[4]}`;\r\n b = `0x${H[5]}${H[6]}`;\r\n }\r\n // Then to HSL\r\n r /= 255;\r\n g /= 255;\r\n b /= 255;\r\n\r\n const cmin = Math.min(r,g,b);\r\n const cmax = Math.max(r,g,b);\r\n const delta = cmax - cmin;\r\n\r\n let h = 0;\r\n let s = 0;\r\n let l = 0;\r\n \r\n if (delta === 0)\r\n h = 0;\r\n else if (cmax === r)\r\n h = ((g - b) / delta) % 6;\r\n else if (cmax === g)\r\n h = (b - r) / delta + 2;\r\n else\r\n h = (r - g) / delta + 4;\r\n \r\n h = Math.round(h * 60);\r\n \r\n if (h < 0)\r\n h += 360;\r\n \r\n l = (cmax + cmin) / 2;\r\n s = (delta === 0) ? 0 : delta / (1 - Math.abs(2 * l - 1));\r\n s = +(s * 100).toFixed(1);\r\n l = +(l * 100).toFixed(1);\r\n \r\n return { h, s, l };\r\n}\r\n\r\nexport function hexToHSLString(H) { \r\n const { h, s, l } = hexToHSL(H);\r\n return `hsl(${h}, ${s}%, ${l}%)`;\r\n}\r\n\r\n/* HSL to Hex */\r\nexport function HSLToHex(hue,saturation,light) {\r\n const h = hue;\r\n const s = saturation/100;\r\n const l = light/100;\r\n \r\n const c = (1 - Math.abs(2 * l - 1)) * s;\r\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\r\n const m = l - c/2;\r\n\r\n let r = 0;\r\n let g = 0;\r\n let b = 0; \r\n \r\n if (h >= 0 && h < 60) {\r\n r = c; g = x; b = 0;\r\n } else if (h >= 60 && h < 120) {\r\n r = x; g = c; b = 0;\r\n } else if (h >= 120 && h < 180) {\r\n r = 0; g = c; b = x;\r\n } else if (h >= 180 && h < 240) {\r\n r = 0; g = x; b = c;\r\n } else if (h >= 240 && h < 300) {\r\n r = x; g = 0; b = c;\r\n } else if (h >= 300 && h < 360) {\r\n r = c; g = 0; b = x;\r\n }\r\n // Having obtained RGB, convert channels to hex\r\n r = Math.round((r + m) * 255).toString(16);\r\n g = Math.round((g + m) * 255).toString(16);\r\n b = Math.round((b + m) * 255).toString(16);\r\n \r\n // Prepend 0s, if necessary\r\n if (r.length === 1)\r\n r = `0${r}`;\r\n if (g.length === 1)\r\n g = `0${g}`;\r\n if (b.length === 1)\r\n b = `0${b}`;\r\n \r\n return `#${r}${g}${b}`;\r\n}\r\n\r\nexport function HSLToHexFromString(hslString) { \r\n const sep = hslString.indexOf(\",\") > -1 ? \",\" : \" \";\r\n const hsl = hslString.substr(4).split(\")\")[0].split(sep);\r\n \r\n let h = hsl[0];\r\n const s = hsl[1].substr(0, hsl[1].length - 1) / 100;\r\n const l = hsl[2].substr(0, hsl[2].length - 1) / 100;\r\n \r\n // Strip label and convert to degrees (if necessary)\r\n if (h.indexOf(\"deg\") > -1)\r\n h = h.substr(0,h.length - 3);\r\n else if (h.indexOf(\"rad\") > -1)\r\n h = Math.round(h.substr(0,h.length - 3) * (180 / Math.PI));\r\n else if (h.indexOf(\"turn\") > -1)\r\n h = Math.round(h.substr(0,h.length - 4) * 360);\r\n if (h >= 360)\r\n h %= 360;\r\n \r\n return HSLToHex(h, s, l);\r\n}\r\n\r\nexport function ShadeAndTintHex(hex, value) {\r\n const { h, s, l } = hexToHSL(hex);\r\n\r\n const lowerLimit = (l - value) < 0 ? 0 : (l - value);\r\n const upperLimit = (l + value) > 99 ? 99 : (l + value);\r\n\r\n const lowerColor = HSLToHex(h, s, lowerLimit);\r\n const upperColor = HSLToHex(h, s, upperLimit);\r\n\r\n return { lowerColor, upperColor };\r\n}\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport OfflineForm from './forms/OfflineForm';\r\nimport NoDataErrorForm from './forms/NoDataErrorForm';\r\nimport SendCodeForm from './forms/SendCodeForm';\r\nimport EnterCodeForm from './forms/EnterCodeForm';\r\nimport FormContainer from \"./components/FormContainer\";\r\nimport FormLoader from './components/FormLoader';\r\nimport { sendAnalytics } from \"./api/sendAnalyticsAPI\";\r\n\r\n\r\nimport { redirecToSignIn } from './helpers/redirects';\r\nimport { ExtractUrlData } from './helpers/urls';\r\nimport { setActiveForm, generatePortalCode, checkPortalUser, sendPortalCode, loadPortalData, setPortalSsoCode } from './actions';\r\nimport * as f from './constants/formTypes';\r\nimport * as s from './PortalSignIn.styles';\r\nimport SniperLinkForm from './forms/SniperLinkForm';\r\nimport EnterEmailForm from './forms/EnterEmailForm';\r\nimport { hexToHSL, HSLToHex, ShadeAndTintHex } from './helpers/colorTransformations';\r\nimport { colors } from \"./base\";\r\n\r\nexport class PortalSignIn extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n displayLoading: false,\r\n attemptCount: 0,\r\n lastAttemptDateUTC: 0,\r\n };\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n if (\r\n nextProps.PortalBrandingColor !== this.props.PortalBrandingColor\r\n ) {\r\n const portalStyleTagId = 'portal-branding-styles';\r\n\r\n /* Creation of the css styles */\r\n const { lowerColor, upperColor } = ShadeAndTintHex(nextProps.PortalBrandingColor, 10);\r\n const hslColor = hexToHSL(nextProps.PortalBrandingColor);\r\n\r\n const css = `\r\n /* Background styles */\r\n .portal-signin-background {\r\n background-color: ${HSLToHex(hslColor.h, hslColor.s, 97)};\r\n }\r\n\r\n /* Panel styles */\r\n .portal-signin-panel {\r\n background: linear-gradient(210.98deg, ${lowerColor} 1.09%, ${upperColor} 101.6%);\r\n }\r\n\r\n /* Font styles */\r\n .portal-branding-font {\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : colors.white} !important;\r\n }\r\n\r\n /* Svg styles */\r\n .portal-branding-filling {\r\n fill: ${(hslColor.l > 65) ? colors['grey-dark'] : colors.white};\r\n }\r\n\r\n .portal-branding-stroke {\r\n stroke: ${nextProps.PortalBrandingColor};\r\n }\r\n\r\n /* Icon styles */\r\n .portal-branding-icon { \r\n background-color: ${HSLToHex(hslColor.h, hslColor.s, 95)}; \r\n } \r\n .portal-branding-icon > svg > path {\r\n fill: ${HSLToHex(hslColor.h, hslColor.s, 25)};\r\n }\r\n\r\n /* Button styles */\r\n .portal-branding-button.primary {\r\n background-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 5) : nextProps.PortalBrandingColor};\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 40) : nextProps.PortalBrandingColor};\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : colors.white};\r\n }\r\n .portal-branding-button.primary:hover {\r\n background-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, (hslColor.l - 5) - 10) : HSLToHex(hslColor.h, hslColor.s, hslColor.l + 20)};\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, (hslColor.l - 40) - 10) : HSLToHex(hslColor.h, hslColor.s, hslColor.l + 20)};\r\n }\r\n .portal-branding-button.primary:disabled:hover {\r\n background-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 5) : nextProps.PortalBrandingColor};\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 50) : nextProps.PortalBrandingColor};\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : colors.white};\r\n }\r\n\r\n .portal-branding-button.secondary {\r\n background-color: ${colors.white};\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 25) : nextProps.PortalBrandingColor};\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : nextProps.PortalBrandingColor};\r\n }\r\n .portal-branding-button.secondary:hover {\r\n background-color: ${colors.white};\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, (hslColor.l - 25) - 10) : HSLToHex(hslColor.h, hslColor.s, hslColor.l + 20)};\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : HSLToHex(hslColor.h, hslColor.s, hslColor.l + 20)};\r\n }\r\n .portal-branding-button.secondary:disabled:hover {\r\n background-color: ${colors.white};\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 25) : nextProps.PortalBrandingColor};\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : nextProps.PortalBrandingColor};\r\n }\r\n\r\n /* Input styles */\r\n .portal-branding-signin-email-input {\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 25) : nextProps.PortalBrandingColor} !important;\r\n }\r\n .portal-branding-signin-email-input:focus ~ .portal-branding-signin-email-label, .portal-branding-signin-email-input:focus-within ~ .portal-branding-signin-email-label {\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : nextProps.PortalBrandingColor} !important;\r\n }\r\n .portal-branding-signin-email-active {\r\n color: ${(hslColor.l > 65) ? colors['grey-dark'] : nextProps.PortalBrandingColor} !important;\r\n }\r\n .portal-branding-code-input:focus {\r\n border-color: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, (hslColor.l - 40) - 10) : HSLToHex(hslColor.h, hslColor.s, hslColor.l + 20)} !important;\r\n }\r\n .portal-branding-checked {\r\n background: ${(hslColor.l > 65) ? HSLToHex(hslColor.h, hslColor.s, hslColor.l - 5) : nextProps.PortalBrandingColor};\r\n }\r\n `;\r\n\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n const style = document.createElement('style');\r\n\r\n /* Deletion of existing styles */\r\n const existingBrandingStyle = document.getElementById(portalStyleTagId);\r\n\r\n if (existingBrandingStyle)\r\n head.removeChild(existingBrandingStyle);\r\n\r\n /* Added of the created css styles */\r\n head.appendChild(style);\r\n\r\n style.setAttribute('id', portalStyleTagId)\r\n style.type = 'text/css';\r\n if (style.styleSheet) {\r\n // This is required for IE8 and below.\r\n style.styleSheet.cssText = css;\r\n } else {\r\n style.appendChild(document.createTextNode(css));\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n componentDidMount() {\r\n const { pName, pQueryCode, pSsoCode, hasInvalidQuery } = new ExtractUrlData(window.location.href);\r\n\r\n // query is used to pass in the code for users coming directly through email\r\n if (hasInvalidQuery) {\r\n redirecToSignIn(pName);\r\n } else {\r\n this.props.loadPortalData(pName, pQueryCode, pSsoCode);\r\n // 1. get portalData\r\n // 2. next check if there're valid cookies\r\n // yes? redirect to portal app\r\n // 3. is there a code query in url\r\n // yes? go to enter code form\r\n // no? go to send email form\r\n }\r\n\r\n }\r\n\r\n onSSO = async (handleSubmitError) => {\r\n const {\r\n portalSsoCode,\r\n setPortalSsoCode\r\n } = this.props;\r\n\r\n const status = await this.onSendCode('', '', portalSsoCode, handleSubmitError);\r\n\r\n // Clean sso either if went good or bad\r\n setPortalSsoCode('');\r\n\r\n return status;\r\n };\r\n\r\n\r\n onGetUser = async (userEmail, handleSubmitError) => {\r\n const { AccountId } = this.props;\r\n\r\n let status = await this.props.checkPortalUser({\r\n AccountId,\r\n userEmail,\r\n handleSubmitError\r\n });\r\n\r\n if (status >= 200 && status < 300) {\r\n // Disabled until we have more options beside email\r\n // this.props.setActiveForm(f.SEND_CODE_BY_CHANNEL);\r\n\r\n status = await this.onSendEmail('', 'email', handleSubmitError);\r\n }\r\n\r\n return status;\r\n };\r\n\r\n onSendEmail = async (userPhone, picked, handleSubmitError, autoChangeForm = true) => {\r\n const { AccountId, userEmail, userSniperLink, PortalBrandingColor } = this.props;\r\n\r\n const { h, s } = hexToHSL(PortalBrandingColor)\r\n const status = await this.props.generatePortalCode({\r\n AccountId,\r\n userEmail,\r\n userPhone,\r\n picked,\r\n userSniperLink,\r\n handleSubmitError,\r\n BrandingColor: `${h}, ${s}%`,\r\n }); // returns a promise back to formik\r\n\r\n if (status >= 200 && status < 300) {\r\n if (autoChangeForm) {\r\n if (picked === 'email' && userSniperLink && userSniperLink.length > 0) {\r\n this.props.setActiveForm(f.SNIPER_LINK);\r\n } else {\r\n this.props.setActiveForm(f.ENTER_CODE);\r\n }\r\n }\r\n\r\n // reset code-entering attempt count to 0 on successful send\r\n this.setState({ attemptCount: 0 });\r\n this.setState({ lastAttemptDateUTC: 0 });\r\n }\r\n\r\n return status;\r\n };\r\n\r\n onSendCode = async (portalCode, stayOn, portalSsoCode, handleSubmitError) => {\r\n const { AccountId, userEmail, sendPortalCode, PortalName } = this.props;\r\n const { attemptCount } = this.state;\r\n\r\n const status = await sendPortalCode({\r\n AccountId,\r\n PortalName,\r\n userEmail,\r\n portalCode,\r\n stayOn,\r\n portalSsoCode,\r\n handleSubmitError\r\n }); // returns a promise back to formik\r\n\r\n if (status >= 200 && status < 300) {\r\n this.setState({ displayLoading: true });\r\n } else {\r\n // only increase attempt count on valid attempts (request passes form validation)\r\n const incrementedCount = attemptCount + 1;\r\n this.setState({ attemptCount: incrementedCount });\r\n this.setState({ lastAttemptDateUTC: Date.now() });\r\n }\r\n\r\n return status;\r\n };\r\n\r\n onSniperLink = () => {\r\n const { userSniperLink } = this.props;\r\n\r\n this.props.setActiveForm(f.ENTER_CODE);\r\n\r\n if (userSniperLink) {\r\n const currentDate = new Date();\r\n const userSniperLinkUncoded = String(userSniperLink).replace(\r\n \"[DATE]\",\r\n `${currentDate.getFullYear()}-${String(currentDate.getMonth() + 1).padStart(2, '0')}-${String(currentDate.getDate()).padStart(2, '0')}`\r\n );\r\n const userSniperLinkEncoded = encodeURI(userSniperLinkUncoded);\r\n\r\n window.open(userSniperLinkEncoded, '_blank');\r\n }\r\n }\r\n\r\n handleCountdownStop = () => {\r\n if (this.props.resetForm) {\r\n this.props.resetForm();\r\n }\r\n\r\n this.props.setActiveForm(f.ENTER_EMAIL);\r\n\r\n this.setState({ attemptCount: 0 });\r\n this.setState({ lastAttemptDateUTC: 0 });\r\n }\r\n\r\n onBackPress = () => {\r\n if (this.props.portalQueryCode) {\r\n // clear the url on back press\r\n redirecToSignIn(this.props.PortalName)\r\n } else {\r\n this.props.setActiveForm(f.SEND_CODE_BY_CHANNEL);\r\n }\r\n };\r\n\r\n onBackPress = () => {\r\n const {\r\n activeForm,\r\n setActiveForm,\r\n userSniperLink,\r\n } = this.props;\r\n\r\n switch (activeForm) {\r\n case f.SNIPER_LINK:\r\n // clear the url on back press\r\n if (this.props.portalQueryCode) {\r\n redirecToSignIn(this.props.PortalName);\r\n break;\r\n }\r\n setActiveForm(f.ENTER_EMAIL);\r\n break;\r\n\r\n case f.ENTER_CODE:\r\n if (userSniperLink && userSniperLink.length > 0) {\r\n setActiveForm(f.SNIPER_LINK);\r\n break;\r\n }\r\n\r\n // clear the url on back press\r\n if (this.props.portalQueryCode) {\r\n redirecToSignIn(this.props.PortalName);\r\n break;\r\n }\r\n setActiveForm(f.ENTER_EMAIL);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n onNextPress = () => {\r\n const {\r\n activeForm,\r\n setActiveForm,\r\n } = this.props;\r\n\r\n switch (activeForm) {\r\n case f.SNIPER_LINK:\r\n setActiveForm(f.ENTER_CODE);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n onContactClick = () => {\r\n const { AccountId, Name, isPortalEnabled, isActive } = this.props;\r\n sendAnalytics(\"Portal Contact Us Link Clicked\", AccountId, Name, isPortalEnabled, isActive, document.referrer);\r\n };\r\n\r\n isBackPressable = () => {\r\n const {\r\n activeForm,\r\n } = this.props;\r\n\r\n return activeForm === f.SNIPER_LINK ||\r\n activeForm === f.ENTER_CODE;\r\n }\r\n\r\n isNextPressable = () => {\r\n const {\r\n activeForm,\r\n } = this.props;\r\n\r\n return activeForm === f.SNIPER_LINK;\r\n }\r\n\r\n renderForms = formType => {\r\n const {\r\n Name,\r\n PortalContactEmail,\r\n PortalLogo,\r\n PortalLogoSignInVisible,\r\n PortalCompanyName,\r\n AccountId,\r\n formErrorId,\r\n portalQueryCode,\r\n userEmail,\r\n userEmailProvider,\r\n portalSsoCode,\r\n } = this.props;\r\n window.portalAccount = Name;\r\n\r\n const {\r\n attemptCount,\r\n } = this.state;\r\n\r\n switch (formType) {\r\n case f.NO_DATA:\r\n // NoDataErrorForm gets its error id from the reducer.\r\n // validation error messages inside the forms however, \r\n // get their error id directly from the response right after handleSubmit\r\n return \r\n\r\n case f.ENTER_EMAIL:\r\n return (\r\n \r\n );\r\n\r\n case f.SEND_CODE_BY_CHANNEL:\r\n return (\r\n 0) ? userPhones[0] : null}\r\n />\r\n );\r\n\r\n case f.SNIPER_LINK:\r\n return (\r\n \r\n );\r\n\r\n case f.ENTER_CODE:\r\n return (\r\n \r\n );\r\n\r\n case f.OFFLINE:\r\n return (\r\n \r\n )\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n activeForm,\r\n } = this.props;\r\n\r\n const {\r\n displayLoading,\r\n } = this.state;\r\n\r\n return (\r\n \r\n {activeForm && !((activeForm === f.ENTER_CODE || activeForm === f.ENTER_EMAIL) && displayLoading) && (\r\n \r\n {this.renderForms(activeForm)}\r\n \r\n )}\r\n {((activeForm === f.ENTER_CODE || activeForm === f.ENTER_EMAIL) && displayLoading) && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nfunction mapStateToProps({ activeFormReducer, portalDataReducer }) {\r\n return {\r\n ...activeFormReducer,\r\n ...portalDataReducer\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n { setActiveForm, generatePortalCode, checkPortalUser, sendPortalCode, loadPortalData, setPortalSsoCode }\r\n)(PortalSignIn);\r\n","import { generateCode } from \"../api/generateCodeAPI\";\r\n\r\n// Create the portal code and email it after user enters the email\r\nexport const generatePortalCode = ({AccountId, userEmail, handleSubmitError, BrandingColor }) => async (dispatch) => {\r\n // const {status, data} = await mockGenerateCode();\r\n const {status, data} = await generateCode(AccountId, userEmail, BrandingColor);\r\n \r\n if ( status >= 400 && status < 600 && handleSubmitError ) {\r\n handleSubmitError(data); // comes through withFormik\r\n }\r\n\r\n return status;\r\n};\r\n\r\n","import * as types from '../constants/actionTypes';\r\n\r\n// set requestId as the errorId when request fails\r\n// this state is primarily used inside \r\nexport const setErrorId = err => ({\r\n type: types.SET_NO_DATA_ERROR,\r\n payload: err\r\n});","import 'react-app-polyfill/ie11';\r\nimport 'core-js/fn/array/find';\r\nimport 'core-js/fn/array/find-index';\r\nimport 'core-js/fn/string/includes';\r\nimport 'core-js/fn/object/entries';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { createStore, applyMiddleware, compose } from 'redux';\r\nimport reduxThunk from 'redux-thunk';\r\nimport reducers from './reducers';\r\nimport PortalSignIn from './PortalSignIn';\r\nimport './index.css';\r\nimport { logError } from './api/errorLogger';\r\n// import Sandbox from './sandbox';\r\n// import * as serviceWorker from './serviceWorker';\r\n\r\n\r\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\nconst store = createStore(\r\n reducers, /* preloadedState, */ \r\n composeEnhancers(applyMiddleware(reduxThunk))\r\n);\r\n\r\nclass App extends React.Component {\r\n componentDidCatch(error, info) {\r\n logError({\r\n account: window.AccountId,\r\n error: `${error.message} || ${info.componentStack}`\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n};\r\n\r\nReactDOM.render( , document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: http://bit.ly/CRA-PWA\r\n// serviceWorker.unregister();\r\n"],"sourceRoot":""}