{"version":3,"sources":["components/Icons/backgroundIcon.png","components/Icons/MicrosoftBackground.png","pages/InviteTokenLanding/assets/ViewOrgChart.png","pages/InviteTokenLanding/assets/ViewProfile.png","pages/InviteTokenLanding/assets/ViewBigSearch.png","config.js","store/core.js","store/app.js","store/location.js","store/login.js","store/reducers.js","store/dataServiceActionHandlers.js","components/CoreLayout/whiteList.js","components/CoreSnackbar/CoreSnackbar.js","components/CoreSnackbar/index.js","components/CoreLayout/CoreLayout.js","components/CoreLayout/index.js","helpers/getHostDomain.js","components/DomainButton/DomainButton.js","components/SplitPageLeft.js","components/MicrosoftSplitPageLeft.js","components/SplitPageContainer.js","components/PageFooterNew.js","helpers/getIsInMsTeams.js","components/Icons/SiftLogoBlackNew.js","components/SplitPageRight.js","pages/DomainSelector/DomainSelector.js","pages/DomainSelector/index.js","pages/DomainSelector/container.js","components/SignInMethodButtons/SamlButton/SamlButton.js","components/SignInMethodButtons/SamlButton/index.js","components/SignInMethodButtons/StandardButton/StandardButton.js","pages/SignInMethod/SignInMethod.js","pages/SignInMethod/index.js","pages/SignInMethod/container.js","pages/StandardLogin/StandardLogin.js","pages/StandardLogin/container.js","pages/StandardLogin/index.js","pages/WorkEmail/WorkEmail.js","pages/WorkEmail/container.js","pages/WorkEmail/index.js","components/PasswordTextField/PasswordTextField.js","pages/PasswordReset/PasswordReset.js","pages/PasswordReset/container.js","pages/PasswordReset/index.js","pages/InviteTokenLanding/CreateYourPassword.js","pages/InviteTokenLanding/SsoEnabled.js","components/molecules/PictureCard.js","pages/InviteTokenLanding/DemoDataEnabled.js","pages/InviteTokenLanding/SetupAccount.js","pages/InviteTokenLanding/InviteTokenLanding.js","pages/InviteTokenLanding/container.js","pages/InviteTokenLanding/index.js","azureAuthConfig.js","components/Icons/ErrorFace.js","components/Loader/ErrorView.js","components/Loader/index.js","components/Icons/SubscriptionSuccess.js","pages/Microsoft/MicrosoftSubscriptionTable.js","pages/Microsoft/Confirm/SubscriptionInfo.js","pages/Microsoft/Confirm/MicrosoftConfirmSubscription.js","pages/Microsoft/Confirm/container.js","pages/Microsoft/Confirm/index.js","pages/Microsoft/MicrosoftSubscription.js","components/Router/index.js","components/Router/routes.js","components/ErrorBoundary/ErrorBoundary.js","components/Analytics/AnalyticsProvider/AnalyticsProvider.js","components/Analytics/AnalyticsProvider/wootric.js","components/Analytics/AnalyticsProvider/index.js","styles/palette.js","styles/theme.js","components/App/index.js","components/App/App.js","index.js","store/createStore.js"],"names":["module","exports","ACTION_HANDLERS","state","action","currentSnackbar","initialState","coreReducer","handler","type","params","payload","name","version","config","APP_VERSION","platform","appReducer","location","newLocation","createLocation","createPath","search","query","queryString","parse","locationReducer","window","LOCATION_CHANGE","nextState","routerReducer","fetchLoginOption","email","data","status","Status","States","LOADING","error","message","loginDomains","results","originalPayload","NORMAL","ERROR","passwordLoginResponse","isSaml","isSAML","isStandard","companyName","subscriptionConfirmationStatus","subscriptionConfirmationData","subscriptionData","loginCredentials","LoginReducer","makeRootReducer","asyncReducers","combineReducers","app","authentication","authenticationReducer","core","login","loginReducer","unauthorizedHandler","next","DataServiceActionHandlers","dataServiceActionHandlers","httpMethod","HTTPVerb","POST","route","clientId","directoryId","urlSegments","push","join","GET","subdomain","WHITE_LIST","CoreSnackbar","Snackbar","open","this","props","currentSnackbarOpen","onClose","expireSnackbar","autoHideDuration","React","PureComponent","mapDispatchToProps","connect","ownProps","Component","CoreLayout","parseQuery","validQuery","_pick","storeParams","classes","children","className","root","compose","withRouter","withStyles","theme","height","display","flexDirection","overflowY","getHostDomain","hostname","hostDomain","split","trim","toLowerCase","DomainButton","handleRoute","loginOptionResponseIndex","loginOptionResponse","history","preferredMethods","_get","loginOptions","otherMethods","allLoginOptions","concat","length","samlSubmit","redirectQuery","redirectUrl","baseUrl","href","Button","color","size","button","key","onClick","text","Typography","displayName","variant","marginBottom","spacing","textTransform","backgroundColor","palette","common","white","boxShadow","width","icon","marginRight","marginTop","textAlign","fontWeight","letterSpacing","primary","dark","fontSize","lineHeight","breakpoints","down","grey","SplitPageLeft","container","opacity","content","header","subheader","position","top","bottom","background","backgroundIcon","backgroundSize","backgroundPositionX","justifyContent","alignItems","fontStyle","fontStretch","marginLeft","maxWidth","useStyles","makeStyles","alt","data-testid","src","MicrosoftBackgroundIcon","minHeight","left","newLeft","marketing","purples","deep","fig","right","alignText","SplitPageContainer","isMicrosoft","classNames","MicrosoftSplitPageLeft","PageFooterNew","isInMsTeams","inTeams","link","target","rel","startIcon","id","data-name","xmlns","viewBox","fill","cx","cy","r","d","SplitPageRight","SiftLogoBlackNew","footer","flex","minWidth","alignContent","paddingLeft","paddingRight","DomainSelector","buttonContainer","map","index","goBack","main","black","secondary","SamlButton","qs","stringify","additionalParams","buttonCopy","samlButtonCopy","StandardButton","handleStandardLogin","match","SignInButtons","saml","standard","SignInMethod","renderPreferred","method","renderOptionsWithPreferred","renderOther","preferred","firstSubdomainLoginOptions","replace","isSignInMethodsValid","otherOptionsHeader","selectedDomainIndex","otherOption","subheaderOne","subheaderTwo","preferredOption","loginButtonsContainer","StandardLogin","password","errorState","standardSubmit","redirectTo","domainName","slice","indexOf","redirectPath","handleChange","event","setState","value","handleSubmit","preventDefault","isValidPassword","signInSubmit","setErrorState","prevProps","prevState","undefined","isLoading","hasError","loginWithPassword","forgotPassword","updateError","passwordInput","select","displayError","style","visibility","handleKeyPress","isNormal","anchorOrigin","vertical","horizontal","ContentProps","FormControl","input","InputLabel","labelSize","Input","autoFocus","inputSize","inputRef","onChange","onKeyPress","buttonLayout","disabled","itemType","forgotButton","domainButton","textfield","paddingBottom","borderColor","transition","placeholder","setCookies","additionalQueryParams","WorkEmail","emailInput","fetchLoginOptions","isValidEmail","test","String","pathname","preserveRedirectQuery","paddingTop","PasswordTextField","focused","hasBlurredOnce","setBlurredFalse","handlePasswordChange","passwordCallback","onFocus","toggleBlurredOnce","displayErrors","errorMessages","errors","msg","regex","i","displayTextfieldErrorOne","displayErrorText","helperTextContainer","FormHelperText","isInvalidPassword","validPasswordCallback","label","onBlur","PasswordReset","secondPassword","validPassword","validToken","resetPassword","resetToken","checkNewPasswordCriteria","handleChangeTwo","setValidPasswordCallback","setPasswordCallback","submitResetPassword","checkPasswordsMatch","fetchResetTokenValidation","textfields","onSubmit","inputTwo","passwordMessage","padding","passwordConfirm","CreateYourPassword","buttonLocked","unlockButton","submitPassword","setPasswordConfirmation","setPassword","toggleButton","datafromChild","a","submitPasswordInviteToken","inviteToken","isTrial","passwordConfirmed","headline","textBody","SsoEnabled","loginState","useSelector","dispatch","useDispatch","useRouteMatch","useEffect","find","item","borderRadius","shadows","cursor","hover","cardBottom","cardLink","textDecorationLine","whiteSpace","img","PictureCard","linkText","url","flexWrap","textFooter","DemoDataEnabled","ViewOrgChart","ViewProfile","ViewBigSearch","SetupAccount","InviteTokenLanding","confirmedPassword","passwordEntered","searchQuery","querySub","trialUsingDemoData","fetchInviteTokenValidation","nextComponent","msalConfig","auth","authority","redirectUri","encodeURIComponent","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","containsPii","LogLevel","Error","console","Info","info","Verbose","debug","Warning","warn","loginRequest","scopes","stroke","strokeWidth","fillRule","transform","rx","ry","ErrorView","defaultCopy","title","body","Fragment","classnames","ErrorFace","copy","overlay","overlayTransparent","isLoadingView","CircularProgress","aria-label","isErrorView","strokeMiterlimit","strokeLinecap","strokeLinejoin","inline","labels","MicrosoftSubscriptionTable","confirmedSubscriptionData","handleChangeCompany","siftSubscription","msSubscription","shouldRenderCompanyInput","_isEmpty","htmlFor","TextField","inputProps","hiddenLabel","SubscriptionInfo","onChangeCompanyName","onConfirm","shouldRenderConfirmButton","preConfirmationContent","postConfirmationContent","loader","MicrosoftConfirmSubscription","confirmSubscription","resolveSubscription","useMsal","instance","accounts","inProgress","queryParams","subscriptionToken","isAuthenticated","useIsAuthenticated","useState","setCompanyName","pageIsLoading","InteractionStatus","None","document","handleLogin","useCallback","bowser","firefox","firefoxos","loginPopup","catch","e","log","loginRedirect","acquireTokenSilent","account","then","response","idToken","handleConfirm","subscription","SubscriptionSuccess","combineStatuses","subscriptionId","MicrosoftSubscription","routeElems","path","component","DomainSelectorPage","exact","SignInMethodPage","StandardLoginPage","PasswordResetPage","InviteTokenLandingPage","msalInstance","PublicClientApplication","SiftRouter","createHistory","listen","context","analytics","page","contextTypes","PropTypes","object","isRequired","SlideUp","withProps","direction","Slide","ErrorBoundary","hadError","errorCode","onRefresh","reload","handleClose","str","hash","charCodeAt","Sentry","scope","setTag","toString","fullScreen","errorView","subtitle","refreshButton","Dialog","TransitionComponent","buttonRow","IconButton","customIntegrations","wootric","user","wootricSettings","external_id","account_token","survey_callback","date","Date","Intercom","last_wootric_surveyed_at","Math","round","getTime","decline_callback","last_wootric_declined__at","response_callback","score","comment","last_wootric_score","last_wootric_comment","setTimeout","AnalyticsProvider","client","trackers","ANALYTICS","moduleName","ajsName","options","initialize","identify","company","CUSTOM_ANALYTICS","forEach","custom","toggleIntercom","nextProps","intercomElem","getElementById","supportEnabled","childContextTypes","person","createPalette","phlox","fuschia","electric","veronica","gladiolus","monkshood","createTheme","typography","fontFamily","h2","overrides","MuiFormLabel","skipperDefaultPalette","gray1","App","store","CssBaseline","ThemeProvider","Theme","SENTRY","dsn","environment","ENV","MOUNT_NODE","ReactDOM","render","rootReducer","windowAppState","appState","api","API_ENV","LOGIN","bridge","getInitialState","dataService","DataService","middleware","thunk","composeEnhancers","createStore","applyMiddleware","setStore"],"mappings":"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","file":"static/js/main.3d423c18.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/backgroundIcon.1aed6d8d.png\";","module.exports = __webpack_public_path__ + \"static/media/MicrosoftBackground.ea2f8297.png\";","module.exports = __webpack_public_path__ + \"static/media/ViewOrgChart.d35ae348.png\";","module.exports = __webpack_public_path__ + \"static/media/ViewProfile.75f9910a.png\";","module.exports = __webpack_public_path__ + \"static/media/ViewBigSearch.db36334e.png\";","export default {\"ENV\":\"production\",\"API_ENV\":\"\",\"SENTRY\":\"https://ba6e0a8892c1416e9996bfefc8e5c044@sentry.io/1263604\",\"APP_VERSION\":\"2.0.2\"}","// ------------------------------------\n// Constants\n// ------------------------------------\nexport const SNACKBAR_EXPIRED = 'SNACKBAR_EXPIRED';\n\nexport const expireSnackbar = () => {\n return {\n type: SNACKBAR_EXPIRED,\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\nconst ACTION_HANDLERS = {\n [SNACKBAR_EXPIRED]: (state, action) => {\n return {\n ...state,\n currentSnackbar: null,\n };\n },\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nconst initialState = {\n currentSnackbar: null,\n};\n\nexport default function coreReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import config from 'config';\nexport const STORE_PARAMS = 'STORE_PARAMS';\n\nexport const storeParams = payload => {\n return {\n type: STORE_PARAMS,\n payload,\n };\n};\n\n// ------------------------------------\n// Action Handlers\n// ------------------------------------\n\nconst ACTION_HANDLERS = {\n [STORE_PARAMS]: (state, action) => {\n return {\n ...state,\n params: action.payload,\n };\n },\n};\n\nexport const initialState = {\n name: 'anon.web',\n version: config.APP_VERSION,\n platform: 'browser',\n params: {},\n};\n\n// ------------------------------------\n// Reducer\n// ------------------------------------\nexport default function appReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import queryString from 'query-string';\nimport { createPath, createLocation } from 'history';\n\nimport { routerReducer, LOCATION_CHANGE } from 'react-router-redux/reducer';\n\nexport { LOCATION_CHANGE } from 'react-router-redux/reducer';\n\nexport const initialState = location => {\n let newLocation = createLocation(createPath(location));\n\n if (location.search) {\n newLocation.query = queryString.parse(location.search);\n } else {\n newLocation.query = {};\n }\n\n return newLocation;\n};\n\nexport default function locationReducer(state = initialState(window.location), action) {\n if (action.type === LOCATION_CHANGE) {\n let nextState = {\n ...state,\n ...routerReducer(state, action).location,\n };\n\n nextState.query = queryString.parse(nextState.search);\n return nextState;\n }\n\n return state;\n}\n","import { Status, States } from '@sift/resift/models/Status';\n\n// Actions\nexport const DOMAIN_OPTIONS_FETCH = 'DOMAIN_OPTIONS_FETCH';\nexport const DOMAIN_OPTIONS_FETCH_SUCCESS = 'DOMAIN_OPTIONS_FETCH_SUCCESS';\nexport const DOMAIN_OPTIONS_FETCH_ERROR = 'DOMAIN_OPTIONS_FETCH_ERROR';\n\nexport const REDIRECT_QUERY_FETCH = 'REDIRECT_QUERY_FETCH';\n\nexport const PASSWORD_LOGIN_FETCH = 'PASSWORD_LOGIN_FETCH';\nexport const PASSWORD_LOGIN_FETCH_SUCCESS = 'PASSWORD_LOGIN_FETCH_SUCCESS';\nexport const PASSWORD_LOGIN_FETCH_ERROR = 'PASSWORD_LOGIN_FETCH_ERROR';\n\nexport const FORGOT_PASSWORD_FETCH = 'FORGOT_PASSWORD_FETCH';\nexport const FORGOT_PASSWORD_FETCH_SUCCESS = 'FORGOT_PASSWORD_FETCH_SUCCESS';\nexport const FORGOT_PASSWORD_FETCH_ERROR = 'FORGOT_PASSWORD_FETCH_ERROR';\n\nexport const VALIDATE_RESET_TOKEN_FETCH = 'VALIDATE_RESET_TOKEN_FETCH';\nexport const VALIDATE_RESET_TOKEN_FETCH_SUCCESS = 'VALIDATE_RESET_TOKEN_FETCH_SUCCESS';\nexport const VALIDATE_RESET_TOKEN_FETCH_ERROR = 'VALIDATE_RESET_TOKEN_FETCH_ERROR';\n\nexport const RESET_PASSWORD_FETCH = 'RESET_PASSWORD_FETCH';\nexport const RESET_PASSWORD_FETCH_SUCCESS = 'RESET_PASSWORD_FETCH_SUCCESS';\nexport const RESET_PASSWORD_FETCH_ERROR = 'RESET_PASSWORD_FETCH_ERROR';\n\nexport const VALIDATE_INVITE_TOKEN_FETCH = 'VALIDATE_INVITE_TOKEN_FETCH';\nexport const VALIDATE_INVITE_TOKEN_FETCH_SUCCESS = 'VALIDATE_INVITE_TOKEN_FETCH_SUCCESS';\nexport const VALIDATE_INVITE_TOKEN_FETCH_ERROR = 'VALIDATE_INVITE_TOKEN_FETCH_ERROR';\n\nexport const COMPLETE_PASSWORD_INVITE_FETCH = 'COMPLETE_PASSWORD_INVITE_FETCH';\nexport const COMPLETE_PASSWORD_INVITE_FETCH_SUCCESS = 'COMPLETE_PASSWORD_INVITE_FETCH_SUCCESS';\nexport const COMPLETE_PASSWORD_INVITE_FETCH_ERROR = 'COMPLETE_PASSWORD_INVITE_FETCH_ERROR';\n\nexport const CONFIRM_SUBSCRIPTION_FETCH = 'CONFIRM_SUBSCRIPTION_FETCH';\nexport const CONFIRM_SUBSCRIPTION_FETCH_SUCCESS = 'CONFIRM_SUBSCRIPTION_FETCH_SUCCESS';\nexport const CONFIRM_SUBSCRIPTION_FETCH_ERROR = 'CONFIRM_SUBSCRIPTION_FETCH_ERROR';\n\nexport const RESOLVE_SUBSCRIPTION_FETCH = 'RESOLVE_SUBSCRIPTION_FETCH';\nexport const RESOLVE_SUBSCRIPTION_FETCH_SUCCESS = 'RESOLVE_SUBSCRIPTION_FETCH_SUCCESS';\nexport const RESOLVE_SUBSCRIPTION_FETCH_ERROR = 'RESOLVE_SUBSCRIPTION_FETCH_ERROR';\n\nexport function fetchLoginOption(email) {\n return {\n type: DOMAIN_OPTIONS_FETCH,\n payload: {\n data: {\n email,\n },\n },\n };\n}\n\nexport function loginWithPassword(\n email,\n password,\n setCookies,\n clientId,\n directoryId = null,\n additionalQueryParams,\n) {\n return {\n type: PASSWORD_LOGIN_FETCH,\n payload: {\n data: {\n email,\n clientId,\n directoryId,\n password,\n setCookies,\n },\n query: additionalQueryParams,\n },\n };\n}\n\nexport function forgotPassword(email, clientId, directoryId = null) {\n return {\n type: FORGOT_PASSWORD_FETCH,\n payload: {\n data: {\n email,\n clientId,\n directoryId,\n },\n },\n };\n}\n\nexport function fetchResetTokenValidation(resetToken, subdomain) {\n return {\n type: VALIDATE_RESET_TOKEN_FETCH,\n payload: {\n query: {\n resetToken,\n subdomain,\n },\n },\n };\n}\n\nexport function resetPassword(password, passwordConfirm, resetToken, subdomain) {\n return {\n type: RESET_PASSWORD_FETCH,\n payload: {\n data: {\n password,\n passwordConfirm,\n resetToken,\n subdomain,\n },\n },\n };\n}\n\nexport function fetchInviteTokenValidation(inviteToken, subdomain) {\n return {\n type: VALIDATE_INVITE_TOKEN_FETCH,\n payload: {\n query: {\n inviteToken,\n subdomain,\n },\n },\n };\n}\n\nexport function submitPasswordInviteToken(inviteToken, password, subdomain) {\n return {\n type: COMPLETE_PASSWORD_INVITE_FETCH,\n payload: {\n data: {\n inviteToken,\n password,\n subdomain,\n },\n },\n };\n}\n\nexport function preserveRedirectQuery(query, search) {\n return {\n type: REDIRECT_QUERY_FETCH,\n payload: {\n data: {\n query,\n search,\n },\n },\n };\n}\n\nexport function resolveSubscription(idToken, subscriptionToken) {\n return {\n type: RESOLVE_SUBSCRIPTION_FETCH,\n payload: {\n data: {\n idToken,\n subscriptionToken,\n },\n },\n };\n}\n\nexport function confirmSubscription(idToken, subscriptionId, companyName) {\n return {\n type: CONFIRM_SUBSCRIPTION_FETCH,\n payload: {\n data: {\n idToken,\n subscriptionId,\n companyName,\n },\n },\n };\n}\n\n// TODO: Helper functions for most of these\n// Action Handlers\nconst ACTION_HANDLERS = {\n [DOMAIN_OPTIONS_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n error: action.payload.data.message || '',\n };\n },\n [DOMAIN_OPTIONS_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n error: action.payload.data.message || '',\n loginDomains: action.payload.data.results,\n email: action.originalPayload.data.email,\n status: new Status(States.NORMAL),\n };\n },\n [DOMAIN_OPTIONS_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n error: action.payload.data.message,\n status: new Status(States.ERROR),\n };\n },\n [PASSWORD_LOGIN_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [PASSWORD_LOGIN_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n passwordLoginResponse: action.payload.data,\n status: new Status(States.NORMAL),\n };\n },\n [PASSWORD_LOGIN_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n [FORGOT_PASSWORD_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [FORGOT_PASSWORD_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n };\n },\n [FORGOT_PASSWORD_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n [VALIDATE_RESET_TOKEN_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [VALIDATE_RESET_TOKEN_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n data: action.payload.data,\n status: new Status(States.NORMAL),\n };\n },\n [VALIDATE_RESET_TOKEN_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n error: action.payload.error,\n status: new Status(States.ERROR),\n };\n },\n [RESET_PASSWORD_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [RESET_PASSWORD_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n status: new Status(States.NORMAL),\n };\n },\n [RESET_PASSWORD_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n [VALIDATE_INVITE_TOKEN_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [VALIDATE_INVITE_TOKEN_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n status: new Status(States.NORMAL),\n isSaml: action.payload.data.isSAML,\n isStandard: action.payload.data.isStandard,\n email: action.payload.data.email,\n companyName: action.payload.data.companyName,\n };\n },\n [VALIDATE_INVITE_TOKEN_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n error: action.payload.error,\n };\n },\n [COMPLETE_PASSWORD_INVITE_FETCH]: (state, action) => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [COMPLETE_PASSWORD_INVITE_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n status: new Status(States.NORMAL),\n };\n },\n [COMPLETE_PASSWORD_INVITE_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n };\n },\n [REDIRECT_QUERY_FETCH]: (state, action) => {\n return {\n ...state,\n query: action.payload.data.query,\n search: action.payload.data.search,\n };\n },\n [CONFIRM_SUBSCRIPTION_FETCH]: state => {\n return {\n ...state,\n subscriptionConfirmationStatus: new Status(States.LOADING),\n };\n },\n [CONFIRM_SUBSCRIPTION_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n subscriptionConfirmationStatus: new Status(States.NORMAL),\n subscriptionConfirmationData: action.payload.data,\n };\n },\n [CONFIRM_SUBSCRIPTION_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n subscriptionConfirmationStatus: new Status(States.ERROR),\n error: action.payload.error,\n };\n },\n [RESOLVE_SUBSCRIPTION_FETCH]: state => {\n return {\n ...state,\n status: new Status(States.LOADING),\n };\n },\n [RESOLVE_SUBSCRIPTION_FETCH_SUCCESS]: (state, action) => {\n return {\n ...state,\n status: new Status(States.NORMAL),\n subscriptionData: action.payload.data,\n };\n },\n [RESOLVE_SUBSCRIPTION_FETCH_ERROR]: (state, action) => {\n return {\n ...state,\n status: new Status(States.ERROR),\n error: action.payload.error,\n };\n },\n};\n\n// Reducer\nexport const initialState = {\n status: new Status(States.NORMAL),\n error: '',\n loginDomains: [],\n passwordLoginResponse: {},\n email: '',\n data: {},\n loginCredentials: {},\n query: '',\n search: '',\n subscriptionData: {},\n subscriptionConfirmationStatus: new Status(States.NORMAL),\n subscriptionConfirmationData: {},\n};\n\nexport default function LoginReducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type];\n return handler ? handler(state, action) : state;\n}\n","import { combineReducers } from 'redux';\nimport coreReducer from './core';\nimport appReducer from './app';\nimport authenticationReducer from '@sift/resift/redux/reducers/authentication.web';\nimport locationReducer from './location';\nimport loginReducer from './login';\n// add the reducers in\n// TODO: add the non asyncronous reducers here.\nexport const makeRootReducer = asyncReducers => {\n return combineReducers({\n app: appReducer,\n authentication: authenticationReducer,\n core: coreReducer,\n location: locationReducer,\n login: loginReducer,\n ...asyncReducers,\n });\n};\n\nexport const injectReducer = (store, { key, reducer }) => {\n if (Object.hasOwnProperty.call(store.asyncReducers, key)) return;\n\n store.asyncReducers[key] = reducer;\n store.replaceReducer(makeRootReducer(store.asyncReducers));\n};\n\nexport default makeRootReducer;\n","// Libs\nimport { HTTPVerb } from '@sift/resift/redux/DataService';\nimport dataServiceActionHandlers from '@sift/resift/redux/reducers/dataServiceActionHandlers';\n\n// Actions\nimport {\n DOMAIN_OPTIONS_FETCH,\n PASSWORD_LOGIN_FETCH,\n FORGOT_PASSWORD_FETCH,\n VALIDATE_RESET_TOKEN_FETCH,\n RESET_PASSWORD_FETCH,\n VALIDATE_INVITE_TOKEN_FETCH,\n COMPLETE_PASSWORD_INVITE_FETCH,\n CONFIRM_SUBSCRIPTION_FETCH,\n RESOLVE_SUBSCRIPTION_FETCH,\n} from './login';\n// Routes\n// TODO: add routes here\n\nexport const unauthorizedHandler = (next, action) => {\n // do nothing because we expect unauthorized on the login site\n};\n\nexport const DataServiceActionHandlers = {\n ...dataServiceActionHandlers,\n\n [DOMAIN_OPTIONS_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: 'loginoptions',\n },\n\n [PASSWORD_LOGIN_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n const { clientId, directoryId } = action.payload.data;\n const urlSegments = ['login', clientId];\n\n if (directoryId) {\n urlSegments.push(directoryId);\n }\n\n urlSegments.push('password');\n\n // login/:clientId/:directoryId?/password\n return urlSegments.join('/');\n },\n },\n\n [FORGOT_PASSWORD_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n const { clientId, directoryId } = action.payload.data;\n const urlSegments = ['login', clientId];\n\n if (directoryId) {\n urlSegments.push(directoryId);\n }\n\n urlSegments.push('password', 'forgot');\n\n // login/:clientId/:directoryId?/password/forgot\n return urlSegments.join('/');\n },\n },\n\n [VALIDATE_RESET_TOKEN_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `login/${action.payload.query.subdomain}/password/reset`;\n },\n },\n\n [RESET_PASSWORD_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `login/${action.payload.data.subdomain}/password/reset`;\n },\n },\n\n [VALIDATE_INVITE_TOKEN_FETCH]: {\n httpMethod: HTTPVerb.GET,\n route: (state, action) => {\n return `invite/${action.payload.query.subdomain}/complete`;\n },\n },\n\n [COMPLETE_PASSWORD_INVITE_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: (state, action) => {\n return `invite/${action.payload.data.subdomain}/complete`;\n },\n },\n [CONFIRM_SUBSCRIPTION_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: () => {\n return 'vendor/microsoft/sift-subscriptions';\n },\n },\n [RESOLVE_SUBSCRIPTION_FETCH]: {\n httpMethod: HTTPVerb.POST,\n route: () => {\n return 'vendor/microsoft/subscription-registrations';\n },\n },\n};\n\nexport default DataServiceActionHandlers;\n","/** This whitelist is for query parameters that we want to send off to the api\n */\n\nexport const WHITE_LIST = [\n // OAuth parameters\n 'response_type',\n 'redirect_uri',\n 'state',\n 'client_id',\n\n // A path to direct to after login on the Sift app\n 'redirectTo',\n // If set to true, will initialize Azure AD permission flow on login, used for MS Teams meeting integration\n 'initAzureADLogin',\n];\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Snackbar from '@material-ui/core/Snackbar';\n\nclass CoreSnackbar extends React.PureComponent {\n static propTypes = {\n currentSnackbarOpen: PropTypes.bool.isRequired,\n currentSnackbar: PropTypes.string,\n expireSnackbar: PropTypes.func.isRequired,\n };\n\n render() {\n return (\n \n );\n }\n}\n\nexport default CoreSnackbar;\n","import Component from './CoreSnackbar';\n\n// Libs\nimport { connect } from 'react-redux';\n\n// Actions\nimport { expireSnackbar } from 'store/core';\n\n/* This is a container component. Notice it does not contain any JSX,\n nor does it import React. This component is **only** responsible for\n wiring in the actions and state necessary to render a presentational\n component - in this case, the counter: */\n\nconst mapDispatchToProps = {\n expireSnackbar,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n currentSnackbar: state.core.currentSnackbar,\n currentSnackbarOpen: !!state.core.currentSnackbar,\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(Component);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport compose from 'recompose/compose';\nimport { withRouter } from 'react-router';\nimport { parse as parseQuery } from 'query-string';\nimport { WHITE_LIST } from './whiteList';\nimport _pick from 'lodash/pick';\n\n// Component\nimport CoreSnackbar from 'components/CoreSnackbar';\n\n// Styles\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => {\n return {\n root: {\n height: '100vh',\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'hidden',\n '@media print': {\n height: 'auto',\n },\n },\n };\n};\n\nclass CoreLayout extends React.PureComponent {\n static propTypes = {\n children: PropTypes.node,\n classes: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n storeParams: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n const query = parseQuery(this.props.location.search);\n const validQuery = _pick(query, WHITE_LIST);\n this.props.storeParams(validQuery);\n }\n\n render() {\n const { classes, children } = this.props;\n\n return (\n
\n {children}\n \n
\n );\n }\n}\n\nexport default compose(\n withRouter,\n withStyles(styles),\n)(CoreLayout);\n","import Component from './CoreLayout';\n\n// Libs\nimport { connect } from 'react-redux';\n\nimport { storeParams } from 'store/app';\n\nconst mapDispatchToProps = {\n storeParams,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n // This is needed even tho it's empty\n return {};\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(Component);\n","export const STAGING_DOMAIN = 'siftstaging';\nexport default function getHostDomain() {\n const hostname = window.location.hostname;\n if (!hostname) {\n return undefined;\n }\n\n const hostDomain = (hostname.split('.')[1] || '').trim().toLowerCase();\n if (!hostDomain) {\n return STAGING_DOMAIN;\n }\n\n return hostDomain;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport _get from 'lodash/get';\nimport getHostDomain from 'helpers/getHostDomain';\n\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = theme => {\n return {\n button: {\n display: 'block',\n marginBottom: theme.spacing(2),\n textTransform: 'none',\n backgroundColor: theme.palette.common.white,\n '&:hover': {\n backgroundColor: theme.palette.common.white,\n boxShadow: '0px 3px 3px 1px rgba(33, 33, 33, 0.2)',\n },\n width: '100%',\n height: 70,\n boxShadow: '0 1px 3px 0 rgba(33, 33, 33, 0.2)',\n },\n\n icon: {\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n text: {\n textAlign: 'left',\n },\n displayName: {\n fontWeight: 600,\n letterSpacing: 0.3,\n color: theme.palette.primary.dark,\n fontSize: 21,\n lineHeight: '1.46429em',\n [theme.breakpoints.down('xs')]: {\n fontSize: 21,\n },\n },\n subdomain: {\n color: theme.palette.grey[800],\n marginBottom: theme.spacing(1),\n fontSize: 17,\n [theme.breakpoints.down('xs')]: {\n fontSize: 12,\n },\n },\n };\n};\n\nclass DomainButton extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n loginOptionResponse: PropTypes.object.isRequired,\n loginOptionResponseIndex: PropTypes.number.isRequired,\n redirectQuery: PropTypes.string,\n redirectUrl: PropTypes.string,\n history: PropTypes.object,\n };\n\n handleRoute = () => {\n const { loginOptionResponseIndex, loginOptionResponse, history } = this.props;\n\n const preferredMethods = _get(loginOptionResponse.loginOptions, 'preferredMethods', []);\n const otherMethods = _get(loginOptionResponse.loginOptions, 'otherMethods', []);\n const allLoginOptions = preferredMethods.concat(otherMethods);\n\n if (allLoginOptions.length === 1) {\n if (allLoginOptions[0] === 'saml') {\n this.samlSubmit();\n } else if (allLoginOptions[0] === 'standard') {\n history.push(`/standard/${loginOptionResponseIndex}`);\n }\n } else {\n history.push(`/sign-in/${loginOptionResponseIndex}`);\n }\n };\n\n samlSubmit = () => {\n // TODO(digia): Refactor samlSubmit logic into a component or helper function\n const { redirectQuery, redirectUrl, loginOptionResponse } = this.props;\n const { clientId, loginOptions } = loginOptionResponse;\n\n const urlSegments = ['/api', 'login', clientId];\n\n if (loginOptions.directoryId) {\n urlSegments.push(loginOptions.directoryId);\n }\n\n urlSegments.push('saml');\n\n // login.justsift.com/api/login/:clientId/:directoryId?/saml\n const baseUrl = urlSegments.join('/');\n\n if (!redirectQuery) {\n // This is going outside of the app, redirecting to the saml login page\n window.location.href = baseUrl;\n } else {\n window.location.href = baseUrl + redirectUrl;\n }\n };\n\n render() {\n const { classes, loginOptionResponse } = this.props;\n const hostDomain = getHostDomain();\n\n return (\n \n
\n
\n \n {loginOptionResponse.displayName}\n \n \n {loginOptionResponse.subdomain}.{hostDomain}.com\n \n
\n
\n \n );\n }\n}\n\nexport default withStyles(styles)(DomainButton);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport backgroundIcon from 'components/Icons/backgroundIcon.png';\nimport grey from '@material-ui/core/colors/grey';\nimport Typography from '@material-ui/core/Typography';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n container: {\n position: 'relative',\n width: '100%',\n height: '100%',\n },\n opacity: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n background: `url(${backgroundIcon})`,\n backgroundSize: theme.spacing(100),\n backgroundPositionX: theme.spacing(-8),\n width: '100%',\n opacity: 0.22,\n },\n content: {\n position: 'relative',\n width: '100%',\n marginTop: -theme.spacing(10),\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n flexDirection: 'column',\n },\n header: {\n width: '100%',\n fontSize: 50.9,\n letterSpacing: 'normal',\n fontWeight: 'normal',\n fontStyle: 'normal',\n fontStretch: 'normal',\n marginLeft: theme.spacing(5),\n maxWidth: 360,\n color: grey[50],\n lineHeight: '1.46429em',\n [theme.breakpoints.down('md')]: {\n fontSize: 40,\n maxWidth: 280,\n },\n [theme.breakpoints.down('sm')]: {\n fontSize: 26,\n maxWidth: 190,\n },\n },\n subheader: {\n fontSize: 19,\n fontWeight: 400,\n lineHeight: 1.41,\n letterSpacing: 0.2,\n color: grey[50],\n maxWidth: 320,\n marginTop: theme.spacing(1),\n marginLeft: theme.spacing(5),\n [theme.breakpoints.down('md')]: {\n fontSize: 14,\n maxWidth: 270,\n },\n [theme.breakpoints.down('sm')]: {\n fontSize: 10,\n maxWidth: 200,\n },\n },\n };\n};\n\nclass SplitPageLeft extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n };\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n We're so happy to have you here\n \n Sift's people platform is engineered to bring out the best in you and your teams.\n \n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(SplitPageLeft);\n","import React from 'react';\n\nimport MicrosoftBackgroundIcon from 'components/Icons/MicrosoftBackground.png';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction SplitPageLeft() {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n container: {\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n icon: {\n width: '80%',\n },\n };\n});\n\nexport default SplitPageLeft;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport SplitPageLeft from './SplitPageLeft';\nimport MicrosoftSplitPageLeft from './MicrosoftSplitPageLeft';\n\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction SplitPageContainer({ children, isMicrosoft = false }) {\n const classes = useStyles();\n\n return (\n
\n
\n {isMicrosoft ? : }\n
\n
{children}
\n
\n );\n}\n\nSplitPageContainer.propTypes = {\n children: PropTypes.object,\n isMicrosoft: PropTypes.bool,\n};\n\nconst useStyles = makeStyles(theme => ({\n container: {\n minHeight: '100%',\n display: 'flex',\n flexDirection: 'row',\n fontStyle: 'normal',\n backgroundColor: '#ffffff',\n },\n left: {\n width: '40%',\n maxWidth: 600,\n background: 'linear-gradient(324deg, #431a6e, #813be1 92%, #773dbd)',\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n newLeft: {\n background: `linear-gradient(180deg, ${theme.palette.marketing.purples.deep}00 0%, ${\n theme.palette.marketing.purples.deep\n } 100%), ${theme.palette.marketing.purples.fig}`,\n },\n right: {\n width: '60%',\n maxWidth: 960,\n height: '100vh',\n overflowY: 'auto',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n height: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n alignText: 'center',\n },\n },\n}));\n\nexport default SplitPageContainer;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport Button from '@material-ui/core/Button';\nimport LaunchIcon from '@material-ui/icons/Launch';\nimport getIsInMsTeams from 'helpers/getIsInMsTeams';\n\nconst styles = theme => {\n return {\n root: {\n fontSize: 14,\n color: theme.palette.grey[600],\n fontWeight: 'bold',\n lineHeight: 1.1,\n letterSpacing: 1.3,\n },\n link: {\n marginRight: theme.spacing(9),\n color: 'inherit',\n [theme.breakpoints.down('sm')]: {\n marginRight: theme.spacing(2),\n marginLeft: theme.spacing(2),\n },\n },\n };\n};\n\nclass PageFooterNew extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n };\n\n render() {\n const { classes } = this.props;\n const isInMsTeams = getIsInMsTeams();\n\n return (\n
\n : null}\n >\n SECURITY\n \n : null}\n >\n ABOUT SIFT\n \n
\n );\n }\n}\n\nexport default withStyles(styles)(PageFooterNew);\n","import queryString from 'query-string';\n\nexport default function getIsInMsTeams() {\n const parsed = queryString.parse(window.location.search);\n\n return parsed.inTeams;\n}\n","import React from 'react';\n\nexport default props => (\n \n \n Sift_RBG_ColorBlack\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport PageFooterNew from './PageFooterNew';\nimport SiftLogoBlackNew from 'components/Icons/SiftLogoBlackNew';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n container: {\n marginLeft: theme.spacing(7.5),\n marginRight: theme.spacing(7.5),\n height: '100vh',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n [theme.breakpoints.down('sm')]: {\n marginLeft: 0,\n marginRight: 0,\n marginTop: theme.spacing(1),\n alignItems: 'center',\n },\n },\n header: {\n marginTop: theme.spacing(2),\n [theme.breakpoints.down('sm')]: {\n marginTop: theme.spacing(1),\n },\n },\n children: {\n flex: '1 1 auto',\n minWidth: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n [theme.breakpoints.down('sm')]: {\n marginTop: 0,\n textAlign: 'center',\n justifyContent: 'flex-start',\n alignContent: 'center',\n alignItems: 'center',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n },\n '& > div': {\n width: '100%',\n },\n },\n footer: {\n marginTop: theme.spacing(4),\n display: 'flex',\n height: 60,\n justifyContent: 'center',\n alignItems: 'center',\n [theme.breakpoints.down('sm')]: {\n position: 'relative',\n marginBottom: theme.spacing(),\n alignContent: 'center',\n flexDirection: 'column',\n },\n },\n };\n};\n\nclass SplitPageRight extends Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n children: PropTypes.node,\n };\n\n render() {\n const { classes, children } = this.props;\n return (\n
\n
\n \n
\n
\n
{children}
\n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(SplitPageRight);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DomainButton from 'components/DomainButton/DomainButton';\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\n\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n root: {\n paddingLeft: 0,\n paddingRight: 0,\n },\n header: {\n fontSize: 50.9,\n color: theme.palette.primary.main,\n marginTop: theme.spacing(9),\n [theme.breakpoints.down('xs')]: {\n fontSize: 30.9,\n marginTop: theme.spacing(2),\n },\n },\n subheader: {\n color: theme.palette.common.black,\n fontSize: 17,\n },\n button: {\n marginTop: theme.spacing(3),\n color: theme.palette.secondary.dark,\n },\n buttonContainer: {\n marginTop: theme.spacing(3),\n display: 'block',\n width: 430,\n [theme.breakpoints.down('sm')]: {\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n [theme.breakpoints.down('xs')]: {\n width: '90%',\n },\n },\n };\n};\n\nclass DomainSelector extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n loginDomains: PropTypes.array.isRequired,\n email: PropTypes.string.isRequired,\n history: PropTypes.object.isRequired,\n };\n\n componentDidMount() {\n if (this.props.loginDomains.length === 0) {\n this.props.history.push(`/`);\n }\n }\n\n render() {\n const { classes, loginDomains, email, history } = this.props;\n return (\n \n \n \n Select a Sift Domain\n \n \n {email}\n \n
\n {loginDomains.map((loginOptionResponse, index) => (\n \n ))}\n
\n \n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(DomainSelector);\n","import container from './container';\nexport default container;\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// View\nimport DomainSelector from './DomainSelector';\n\nconst mapStateToProps = (state, ownProps) => {\n // retainer\n return {\n loginDomains: state.login.loginDomains,\n email: state.login.email,\n };\n};\n\nexport default compose(\n withRouter,\n connect(mapStateToProps),\n)(DomainSelector);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport qs from 'query-string';\n\nimport Button from '@material-ui/core/Button';\n\nconst styles = theme => {\n return {\n button: {\n fontSize: 14.6,\n fontWeight: 'bold',\n lineHeight: 1.1,\n letterSpacing: 1.25,\n marginBottom: theme.spacing(1),\n width: 265,\n height: 39,\n marginTop: theme.spacing(1),\n },\n };\n};\n\nclass SamlButton extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object,\n loginOptionResponse: PropTypes.object,\n color: PropTypes.string,\n additionalParams: PropTypes.object.isRequired,\n };\n\n samlSubmit = () => {\n // TODO(digia): Refactor samlSubmit logic into a component or helper function\n const { loginOptionResponse } = this.props;\n const { clientId, loginOptions } = loginOptionResponse;\n const queryString = qs.stringify(this.props.additionalParams);\n\n const urlSegments = ['/api', 'login', clientId];\n\n if (loginOptions.directoryId) {\n urlSegments.push(loginOptions.directoryId);\n }\n\n urlSegments.push('saml');\n\n // login.justsift.com/api/login/:clientId/:directoryId?/saml\n const baseUrl = urlSegments.join('/');\n\n window.location.href = `${baseUrl}?${queryString}`;\n };\n\n render() {\n const { classes, color, loginOptionResponse } = this.props;\n const buttonCopy = loginOptionResponse.loginOptions.samlButtonCopy || 'Use Company Login (SSO)';\n\n return (\n \n );\n }\n}\n\nexport default withStyles(styles)(SamlButton);\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// Actions\n\n// View\nimport SamlButton from './SamlButton';\n\nconst mapDispatchToProps = {};\n\nconst mapStateToProps = (state, ownProps) => {\n // retainer\n return {\n redirectQuery: state.login.query,\n redirectUrl: state.login.search,\n additionalParams: state.app.params,\n };\n};\n\nexport default compose(\n withRouter,\n connect(\n mapStateToProps,\n mapDispatchToProps,\n ),\n)(SamlButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport _get from 'lodash/get';\n\nimport Button from '@material-ui/core/Button';\n\nconst styles = theme => {\n return {\n button: {\n fontSize: 14.6,\n lineHeight: 1.1,\n letterSpacing: 1.25,\n marginBottom: theme.spacing(1),\n width: 265,\n height: 39,\n fontWeight: 'bold',\n marginTop: theme.spacing(1),\n },\n };\n};\n\nclass StandardButton extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n color: PropTypes.string,\n match: PropTypes.object,\n history: PropTypes.object,\n };\n\n handleStandardLogin = () => {\n const { match, history } = this.props;\n history.push(`/standard/${_get(match, 'params.id')}`, 0);\n };\n\n render() {\n const { classes, color } = this.props;\n return (\n \n Use Standard Login\n \n );\n }\n}\n\nexport default withStyles(styles)(StandardButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport getHostDomain from 'helpers/getHostDomain';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\nimport SamlButton from 'components/SignInMethodButtons/SamlButton';\nimport StandardButton from 'components/SignInMethodButtons/StandardButton';\n\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = theme => {\n return {\n header: {\n fontSize: 50.9,\n lineHeight: 1,\n color: theme.palette.primary.main,\n marginTop: theme.spacing(9),\n [theme.breakpoints.down('xs')]: {\n fontSize: 30.9,\n marginTop: theme.spacing(2),\n },\n },\n subheaderOne: {\n marginTop: theme.spacing(1),\n fontSize: 24,\n lineHeight: 1.41,\n letterSpacing: 0.2,\n },\n subheaderTwo: {\n display: 'block',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(6),\n fontSize: 17,\n letterSpacing: -0.1,\n height: 16,\n },\n button: {\n marginTop: theme.spacing(4),\n color: theme.palette.secondary.main,\n },\n loginButtonsContainer: {\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(1.5),\n [theme.breakpoints.down('sm')]: {\n alignItems: 'center',\n },\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignContent: 'flex-start',\n alignItems: 'flex-start',\n flexDirection: 'column',\n [theme.breakpoints.down('sm')]: {\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center',\n },\n },\n preferredOption: {\n fontSize: 17,\n lineHeight: 1.41,\n letterSpacing: 0.2,\n },\n otherOption: {\n marginTop: theme.spacing(4),\n },\n };\n};\n\nconst SignInButtons = {\n saml: SamlButton,\n standard: StandardButton,\n};\n\nclass SignInMethod extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n redirectQuery: PropTypes.string,\n redirectUrl: PropTypes.string,\n match: PropTypes.object.isRequired,\n loginDomains: PropTypes.array.isRequired,\n history: PropTypes.object.isRequired,\n };\n\n componentDidMount() {\n const { match, loginDomains } = this.props;\n const firstSubdomainLoginOptions = _get(loginDomains, '[0].loginOptions');\n const id = _get(match, 'params.id');\n if (!firstSubdomainLoginOptions || !id) {\n this.props.history.replace(`/`);\n return null;\n }\n\n const { otherMethods, preferredMethods } = _get(loginDomains, `[${id}].loginOptions`, {});\n\n const isSignInMethodsValid =\n preferredMethods && otherMethods ? preferredMethods.concat(otherMethods) : [];\n\n if (isSignInMethodsValid.length === 1) {\n isSignInMethodsValid[0] === 'saml' ? this.samlSubmit() : this.handleStandardLogin();\n }\n }\n\n handleStandardLogin = () => {\n this.props.history.push(`/standard/0`);\n };\n\n renderPreferred = method => {\n return this.renderOptionsWithPreferred(true, method);\n };\n\n renderOther = method => {\n return this.renderOptionsWithPreferred(false, method);\n };\n\n renderOptionsWithPreferred = (preferred, method) => {\n let Component;\n let color;\n const { match, loginDomains } = this.props;\n if (preferred) {\n color = 'secondary';\n }\n if (SignInButtons[method]) {\n Component = SignInButtons[method];\n return (\n \n );\n }\n };\n\n samlSubmit = () => {\n // TODO(digia): Refactor samlSubmit logic into a component or helper function\n const { redirectQuery, redirectUrl, loginDomains, match } = this.props;\n\n const loginOptionResponse = loginDomains[_get(match, 'params.id', null)];\n const { clientId, loginOptions } = loginOptionResponse;\n\n const urlSegments = ['/api', 'login', clientId];\n\n if (loginOptions.directoryId) {\n urlSegments.push(loginOptions.directoryId);\n }\n\n urlSegments.push('saml');\n\n // login.justsift.com/api/login/:clientId/:directoryId?/saml\n const baseUrl = urlSegments.join('/');\n\n if (!redirectQuery) {\n // This is going outside of the app, redirecting to the saml login page\n window.location.href = baseUrl;\n } else {\n window.location.href = baseUrl + redirectUrl;\n }\n };\n\n render() {\n const { classes, match, loginDomains, history } = this.props;\n const selectedDomainIndex = _get(match, 'params.id', null);\n let otherOptionsHeader;\n if (!selectedDomainIndex || !_get(loginDomains[0], 'subdomain', null)) {\n return null;\n } else if (loginDomains[selectedDomainIndex].loginOptions.otherMethods.length > 0) {\n otherOptionsHeader = Other Options;\n }\n\n const hostDomain = getHostDomain();\n\n return (\n \n \n \n Choose a sign-in method\n \n \n Company Name: {loginDomains[selectedDomainIndex].displayName}\n \n \n Company URL:{' '}\n \n {loginDomains[selectedDomainIndex].subdomain}.{hostDomain}.com\n \n \n Preferred Options\n
\n {loginDomains[selectedDomainIndex].loginOptions.preferredMethods.map(\n this.renderPreferred,\n )}\n {otherOptionsHeader}\n {loginDomains[selectedDomainIndex].loginOptions.otherMethods.map(this.renderOther)}\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(SignInMethod);\n","import container from './container';\nexport default container;\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// Actions\n\n// View\nimport SignInMethod from './SignInMethod';\n\nconst mapDispatchToProps = {};\n\nconst mapStateToProps = (state, ownProps) => {\n // retainer\n return {\n loginDomains: state.login.loginDomains,\n redirectQuery: state.login.query,\n redirectUrl: state.login.search,\n };\n};\n\nexport default compose(\n withRouter,\n connect(\n mapStateToProps,\n mapDispatchToProps,\n ),\n)(SignInMethod);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Typography from '@material-ui/core/Typography';\nimport SnackBar from '@material-ui/core/Snackbar';\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n header: {\n fontSize: 50.9,\n color: theme.palette.primary.main,\n marginTop: theme.spacing(5),\n },\n subheader: {\n fontSize: 17,\n lineHeight: 1.41,\n letterSpacing: 0.2,\n },\n textfield: {\n maxWidth: 400,\n width: '100%',\n marginTop: theme.spacing(4),\n },\n button: {\n fontWeight: 'bold',\n fontSize: 14.6,\n [theme.breakpoints.down('xs')]: {\n alignItems: 'center',\n },\n },\n forgotButton: {\n marginLeft: theme.spacing(),\n textTransform: 'none',\n [theme.breakpoints.down('sm')]: {\n alignItems: 'center',\n marginLeft: 0,\n marginTop: theme.spacing(3),\n },\n },\n domainButton: {\n marginTop: theme.spacing(6),\n color: theme.palette.secondary.main,\n },\n buttonLayout: {\n display: 'flex',\n flexDirection: 'row',\n [theme.breakpoints.down('sm')]: {\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n },\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignContent: 'flex-start',\n alignItems: 'flex-start',\n flexDirection: 'column',\n [theme.breakpoints.down('sm')]: {\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center',\n },\n },\n input: {\n minWidth: 340,\n minHeight: 70,\n marginTop: theme.spacing(4),\n [theme.breakpoints.down('xs')]: {\n minWidth: '100%',\n },\n },\n labelSize: {\n fontSize: 24,\n paddingBottom: theme.spacing(1),\n },\n inputSize: {\n fontSize: 28,\n marginTop: theme.spacing(2),\n },\n disabled: {\n borderColor: theme.palette.grey[300],\n },\n error: {\n marginTop: theme.spacing(2),\n color: theme.palette.error.main,\n transition: 'opacity .3s',\n fontSize: 15,\n },\n placeholder: {\n marginBottom: theme.spacing(4),\n },\n };\n};\n\nclass StandardLogin extends React.PureComponent {\n static propTypes = {\n forgotPassword: PropTypes.func.isRequired,\n loginWithPassword: PropTypes.func.isRequired,\n email: PropTypes.string,\n status: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n passwordLoginResponse: PropTypes.object.isRequired,\n loginDomains: PropTypes.array.isRequired,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n additionalParams: PropTypes.object.isRequired,\n };\n\n state = {\n password: '',\n open: false,\n errorState: false,\n error: '',\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (!prevProps.status.hasError() && this.props.status.hasError()) {\n this.updateError();\n }\n if (prevProps.status.isLoading() && this.props.status.isNormal()) {\n this.standardSubmit();\n }\n this.setErrorState(prevProps, prevState);\n }\n\n componentDidMount() {\n if (!this.props.email) {\n this.props.history.push(`/`);\n }\n }\n\n standardSubmit = () => {\n const { loginDomains, match, passwordLoginResponse } = this.props;\n const { redirectTo } = passwordLoginResponse;\n\n if (redirectTo) {\n window.location.href = redirectTo;\n return;\n }\n\n const hostname = window.location.hostname;\n\n // Remove the subdomain, ex: login.justsift.com -> justsift.com\n const domainName = hostname.slice(hostname.indexOf('.') + 1);\n\n const baseUrl = `https://${\n loginDomains[_get(match, 'params.id', null)].subdomain\n }.${domainName}`;\n\n const redirectPath = this.props.additionalParams.redirectTo || '';\n window.location.href = `${baseUrl}${redirectPath}`;\n };\n\n handleChange = event => {\n this.setState({ password: event.target.value });\n };\n\n handleSubmit = event => {\n event.preventDefault();\n\n if (this.isValidPassword(this.state.password)) {\n this.signInSubmit();\n }\n };\n\n setErrorState = (prevProps, prevState) => {\n if (prevProps !== undefined && prevProps.status.isLoading() && this.props.status.hasError()) {\n this.setState({ errorState: true });\n } else if (prevState !== undefined && prevState.password !== this.state.password) {\n this.setState({ errorState: false });\n }\n };\n\n signInSubmit = () => {\n const { email, loginDomains, match, loginWithPassword, additionalParams } = this.props;\n const loginOptionResponse = loginDomains[_get(match, 'params.id', null)];\n const { clientId, loginOptions } = loginOptionResponse;\n\n const setCookies = true;\n const directoryId = loginOptions.directoryId || null;\n loginWithPassword(\n email,\n this.state.password,\n setCookies,\n clientId,\n directoryId,\n additionalParams,\n );\n };\n\n forgotPassword = () => {\n const { email, loginDomains, match, forgotPassword } = this.props;\n\n const loginOptionResponse = loginDomains[_get(match, 'params.id', null)];\n const { clientId, loginOptions } = loginOptionResponse;\n\n const directoryId = loginOptions.directoryId || null;\n forgotPassword(email, clientId, directoryId);\n\n this.setState({ open: !this.state.open });\n };\n\n updateError = () => {\n this.setState({ error: \"Whoops! That isn't the correct password for \" + this.props.email });\n if (this.passwordInput) {\n this.passwordInput.select();\n }\n };\n\n isValidPassword = password => {\n if (password.length > 0) {\n return true;\n } else {\n return false;\n }\n };\n\n displayError = () => {\n const { classes } = this.props;\n return (\n \n {this.state.error ? this.state.error : 'error'}\n \n );\n };\n\n goBack = () => {\n const { loginDomains, match, history } = this.props;\n const loginOptionsArray = loginDomains[match.params.id].loginOptions.preferredMethods.concat(\n loginDomains[match.params.id].loginOptions.otherMethods,\n );\n if (loginOptionsArray.length === 1 && loginDomains.length === 1) {\n history.push('/');\n } else {\n history.goBack();\n }\n };\n\n handleKeyPress = event => {\n if (event.key === 'Enter') {\n this.handleSubmit(event);\n }\n };\n\n render() {\n const { classes, email, status } = this.props;\n const password = this.state.password;\n\n if (email.length === 0) {\n return null;\n }\n\n return (\n \n \n \n A password reset email has been sent to {this.props.email}\n \n }\n />\n \n Sign In\n \n \n Enter your password\n \n \n Your Password\n {\n this.passwordInput = input;\n }}\n onChange={this.handleChange}\n value={password}\n onKeyPress={this.handleKeyPress}\n />\n \n {this.displayError()}\n
\n
\n \n {status.isLoading() ? 'Loading' : 'Sign In'}\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(StandardLogin);\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// Actions\nimport { loginWithPassword, forgotPassword } from '../../store/login';\n\n// View\nimport StandardLogin from './StandardLogin';\n\nconst mapDispatchToProps = {\n loginWithPassword,\n forgotPassword,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n // retainer\n return {\n email: state.login.email,\n status: state.login.status,\n loginDomains: state.login.loginDomains,\n passwordLoginResponse: state.login.passwordLoginResponse,\n redirectQuery: state.login.query,\n additionalParams: state.app.params,\n };\n};\n\nexport default compose(\n withRouter,\n connect(\n mapStateToProps,\n mapDispatchToProps,\n ),\n)(StandardLogin);\n","import container from './container';\nexport default container;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'query-string';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Typography from '@material-ui/core/Typography';\n\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n header: {\n color: theme.palette.primary.dark,\n fontSize: 50.9,\n [theme.breakpoints.down('xs')]: {\n marginTop: theme.spacing(4),\n },\n },\n subheader: {\n fontSize: 17,\n letterSpacing: 0.2,\n lineHeight: 1.41,\n color: theme.palette.common.black,\n },\n input: {\n display: 'block',\n maxWidth: 400,\n minHeight: 70,\n marginTop: theme.spacing(6),\n [theme.breakpoints.down('sm')]: {\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n labelSize: {\n fontSize: 25,\n paddingTop: theme.spacing(1),\n },\n inputSize: {\n fontSize: 28,\n width: '100%',\n paddingTop: theme.spacing(1),\n },\n buttonContainer: {\n marginTop: theme.spacing(8),\n },\n button: {\n width: 133,\n height: 39,\n fontSize: 14.6,\n fontWeight: 'bold',\n lineHeight: 1.1,\n letterSpacing: 1.3,\n transition: 'none',\n },\n disabled: {\n borderColor: theme.palette.grey[300],\n },\n error: {\n marginTop: theme.spacing(2),\n color: theme.palette.error.main,\n transition: 'opacity .3s',\n fontSize: 15,\n },\n };\n};\n\nclass WorkEmail extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n fetchLoginOption: PropTypes.func.isRequired,\n preserveRedirectQuery: PropTypes.func.isRequired,\n error: PropTypes.string.isRequired,\n loginDomains: PropTypes.array.isRequired,\n status: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n };\n\n state = {\n email: '',\n errorState: false,\n };\n\n componentDidMount() {\n if (window.location.pathname.length > 1) {\n this.props.history.push('/');\n }\n // Pearl TODO: replace this\n this.props.preserveRedirectQuery(\n qs.parse(this.props.location.search).redirectTo,\n this.props.location.search,\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { loginDomains, history } = this.props;\n if (loginDomains !== prevProps.loginDomains) {\n if (loginDomains.length === 1) {\n history.push(`/sign-in/0`);\n } else if (loginDomains.length > 1) {\n history.push(`/domain`);\n }\n }\n if (!prevProps.status.hasError() && this.props.status.hasError()) {\n this.updateError();\n }\n this.setErrorState(prevProps, prevState);\n }\n setErrorState = (prevProps, prevState) => {\n if (prevProps !== undefined && prevProps.status.isLoading() && this.props.status.hasError()) {\n this.setState({ errorState: true });\n } else if (prevState !== undefined && prevState.email !== this.state.email) {\n this.setState({ errorState: false });\n }\n };\n\n updateError = () => {\n if (this.emailInput) {\n this.emailInput.select();\n }\n };\n\n handleChange = event => {\n this.setState({ email: event.target.value });\n };\n\n fetchLoginOptions = () => {\n this.props.fetchLoginOption(this.state.email);\n };\n\n isValidEmail = email => {\n const valid = /^\\S+@\\S+$/;\n return valid.test(String(email).toLowerCase());\n };\n handleSubmit = event => {\n if (this.isValidEmail(this.state.email)) {\n this.fetchLoginOptions();\n }\n\n event.preventDefault();\n };\n handleKeyPress = event => {\n if (event.key === 'Enter') {\n this.handleSubmit(event);\n }\n };\n\n displayError = () => {\n const { classes } = this.props;\n return (\n \n {this.props.error ? this.props.error : ''}\n \n );\n };\n render() {\n const { classes, status } = this.props;\n\n return (\n \n \n \n Sign In\n \n Enter your work email\n \n Your Work Email\n {\n this.emailInput = input;\n }}\n autoFocus\n value={this.state.email}\n onKeyPress={this.handleKeyPress}\n />\n \n {this.displayError()}\n
\n \n {status.isLoading() ? 'Loading' : 'Continue'}\n \n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(WorkEmail);\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// Actions\nimport { fetchLoginOption, preserveRedirectQuery } from '../../store/login';\n\n// View\nimport WorkEmail from './WorkEmail';\n\nconst mapDispatchToProps = {\n fetchLoginOption,\n preserveRedirectQuery,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n error: state.login.error,\n loginDomains: state.login.loginDomains,\n status: state.login.status,\n };\n};\n\nexport default compose(\n withRouter,\n connect(\n mapStateToProps,\n mapDispatchToProps,\n ),\n)(WorkEmail);\n","import container from './container';\nexport default container;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\n\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => {\n return {\n input: {\n width: '100%',\n marginTop: theme.spacing(6),\n [theme.breakpoints.down('sm')]: {\n marginTop: 0,\n },\n },\n labelSize: {\n fontSize: 25,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.down('xs')]: {\n fontSize: 20,\n marginTop: theme.spacing(1),\n },\n },\n inputSize: {\n fontSize: 28,\n minHeight: 70,\n paddingTop: theme.spacing(1),\n },\n root: {\n marginTop: 0,\n fontSize: 15,\n },\n helperTextContainer: {\n marginTop: theme.spacing(0.5),\n },\n };\n};\n\nclass PasswordTextField extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n password: PropTypes.string,\n label: PropTypes.string,\n validPasswordCallback: PropTypes.func.isRequired,\n passwordCallback: PropTypes.func.isRequired,\n };\n state = {\n focused: false,\n hasBlurredOnce: false,\n };\n\n componentDidUpdate() {\n const { password } = this.props;\n if (password.length === 0) {\n this.setBlurredFalse();\n }\n this.props.validPasswordCallback(this.displayErrors().length === 0 && password.length !== 0);\n }\n\n setBlurredFalse = () => {\n this.setState({ hasBlurredOnce: false });\n };\n\n handlePasswordChange = event => {\n this.props.passwordCallback(event.target.value);\n };\n\n onFocus = () => {\n this.setState({ focused: true });\n };\n\n toggleBlurredOnce = () => {\n this.setState({ hasBlurredOnce: true });\n };\n\n displayErrors = () => {\n let errorMessages = [];\n const errors = [\n {\n msg: 'Please add at least one lowercase letter.',\n regex: /[a-z]/,\n },\n {\n msg: 'Please add at least one capital letter.',\n regex: /[A-Z]/,\n },\n {\n msg: 'Please add at least one number.',\n regex: /[0-9]/,\n },\n {\n msg: 'Please add at least eight characters',\n regex: /.{8,}/g,\n },\n ];\n for (let i = 0; i < errors.length; i++) {\n let error = errors[i];\n if (error.regex.test(this.props.password) === false && this.props.password.length > 0) {\n errorMessages.push(error.msg);\n }\n }\n return errorMessages;\n };\n\n displayTextfieldErrorOne = () => {\n if (this.props.password.length === 0 || this.displayErrors().length === 0) {\n return true;\n } else {\n return false;\n }\n };\n\n displayErrorText = () => {\n const { classes } = this.props;\n const errors = this.displayErrors();\n const blank = '';\n if (this.state.hasBlurredOnce && this.props.password.length > 0) {\n return (\n
\n \n {errors[0]}\n \n \n {errors[1]}\n \n \n {errors[2]}\n \n \n {errors[3]}\n \n
\n );\n } else {\n return (\n
\n \n {blank}\n \n \n {blank}\n \n \n {blank}\n \n \n {blank}\n \n
\n );\n }\n };\n isInvalidPassword = () => {\n return (\n this.displayErrors().length !== 0 &&\n this.props.password.length !== 0 &&\n this.state.hasBlurredOnce\n );\n };\n\n render() {\n const { classes } = this.props;\n return (\n
\n \n {this.props.label}\n \n \n {this.displayErrorText()}\n
\n );\n }\n}\n\nexport default withStyles(styles)(PasswordTextField);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'query-string';\n\nimport PasswordTextField from 'components/PasswordTextField/PasswordTextField';\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Typography from '@material-ui/core/Typography';\nimport grey from '@material-ui/core/colors/grey';\n\nconst styles = theme => {\n return {\n header: {\n fontSize: 50,\n lineHeight: 1,\n color: theme.palette.primary.main,\n marginTop: theme.spacing(13),\n marginLeft: -4, // Permanent fix for header being slightly off\n [theme.breakpoints.down('xs')]: {\n fontSize: 30.9,\n marginTop: theme.spacing(2),\n },\n },\n subheader: {\n fontSize: 17,\n lineHeight: 1.41,\n letterSpacing: 0.2,\n marginTop: theme.spacing(1),\n maxWidth: theme.spacing(70),\n [theme.breakpoints.down('xs')]: {\n padding: theme.spacing(4),\n },\n },\n button: {\n fontWeight: 'bold',\n fontSize: 14.6,\n lineHeight: 1.1,\n letterSpacing: 1.3,\n width: 243,\n marginTop: theme.spacing(4),\n },\n inputTwo: {\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n labelSize: {\n fontSize: 25,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.down('xs')]: {\n fontSize: 20,\n marginTop: theme.spacing(1),\n },\n },\n inputSize: {\n fontSize: 28,\n minHeight: 70,\n paddingTop: theme.spacing(1),\n },\n disabled: {\n borderColor: grey[300],\n },\n passwordMessage: {\n marginTop: theme.spacing(2),\n fontSize: 15,\n },\n root: {\n marginTop: 0,\n },\n helperTextContainer: {\n marginTop: theme.spacing(0.5),\n },\n textfields: {\n width: '60%',\n },\n };\n};\n\nclass PasswordReset extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n fetchResetTokenValidation: PropTypes.func.isRequired,\n resetPassword: PropTypes.func.isRequired,\n status: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n };\n\n state = {\n password: '',\n secondPassword: '',\n validPassword: false,\n validToken: false,\n };\n\n handleSubmit = event => {\n const { resetPassword, location, match } = this.props;\n let { password, secondPassword } = this.state;\n const resetToken = qs.parse(location.search).resetToken;\n const subdomain = match.params.subdomain;\n if (this.checkNewPasswordCriteria()) {\n resetPassword(password, secondPassword, resetToken, subdomain);\n }\n event.preventDefault();\n };\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.status.isLoading() &&\n this.props.status.isNormal() &&\n this.checkNewPasswordCriteria()\n ) {\n window.location.href = '/';\n }\n if (prevProps.status.isLoading() && this.props.status.isNormal()) {\n this.setState({ validToken: true });\n }\n if (prevProps.status.isLoading() && this.props.status.hasError()) {\n window.location.href = '/';\n }\n }\n\n componentDidMount() {\n const { fetchResetTokenValidation, location, match } = this.props;\n const query = qs.parse(location.search);\n const subdomain = match.params.subdomain;\n fetchResetTokenValidation(query.resetToken, subdomain);\n }\n\n handleChangeTwo = event => {\n this.setState({ secondPassword: event.target.value });\n };\n\n setValidPasswordCallback = validPassword => {\n this.setState({ validPassword: validPassword });\n };\n\n setPasswordCallback = password => {\n this.setState({ password: password });\n };\n\n submitResetPassword = () => {\n const { resetPassword, location, match } = this.props;\n let { password, secondPassword } = this.state;\n const resetToken = qs.parse(location.search).resetToken;\n const subdomain = match.params.subdomain;\n resetPassword(password, secondPassword, resetToken, subdomain);\n };\n\n checkPasswordsMatch = () => {\n let { password, secondPassword } = this.state;\n if (secondPassword.length !== 0 && password !== secondPassword) {\n return 'Passwords do not match.';\n } else {\n return
;\n }\n };\n\n checkNewPasswordCriteria = () => {\n return this.state.validPassword && this.state.password === this.state.secondPassword;\n };\n\n render() {\n const { classes } = this.props;\n if (!this.state.validToken) {\n return null;\n }\n return (\n \n \n \n Reset Your Password\n \n \n Enter a new password. Passwords must be at least 8 characters long and include at least\n one lowercase letter, one uppercase letter, and one number.\n \n
\n
\n \n \n
\n \n Retype New Password\n \n \n
\n
\n\n \n {this.checkPasswordsMatch()}\n \n
\n \n Create your Password\n \n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(PasswordReset);\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// Actions TODO: Uncomment when there is actions to import\nimport { fetchResetTokenValidation, resetPassword } from '../../store/login';\n\n// View\nimport PasswordReset from './PasswordReset';\n\nconst mapDispatchToProps = {\n fetchResetTokenValidation,\n resetPassword,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n status: state.login.status,\n };\n};\n\nexport default compose(\n withRouter,\n connect(\n mapStateToProps,\n mapDispatchToProps,\n ),\n)(PasswordReset);\n","import container from './container';\nexport default container;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport getHostDomain from 'helpers/getHostDomain';\n\nimport PasswordTextField from 'components/PasswordTextField/PasswordTextField';\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\n\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Typography from '@material-ui/core/Typography';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst styles = theme => {\n return {\n header: {\n fontSize: 50,\n lineHeight: 1,\n color: theme.palette.primary.main,\n marginTop: theme.spacing(13),\n [theme.breakpoints.down('xs')]: {\n fontSize: 30,\n marginTop: theme.spacing(5),\n },\n },\n subheader: {\n maxWidth: theme.spacing(65),\n marginTop: theme.spacing(1.5),\n marginBottom: theme.spacing(1.5),\n [theme.breakpoints.down('xs')]: {\n padding: theme.spacing(4),\n },\n },\n button: {\n fontWeight: 'bold',\n fontSize: 14.6,\n lineHeight: 1.1,\n letterSpacing: 1.3,\n width: 243,\n marginTop: theme.spacing(8),\n [theme.breakpoints.down('xs')]: {\n marginTop: theme.spacing(2),\n },\n },\n input: {\n marginTop: theme.spacing(6),\n width: '100%',\n minHeight: 70,\n },\n labelSize: {\n fontSize: 25,\n paddingTop: theme.spacing(1),\n },\n inputSize: {\n fontSize: 28,\n paddingTop: theme.spacing(1),\n [theme.breakpoints.down('xs')]: {\n fontSize: 20,\n },\n },\n disabled: {\n borderColor: theme.palette.grey[300],\n },\n textfield: {\n width: '60%',\n [theme.breakpoints.down('xs')]: {\n width: '90%',\n },\n },\n };\n};\n\nclass CreateYourPassword extends React.PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n setPassword: PropTypes.func.isRequired,\n password: PropTypes.string,\n passwordConfirmed: PropTypes.func.isRequired,\n email: PropTypes.string,\n submitPasswordInviteToken: PropTypes.func.isRequired,\n inviteToken: PropTypes.string.isRequired,\n subdomain: PropTypes.string.isRequired,\n isTrial: PropTypes.bool.isRequired,\n };\n\n state = {\n buttonLocked: null,\n validPassword: false,\n };\n\n handleSubmit = event => {\n if (this.unlockButton()) {\n this.submitPassword();\n }\n event.preventDefault();\n };\n\n setPasswordConfirmation = validPassword => {\n this.setState({ validPassword: validPassword });\n };\n\n setPassword = password => {\n this.props.setPassword(password);\n };\n\n toggleButton = datafromChild => {\n this.setState({ buttonLocked: datafromChild });\n };\n\n submitPassword = async () => {\n await this.props.submitPasswordInviteToken(\n this.props.inviteToken,\n this.props.password,\n this.props.subdomain,\n );\n\n if (!this.props.isTrial) {\n const hostDomain = getHostDomain();\n window.location.href = `https://app.${hostDomain}.com/`;\n }\n\n this.props.passwordConfirmed(true);\n };\n\n unlockButton = () => {\n return (\n /[a-z]/.test(this.props.password) &&\n /[A-Z]/.test(this.props.password) &&\n /.{8,}/g.test(this.props.password) &&\n /[0-9]/.test(this.props.password)\n );\n };\n\n render() {\n const { classes } = this.props;\n return (\n \n \n \n Create Your Password\n \n \n Enter a new password. Passwords must be at least 8 characters, include one lowercase,\n one uppercase, and one number.\n \n
\n \n \n {/* more height with top label */}\n Email\n \n \n \n
\n \n \n
\n
\n \n Create your Password\n \n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(CreateYourPassword);\n","import React, { useEffect } from 'react';\nimport qs from 'query-string';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useRouteMatch } from 'react-router';\nimport { fetchLoginOption } from 'store/login';\n\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\n\nfunction SsoEnabled() {\n const classes = useStyles();\n const loginState = useSelector(state => state.login);\n const additionalParams = useSelector(state => state.app.params);\n\n const { email, loginDomains } = loginState;\n const dispatch = useDispatch();\n const routeMatch = useRouteMatch();\n const subdomain = routeMatch.params.subdomain;\n\n useEffect(\n () => {\n dispatch(fetchLoginOption(email));\n },\n [dispatch, email],\n );\n\n if (loginDomains.length === 0) {\n return null;\n }\n\n const handleSubmit = () => {\n const loginOptionResponse = loginDomains.find(item => item.subdomain === subdomain);\n\n const { clientId, loginOptions } = loginOptionResponse;\n const queryString = qs.stringify(additionalParams);\n\n const urlSegments = ['/api', 'login', clientId];\n\n if (loginOptions.directoryId) {\n urlSegments.push(loginOptions.directoryId);\n }\n\n urlSegments.push('saml');\n\n // login.justsift.com/api/login/:clientId/:directoryId?/saml\n const baseUrl = urlSegments.join('/');\n\n window.location.href = `${baseUrl}?${queryString}`;\n };\n\n return (\n \n \n Your organization has SSO enabled\n \n No need to worry about creating another password! Your organization has enabled Single\n Sign-On (SSO), which means you can simply sign in using your existing SSO credentials.\n This makes the sign-in process fast and secure, giving you one less password to remember.\n \n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n headline: {\n fontSize: 34,\n marginBottom: theme.spacing(),\n lineHeight: '42.74px',\n letterSpacing: '0.25px',\n width: 538,\n height: 43,\n },\n textBody: {\n fontSize: 16,\n lineHeight: '28px',\n letterSpacing: '0.5px',\n marginBottom: theme.spacing(6),\n width: 711,\n height: 76,\n },\n };\n});\n\nexport default SsoEnabled;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\n\nfunction PictureCard({ src, linkText, url, alt }) {\n const classes = useStyles();\n\n return (\n \n {alt}\n\n
\n {linkText}\n\n \n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n display: 'flex',\n flexDirection: 'column',\n height: 239,\n width: 213,\n marginRight: theme.spacing(7),\n borderRadius: theme.spacing(0.25),\n boxShadow: theme.shadows[5],\n cursor: 'pointer',\n [theme.breakpoints.down('lg')]: {\n marginBottom: theme.spacing(2),\n },\n [theme.breakpoints.down('md')]: {\n marginBottom: theme.spacing(2),\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(2),\n },\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n cardBottom: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: theme.spacing(5.125),\n },\n cardLink: {\n width: 110,\n height: 20,\n fontSize: 14,\n letterSpacing: '0.25px',\n lineHeight: '20px',\n textDecorationLine: 'underline',\n whiteSpace: 'nowrap',\n color: theme.palette.secondary.main,\n },\n img: {\n height: 142,\n width: 213,\n },\n icon: {\n height: 24,\n width: 24,\n },\n };\n});\n\nPictureCard.propTypes = {\n src: PropTypes.string,\n linkText: PropTypes.string,\n url: PropTypes.string,\n alt: PropTypes.string,\n};\n\nexport default PictureCard;\n","import React from 'react';\nimport getHostDomain from 'helpers/getHostDomain';\n\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\nimport PictureCard from 'components/molecules/PictureCard';\nimport ViewOrgChart from 'pages/InviteTokenLanding/assets/ViewOrgChart.png';\nimport ViewProfile from 'pages/InviteTokenLanding/assets/ViewProfile.png';\nimport ViewBigSearch from 'pages/InviteTokenLanding/assets/ViewBigSearch.png';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\n\nfunction DemoDataEnabled() {\n const classes = useStyles();\n const hostDomain = getHostDomain();\n\n return (\n \n \n Where would you like to start?\n \n To make things easier, we’ve already set you up with demo people data. Here are some of\n the features you can explore:\n \n
\n \n \n \n
\n \n If you’d like to add your own people data or customize Sift further, you can do so by\n accessing the Admin Dashboard.\n \n \n Go to admin dashboard\n \n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n container: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginTop: theme.spacing(5.25),\n\n [theme.breakpoints.down('md')]: {\n marginTop: theme.spacing(5.25),\n flexDirection: 'column',\n alignItems: 'center',\n },\n [theme.breakpoints.down('sm')]: {\n alignItems: 'center',\n },\n },\n headline: {\n fontSize: 34,\n lineHeight: '42.74px',\n letterSpacing: '0.25px',\n height: 43,\n marginBottom: theme.spacing(1),\n [theme.breakpoints.down('lg')]: {\n fontSize: 24,\n },\n [theme.breakpoints.down('md')]: {\n marginBottom: theme.spacing(1),\n fontSize: 20,\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(0.5),\n fontSize: 14,\n },\n },\n textBody: {\n fontSize: 16,\n lineHeight: '28px',\n letterSpacing: '0.5px',\n marginBottom: theme.spacing(6),\n height: 24,\n [theme.breakpoints.down('lg')]: {\n marginBottom: theme.spacing(3),\n fontSize: 14,\n },\n [theme.breakpoints.down('md')]: {},\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(1),\n fontSize: 12,\n },\n },\n textFooter: {\n marginTop: theme.spacing(6),\n [theme.breakpoints.down('lg')]: {\n marginBottom: theme.spacing(3),\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(1),\n },\n },\n button: {\n marginTop: theme.spacing(3.875),\n },\n };\n});\n\nexport default DemoDataEnabled;\n","import React from 'react';\nimport getHostDomain from 'helpers/getHostDomain';\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction SetupAccount() {\n const classes = useStyles();\n const hostDomain = getHostDomain();\n\n return (\n \n \n Let's get you set up\n \n We are excited that you are ready to start your Sift journey and look forward to seeing\n how Sift can help your organization connect. Now that you have begun your Sift journey,\n let’s make the most of your Sift experience by getting your Sift account together.\n \n \n Set up your sift account\n \n \n \n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n headline: {\n marginBottom: theme.spacing(1),\n fontSize: 34,\n lineHeight: '43px',\n letterSpacing: '0.25px',\n [theme.breakpoints.down('lg')]: {\n fontSize: 24,\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: theme.spacing(0.5),\n },\n },\n textBody: {\n marginBottom: theme.spacing(7.375),\n fontSize: 16,\n lineHeight: '24px',\n letterSpacing: '0.15px',\n maxWidth: 745,\n [theme.breakpoints.down('lg')]: {\n marginBottom: theme.spacing(3),\n fontSize: 14,\n },\n },\n button: {},\n };\n});\n\nexport default SetupAccount;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'query-string';\n\nimport CreateYourPassword from './CreateYourPassword';\nimport SsoEnabled from './SsoEnabled';\nimport DemoDataEnabled from './DemoDataEnabled';\nimport SetupAccount from './SetupAccount';\n\nclass InviteTokenLanding extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n inviteToken: '',\n subdomain: '',\n password: '',\n onClick: false,\n passwordEntered: false,\n };\n }\n\n static propTypes = {\n status: PropTypes.object.isRequired,\n fetchInviteTokenValidation: PropTypes.func.isRequired,\n submitPasswordInviteToken: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n email: PropTypes.string,\n companyName: PropTypes.string.isRequired,\n isSaml: PropTypes.bool.isRequired,\n };\n\n componentDidMount() {\n const searchQuery = qs.parse(this.props.location.search);\n const inviteToken = searchQuery.inviteToken;\n const querySub = this.props.match.params.subdomain;\n this.setState({\n inviteToken,\n subdomain: querySub,\n trialUsingDemoData: searchQuery.trialUsingDemoData,\n });\n this.props.fetchInviteTokenValidation(inviteToken, querySub);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.status.isLoading() && this.props.status.hasError()) {\n window.location.href = '/';\n }\n }\n\n onClick = onClick => {\n this.setState({ onClick });\n };\n\n confirmedPassword = passwordConfirmed => {\n this.setState({ passwordEntered: passwordConfirmed });\n };\n\n setPassword = password => {\n this.setState({ password: password });\n };\n\n render() {\n let nextComponent;\n\n if (this.props.email.length === 0) {\n return null;\n }\n\n nextComponent = (\n \n );\n\n if (this.props.isSaml) {\n nextComponent = ;\n }\n\n if (this.state.passwordEntered === true) {\n const trialUsingDemoData = this.state.trialUsingDemoData;\n\n if (trialUsingDemoData) {\n if (trialUsingDemoData === 'true') {\n nextComponent = ;\n } else {\n nextComponent = ;\n }\n }\n }\n\n return nextComponent;\n }\n}\n\nexport default InviteTokenLanding;\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// Actions\nimport { submitPasswordInviteToken, fetchInviteTokenValidation } from '../../store/login';\n\n// View\nimport InviteTokenLanding from './InviteTokenLanding';\n\nconst mapDispatchToProps = {\n submitPasswordInviteToken,\n fetchInviteTokenValidation,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n // retainer\n return {\n status: state.login.status,\n isSaml: state.login.isSaml,\n email: state.login.email,\n companyName: state.login.companyName,\n };\n};\n\nexport default compose(\n withRouter,\n connect(\n mapStateToProps,\n mapDispatchToProps,\n ),\n)(InviteTokenLanding);\n","import container from './container';\nexport default container;\n","/* eslint-disable no-console */\n/* eslint-disable no-useless-return */\n\nimport { LogLevel } from '@azure/msal-browser';\nimport getHostDomain, { STAGING_DOMAIN } from 'helpers/getHostDomain';\n/**\n * Configuration object to be passed to MSAL instance on creation.\n * For a full list of MSAL.js configuration parameters, visit:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\n */\n\nconst hostDomain = getHostDomain();\nconst clientId =\n hostDomain === STAGING_DOMAIN\n ? '097def9e-d030-409b-bfaf-c72e16f63310'\n : '474ea754-ede0-44cf-b224-d5f2d914a3c8';\n\nexport const msalConfig = {\n auth: {\n clientId,\n authority: 'https://login.microsoftonline.com/organizations',\n redirectUri: `https://login.${encodeURIComponent(\n hostDomain,\n )}.com/microsoft/confirm-subscription`,\n },\n cache: {\n cacheLocation: 'sessionStorage', // This configures where your cache will be stored\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\n },\n system: {\n loggerOptions: {\n loggerCallback: (level, message, containsPii) => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case LogLevel.Error:\n console.error(message);\n return;\n case LogLevel.Info:\n console.info(message);\n return;\n case LogLevel.Verbose:\n console.debug(message);\n return;\n case LogLevel.Warning:\n console.warn(message);\n return;\n default:\n return;\n }\n },\n },\n },\n};\n\n/**\n * Scopes you add here will be prompted for user consent during sign-in.\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\n * For more information about OIDC scopes, visit:\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\n */\nexport const loginRequest = {\n scopes: ['User.Read', 'profile', 'email', 'openid'],\n};\n","import React from 'react';\n\nexport default props => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\n// UI\nimport Typography from '@material-ui/core/Typography';\nimport ErrorFaceIcon from 'components/Icons/ErrorFace';\n\n// Style\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = theme => {\n return {\n root: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n },\n icon: {\n width: 300,\n height: 200,\n },\n copy: {\n textAlign: 'center',\n },\n };\n};\n\nclass ErrorView extends PureComponent {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n title: PropTypes.node,\n body: PropTypes.node,\n className: PropTypes.object,\n };\n\n defaultCopy = {\n title: 'Yikes, an error occurred.',\n body: (\n \n Try reloading the page, if the\n
\n issue persists then please contact us.\n
\n ),\n };\n\n render() {\n let { classes, className, title, body } = this.props;\n\n return (\n
\n \n \n {title || this.defaultCopy.title}\n \n \n {body || this.defaultCopy.body}\n \n
\n );\n }\n}\n\nexport default withStyles(styles)(ErrorView);\n","import React from 'react';\n\n// UI\nimport Loader from '@sift/skipper/components/Loader';\nimport ErrorView from './ErrorView';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport default withStyles(theme => {\n return {\n root: {\n position: 'relative',\n minHeight: '100px',\n },\n overlay: {},\n overlayTransparent: {},\n };\n})(props => {\n return (\n }\n isErrorView={}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nexport default props => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\n\n// Components\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\n\n// Styles\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction MicrosoftSubscriptionTable({\n companyName,\n subscriptionData,\n confirmedSubscriptionData,\n handleChangeCompany,\n handleKeyPress,\n}) {\n const classes = useStyles();\n const siftSubscription = _get(subscriptionData, 'siftSubscription');\n const msSubscription = _get(subscriptionData, 'subscription');\n const shouldRenderCompanyInput =\n _get(subscriptionData, ['siftSubscription', 'source']) !== 'database' &&\n _isEmpty(confirmedSubscriptionData);\n\n return (\n
\n
\n \n Subscription Name:\n \n {_get(msSubscription, 'name')}\n
\n
\n \n Plan:\n \n {_get(msSubscription, 'planId')}\n
\n
\n \n Status:\n \n {_get(msSubscription, 'saasSubscriptionStatus')}\n
\n
\n \n User Name:\n \n {_get(siftSubscription, 'userName')}\n
\n
\n \n User Email:\n \n \n {_get(siftSubscription, 'userEmail') || _get(siftSubscription, 'userUsername')}\n \n
\n
\n \n Company Name:\n \n {shouldRenderCompanyInput ? (\n \n ) : (\n \n {_get(siftSubscription, 'companyName') ||\n _get(confirmedSubscriptionData, 'companyName')}\n \n )}\n
\n
\n );\n}\n\nconst useStyles = makeStyles(theme => {\n return {\n root: {\n marginBottom: theme.spacing(5),\n [theme.breakpoints.down('sm')]: {\n textAlign: 'left',\n marginLeft: '10%',\n },\n },\n inline: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(1.5),\n },\n labels: {\n width: 200,\n },\n };\n});\n\nMicrosoftSubscriptionTable.propTypes = {\n companyName: PropTypes.string,\n subscriptionData: PropTypes.object.isRequired,\n confirmedSubscriptionData: PropTypes.object.isRequired,\n handleChangeCompany: PropTypes.func,\n handleKeyPress: PropTypes.func,\n};\n\nexport default MicrosoftSubscriptionTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\n\n// Components\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport MicrosoftSubscriptionTable from '../MicrosoftSubscriptionTable';\n\n// Styles\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction SubscriptionInfo({\n companyName,\n isLoading,\n subscriptionData,\n subscriptionConfirmationData,\n onChangeCompanyName,\n onConfirm,\n}) {\n const classes = useStyles();\n const shouldRenderConfirmButton =\n _get(subscriptionData, ['siftSubscription', 'source']) === 'token' &&\n _isEmpty(subscriptionConfirmationData);\n\n const preConfirmationContent = (\n
\n \n {isLoading ? 'Loading' : 'Confirm'}\n \n
\n );\n\n const postConfirmationContent = (\n
\n \n The Sift team will be in contact with next steps over the next few days when activation is\n complete. In the meantime, take a look at our{' '}\n \n launch guide\n {' '}\n and{' '}\n \n help center\n {' '}\n to learn more about setting up Sift!\n \n
\n );\n\n const handleKeyPress = event => {\n if (event.key === 'Enter') {\n onConfirm();\n }\n };\n\n return (\n
\n \n {shouldRenderConfirmButton ? preConfirmationContent : postConfirmationContent}\n
\n );\n}\n\nSubscriptionInfo.propTypes = {\n companyName: PropTypes.string.isRequired,\n isLoading: PropTypes.bool.isRequired,\n subscriptionData: PropTypes.object.isRequired,\n subscriptionConfirmationData: PropTypes.object.isRequired,\n onChangeCompanyName: PropTypes.func.isRequired,\n onConfirm: PropTypes.func.isRequired,\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n buttonContainer: {\n marginTop: theme.spacing(8),\n },\n}));\n\nexport default SubscriptionInfo;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport bowser from 'bowser';\nimport _get from 'lodash/get';\nimport _isEmpty from 'lodash/isEmpty';\nimport queryString from 'query-string';\nimport { combineStatuses } from 'resift';\nimport {\n useMsal,\n useIsAuthenticated,\n AuthenticatedTemplate,\n UnauthenticatedTemplate,\n} from '@azure/msal-react';\nimport { InteractionStatus } from '@azure/msal-browser';\nimport { loginRequest } from '../../../azureAuthConfig';\n\n// Components\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Loader from 'components/Loader';\nimport SplitPageContainer from 'components/SplitPageContainer';\nimport SplitPageRight from 'components/SplitPageRight';\nimport SubscriptionSuccessIcon from 'components/Icons/SubscriptionSuccess';\nimport SubscriptionInfo from './SubscriptionInfo';\n\n// Styles\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nfunction MicrosoftConfirmSubscription({\n location,\n status,\n subscriptionConfirmationStatus,\n subscriptionData,\n subscriptionConfirmationData,\n confirmSubscription,\n resolveSubscription,\n}) {\n const classes = useStyles();\n const { instance, accounts, inProgress } = useMsal();\n const queryParams = queryString.parse(location.search);\n const subscriptionToken = _get(queryParams, 'token');\n const isAuthenticated = useIsAuthenticated();\n const [companyName, setCompanyName] = useState('');\n const pageIsLoading =\n status.isLoading() ||\n subscriptionConfirmationStatus.isLoading() ||\n inProgress !== InteractionStatus.None;\n const shouldRenderConfirmButton =\n _get(subscriptionData, ['siftSubscription', 'source']) !== 'database';\n\n useEffect(() => {\n document.title = 'Manage Your Sift Subscription';\n }, []);\n\n const handleChangeCompanyName = e => {\n setCompanyName(e.target.value);\n };\n\n const handleLogin = useCallback(\n () => {\n if (bowser.firefox || bowser.firefoxos) {\n instance.loginPopup(loginRequest).catch(e => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n } else {\n instance.loginRedirect(loginRequest).catch(e => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n }\n },\n [instance],\n );\n\n useEffect(\n () => {\n if (isAuthenticated && _isEmpty(subscriptionData) && inProgress === InteractionStatus.None) {\n instance\n .acquireTokenSilent({\n ...loginRequest,\n account: accounts[0],\n })\n .then(response => {\n const { idToken } = response;\n idToken && subscriptionToken && resolveSubscription(idToken, subscriptionToken);\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n }\n },\n [\n isAuthenticated,\n subscriptionData,\n inProgress,\n accounts,\n instance,\n resolveSubscription,\n subscriptionToken,\n ],\n );\n\n const handleConfirm = useCallback(\n () => {\n instance\n .acquireTokenSilent({\n ...loginRequest,\n account: accounts[0],\n })\n .then(response => {\n const { idToken } = response;\n confirmSubscription(\n idToken,\n subscriptionData.subscription.id,\n companyName.length ? companyName : null,\n );\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n },\n [accounts, companyName, instance, confirmSubscription, subscriptionData],\n );\n\n const title = shouldRenderConfirmButton ? (\n \n Manage Your Sift Subscription\n \n ) : (\n <>\n \n \n Success!\n \n \n );\n\n return (\n \n \n \n {title}\n \n \n \n \n \n {pageIsLoading ? 'Loading' : 'Sign in with azure'}\n \n \n \n \n \n );\n}\n\nMicrosoftConfirmSubscription.propTypes = {\n status: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n subscriptionData: PropTypes.object.isRequired,\n subscriptionConfirmationData: PropTypes.object.isRequired,\n subscriptionConfirmationStatus: PropTypes.object.isRequired,\n confirmSubscription: PropTypes.func.isRequired,\n resolveSubscription: PropTypes.func.isRequired,\n};\n\nconst useStyles = makeStyles(theme => {\n return {\n header: {\n color: theme.palette.primary.main,\n marginBottom: theme.spacing(5),\n [theme.breakpoints.down('xs')]: {\n marginTop: theme.spacing(4),\n },\n },\n error: {\n marginTop: theme.spacing(2),\n color: theme.palette.error.main,\n transition: 'opacity .3s',\n fontSize: 15,\n },\n inline: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing(1.5),\n },\n loader: {\n position: 'sticky',\n height: '100%',\n },\n icon: {\n marginBottom: theme.spacing(2),\n },\n };\n});\n\nexport default MicrosoftConfirmSubscription;\n","import { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport compose from 'recompose/compose';\n\n// Actions\nimport { confirmSubscription, resolveSubscription } from '../../../store/login';\n\n// View\nimport MicrosoftConfirmSubscription from './MicrosoftConfirmSubscription';\n\nconst mapDispatchToProps = {\n confirmSubscription,\n resolveSubscription,\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n status: state.login.status,\n subscriptionConfirmationStatus: state.login.subscriptionConfirmationStatus,\n subscriptionData: state.login.subscriptionData,\n subscriptionConfirmationData: state.login.subscriptionConfirmationData,\n});\n\nexport default compose(\n withRouter,\n connect(\n mapStateToProps,\n mapDispatchToProps,\n ),\n)(MicrosoftConfirmSubscription);\n","import container from './container';\nexport default container;\n","import React from 'react';\nimport { MsalProvider } from '@azure/msal-react';\nimport { msalConfig } from '../../azureAuthConfig';\nimport { PublicClientApplication } from '@azure/msal-browser';\n\nimport MicrosoftConfirmSubscription from './Confirm';\n\nfunction MicrosoftSubscription() {\n const msalInstance = new PublicClientApplication(msalConfig);\n\n return (\n \n \n \n );\n}\n\nexport default MicrosoftSubscription;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Layout\nimport CoreLayout from 'components/CoreLayout';\n\n// Router\nimport { createBrowserHistory as createHistory } from 'history';\nimport { Router as ReactRouter, Route, Switch } from 'react-router';\nimport routes from './routes';\nimport WorkEmail from 'pages/WorkEmail';\n\nconst routeElems = routes.map((route, index) => {\n return ;\n});\n\nexport default class SiftRouter extends React.Component {\n static contextTypes = {\n analytics: PropTypes.object.isRequired,\n };\n\n history = createHistory();\n\n componentDidMount() {\n this.history.listen(location => {\n this.context.analytics.page(location.pathname);\n });\n }\n\n render() {\n routeElems.push();\n\n return (\n \n \n {routeElems}\n \n \n );\n }\n}\n","// Pages\nimport DomainSelectorPage from 'pages/DomainSelector';\nimport SignInMethodPage from 'pages/SignInMethod';\nimport StandardLoginPage from 'pages/StandardLogin';\nimport WorkEmailPage from 'pages/WorkEmail';\nimport PasswordResetPage from 'pages/PasswordReset';\nimport InviteTokenLandingPage from 'pages/InviteTokenLanding';\nimport MicrosoftSubscriptionPage from 'pages/Microsoft/MicrosoftSubscription';\n\nexport const DomainSelector = {\n path: '/domain/:redirectTo?',\n component: DomainSelectorPage,\n exact: true,\n};\n\nexport const SignInMethod = {\n path: '/sign-in/:id/:redirectTo?',\n component: SignInMethodPage,\n exact: true,\n};\n\nexport const StandardLogin = {\n path: '/standard/:id/:redirectTo?',\n component: StandardLoginPage,\n exact: true,\n};\n\n// Pearl TODO: replace this\nexport const WorkEmail = {\n path: ':redirectTo?',\n component: WorkEmailPage,\n exact: true,\n};\n\nexport const PasswordReset = {\n path: '/:subdomain/resetpassword/:resetToken?',\n component: PasswordResetPage,\n exact: true,\n};\n\nexport const InviteTokenLanding = {\n path: '/:subdomain/completeinvite/:inviteToken?',\n component: InviteTokenLandingPage,\n exact: true,\n};\n\nexport const MicrosoftSubscription = {\n path: '/microsoft/confirm-subscription',\n component: MicrosoftSubscriptionPage,\n exact: true,\n};\n\nexport default [\n DomainSelector,\n SignInMethod,\n StandardLogin,\n PasswordReset,\n InviteTokenLanding,\n MicrosoftSubscription,\n];\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withProps from 'recompose/withProps';\nimport * as Sentry from '@sentry/browser';\n\n// Components\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Dialog from '@material-ui/core/Dialog';\nimport Slide from '@material-ui/core/Slide';\nimport ErrorView from '@sift/skipper/components/views/Error';\n\n// Styles\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nconst SlideUp = withProps({ direction: 'up' })(Slide);\n\n/**\n * used to create an error code: https://github.com/darkskyapp/string-hash/blob/master/index.js\n */\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n\n while (i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n return hash >>> 0;\n}\n\nconst styles = theme => ({\n refreshButton: { marginTop: theme.spacing(2) },\n errorView: {\n flex: '1 1 auto',\n },\n buttonRow: {\n flex: '0 0 auto',\n display: 'flex',\n justifyContent: 'flex-end',\n padding: theme.spacing(2),\n },\n});\n\nclass ErrorBoundary extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n fullScreen: PropTypes.bool,\n children: PropTypes.any,\n };\n\n state = {\n hadError: false,\n errorCode: undefined,\n };\n\n componentDidCatch(error) {\n const errorCode = (error.message && hash(error.message)) || undefined;\n\n Sentry.withScope(scope => {\n errorCode && scope.setTag('errorCode', errorCode.toString());\n Sentry.captureException(error);\n });\n\n this.setState({ hadError: true, errorCode });\n }\n\n onRefresh = () => {\n window.location.reload(true); // true enables force-get from server\n };\n\n handleClose = () => {\n this.setState({ hadError: false });\n };\n\n render() {\n const { classes, children, fullScreen } = this.props;\n const { hadError } = this.state;\n\n if (hadError) {\n const errorView = (\n \n \n Something went wrong. Try refreshing the page and if this error persists, contact\n support.\n \n
\n
\n Support@justsift.com{' '}\n {this.state.errorCode && (\n | Error code: {this.state.errorCode}\n )}\n
\n \n Refresh Page\n \n \n }\n />\n );\n\n return fullScreen ? (\n \n
\n \n \n \n
\n {errorView}\n
\n ) : (\n \n
\n \n \n \n
\n {errorView}\n
\n );\n }\n\n return children;\n }\n}\n\nexport default withStyles(styles)(ErrorBoundary);\n","import React from 'react';\n\nimport analytics from 'analytics.js';\nimport config from 'config';\n\nimport PropTypes from 'prop-types';\n\n// Analytics custimizations\nimport wootric from './wootric';\n\nconst customIntegrations = {\n wootric: wootric,\n};\n/**\n * Provides access to `analytics` within the applications\n * context and handles basic analytics tracking for page views\n * and user identification.\n */\nclass AnalyticsProvider extends React.PureComponent {\n static propTypes = {\n user: PropTypes.object,\n client: PropTypes.object,\n children: PropTypes.node,\n };\n\n static childContextTypes = {\n analytics: PropTypes.object,\n };\n\n componentDidMount() {\n const { user, client } = this.props;\n\n let trackers = {};\n\n if (config.ANALYTICS) {\n for (let moduleName in config.ANALYTICS) {\n const module = config.ANALYTICS[moduleName];\n\n if (module) {\n trackers[module.ajsName] = module.options;\n }\n }\n\n analytics.initialize(trackers);\n analytics.identify(user.id, {\n ...user,\n company: {\n id: client.subdomain,\n name: client.displayName,\n },\n });\n }\n\n if (config.CUSTOM_ANALYTICS) {\n config.CUSTOM_ANALYTICS.forEach(custom => {\n if (customIntegrations[custom]) {\n customIntegrations[custom](user);\n }\n });\n }\n\n // Display Intercom button if support is enabled\n setTimeout(() => {\n this.toggleIntercom(this.props);\n }, 3000);\n }\n\n componentDidUpdate(nextProps) {\n this.toggleIntercom(nextProps);\n }\n\n toggleIntercom(props) {\n const intercomElem = window.document.getElementById('intercom-container');\n if (intercomElem) {\n if (props.supportEnabled === true) {\n intercomElem.style.display = 'hidden';\n } else {\n intercomElem.style.display = 'block';\n }\n }\n }\n\n getChildContext() {\n return {\n analytics: analytics,\n };\n }\n\n render() {\n return this.props.children;\n }\n}\n\nexport default AnalyticsProvider;\n","export default function(user) {\n var show_survey_callback = function() {\n var date = new Date();\n window.Intercom('update', { last_wootric_surveyed_at: Math.round(date.getTime() / 1000) });\n };\n\n var decline_submitted_callback = function() {\n var date = new Date();\n window.Intercom('update', { last_wootric_declined__at: Math.round(date.getTime() / 1000) });\n };\n\n var response_submitted_callback = function(score, comment) {\n window.Intercom('update', { last_wootric_score: score });\n window.Intercom('update', { last_wootric_comment: comment });\n };\n\n // window.wootric_survey_immediately = true; // Shows survey immediately for testing purposes. TODO: Comment out for production.\n window.wootricSettings = {\n email: user.email,\n external_id: user.id,\n account_token: 'NPS-5ca1f1da', // This is your unique account token.\n survey_callback: show_survey_callback,\n decline_callback: decline_submitted_callback,\n response_callback: response_submitted_callback,\n };\n\n setTimeout(() => {\n if (window.wootric) {\n // need this in case UBlock blocks wootric?\n window.wootric('run');\n }\n });\n}\n","import { connect } from 'react-redux';\nimport Component from './AnalyticsProvider';\n\nconst mapStateToProps = state => {\n return {\n user: state.authentication.person,\n location: state.location,\n client: state.client,\n };\n};\n\nexport default connect(mapStateToProps)(Component);\n","import createPalette from '@sift/skipper/styles/createPalette';\n\nexport default createPalette({\n marketing: {\n purples: {\n phlox: '#ae00ff',\n fuschia: '#9d00ff',\n electric: '#8300ff',\n fig: '#7512ff',\n veronica: '#6100ff',\n gladiolus: '#4e00bc',\n monkshood: '#4b01b4',\n deep: '#3d0091',\n },\n },\n});\n","import createTheme from '@sift/skipper/styles/createTheme';\nimport palette from './palette';\nimport skipperDefaultPalette from '@sift/skipper/styles/skipperDefaultPalette';\n\nexport default createTheme({\n typography: {\n fontFamily: 'Source Sans Pro, sans-serif',\n h2: {\n fontWeight: 400,\n },\n },\n palette,\n overrides: {\n MuiFormLabel: {\n root: {\n color: skipperDefaultPalette.text.gray1,\n },\n },\n },\n});\n","import App from './App';\nexport default App;\n","import React, { Component } from 'react';\nimport { Provider } from 'react-redux';\nimport PropTypes from 'prop-types';\n\n// Config\nimport config from 'config';\n\n// UI\nimport Router from 'components/Router';\nimport ErrorBoundary from 'components/ErrorBoundary';\nimport AnalyticsProvider from 'components/Analytics/AnalyticsProvider';\n\n// Themes\nimport Theme from 'styles/theme';\nimport { ThemeProvider } from '@material-ui/core/styles';\nimport CssBaseline from '@material-ui/core/CssBaseline';\n\nexport default class App extends Component {\n static propTypes = {\n store: PropTypes.object.isRequired,\n };\n\n render() {\n const { store } = this.props;\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import 'react-app-polyfill/ie11';\nimport 'core-js';\nimport config from './config';\nimport * as Sentry from '@sentry/browser';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport createStore from 'store/createStore';\n\n// Styles\nimport 'styles/core.css';\n\n// Components\nimport App from 'components/App';\n\nif (config.SENTRY) {\n Sentry.init({\n dsn: config.SENTRY,\n environment: config.ENV,\n });\n}\n\n// ========================================================\n// Render Setup\n// ========================================================\nconst MOUNT_NODE = document.getElementById('root');\n\nReactDOM.render(, MOUNT_NODE);\n","import { applyMiddleware, compose, createStore } from 'redux';\nimport config from '../config';\n\n// Reducers\nimport makeRootReducer from './reducers';\n\n// Middleware\nimport thunk from 'redux-thunk';\nimport DataService from '@sift/resift/redux/DataService';\nimport DataServiceActionHandlers, { unauthorizedHandler } from './dataServiceActionHandlers';\n\nexport default () => {\n const rootReducer = makeRootReducer();\n\n // ======================================================\n // Initial State setup\n // ======================================================\n let initialState = rootReducer({}, {});\n\n const windowAppState = window.appState ? window.appState : {};\n\n initialState = {\n ...initialState,\n ...windowAppState,\n authentication: {\n ...initialState.authentication,\n ...windowAppState.authentication,\n api: {\n ...initialState.authentication.api,\n path: config.API_ENV,\n authentication: config.LOGIN,\n },\n },\n };\n\n // ======================================================\n // Desktop Hook\n // ======================================================\n if (window.bridge) {\n initialState = window.bridge.getInitialState(initialState);\n }\n\n // ======================================================\n // Middleware Configuration\n // ======================================================\n let dataService = new DataService(DataServiceActionHandlers, unauthorizedHandler);\n const middleware = [thunk, dataService.middleware];\n\n // ======================================================\n // Store Enhancers\n // ======================================================\n const enhancers = [];\n\n let composeEnhancers = compose;\n\n if (process.env.NODE_ENV === 'development') {\n const composeWithDevToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;\n if (typeof composeWithDevToolsExtension === 'function') {\n composeEnhancers = composeWithDevToolsExtension;\n }\n }\n\n // ======================================================\n // Store Instantiation and HMR Setup\n // ======================================================\n const store = createStore(\n rootReducer,\n initialState,\n composeEnhancers(applyMiddleware(...middleware), ...enhancers),\n );\n store.asyncReducers = {};\n\n if (module.hot) {\n module.hot.accept('./reducers', () => {\n const reducers = require('./reducers').default;\n store.replaceReducer(reducers(store.asyncReducers));\n });\n }\n\n if (window.bridge) {\n window.bridge.setStore(store);\n }\n\n return store;\n};\n"],"sourceRoot":""}