{"version":3,"sources":["shared/utils/helpers.ts","store/Alert.ts","store/CommonForm.ts","store/index.ts","store/Common.ts","shared/components/Alert/alert.component.tsx","shared/components/Layout/layout.component.tsx","shared/icons/support-icon.tsx","shared/icons/instagram-icon.tsx","shared/icons/facebook-icon.tsx","shared/icons/twitter-icon.tsx","shared/icons/linkedin-icon.tsx","shared/icons/ds-logo.tsx","shared/components/MobileNotification/mobile-notification.component.tsx","shared/icons/crm-stacked-logo-icon.tsx","shared/components/MobileNotification/crm-mobile-pilot-notification.component.tsx","shared/enums.tsx","shared/components/Page/page.component.tsx","shared/icons/chevron-left-circle-icon.tsx","shared/constants.ts","area/forbidden-page.tsx","shared/components/Form/form.component.tsx","shared/utils/validation.ts","shared/utils/axios-helper.ts","shared/utils/use-axios.ts","area/account/marketing-banner.component.tsx","area/account/login-page.tsx","area/account/logout-page.tsx","shared/utils/continue-login.ts","shared/utils/cancel-login.ts","shared/icons/chevron-right-circle-icon.tsx","area/accountSetup/username-update-page.tsx","area/accountSetup/account-exists-page.tsx","area/accountSetup/username-verification-page.tsx","shared/utils/use-async-operation.ts","shared/components/Timer/timer.component.tsx","shared/components/Verify/verify-page.tsx","area/accountSetup/verify-username-page.tsx","shared/components/PasswordForm/password-form.component.tsx","area/accountSetup/set-account-password-page.tsx","area/accountSetup/linking/linking-intro-page.tsx","area/accountSetup/account-setup-success-page.tsx","area/accountSetup/linking/linking-success-page.tsx","area/email/verification-page.tsx","shared/components/Page/error-page-component.tsx","area/email/verify-page.tsx","area/email/verification-success-page.tsx","area/password/forgot-page.tsx","area/password/forgot-sent-page.tsx","area/password/reset-page.tsx","area/password/reset-success-page.tsx","area/password/change-page.tsx","area/password/change-success-page.tsx","area/password/create-page.tsx","area/password/create-success-page.tsx","area/password/verify-page.tsx","area/eula/eula-content.tsx","area/eula/printable-eula-content.tsx","area/eula/accept-eula-page.tsx","area/admin/user-impersonation-page.tsx","area/mfa/verify-page.tsx","shared/components/PartialLoginRoute/partial-login-route.component.tsx","area/accountSetup/linking/associated-products.component.tsx","area/accountSetup/linking/linked-product.component.tsx","area/accountSetup/linking/forgot-password.component.tsx","area/accountSetup/linking/verification-code-input.component.tsx","area/accountSetup/linking/unlinked-products.component.tsx","area/accountSetup/linking/product-linking.component.tsx","area/accountSetup/linking/linking-page.tsx","area/admin/linked-accounts-page.tsx","index.tsx","routes.tsx","shared/utils/background-image.ts","area/email/email-verification-error-page.tsx","area/error/error-page.tsx","area/password/password-reset-error-page.tsx","area/client-error.tsx","area/login-expired-page.tsx","area/not-found-page.tsx","shared/utils/web-browser-helper.ts","store/configureStore.ts"],"names":["isAssociatedProduct","product","type","getSessionProduct","sessionCookie","document","cookie","replace","atob","decodeURIComponent","split","actionCreators","setAlertMessage","message","isWarning","showReload","dispatch","clearAlertMessage","setIsSubmitting","isSubmitting","reducers","common","state","webPSupported","alert","incomingAction","action","open","undefined","commonForm","dataModel","StyledAlert","withStyles","theme","content","backgroundColor","color","error","borderLeft","warning","topPosition","top","breakpoints","down","container","display","alignItems","props","classes","Snackbar","anchorOriginTopCenter","anchorOrigin","vertical","horizontal","onClose","event","reason","autoHideDuration","SnackbarContent","className","aria-describedby","Typography","id","variant","TypographyVariants","Body1","Button","data-e2e","onClick","window","location","reload","IconButton","key","aria-label","Alert","connect","bindActionCreators","AlertStore","getBackgroundImage","image","extension","useStyles","makeStyles","root","height","overflow","backgroundPosition","backgroundRepeat","backgroundSize","bg","backgroundImage","Layout","children","styleProps","CssBaseline","classNames","SupportIcon","icon","width","SvgIcon","fontSize","viewBox","stroke","strokeWidth","fill","fillRule","transform","d","strokeOpacity","cx","cy","rx","ry","InstagramIcon","fillOpacity","FacebookIcon","TwitterIcon","LinkedinIcon","DsLogo","logo","up","useTheme","xs","useMediaQuery","only","MobileNotification","mobileVersionAlert","palette","grey","cls1","cls2","cls3","white","CrmStackedLogoIcon","version","x","y","points","CrmMobilePilotNotification","typographyContainer","iconContainer","marginTop","justifyContent","textDecoration","style","flexDirection","getProductDisplayName","toLowerCase","getProductValue","getProductFromEnum","StyledPage","bannerContainer","bottomRow","padding","between","minWidth","copyrightBox","float","contentContainer","marginRight","eulaPaper","maxHeight","maxWidth","minHeight","hidden","hideRow","lightText","link","fontWeight","loginContainer","mediumText","middleRow","middleRowCentered","margin","paper","paperLarge","paperPadding","social","background","borderRadius","lineHeight","marginLeft","opacity","textAlign","socialBox","supportBox","title","marginBottom","topRow","tosDiv","whiteText","clientId","fullscreen","hideTitle","isCentered","isEula","paperSize","pageTitle","banner","removePadding","intl","useIntl","isCrmMobileHybridClient","href","locale","H6","Body2","H1","getProductDisplay","Paper","elevation","square","target","rel","Date","getFullYear","Page","ChevronLeftCircleIcon","LandingPageUrl","defaultInputProps","autoCapitalize","autoCorrect","spellCheck","ForbiddenPage","params","URLSearchParams","search","get","traceId","H5","paragraph","Form","reduxForm","form","noValidate","onSubmit","handleSubmit","required","value","length","validEmailCustom","validEmail","test","validCode","isInvalid","axiosHelper","url","options","setSubmitting","axiosApi","then","payload","catch","response","data","status","dataMessage","JSON","stringify","Promise","reject","useAxios","useState","result","setResult","isBusy","setIsBusy","setError","useEffect","errorResponse","marketingBox","cursor","MarketingBanner","paperBorder","React","source","setSource","dest","setDest","imageSourceUrl","destinationTargetUrl","dynamicClasses","rounded","selector","formValueSelector","StyledLogin","buttonContainer","changeAccountsContainer","divider","dividerDiv","paddingBottom","externalProvider","externalProviderNoLocal","forgotPassword","password","rightButton","textFieldIcon","typographyDivider","paddingLeft","paddingRight","usernameContainer","usernameValue","returnUrl","s","clientIdParam","substr","indexOf","filter","includes","pop","getClientIdFromReturnUrl","useDispatch","loginReady","setLoginReady","providerId","setProviderId","allowLocalLogin","setAllowLocalLogin","providerDisplayName","setProviderDisplayName","enterpriseEnabled","setEnterpriseEnabled","usernameInputRef","useRef","passwordInputRef","onContinueClick","method","username","localStorage","getItem","setItem","needsChange","current","focus","change","values","isSpaRoute","push","redirectUrl","FormGroup","FormTextField","inputRef","autoComplete","inputProps","fullWidth","disabled","name","label","startAdornment","autoFocus","validate","removeItem","setTimeout","route","encodeURIComponent","encodeURI","join","Divider","LoginPage","CommonFormStore","LogoutPage","postLogoutRedirectUri","setPostLogoutRedirectUri","clientName","setClientName","signOutIframeUrl","setSignOutIframeUrl","body","logoutId","Subtitle1","src","continueLogin","cancelLogin","ChevronRightCircleIcon","StylePage","buttonStyle","whiteSpace","secondaryButtonStyle","formGroupStyle","flexWrap","buttonGroupStyle","skipCountdown","skipCountdownMessage","skipCountdownWarn","skipCountdownWarnIcon","isValidEmail","busy","daysLeft","Subtitle2","initialValues","email","enableReinitialize","placeholder","UsernameUpdatePage","changeEmailButton","formContainer","AccountExistsPage","proposedUsername","H4","UsernameVerificationPage","noop","useAsyncOperation","callback","completedCallback","callbackRef","completedCallbackRef","isMountedRef","wrapperFunc","a","Error","errorMessage","Timer","timeoutEnd","calculateTimeRemaining","difference","now","timeRemaining","days","Math","floor","hours","minutes","seconds","setTimeRemaining","timerFunc","clearTimeout","timerComponents","Object","keys","forEach","timeInterval","StyledVerifyPage","buttonGroup","whitespace","div","tooltip","typography","cancel","disableResend","loading","resendCode","submittedCode","verificationCode","tooltipText","Tooltip","VerifyPage","CommonStore","getLastVerificationResendDate","VerifyUsernamePage","setDisableResend","setIsInvalid","setSubmittedCode","setTimeoutEnd","startTimer","resendVerificationCodeFunc","lastResendVerificationCodeDate","lastSendTime","parse","delay","currentTime","getLastVerificationResendDateFunc","StyledPasswordForm","flex","validationContainer","confirmNewPasswordValue","hideReturnButton","isCurrentPasswordPopulated","isNewPasswordPopulated","invalid","newPasswordValue","pristine","requireCurrentPassword","onCancel","showPassword","setValues","handleClickShowPassword","oneCapitalValidator","oneLowercaseValidator","oneNumberValidator","minLengthValidator","endAdornment","tabIndex","passwordsMatchValidator","PasswordValidation","newPassword","confirmNewPassword","PasswordForm","ConnectedPasswordForm","isPristine","SetAccountPasswordPage","compose","bottomContainer","description","headerTitle","leftContent","paddingTop","loader","loaderContainer","menuItem","rightContent","iconProps","doNotAskAgain","setDoNotAskAgain","products","Array","isArray","find","p","sort","p1","p2","Card","DsLogoProgress","map","CheckboxField","checked","onChange","LinkingIntroPage","button","alignSelf","img","AccountSetupSuccessPage","LinkingSuccessPage","setUsername","linkedProducts","setLinkedProducts","all","results","productsList","linked","lastItem","allowSkip","EmailVerificationPage","ErrorPageComponent","upperCase","textTransform","VerifyEmailPage","EmailVerificationSuccessPage","fromLink","StyledForgotPassword","textButtonPair","formButton","isUsernameFieldEmpty","setReturnUrl","textField","goBack","ForgotPasswordPage","trim","StyledForgotPasswordSent","ForgotPasswordSentPage","PasswordResetPage","userSub","PasswordResetSuccessPage","ChangePasswordPage","ChangePasswordSuccessPage","CreatePasswordPage","CreatePasswordSuccessPage","VerifyPasswordResetPage","lastSent","setLastSent","lastSendIso","toISOString","EulaContent","this","mainEulaContent","header","Component","StyledEulaContent","PrintableEulaContent","mobileIcon","pageStyle","trigger","ref","StyledEula","acceptEula","acceptLabel","agreementGroup","formCheckbox","printableEulaContainer","acceptedEula","eulaContent","FormCheckboxField","AcceptEulaPage","UserImpersonationPage","isFormInvalid","VerifyMfaPage","PartialLoginRoute","component","other","render","routeProps","rest","finalProps","assign","createElement","renderMergedProps","to","pathname","AssociatedProducts","getParentProduct","LinkedProductComponent","TextField","flexGrow","passwordForm","spacerDiv","ForgotPassword","H3","StyledComponent","VerificationCodeInput","UnlinkedProduct","onForgotPassword","continueButton","bottomContainerDiv","ProductLinking","selectedProduct","refreshFunc","showForgotPassword","setShowForgotPassword","showCodeInput","setShowCodeInput","onSendEmailSubmit","onVerifyCodeSubmit","onLinkAccountSubmit","position","highlight","ieLinkedContainer","left","linkedContainer","linkedIcon","linkedItem","unlinkedItem","setSelectedProduct","setProducts","setBusy","getProducts","selectUnlinkedProduct","newProducts","finally","MenuItem","LinkingPage","iEContinueButton","formGroup","LinkedAccountsPage","selectedDealershipId","FormSelectField","SelectProps","displayEmpty","routes","random","path","requestId","setRequestId","appAxios","Axios","create","headers","Pragma","setAxios","baseUrl","getElementsByTagName","getAttribute","history","createBrowserHistory","basename","feature","Image","onload","onerror","lossy","lossless","alpha","animation","checkWebPFeature","isSupported","initialState","store","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","formReducer","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","applyMiddleware","configureStore","overrides","MuiFormControl","ReactDOM","ThemeProvider","navigator","language","defaultLocale","getElementById"],"mappings":"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","file":"static/js/main.b671599e.chunk.js","sourcesContent":["export const isAssociatedProduct = (product: any) => {\n return product.type === -2 || product.type === -1;\n};\n\nexport const getSessionProduct = () => {\n const sessionCookie = document.cookie.replace(\n /(?:(?:^|.*;\\s*)Session\\s*=\\s*([^;]*).*$)|^.*$/,\n '$1'\n );\n return atob(decodeURIComponent(sessionCookie)).split(':')[0];\n};\n","import { Action, Reducer } from 'redux';\nimport { AppThunkActionType } from './index';\n\n// -----------------\n// STATE - This defines the type of data maintained in the Redux store.\n\nexport type AlertStateType = {\n isWarning?: boolean;\n showReload?: boolean;\n message?: string;\n open?: boolean;\n};\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\ntype SetAlertMessageActionType = {\n isWarning?: boolean;\n showReload?: boolean;\n message: string;\n type: 'SET_ALERT_MESSAGE';\n};\ntype ClearAlertMessageActionType = { type: 'CLEAR_ALERT_MESSAGE' };\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\ntype KnownActionType = SetAlertMessageActionType | ClearAlertMessageActionType;\n\nexport const actionCreators = {\n setAlertMessage: (\n message: string,\n isWarning?: boolean,\n showReload?: boolean\n ): AppThunkActionType => (dispatch) => {\n dispatch({ type: 'SET_ALERT_MESSAGE', message, isWarning, showReload });\n },\n clearAlertMessage: (): AppThunkActionType => (dispatch) => {\n dispatch({ type: 'CLEAR_ALERT_MESSAGE' });\n },\n};\n\nexport const reducer: Reducer = (\n state: AlertStateType | undefined,\n incomingAction: Action\n): AlertStateType => {\n const action = incomingAction as KnownActionType;\n switch (action.type) {\n case 'SET_ALERT_MESSAGE':\n return {\n ...state,\n message: action.message,\n isWarning: action.isWarning,\n showReload: action.showReload,\n open: true,\n };\n case 'CLEAR_ALERT_MESSAGE':\n return {\n ...state,\n message: undefined,\n open: false,\n };\n default:\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\n return state || { message: '' };\n }\n};\n","import { Action, Reducer } from 'redux';\nimport { AppThunkActionType } from './index';\n\n// -----------------\n// STATE - This defines the type of data maintained in the Redux store.\n\nexport type CommonFormStateType = {\n dataModel: any;\n isSubmitting: boolean;\n};\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\ntype SetIsSubmittingActionType = {\n isSubmitting: boolean;\n type: 'SET_IS_SUBMITTING';\n};\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\ntype KnownActionType = SetIsSubmittingActionType;\n\nexport const actionCreators = {\n setIsSubmitting: (\n isSubmitting: boolean\n ): AppThunkActionType => (dispatch) => {\n dispatch({ type: 'SET_IS_SUBMITTING', isSubmitting });\n },\n};\n\nexport const reducer: Reducer = (\n state: CommonFormStateType | undefined,\n incomingAction: Action\n): CommonFormStateType => {\n const action = incomingAction as KnownActionType;\n switch (action.type) {\n case 'SET_IS_SUBMITTING':\n return {\n ...state,\n isSubmitting: action.isSubmitting,\n dataModel: null,\n };\n default:\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\n return state || { dataModel: {}, isSubmitting: false };\n }\n};\n","import * as Common from './Common';\nimport * as Alert from './Alert';\nimport * as CommonForm from './CommonForm';\n\n// The top-level state object\nexport type ApplicationStateType = {\n common: Common.CommonStateType;\n alert: Alert.AlertStateType;\n commonForm: CommonForm.CommonFormStateType;\n};\n\n// Whenever an action is dispatched, Redux will update each top-level application state property using\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\n// acts on the corresponding ApplicationStateType property type.\nexport const reducers = {\n common: Common.reducer,\n alert: Alert.reducer,\n commonForm: CommonForm.reducer,\n};\n\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\n// correctly typed to match your store.\nexport type AppThunkActionType = {\n (\n dispatch: (action: TAction) => void,\n getState: () => ApplicationStateType\n ): void;\n};\n","import { Reducer } from 'redux';\n\n// -----------------\n// STATE - This defines the type of data maintained in the Redux store.\n\nexport type CommonStateType = {\n product?: string;\n webPSupported?: boolean;\n};\n\nexport const reducer: Reducer = (\n state: CommonStateType | undefined\n): CommonStateType => {\n // The following line guarantees that every action in the KnownAction union has been covered by a case above\n return state || { product: '', webPSupported: false };\n};\n","import * as React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport * as AlertStore from '../../../store/Alert';\n\nconst styles = (theme: Theme): StyleRules => ({\n content: {\n backgroundColor: 'white',\n color: 'black',\n },\n error: {\n borderLeft: 'solid 5px #cf5c60',\n },\n warning: {\n borderLeft: 'solid 5px #f7aa09',\n },\n topPosition: {\n top: 8,\n [theme.breakpoints.down('sm')]: {\n top: 0,\n },\n },\n container: {\n display: 'flex',\n alignItems: 'baseline',\n },\n});\n\ntype InternalProps = {\n classes: any;\n};\n\ntype AlertComponentProps = InternalProps &\n AlertStore.AlertStateType &\n typeof AlertStore.actionCreators;\n\nconst AlertCore = (\n props: AlertComponentProps\n): React.ReactElement => {\n const {\n classes,\n open,\n message,\n isWarning,\n showReload,\n clearAlertMessage,\n } = props;\n\n function handleClose(event: React.SyntheticEvent, reason: string) {\n if (reason === 'clickaway') {\n return;\n }\n\n clearAlertMessage();\n }\n\n function onClick() {\n clearAlertMessage();\n }\n\n return (\n \n \n \n {isWarning ? 'WARNING' : 'ERROR'}: {message}\n \n {showReload && (\n window.location.reload(false)}\n >\n Reload\n \n )}\n \n }\n action={[\n \n \n ,\n ]}\n />\n \n );\n};\n\nfunction mapStateToProps(state: any) {\n return { ...state.alert };\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return bindActionCreators({ ...AlertStore.actionCreators }, dispatch);\n}\n\nconst StyledAlert = withStyles(styles)(AlertCore);\n\nexport const Alert: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledAlert);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { makeStyles } from '@material-ui/core/styles';\nimport * as CommonStore from '../../../store/Common';\nimport { Alert } from '../Alert';\n\nfunction getBackgroundImage(image: number, extension: string) {\n return `url(images/bg_image${image}.${extension})`;\n}\n\nconst useStyles = makeStyles({\n root: {\n height: 'calc(100vh)',\n overflow: 'auto',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n },\n bg: {\n // CSS property\n backgroundImage: (props: any) => props.backgroundImage,\n },\n});\n\ntype LayoutProps = {\n backgroundImage: number;\n children: any;\n classes: any;\n} & CommonStore.CommonStateType;\n\nconst LayoutCore = (props: LayoutProps) => {\n const { children, backgroundImage, webPSupported } = props;\n\n const styleProps = {\n backgroundImage: webPSupported\n ? getBackgroundImage(backgroundImage, 'webp')\n : getBackgroundImage(backgroundImage, 'jpg'),\n };\n\n const classes = useStyles(styleProps);\n\n return (\n <>\n \n
\n \n {children}\n
\n \n );\n};\n\nfunction mapStateToProps(state) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nexport const Layout: any = connect(mapStateToProps)(LayoutCore);\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = () => ({\n icon: {\n width: 107,\n height: 105,\n },\n});\n\ntype SupportIconProps = {\n classes: any;\n};\n\nconst SupportIconCore = (props: SupportIconProps) => {\n const { classes } = props;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const SupportIcon = withStyles(styles)(SupportIconCore);\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport const InstagramIcon = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport const FacebookIcon = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport const TwitterIcon = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport const LinkedinIcon = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport { StyleRules, withStyles } from '@material-ui/styles';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\n\ntype InternalProps = {\n classes: JssClasses;\n};\n\nconst styles = (theme: Theme): StyleRules => ({\n logo: {\n height: '36px',\n color: 'white',\n [theme.breakpoints.up('sm')]: {\n width: '240px',\n },\n },\n});\n\nconst DsLogoInternal = (props: InternalProps) => {\n const { classes } = props;\n\n const theme = useTheme();\n const xs = useMediaQuery(theme.breakpoints.only('xs'));\n\n return (\n \n \n {!xs && (\n \n )}\n \n );\n};\n\nexport const DsLogo = withStyles(styles)(DsLogoInternal);\n","import React from 'react';\n\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\n\nconst styles = (theme: Theme): StyleRules => {\n return {\n mobileVersionAlert: {\n width: 520,\n display: 'block',\n\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n },\n\n height: 'auto',\n backgroundColor: theme.palette.grey[400],\n padding: '10px 10px 30px 10px',\n marginBottom: -20,\n },\n };\n};\n\ntype InternalProps = {\n classes: any;\n};\n\ntype ExternalProps = {\n content: React.ReactNode;\n};\n\nconst MobileNotificationComponent = (props: InternalProps & ExternalProps) => {\n const { classes, content } = props;\n return
{content}
;\n};\n\nexport const MobileNotification = withStyles(styles)(\n MobileNotificationComponent\n);\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { theme } from '@dealersocket/ds-ui-react/theme';\n\nconst useStyles = makeStyles(() => ({\n cls1: () => ({\n fill: '#4D4E4E',\n }),\n cls2: () => ({\n fill: '#01508F',\n fillRule: 'evenodd',\n }),\n cls3: {\n fill: theme.palette.common.white,\n },\n}));\n\nexport const CrmStackedLogoIcon = () => {\n const classes = useStyles();\n return (\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 from 'react';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport { MobileNotification } from './mobile-notification.component';\nimport { CrmStackedLogoIcon } from '../../icons/crm-stacked-logo-icon';\n\nconst styles = (): StyleRules => {\n return {\n typographyContainer: {\n color: 'black',\n },\n iconContainer: {\n marginTop: 10,\n display: 'flex',\n justifyContent: 'space-evenly',\n alignItems: 'baseline',\n },\n icon: {\n '&:visited': { textDecoration: 'none', color: 'initial' },\n },\n };\n};\n\ntype InternalProps = {\n classes: any;\n};\n\nconst CrmMobilePilotNotificationComponent = (props: InternalProps) => {\n const { classes } = props;\n\n return (\n
\n \n \n This legacy app is no longer supported. Please download the new\n Mobile CRM app, "CRM by DealerSocket" today to\n start enjoying the new and improved experience. Questions, please\n contact support or your dedicated CSM.\n \n \n \n
\n \n }\n />\n \n );\n};\n\nexport const CrmMobilePilotNotification = withStyles(styles)(\n CrmMobilePilotNotificationComponent\n);\n","export function getProductDisplay(product?: string) {\n switch (product && product.toLowerCase()) {\n case 'crm':\n return 'CRM';\n case 'inv':\n return 'Inventory+';\n case 'web':\n return 'DealerFire';\n case 'automate':\n return 'Auto/Mate';\n case 'idms':\n return 'IDMS';\n default:\n return 'DealerSocket';\n }\n}\n\nexport function getProductDisplayName(product: string) {\n switch (product && product.toLowerCase()) {\n case 'automate':\n return 'Auto/Mate';\n case 'crm':\n return 'CRM';\n case 'dealerfire':\n return 'DealerFire';\n case 'idms':\n return 'IDMS';\n case 'inv':\n return 'Inventory+';\n case 'preciseprice':\n return 'PrecisePrice';\n case 'revenueradar':\n return 'RevenueRadar';\n default:\n return 'Enterprise';\n }\n}\n\nexport function getProductValue(product: string) {\n switch (product && product.toLowerCase()) {\n case 'crm':\n return 1;\n case 'inv':\n return 2;\n case 'dealerfire':\n return 3;\n case 'automate':\n return 4;\n case 'idms':\n return 5;\n default:\n return 0;\n }\n}\n\nexport function getProductFromEnum(product: number) {\n switch (product) {\n case 1:\n return 'crm';\n case 2:\n return 'inv';\n case 3:\n return 'dealerFire';\n case 4:\n return 'automate';\n case 5:\n return 'idms';\n\n case -1:\n return 'revenueRadar';\n case -2:\n return 'precisePrice';\n default:\n return 'enterprise';\n }\n}\n","/* eslint-disable max-lines */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\nimport Paper from '@material-ui/core/Paper';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\n\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport { useIntl } from 'react-intl';\nimport * as CommonStore from '../../../store/Common';\nimport { SupportIcon } from '../../icons/support-icon';\nimport { InstagramIcon } from '../../icons/instagram-icon';\nimport { FacebookIcon } from '../../icons/facebook-icon';\nimport { TwitterIcon } from '../../icons/twitter-icon';\nimport { LinkedinIcon } from '../../icons/linkedin-icon';\nimport { DsLogo } from '../../icons/ds-logo';\nimport { CrmMobilePilotNotification } from '../MobileNotification/crm-mobile-pilot-notification.component';\nimport { getProductDisplay } from '../../enums';\n\nconst styles = (theme: Theme): StyleRules => ({\n bannerContainer: {\n display: 'none',\n '@media(min-width: 1035px)': {\n display: 'block',\n },\n },\n bottomRow: {\n padding: 60,\n [theme.breakpoints.between('sm', 'md')]: {\n padding: 50,\n },\n [theme.breakpoints.down('xs')]: {\n padding: 20,\n },\n [theme.breakpoints.only('sm')]: {\n display: 'grid',\n },\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n height: 'calc(100vh)',\n justifyContent: 'space-between',\n minWidth: 300,\n },\n copyrightBox: {\n display: 'flex',\n flexDirection: 'row',\n [theme.breakpoints.up('sm')]: {\n float: 'right',\n },\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n marginTop: 20,\n },\n },\n contentContainer: {\n [theme.breakpoints.up('sm')]: {\n display: 'flex',\n alignItems: 'stretch',\n },\n [theme.breakpoints.up('lg')]: {\n float: 'right',\n marginRight: '10%',\n },\n [theme.breakpoints.between('sm', 'md')]: {\n float: 'right',\n marginRight: 0,\n },\n },\n eulaPaper: {\n display: 'flex',\n flexDirection: 'column',\n padding: 40,\n maxHeight: 'calc(60vh)',\n maxWidth: 'calc(50vw)',\n [theme.breakpoints.between('sm', 'md')]: {\n maxWidth: 'calc(90vw)',\n },\n [theme.breakpoints.up('sm')]: {\n minWidth: 520,\n minHeight: 600,\n },\n [theme.breakpoints.down('xs')]: {\n maxHeight: 'calc(100vh)',\n maxWidth: '100%',\n },\n },\n hidden: {\n display: 'none',\n },\n hideRow: {\n display: 'none',\n },\n lightText: {\n color: '#d8d8d8',\n fontSize: 14,\n },\n link: {\n fontWeight: 'bold',\n fontSize: 14,\n color: theme.palette.common.white,\n '&:link': {\n textDecoration: 'none !important',\n },\n '&:visited': {\n textDecoration: 'none !important',\n },\n '&:active': {\n textDecoration: 'none !important',\n },\n '&:hover': {\n textDecoration: 'none !important',\n },\n },\n loginContainer: {},\n mediumText: {\n fontWeight: 400,\n },\n middleRow: {\n padding: '0 60px',\n [theme.breakpoints.between('sm', 'md')]: {\n padding: '0 50px',\n },\n [theme.breakpoints.down('xs')]: {\n padding: 0,\n },\n },\n middleRowCentered: {\n padding: 60,\n display: 'flex',\n margin: 'auto',\n [theme.breakpoints.between('sm', 'md')]: {\n padding: 50,\n },\n [theme.breakpoints.down('xs')]: {\n padding: 0,\n },\n },\n paper: {\n [theme.breakpoints.up('sm')]: {\n width: 520,\n },\n },\n paperLarge: {\n [theme.breakpoints.up('md')]: {\n width: 720,\n },\n },\n paperPadding: {\n padding: 40,\n },\n social: {\n background: theme.palette.common.white,\n borderRadius: 50,\n color: theme.palette.common.white,\n display: 'inline-block',\n fontSize: 18,\n height: 25,\n lineHeight: '30px',\n marginLeft: 10,\n opacity: 0.56,\n textAlign: 'center',\n width: 25,\n },\n socialBox: {\n alignItems: 'center',\n display: 'flex',\n float: 'left',\n [theme.breakpoints.down('xs')]: {\n float: 'none',\n },\n },\n supportBox: {\n alignItems: 'center',\n '& a': {\n textDecoration: 'none',\n },\n display: 'flex',\n },\n title: {\n marginBottom: 30,\n [theme.breakpoints.down('xs')]: {\n marginLeft: 20,\n },\n },\n topRow: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n padding: '45px 60px 60px',\n [theme.breakpoints.between('sm', 'md')]: {\n padding: '35px 50px 50px',\n },\n [theme.breakpoints.down('xs')]: {\n padding: '5px 20px 20px',\n },\n },\n tosDiv: {\n [theme.breakpoints.up('sm')]: {\n marginLeft: 4,\n },\n },\n whiteText: {\n color: theme.palette.common.white,\n },\n});\n\ntype InternalProps = {\n classes: any;\n} & CommonStore.CommonStateType;\n\nexport type PageProps = {\n children?: any;\n clientId?: string;\n fullscreen?: boolean;\n hideTitle?: boolean;\n isCentered?: boolean;\n isEula?: boolean;\n pageTitle?: React.ReactNode;\n paperSize?: string;\n banner?: React.ReactNode;\n removePadding?: boolean;\n};\n\ntype PageComponentProps = InternalProps & PageProps;\n\nconst PageCore = (\n props: PageComponentProps\n): React.ReactElement => {\n const {\n classes,\n children,\n clientId,\n fullscreen,\n hideTitle,\n isCentered,\n isEula,\n paperSize,\n pageTitle,\n banner,\n product,\n removePadding,\n } = props;\n\n const theme = useTheme();\n const xs = useMediaQuery(theme.breakpoints.only('xs'));\n const intl = useIntl();\n\n const isCrmMobileHybridClient = clientId === 'crm_mobile_hybrid';\n return (\n
\n
\n \n
\n \n
\n \n \n {intl.locale.toLowerCase() === 'en-au'\n ? '+61 3 9535 2380'\n : '(888) 988—6444'}\n \n \n\n \n Support\n \n
\n
\n
\n \n
\n \n {isCrmMobileHybridClient ? null : banner}\n
\n
\n {!hideTitle && (\n \n {pageTitle || (\n \n Welcome to {getProductDisplay(product)}\n \n )}\n \n )}\n {isCrmMobileHybridClient ? (\n \n ) : (\n children && (\n \n {children}\n \n )\n )}\n
\n
\n \n
\n
\n \n Follow us on:\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n © {new Date().getFullYear()} DealerSocket Inc. All rights\n reserved.\n \n
\n \n Terms of Service\n \n \n {' '}\n |{' '}\n \n \n Privacy Policy\n \n
\n
\n
\n \n );\n};\n\nfunction mapStateToProps(state: any) {\n return { ...state.commonForm.dataModel, ...state.common };\n}\n\nconst StyledPage = withStyles(styles)(PageCore);\n\nexport const Page = connect(mapStateToProps)(StyledPage);\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport const ChevronLeftCircleIcon = () => {\n return (\n \n \n \n );\n};\n","export const LandingPageUrl = 'https://www.dealersocket.com/login/';\n\nexport const defaultInputProps = {\n autoCapitalize: 'none',\n autoCorrect: 'off',\n spellCheck: 'false',\n style: {\n fontSize: 16,\n },\n};\n","import React from 'react';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { Page } from '../shared/components/Page';\nimport { ChevronLeftCircleIcon } from '../shared/icons/chevron-left-circle-icon';\nimport { LandingPageUrl } from '../shared/constants';\n\nexport const ForbiddenPage = () => {\n const params = new URLSearchParams(window.location.search);\n const reason = params.get('reason') || 'Access Denied.';\n const traceId = params.get('trace_id');\n\n return (\n \n \n 403 - Forbidden\n \n \n {reason}\n \n \n {traceId ? `Request ID: ${traceId}` : ''}\n \n window.location.replace(LandingPageUrl)}\n >\n \n RETURN TO LOGIN\n \n \n );\n};\n","import * as React from 'react';\nimport { reduxForm } from 'redux-form';\n\ntype FormProps = {\n children?: any;\n className?: any;\n handleSubmit: any;\n};\n\nconst FormCore = (props: FormProps): React.ReactElement => {\n return (\n
\n {props.children}\n
\n );\n};\n\nexport const Form: any = reduxForm({\n // a unique name for the form\n form: 'pageForm',\n})(FormCore);\n","export const required = (value: any) =>\n value && value.replace(/\\s/g, '').length > 0 ? undefined : 'Required';\nexport const requiredCustom = (message: string) => (value: any) => {\n return required(value) ? message : undefined;\n};\nexport const validEmailCustom = (message: string = 'Invalid email address') => (\n value: string\n) => {\n return validEmail(value) ? undefined : message;\n};\nexport const validEmail = (value: any) =>\n value && /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(value)\n ? 'Valid'\n : undefined;\n\nexport const validCode = (isInvalid: boolean) => () => {\n return isInvalid\n ? 'The code entered is invalid. Please try again.'\n : undefined;\n};\n","import { axiosApi } from '@dealersocket/react-common';\n\nexport function axiosHelper(\n url: string,\n options: any,\n setSubmitting: any,\n replace: any,\n setAlertMessage: any,\n clearAlertMessage: any\n): any {\n setSubmitting(true);\n clearAlertMessage();\n\n return axiosApi(url, options)\n .then((payload) => {\n setSubmitting(false);\n return payload;\n })\n .catch((error) => {\n setSubmitting(false);\n if (error.response.data === 'LoginExpired') {\n replace('/loginExpired');\n } else if (error.response.status === 400 && !error.response.data) {\n setAlertMessage(\n 'An error occurred. Please reload the page and try again.',\n false,\n true\n );\n } else {\n let dataMessage;\n if (\n typeof error.response.data === 'object' &&\n error.response.data !== null\n ) {\n dataMessage = JSON.stringify(error.response.data);\n } else {\n dataMessage = error.response.data;\n }\n setAlertMessage(dataMessage || error.message);\n }\n return Promise.reject(error);\n });\n}\n","import { axiosApi } from '@dealersocket/react-common';\nimport { useEffect, useState } from 'react';\n\nexport function useAxios(url: string, options: any): any {\n const [result, setResult] = useState({});\n const [isBusy, setIsBusy] = useState(true);\n const [error, setError] = useState(null);\n\n const callAxiosApi = () =>\n axiosApi(url, options)\n .then((response) => {\n setResult(response);\n setIsBusy(false);\n })\n .catch((errorResponse) => {\n setError(errorResponse);\n setIsBusy(false);\n });\n\n useEffect(() => {\n callAxiosApi();\n /* eslint-disable react-hooks/exhaustive-deps */\n }, []);\n\n return [result, isBusy, error];\n}\n","import * as React from 'react';\nimport Paper from '@material-ui/core/Paper';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport { withStyles } from '@material-ui/styles';\nimport { useAxios } from '../../shared/utils/use-axios';\n\nconst styles = (theme: Theme) => {\n return {\n paperBorder: {\n borderRadius: 10,\n [theme.breakpoints.down('xs')]: {\n borderRadius: 0,\n },\n },\n };\n};\n\nconst useStyles = makeStyles({\n marketingBox: {\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n cursor: 'pointer',\n height: 'calc(100% - 85px)',\n marginRight: -15,\n marginTop: 85,\n width: 440,\n // CSS property\n backgroundImage: (props: any) => `url(${props.backgroundImage})`,\n },\n});\n\ntype InternalProps = {\n classes: any;\n};\n\nconst MarketingBannerComponent = (props: InternalProps) => {\n const { classes } = props;\n const [source, setSource] = React.useState('');\n const [dest, setDest] = React.useState('');\n\n const [result] = useAxios('/account/GetMarketingBanner', undefined);\n\n React.useEffect(() => {\n if (result && result.imageSourceUrl) {\n setSource(result.imageSourceUrl);\n }\n if (result && result.destinationTargetUrl) {\n setDest(result.destinationTargetUrl);\n }\n }, [result]);\n\n const styleProps = {\n backgroundImage: source,\n };\n const dynamicClasses = useStyles(styleProps);\n\n return (\n \n \n \n );\n};\n\nexport const MarketingBanner = withStyles(styles)(MarketingBannerComponent);\n","/* eslint-disable max-lines */\nimport React, { useEffect, useRef, useState } from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect, useDispatch } from 'react-redux';\nimport { change, formValueSelector } from 'redux-form';\nimport { push } from 'connected-react-router';\nimport Divider from '@material-ui/core/Divider';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport PersonIcon from '@material-ui/icons/Person';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport { Typography } from '@dealersocket/ds-ui-react/Typography';\nimport { axiosApi } from '@dealersocket/react-common';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { required } from '../../shared/utils/validation';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { defaultInputProps } from '../../shared/constants';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\nimport { MarketingBanner } from './marketing-banner.component';\n\nconst styles = (): StyleRules => ({\n buttonContainer: {\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'flex-start',\n },\n changeAccountsContainer: {\n marginBottom: 4,\n },\n container: {\n height: '100%',\n minHeight: 174,\n },\n divider: {\n width: '46%',\n },\n dividerDiv: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n paddingBottom: 15,\n },\n externalProvider: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n marginTop: 15,\n },\n externalProviderNoLocal: {\n alignItems: 'flex-end',\n display: 'flex',\n flexDirection: 'column',\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n // ie needs defined height to flex\n height: 174,\n justifyContent: 'space-between',\n minHeight: 174,\n },\n forgotPassword: { marginRight: 10 },\n hidden: {\n display: 'none',\n },\n password: {\n marginBottom: 10,\n },\n rightButton: {\n float: 'right',\n },\n textFieldIcon: {\n marginRight: 5,\n },\n typographyDivider: {\n paddingLeft: 10,\n paddingRight: 10,\n },\n usernameContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\ntype LoginProps = {\n classes: any;\n isSubmitting: boolean;\n push: any;\n returnUrl: string;\n usernameValue?: string;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst getClientIdFromReturnUrl = (s) => {\n if (s) {\n const clientIdParam = s\n .substr(s.indexOf('?') + 1)\n .split('&')\n .filter((x) => x.includes('client_id'))\n .pop();\n if (clientIdParam) {\n return clientIdParam.split('=')[1];\n }\n }\n return null;\n};\n\nconst Login = (props: LoginProps) => {\n const { classes, isSubmitting, product, usernameValue } = props;\n\n const urlParams = new URLSearchParams(window.location.search);\n const returnUrl = urlParams.get('ReturnUrl');\n const clientId = getClientIdFromReturnUrl(returnUrl);\n\n const dispatch = useDispatch();\n\n const [loginReady, setLoginReady] = useState(false);\n const [providerId, setProviderId] = useState(false);\n const [allowLocalLogin, setAllowLocalLogin] = useState(true);\n const [providerDisplayName, setProviderDisplayName] = useState('');\n const [enterpriseEnabled, setEnterpriseEnabled] = useState(false);\n\n const usernameInputRef = useRef(null);\n const passwordInputRef = useRef(null);\n\n const onOktaClick = (): any => {\n if (returnUrl != null) {\n window.location.href = `/external/login?idp=${providerId}&returnUrl=${encodeURIComponent(\n returnUrl\n )}`;\n }\n };\n\n const onContinueClick = () => {\n const body = {\n username: usernameValue || localStorage.getItem(`${product}_username`),\n };\n\n axiosHelper(\n '/account/checkUsername',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n undefined,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (typeof usernameValue === 'string') {\n localStorage.setItem(`${product}_username`, usernameValue);\n }\n\n setAllowLocalLogin(payload.allowLocalLogin);\n setProviderId(payload.providerId);\n setProviderDisplayName(payload.providerDisplayName);\n\n if (payload.needsChange) {\n window.location.reload();\n } else {\n setLoginReady(true);\n if (passwordInputRef && passwordInputRef.current) {\n passwordInputRef.current.focus();\n }\n }\n })\n .catch(() => {});\n };\n\n const onSubmit = (values: any): any => {\n const body = {\n ...values,\n returnUrl,\n };\n\n axiosHelper(\n '/account/login',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n undefined,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.push(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n const onClick = () => {\n let route = '/password/forgot';\n const params: string[] = [];\n if (usernameValue) {\n params.push(`username=${encodeURIComponent(usernameValue)}`);\n }\n params.push(`returnUrl=${encodeURI(window.location.href)}`);\n route = `${route}?${params.join('&')}`;\n props.push(route);\n };\n\n const changeAccounts = () => {\n localStorage.removeItem(`${product}_username`);\n setLoginReady(false);\n setTimeout(() => {\n if (usernameInputRef && usernameInputRef.current) {\n usernameInputRef.current.focus();\n }\n }, 100);\n };\n\n useEffect(() => {\n axiosApi('api/settings/isEnterpriseLogin', {})\n .then((payload) => {\n if (payload) {\n setEnterpriseEnabled(true);\n if (localStorage.getItem(`${product}_username`)) {\n dispatch(\n change(\n 'pageForm',\n 'username',\n localStorage.getItem(`${product}_username`)\n )\n );\n onContinueClick();\n }\n }\n })\n .catch(() => {});\n /* eslint-disable react-hooks/exhaustive-deps */\n }, []);\n\n return (\n }>\n
\n \n \n
\n \n }\n autoFocus\n validate={[required]}\n required\n />\n {loginReady && enterpriseEnabled && (\n
\n \n Change\n \n
\n )}\n
\n {allowLocalLogin && (\n \n }\n validate={\n loginReady || !enterpriseEnabled ? [required] : undefined\n }\n required\n />\n )}\n
\n
\n {(allowLocalLogin || !loginReady) && (\n \n {loginReady || !enterpriseEnabled ? 'Login' : 'Continue'}\n \n )}\n {allowLocalLogin && (\n \n Forgot Password\n \n )}\n
\n \n
\n {providerId && loginReady && (\n \n {allowLocalLogin && (\n
\n \n \n OR\n \n \n
\n )}\n \n Login with {providerDisplayName}\n \n \n )}\n
\n );\n};\n\nconst selector = formValueSelector('pageForm');\nfunction mapStateToProps(state: any) {\n return {\n usernameValue: selector(state, 'username'),\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return bindActionCreators(\n { push, ...AlertStore.actionCreators, ...CommonFormStore.actionCreators },\n dispatch\n );\n}\n\nconst StyledLogin = withStyles(styles)(Login);\n\nexport const LoginPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledLogin);\n","import React, { useState, useEffect } from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { axiosApi } from '@dealersocket/react-common';\nimport * as AlertStore from '../../store/Alert';\nimport { Page } from '../../shared/components/Page';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\n\ntype LogoutProps = {\n clientName: string;\n} & typeof AlertStore.actionCreators;\n\nfunction Logout({ setAlertMessage }: LogoutProps) {\n const [postLogoutRedirectUri, setPostLogoutRedirectUri] = useState();\n const [clientName, setClientName] = useState('');\n const [signOutIframeUrl, setSignOutIframeUrl] = useState();\n\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n const logoutId = params.get('logoutId');\n\n const body = {\n logoutId,\n };\n\n axiosApi('/account/logout', {\n method: 'post',\n data: body,\n })\n .then((payload) => {\n setPostLogoutRedirectUri(payload.postLogoutRedirectUri);\n setClientName(payload.clientName);\n setSignOutIframeUrl(payload.signOutIframeUrl);\n if (payload.postLogoutRedirectUri) {\n setTimeout(() => {\n window.location.replace(payload.postLogoutRedirectUri);\n }, 10000);\n }\n })\n .catch((error) => {\n setAlertMessage(error.response.data || error.message);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [] as any);\n\n return (\n You have been logged out}>\n {postLogoutRedirectUri ? (\n
\n \n If you are not automatically redirected, you can click below to\n return to the login page for {clientName}.\n \n \n
\n ) : null}\n {signOutIframeUrl && (\n \n )}\n
\n );\n}\n\nfunction mapStateToProps(state: any) {\n return { ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return bindActionCreators({ ...AlertStore.actionCreators }, dispatch);\n}\n\nexport const LogoutPage = connect(mapStateToProps, mapDispatchToProps)(Logout);\n","import { axiosHelper } from './axios-helper';\n\nexport const continueLogin = (\n setIsSubmitting: any,\n replace: any,\n setAlertMessage: any,\n clearAlertMessage: any\n) => {\n axiosHelper(\n '/account/continueLogin',\n {\n method: 'post',\n },\n setIsSubmitting,\n replace,\n setAlertMessage,\n clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n};\n","import { axiosHelper } from './axios-helper';\n\nexport const cancelLogin = (\n setIsSubmitting: any,\n replace: any,\n setAlertMessage: any,\n clearAlertMessage: any\n) => {\n axiosHelper(\n '/account/cancelLogin',\n {\n method: 'post',\n },\n setIsSubmitting,\n replace,\n setAlertMessage,\n clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n};\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport const ChevronRightCircleIcon = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { connect } from 'react-redux';\nimport { push, replace } from 'connected-react-router';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport PersonIcon from '@material-ui/icons/Person';\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport {\n required,\n validEmail,\n validEmailCustom,\n} from '../../shared/utils/validation';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport { useAxios } from '../../shared/utils/use-axios';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\nimport { ChevronRightCircleIcon } from '../../shared/icons/chevron-right-circle-icon';\nimport * as CommonStore from '../../store/Common';\n\nconst styles = (theme: Theme): StyleRules => {\n return {\n buttonStyle: {\n whiteSpace: 'nowrap',\n marginLeft: 12,\n padding: '10px 40px',\n },\n secondaryButtonStyle: {\n [theme.breakpoints.only('xs')]: {\n height: 40,\n },\n },\n formGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n buttonGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n justifyContent: 'space-between',\n },\n textFieldIcon: { marginRight: 5 },\n skipCountdown: {\n float: 'right',\n '& span': {\n margin: 3,\n },\n },\n skipCountdownMessage: {\n display: 'flex',\n alignItems: 'center',\n },\n skipCountdownWarn: {\n color: 'red',\n display: 'inline-flex',\n alignItems: 'center',\n },\n skipCountdownWarnIcon: {\n marginRight: 3,\n },\n };\n};\n\ntype UsernameUpdateProps = {\n isSubmitting: boolean;\n push: any;\n replace: any;\n isValidEmail: boolean;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\ntype InternalProps = {\n classes: JssClasses;\n};\n\nfunction UsernameUpdate(props: UsernameUpdateProps & InternalProps) {\n const { isSubmitting, classes, isValidEmail, webPSupported } = props;\n\n const [result, busy] = useAxios('/accountSetup/getUsernameUpdate', undefined);\n\n const skipUsernameUpdate = () => {\n const body = {};\n\n axiosHelper(\n '/accountSetup/skipUsernameUpdate',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n const cancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n const onSubmit = (values: any): any => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/accountSetup/updateUsername',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n undefined,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.push(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n return (\n \n \n Ready to streamline your login process?\n \n \n Type the email address that you will use to log in to DealerSocket.\n \n {result.daysLeft > 0 && (\n \n Click Not Now to skip this process for{' '}\n {result.daysLeft} {result.daysLeft > 1 ? 'days' : 'day'}.\n \n )}\n \n \n }\n autoFocus\n required\n placeholder=\"Email\"\n disabled={isSubmitting || busy}\n fullWidth={webPSupported}\n validate={[\n required,\n validEmailCustom('Please enter a valid email address'),\n ]}\n />\n \n Continue\n \n \n \n \n \n Return To Login\n \n\n {result.daysLeft > 0 ? (\n \n Not Now\n \n \n ) : null}\n \n \n {result.daysLeft > 0 && (\n
\n \n \n {result.daysLeft <= 10 ? (\n \n {' '}\n {result.daysLeft} {result.daysLeft > 1 ? 'days' : 'day'}\n \n ) : (\n {result.daysLeft} days\n )}\n \n left to skip\n \n
\n )}\n
\n );\n}\n\nfunction mapStateToProps(state: any) {\n const selector = formValueSelector('pageForm');\n const email = selector(state, 'email');\n return {\n ...state.common,\n ...state.commonForm.dataModel,\n isValidEmail: validEmail(email),\n };\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return bindActionCreators(\n {\n push,\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nconst StylePage = withStyles(styles)(UsernameUpdate);\n\nexport const UsernameUpdatePage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StylePage);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport PersonIcon from '@material-ui/icons/Person';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\nimport { useAxios } from '../../shared/utils/use-axios';\nimport { required, validEmailCustom } from '../../shared/utils/validation';\nimport { defaultInputProps } from '../../shared/constants';\nimport { getProductValue } from '../../shared/enums';\nimport { continueLogin } from '../../shared/utils/continue-login';\n\ntype AccountExistsProps = {\n isSubmitting: boolean;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst useStyles = makeStyles({\n buttonContainer: {\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'flex-start',\n },\n changeEmailButton: {\n whiteSpace: 'nowrap',\n marginBottom: 4,\n },\n forgotPassword: { marginRight: 10 },\n formContainer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n },\n password: {\n marginBottom: 10,\n },\n textFieldIcon: {\n marginRight: 5,\n },\n usernameContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\nconst AccountExists = (props: AccountExistsProps) => {\n const { isSubmitting, webPSupported, product } = props;\n const onSubmit = (values) => {\n const body = {\n username: values.email,\n password: values.password,\n product: product ? getProductValue(product) : null,\n };\n axiosHelper(\n '/accountSetup/linkExistingAccount',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n ).then(() =>\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n );\n };\n\n const [result, busy] = useAxios(\n '/accountSetup/getProposedUsername',\n undefined\n );\n\n const classes = useStyles();\n const changeEmail = () => {\n props.replace('/accountSetup/usernameUpdate');\n };\n\n const onForgotPassword = () => {\n axiosHelper(\n '/password/sendReset',\n {\n method: 'post',\n data: { username: result.proposedUsername },\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n return (\n \n \n \n An account already exists for this email\n \n \n If this is you, sign in with your password to link this account under\n your email. If this is not you, select "Change email" to\n enter a different email address.\n \n
\n
\n }\n validate={[\n required,\n validEmailCustom('Please enter a valid email address'),\n ]}\n />\n \n Change Email\n \n
\n }\n fullWidth\n validate={[required]}\n required\n />\n
\n
\n \n Continue\n \n \n Forgot Password\n \n
\n \n
\n );\n};\n\nfunction mapStateToProps(state) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const AccountExistsPage: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(AccountExists);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport PersonIcon from '@material-ui/icons/Person';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\nimport {\n required,\n validEmail,\n validEmailCustom,\n} from '../../shared/utils/validation';\nimport { useAxios } from '../../shared/utils/use-axios';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\n\nconst styles = (theme: Theme): StyleRules => {\n return {\n buttonStyle: {\n whiteSpace: 'nowrap',\n marginLeft: 12,\n padding: '10px 40px',\n },\n secondaryButtonStyle: {\n [theme.breakpoints.only('xs')]: {\n height: 40,\n },\n },\n formGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n buttonGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n justifyContent: 'space-between',\n },\n textFieldIcon: { marginRight: 5 },\n };\n};\n\nexport type UsernameVerificationProps = {\n email: string;\n isSubmitting: boolean;\n replace: any;\n isValidEmail: boolean;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\ntype InternalProps = {\n classes: JssClasses;\n};\n\nconst UsernameVerification = (\n props: UsernameVerificationProps & InternalProps\n) => {\n const { isSubmitting, classes, isValidEmail, webPSupported } = props;\n\n const [result, busy] = useAxios(\n '/accountSetup/getProposedUsername',\n undefined\n );\n\n const cancel = () => {\n props.replace('/accountSetup/usernameUpdate');\n };\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/accountSetup/sendUsernameVerification',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n return (\n \n \n EMAIL VERIFICATION REQUIRED\n \n \n Please confirm or enter your email address, then click the SEND EMAIL\n button. We'll send a verification code to the specified email\n address that you can enter on the next page to verify it.\n \n \n \n }\n autoFocus\n required\n placeholder=\"Email\"\n disabled={isSubmitting || busy}\n fullWidth={webPSupported}\n validate={[\n required,\n validEmailCustom('Please enter a valid email address'),\n ]}\n />\n \n Send Email\n \n \n \n \n \n Back\n \n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const email = selector(state, 'email');\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n isValidEmail: validEmail(email),\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nconst StylePage = withStyles(styles)(UsernameVerification);\n\nexport const UsernameVerificationPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StylePage);\n","import { useState, useEffect, useRef } from 'react';\n\nexport type CallbackOperationCompletedType = (\n data?: any,\n error?: string\n) => void;\nconst noop: CallbackOperationCompletedType = (): void => {};\n\ntype CallbackOperationType = (...args: any[]) => Promise;\n\nexport function useAsyncOperation(\n callback: CallbackOperationType,\n completedCallback: CallbackOperationCompletedType = noop\n): any {\n const callbackRef: any = useRef();\n const completedCallbackRef: any = useRef();\n const isMountedRef: any = useRef(undefined);\n const [isBusy, setIsBusy] = useState(false);\n const [result, setResult] = useState(undefined);\n const [error, setError] = useState(undefined);\n\n // If caller is using a locally-defined function, this will\n // keep things up to date.\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n completedCallbackRef.current = completedCallback;\n }, [completedCallback]);\n\n // Detect if component gets un-mounted\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n async function wrapperFunc(...args: any[]): Promise {\n if (isBusy) {\n throw new Error('Request is in progress');\n }\n\n try {\n setIsBusy(true);\n setResult(undefined);\n setError(undefined);\n\n const data: any = await callbackRef.current(...args);\n\n if (isMountedRef.current) {\n setIsBusy(false);\n setResult(data);\n completedCallbackRef.current(data, undefined);\n }\n } catch (err) {\n if (isMountedRef.current) {\n setIsBusy(false);\n const errorMessage = err.response.data || err.message;\n setError(errorMessage);\n completedCallbackRef.current(undefined, errorMessage);\n }\n }\n }\n\n return [wrapperFunc, isBusy, result, error];\n}\n","import React, { useEffect, useState } from 'react';\n\ninterface ExternalProps {\n timeoutEnd: number;\n}\n\nexport function Timer({\n timeoutEnd,\n}: ExternalProps): React.ReactElement {\n const calculateTimeRemaining = () => {\n const difference = timeoutEnd - Date.now();\n let timeRemaining = {};\n\n if (difference > 0) {\n timeRemaining = {\n days: Math.floor(difference / (1000 * 60 * 60 * 24)),\n hours: Math.floor((difference / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((difference / 1000 / 60) % 60),\n seconds: Math.floor((difference / 1000) % 60),\n };\n }\n\n return timeRemaining;\n };\n\n const [timeRemaining, setTimeRemaining] = useState(calculateTimeRemaining());\n\n useEffect(() => {\n const timerFunc = setTimeout(() => {\n setTimeRemaining(calculateTimeRemaining());\n }, 1000);\n\n return () => {\n clearTimeout(timerFunc);\n };\n });\n\n const timerComponents: any = [];\n\n Object.keys(timeRemaining).forEach((timeInterval) => {\n if (!timeRemaining[timeInterval]) {\n return;\n }\n\n timerComponents.push(\n \n {timeRemaining[timeInterval]} {timeInterval}{' '}\n \n );\n });\n\n return timerComponents;\n}\n","import { replace } from 'connected-react-router';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { StyleRules, withStyles } from '@material-ui/styles';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Form } from '../Form';\nimport { Page } from '../Page';\nimport { required, validCode } from '../../utils/validation';\nimport { ChevronLeftCircleIcon } from '../../icons/chevron-left-circle-icon';\nimport { Timer } from '../Timer/timer.component';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonStore from '../../../store/CommonForm';\n\nconst styles = (theme: Theme): StyleRules => {\n return {\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n buttonStyle: {\n [theme.breakpoints.up('sm')]: {\n marginLeft: 12,\n padding: '10px 40px',\n whitespace: 'nowrap',\n },\n [theme.breakpoints.only('xs')]: {\n width: '55%',\n marginBottom: 20,\n },\n },\n div: {\n [theme.breakpoints.only('xs')]: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n },\n formGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n [theme.breakpoints.only('xs')]: {\n flexDirection: 'column',\n },\n },\n secondaryButtonStyle: {\n [theme.breakpoints.only('xs')]: {\n height: 40,\n },\n },\n tooltip: {\n maxWidth: 300,\n },\n typography: {\n color: theme.palette.common.white,\n },\n };\n};\n\ntype VerifyProps = {\n cancel: () => void;\n disableResend: boolean;\n isInvalid: boolean;\n isSubmitting: boolean;\n loading: boolean;\n onSubmit: (values) => void;\n resendCode: () => void;\n submittedCode: string;\n timeoutEnd: number;\n verificationCode: string;\n};\n\ntype InternalProps = {\n classes: JssClasses;\n};\n\nconst Verify = (props: VerifyProps & InternalProps) => {\n const {\n cancel,\n disableResend,\n isInvalid,\n isSubmitting,\n loading,\n onSubmit,\n resendCode,\n submittedCode,\n timeoutEnd,\n verificationCode,\n classes,\n } = props;\n\n const tooltipText = (\n \n Verification code sent. You may send another code after{' '}\n have passed.\n \n );\n\n const tooltip = (\n \n
\n \n RESEND CODE\n \n
\n \n );\n\n const theme = useTheme();\n const xs = useMediaQuery(theme.breakpoints.only('xs'));\n\n return (\n \n
\n \n VERIFICATION REQUIRED\n \n \n Type the verification code you received by email.\n \n\n \n \n
\n \n Verify\n \n {xs && tooltip}\n
\n
\n
\n
\n \n \n RETURN TO LOGIN\n \n {!xs && tooltip}\n
\n
\n );\n};\n\nconst StyledVerifyPage = withStyles(styles)(Verify);\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const verificationCode = selector(state, 'verificationCode');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n verificationCode,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const VerifyPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledVerifyPage);\n","import { replace } from 'connected-react-router';\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { axiosApi } from '@dealersocket/react-common';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport { useAsyncOperation } from '../../shared/utils/use-async-operation';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { VerifyPage } from '../../shared/components/Verify';\n\ntype VerifyUsernameProps = {\n isSubmitting: boolean;\n replace: any;\n verificationCode: string;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nasync function getLastVerificationResendDate() {\n return axiosApi('/email/GetLastVerificationSentDate', undefined);\n}\n\nconst VerifyUsername = (props: VerifyUsernameProps) => {\n const { isSubmitting, verificationCode } = props;\n\n const [disableResend, setDisableResend] = useState(false);\n const [isInvalid, setIsInvalid] = useState(false);\n const [submittedCode, setSubmittedCode] = useState('');\n const [timeoutEnd, setTimeoutEnd] = useState(0);\n\n async function resendVerificationCode() {\n return axiosApi('/accountSetup/resendUsernameVerificationCode', {\n method: 'post',\n });\n }\n\n const [\n resendVerificationCodeFunc,\n busy,\n ] = useAsyncOperation(resendVerificationCode, (result, error) =>\n error ? props.setAlertMessage(error) : startTimer(result)\n );\n\n const startTimer = (result: any) => {\n if (result && result.lastResendVerificationCodeDate) {\n const lastSendTime =\n Date.parse(result.lastResendVerificationCodeDate) + result.delay;\n const currentTime = Date.now();\n\n if (lastSendTime - currentTime > 0) {\n setTimeoutEnd(lastSendTime);\n setDisableResend(true);\n setTimeout(() => setDisableResend(false), lastSendTime - currentTime);\n }\n }\n };\n\n const [\n getLastVerificationResendDateFunc,\n loading,\n ] = useAsyncOperation(getLastVerificationResendDate, (result, error) =>\n error ? props.setAlertMessage(error) : startTimer(result)\n );\n\n useEffect(() => {\n getLastVerificationResendDateFunc();\n /* eslint-disable react-hooks/exhaustive-deps */\n }, []);\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/accountSetup/verifyUsername',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {\n setSubmittedCode(verificationCode);\n setIsInvalid(true);\n });\n };\n\n const cancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const verificationCode = selector(state, 'verificationCode');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n verificationCode,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const VerifyUsernamePage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(VerifyUsername);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport {\n reduxForm,\n formValueSelector,\n isInvalid,\n isPristine,\n} from 'redux-form';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport Visibility from '@material-ui/icons/Visibility';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport {\n oneCapitalValidator,\n oneLowercaseValidator,\n oneNumberValidator,\n minLengthValidator,\n passwordsMatchValidator,\n} from '@dealersocket/ds-ui-react/PasswordValidation/password-validators';\nimport { PasswordValidation } from '@dealersocket/ds-ui-react/PasswordValidation';\nimport { ChevronLeftCircleIcon } from '../../icons/chevron-left-circle-icon';\n\nconst styles = (theme: Theme): StyleRules => ({\n buttonContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n [theme.breakpoints.down('sm')]: {\n flexDirection: 'column-reverse',\n height: 80,\n },\n },\n container: {\n display: 'flex',\n [theme.breakpoints.only('xs')]: {\n flexDirection: 'column-reverse',\n },\n },\n form: {\n flex: 'auto',\n minWidth: 225,\n [theme.breakpoints.up('sm')]: {\n marginRight: 24,\n },\n [theme.breakpoints.only('xs')]: {\n marginTop: 15,\n },\n },\n validationContainer: {\n [theme.breakpoints.up('sm')]: {\n maxWidth: 250,\n },\n },\n});\n\ntype InternalProps = {\n classes: JssClasses;\n confirmNewPasswordValue: string;\n hideReturnButton: boolean;\n handleSubmit: (e: React.FormEvent) => void;\n isCurrentPasswordPopulated: boolean;\n isNewPasswordPopulated: boolean;\n isSubmitting: boolean;\n invalid: boolean;\n newPasswordValue: string;\n pristine: boolean;\n};\n\nexport type ExternalProps = {\n busy?: boolean;\n requireCurrentPassword: boolean;\n onCancel: any;\n};\n\ntype PasswordFormProps = InternalProps & ExternalProps;\n\nfunction PasswordFormCore(\n props: PasswordFormProps\n): React.ReactElement {\n const {\n busy,\n classes,\n confirmNewPasswordValue,\n handleSubmit,\n hideReturnButton,\n isCurrentPasswordPopulated,\n isNewPasswordPopulated,\n isSubmitting,\n invalid,\n newPasswordValue,\n pristine,\n requireCurrentPassword,\n onCancel,\n } = props;\n\n const [values, setValues] = React.useState({\n showPassword: false,\n });\n\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n\n return (\n
\n
\n \n \n {requireCurrentPassword ? (\n \n ) : null}\n \n {values.showPassword ? : }\n \n }\n />\n \n {values.showPassword ? : }\n \n }\n />\n \n
\n {!hideReturnButton && (\n \n )}\n \n Set Password\n \n
\n
\n
\n \n
\n
\n );\n}\n\nconst StyledPasswordForm = withStyles(styles)(PasswordFormCore as any);\n\nconst PasswordForm = reduxForm({\n form: 'passwordForm',\n})(StyledPasswordForm as any);\n\nconst selector = formValueSelector('passwordForm');\n\nfunction mapStateToProps(state: any) {\n const newPasswordValue = selector(state, 'newPassword');\n const confirmNewPasswordValue = selector(state, 'confirmNewPassword');\n\n return {\n ...state.commonForm,\n isCurrentPasswordPopulated: selector(state, 'currentPassword'),\n isNewPasswordPopulated: newPasswordValue && confirmNewPasswordValue,\n invalid: isInvalid('passwordForm'),\n pristine: isPristine('passwordForm'),\n newPasswordValue,\n confirmNewPasswordValue,\n };\n}\n\nexport const ConnectedPasswordForm: any = connect(mapStateToProps)(\n PasswordForm\n);\n","import React from 'react';\nimport { bindActionCreators, compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport { Page } from '../../shared/components/Page';\nimport { ConnectedPasswordForm } from '../../shared/components/PasswordForm';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\nimport { useAxios } from '../../shared/utils/use-axios';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { continueLogin } from '../../shared/utils/continue-login';\n\ntype SetAccountPasswordProps = {\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst SetAccountPassword = (props: SetAccountPasswordProps) => {\n const { product } = props;\n\n const [result, busy] = useAxios(\n '/accountSetup/getProposedUsername',\n undefined\n );\n\n const params = new URLSearchParams(window.location.search);\n const verificationCode = params.get('securityCode') || '';\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/accountSetup/setAccountPassword',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n localStorage.setItem(`${product}_username`, result.proposedUsername);\n localStorage.setItem('ent_username', result.proposedUsername);\n if (payload) {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n } else {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n }\n })\n .catch(() => {});\n };\n\n const onCancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n \n RESET PASSWORD\n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const SetAccountPasswordPage = compose(\n connect(mapStateToProps, mapDispatchToProps)\n)(SetAccountPassword);\n","import React, { useState } from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { push, replace } from 'connected-react-router';\nimport Card from '@material-ui/core/Card';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { CheckboxField } from '@dealersocket/ds-ui-react/fields/CheckboxField';\nimport { DsLogoProgress } from '@dealersocket/ds-ui-react/DsLogoProgress';\nimport {\n AutoMateLongIcon,\n InvPlusLogoIcon,\n CrmLongIcon,\n DealerFireLongIcon,\n IdmsLongIcon,\n PrecisePriceLongIcon,\n RevenueRadarLongIcon,\n} from '@dealersocket/ds-ui-react/logos';\nimport { getProductFromEnum } from '../../../shared/enums';\nimport { axiosHelper } from '../../../shared/utils/axios-helper';\nimport { continueLogin } from '../../../shared/utils/continue-login';\nimport { Page } from '../../../shared/components/Page';\nimport { useAxios } from '../../../shared/utils/use-axios';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonFormStore from '../../../store/CommonForm';\nimport * as CommonStore from '../../../store/Common';\n\nconst styles = (): StyleRules => {\n return {\n bottomContainer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n buttonContainer: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n contentContainer: {\n display: 'flex',\n flexDirection: 'row',\n minHeight: 572,\n },\n description: {\n marginBottom: 30,\n },\n headerTitle: {\n marginBottom: 15,\n },\n leftContent: {\n backgroundColor: '#f5f5f5',\n paddingBottom: 40,\n paddingTop: 40,\n minHeight: 572,\n width: 283,\n },\n loader: { margin: 'auto' },\n loaderContainer: { display: 'flex', height: '100%' },\n menuItem: {\n backgroundColor: 'transparent',\n height: 76,\n width: '100%',\n paddingLeft: 40,\n paddingRight: 40,\n },\n rightContent: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n margin: '40px',\n width: '60%',\n },\n };\n};\n\ntype InternalProps = {\n classes: any;\n push?: any;\n replace?: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst LinkingIntroComponent = (props: InternalProps) => {\n const { classes } = props;\n\n const title = 'Set up your DealerSocket Account';\n const header1 = 'One username. One password.';\n const header2 = 'All your DealerSocket products.';\n const description =\n 'Follow this two-step process to connect all your accounts under your master login. It only takes a moment.';\n\n const iconProps = { width: '210px', height: '36px', viewBox: '0 0 210 36' };\n\n const [doNotAskAgain, setDoNotAskAgain] = useState(false);\n const [result, busy] = useAxios(\n '/accountSetup/getEnabledLinkingProducts',\n undefined\n );\n\n const products = result && Array.isArray(result) ? [...result] : [];\n if (products.find((p) => p.type === 1)) {\n products.push({\n type: -1,\n });\n }\n\n if (products.find((p) => p.type === 3)) {\n products.push({\n type: -2,\n });\n }\n\n products.sort((p1, p2) => {\n if (getProductFromEnum(p1.type) > getProductFromEnum(p2.type)) return 1;\n if (getProductFromEnum(p1.type) < getProductFromEnum(p2.type)) return -1;\n return 0;\n });\n\n const onSkip = () => {\n axiosHelper(\n `/accountSetup/skipLinking?doNotAskAgain=${doNotAskAgain}`,\n {\n method: 'post',\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload) {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n } else {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n }\n })\n .catch(() => {});\n };\n\n const getItem = (product: number) => {\n switch (product) {\n case 1:\n return ;\n case 2:\n return ;\n case 3:\n return ;\n case 4:\n return ;\n case 5:\n return ;\n\n case -1:\n return ;\n case -2:\n return ;\n\n default:\n return null;\n }\n };\n\n return (\n <>\n \n
\n \n
\n
\n {busy ? (\n
\n
\n \n
\n
\n ) : (\n
\n {products.map((p) => (\n \n {getItem(p.type)}\n
\n ))}\n
\n )}\n
\n
\n
\n
\n \n {header1}\n \n \n {header2}\n \n
\n
\n {description}\n
\n
\n props.push('/accountSetup/linking')}\n >\n Start Now\n \n
\n
\n
\n setDoNotAskAgain(checked)}\n />\n \n
\n
\n
\n \n \n
\n \n );\n};\n\nfunction mapStateToProps(state: any) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return bindActionCreators(\n {\n push,\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nconst StyledPage = withStyles(styles)(LinkingIntroComponent);\n\nexport const LinkingIntroPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledPage);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\nimport { useAxios } from '../../shared/utils/use-axios';\n\ntype VerificationSuccessProps = {\n isSubmitting: boolean;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst useStyles = makeStyles({\n button: {\n alignSelf: 'flex-end',\n },\n img: {\n backgroundImage: (props: any) => props.backgroundImage,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n height: 0,\n paddingTop: '38.25%',\n width: '100%',\n },\n title: {\n fontWeight: 500,\n },\n});\n\nconst AccountSetupSuccess = (props: VerificationSuccessProps) => {\n const { isSubmitting, webPSupported } = props;\n\n const onSubmit = () => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n const [result] = useAxios('/accountSetup/getProposedUsername', undefined);\n\n const styleProps = {\n backgroundImage: `url(images/email_confirmation_instruction_image.${\n webPSupported ? 'webp' : 'jpg'\n })`,\n };\n\n const classes = useStyles(styleProps);\n\n return (\n Congratulations!}\n >\n
\n \n You have successfully updated your account.\n \n \n Remember to use {result.proposedUsername} and your\n new password when logging in next time.\n \n
\n \n \n Got it\n \n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const AccountSetupSuccessPage: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(AccountSetupSuccess);\n","import React, { useEffect, useState } from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { axiosApi } from '@dealersocket/react-common';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Page } from '../../../shared/components/Page';\nimport { Form } from '../../../shared/components/Form';\nimport { continueLogin } from '../../../shared/utils/continue-login';\nimport {\n getProductDisplayName,\n getProductFromEnum,\n} from '../../../shared/enums';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonFormStore from '../../../store/CommonForm';\nimport * as CommonStore from '../../../store/Common';\n\ntype LinkingSuccessProps = {\n isSubmitting: boolean;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst useStyles = makeStyles({\n button: {\n alignSelf: 'flex-end',\n },\n img: {\n backgroundImage: (props: any) => props.backgroundImage,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'contain',\n height: 0,\n paddingTop: '62%',\n width: '100%',\n },\n title: {\n fontWeight: 500,\n },\n});\n\nconst LinkingSuccess = (props: LinkingSuccessProps) => {\n const { isSubmitting, webPSupported } = props;\n\n const [username, setUsername] = useState('');\n const [linkedProducts, setLinkedProducts] = useState();\n const onSubmit = () => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n useEffect(() => {\n Promise.all([\n axiosApi('/account/getPartialLoginInfo', {}),\n axiosApi('/accountSetup/getEnabledLinkingProducts', {}),\n ]).then(function getResults(results) {\n if (results[0]) {\n setUsername(results[0].username);\n }\n\n if (results[1] && Array.isArray(results[1])) {\n const linkedProductsArray = results[1].filter(\n (product) => product.linked\n );\n\n const linkedProductsMappedArray = linkedProductsArray\n .map((product) =>\n getProductDisplayName(getProductFromEnum(product.type))\n )\n .sort();\n\n const productsList = linkedProductsMappedArray.map((product) => {\n return {product};\n });\n\n const lastItem = productsList.pop();\n\n if (productsList.length === 0) {\n setLinkedProducts({lastItem} account);\n }\n\n if (productsList.length === 1) {\n setLinkedProducts(\n \n {productsList[0]} and {lastItem} accounts\n \n );\n }\n\n if (productsList.length > 1) {\n setLinkedProducts(\n \n {productsList.map((product) => {\n return {product}, ;\n })}{' '}\n and {lastItem} accounts\n \n );\n }\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [] as any);\n\n const styleProps = {\n backgroundImage: `url(images/linking_confirmation_instruction_image.${\n webPSupported ? 'webp' : 'jpg'\n })`,\n };\n\n const classes = useStyles(styleProps);\n\n return (\n Congratulations!}\n >\n
\n \n You have successfully updated your account.\n \n \n Remember to use {username} and your new password to\n access your {linkedProducts}.\n \n
\n \n \n Got it\n \n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const LinkingSuccessPage: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LinkingSuccess);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport PersonIcon from '@material-ui/icons/Person';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\nimport { ChevronRightCircleIcon } from '../../shared/icons/chevron-right-circle-icon';\nimport {\n required,\n validEmail,\n validEmailCustom,\n} from '../../shared/utils/validation';\nimport { useAxios } from '../../shared/utils/use-axios';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\n\nconst styles = (theme: Theme): StyleRules => {\n return {\n buttonStyle: {\n whiteSpace: 'nowrap',\n marginLeft: 12,\n padding: '10px 40px',\n },\n secondaryButtonStyle: {\n [theme.breakpoints.only('xs')]: {\n height: 40,\n },\n },\n formGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n buttonGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n justifyContent: 'space-between',\n },\n hidden: {\n display: 'none',\n },\n textFieldIcon: { marginRight: 5 },\n };\n};\n\nexport type EmailVerificationProps = {\n email: string;\n isSubmitting: boolean;\n replace: any;\n isValidEmail: boolean;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\ntype InternalProps = {\n classes: JssClasses;\n};\n\nconst EmailVerification = (props: EmailVerificationProps & InternalProps) => {\n const { isSubmitting, isValidEmail, webPSupported, classes } = props;\n\n const [result, busy] = useAxios('/email/GetVerification', undefined);\n\n const skipEmailVerification = () => {\n const body = {};\n\n axiosHelper(\n '/email/skipEmailVerification',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n const cancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/email/sendVerification',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n return (\n \n \n EMAIL VERIFICATION REQUIRED\n \n \n Please confirm or enter your email address then click Send Email.\n We will email your verification code to type on the next screen.\n \n \n \n }\n autoFocus\n required\n placeholder=\"Email\"\n disabled={isSubmitting || busy}\n fullWidth={webPSupported}\n validate={[\n required,\n validEmailCustom('Please enter a valid email address'),\n ]}\n />\n \n Send Email\n \n \n \n \n \n Return To Login\n \n\n {result.allowSkip ? (\n \n Skip For Now\n \n \n ) : null}\n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const email = selector(state, 'email');\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n isValidEmail: validEmail(email),\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nconst StylePage = withStyles(styles)(EmailVerification);\n\nexport const EmailVerificationPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StylePage);\n","import React from 'react';\nimport { withStyles } from '@material-ui/styles';\nimport { StyleRules } from '@material-ui/core/styles';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { Page } from './page.component';\nimport { ChevronLeftCircleIcon } from '../../icons/chevron-left-circle-icon';\n\nconst styles = (): StyleRules => {\n return {\n upperCase: {\n textTransform: 'uppercase',\n },\n };\n};\n\nexport type ErrorProps = {\n classes: any;\n errorMessage: string;\n returnUrl?: string;\n title: string;\n};\n\nconst ErrorPage = (props: ErrorProps) => {\n const { classes, errorMessage, returnUrl, title } = props;\n\n return (\n \n \n {title}\n \n \n {errorMessage}\n \n {returnUrl ? (\n {\n window.location.replace(`${returnUrl}`);\n }}\n className={classes.upperCase}\n >\n \n Return To Login\n \n ) : null}\n \n );\n};\n\nexport const ErrorPageComponent = withStyles(styles)(ErrorPage);\n","import { replace } from 'connected-react-router';\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { axiosApi } from '@dealersocket/react-common';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport { useAsyncOperation } from '../../shared/utils/use-async-operation';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { VerifyPage } from '../../shared/components/Verify';\n\ntype VerifyEmailProps = {\n isSubmitting: boolean;\n replace: any;\n verificationCode: string;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nasync function getLastVerificationResendDate() {\n return axiosApi('/email/GetLastVerificationSentDate', undefined);\n}\n\nconst VerifyEmail = (props: VerifyEmailProps) => {\n const { isSubmitting, verificationCode } = props;\n\n const [disableResend, setDisableResend] = useState(false);\n const [isInvalid, setIsInvalid] = useState(false);\n const [submittedCode, setSubmittedCode] = useState('');\n const [timeoutEnd, setTimeoutEnd] = useState(0);\n\n async function resendVerificationCode() {\n return axiosApi('/email/ResendVerificationCode', { method: 'post' });\n }\n\n const [\n resendVerificationCodeFunc,\n busy,\n ] = useAsyncOperation(resendVerificationCode, (result, error) =>\n error ? props.setAlertMessage(error) : startTimer(result)\n );\n\n const startTimer = (result: any) => {\n if (result && result.lastResendVerificationCodeDate) {\n const lastSendTime =\n Date.parse(result.lastResendVerificationCodeDate) + result.delay;\n const currentTime = Date.now();\n\n if (lastSendTime - currentTime > 0) {\n setTimeoutEnd(lastSendTime);\n setDisableResend(true);\n setTimeout(() => setDisableResend(false), lastSendTime - currentTime);\n }\n }\n };\n\n const [\n getLastVerificationResendDateFunc,\n loading,\n ] = useAsyncOperation(getLastVerificationResendDate, (result, error) =>\n error ? props.setAlertMessage(error) : startTimer(result)\n );\n\n useEffect(() => {\n getLastVerificationResendDateFunc();\n /* eslint-disable react-hooks/exhaustive-deps */\n }, []);\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/email/verify',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {\n setSubmittedCode(verificationCode);\n setIsInvalid(true);\n });\n };\n\n const cancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const verificationCode = selector(state, 'verificationCode');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n verificationCode,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const VerifyEmailPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(VerifyEmail);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\nimport { LandingPageUrl } from '../../shared/constants';\n\ntype VerificationSuccessProps = {\n isSubmitting: boolean;\n replace: any;\n fromLink?: boolean;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst VerificationSuccess = (props: VerificationSuccessProps) => {\n const { isSubmitting, fromLink } = props;\n\n const onSubmit = () => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n
\n \n EMAIL VERIFIED\n \n \n Thank you, your email address has been successfully verified.\n \n {fromLink ? (\n window.location.replace(LandingPageUrl)}\n >\n \n RETURN TO LOGIN\n \n ) : (\n \n \n Continue\n \n \n )}\n \n
\n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm, ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const EmailVerificationSuccessPage: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(VerificationSuccess);\n","import React, { useEffect, useState } from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { formValueSelector } from 'redux-form';\nimport { replace, goBack } from 'connected-react-router';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport PersonIcon from '@material-ui/icons/Person';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\nimport { requiredCustom } from '../../shared/utils/validation';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\n\nconst styles = (): StyleRules => ({\n textFieldIcon: { marginRight: 5 },\n textButtonPair: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n formButton: {\n marginLeft: 12,\n whiteSpace: 'nowrap',\n padding: '10px 40px',\n },\n});\n\ntype ForgotPasswordProps = {\n classes: any;\n goBack: any;\n replace: any;\n isSubmitting: boolean;\n username: string;\n isUsernameFieldEmpty: boolean;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst ForgotPassword = (props: ForgotPasswordProps) => {\n const { classes, isSubmitting, isUsernameFieldEmpty, webPSupported } = props;\n const [username, setUsername] = useState(props.username);\n const [returnUrl, setReturnUrl] = useState();\n\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n if (!username) {\n setUsername(decodeURIComponent(params.get('username') || ''));\n }\n if (!returnUrl) {\n setReturnUrl(params.get('returnUrl') || '');\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, []);\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n returnUrl,\n };\n\n axiosHelper(\n '/password/sendReset',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n return (\n \n \n RESET YOUR PASSWORD\n \n \n Enter your username or login email and we'll send you a password\n reset code to the email associated with your account.\n \n
\n \n }\n placeholder=\"Username\"\n validate={[requiredCustom('Please enter your username')]}\n />\n \n Send email\n \n \n
\n props.goBack()}\n >\n \n RETURN TO LOGIN\n \n
\n );\n};\n\nconst StyledForgotPassword = withStyles(styles)(ForgotPassword);\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const username = selector(state, 'username');\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n isUsernameFieldEmpty:\n username === null || username === undefined || username.trim() === '',\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n goBack,\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const ForgotPasswordPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledForgotPassword);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { goBack } from 'connected-react-router';\nimport { withStyles } from '@material-ui/styles';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { Page } from '../../shared/components/Page';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\n\nconst styles = () => ({});\n\ntype ForgotPasswordSentProps = {\n classes: any;\n goBack: any;\n};\n\nconst ForgotPasswordSent = (props: ForgotPasswordSentProps) => {\n return (\n \n \n PASSWORD RESET EMAIL SENT\n \n \n A password reset email was sent to the email address associated with\n your account. Please click the link in the email to reset your password.\n If you do not receive an email within 20 minutes please contact your\n administrator.\n \n \n \n );\n};\n\nconst StyledForgotPasswordSent = withStyles(styles)(ForgotPasswordSent);\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({ goBack }, dispatch);\n}\n\n// Wire up the React component to the Redux store\nexport const ForgotPasswordSentPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledForgotPasswordSent);\n","import React from 'react';\nimport { bindActionCreators, compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport { Page } from '../../shared/components/Page';\nimport { ConnectedPasswordForm } from '../../shared/components/PasswordForm';\nimport * as CommonStore from '../../store/CommonForm';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { continueLogin } from '../../shared/utils/continue-login';\n\ntype PasswordResetProps = {\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst PasswordReset = (props: PasswordResetProps) => {\n const params = new URLSearchParams(window.location.search);\n const userSub = params.get('userSub') || '';\n const verificationCode = params.get('securityCode') || '';\n const returnUrl = params.get('returnUrl' || '');\n const username = decodeURIComponent(params.get('username') || '');\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/password/reset',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload) {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n } else {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n }\n })\n .catch(() => {});\n };\n\n return (\n \n \n RESET PASSWORD\n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm, ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const PasswordResetPage = compose(\n connect(mapStateToProps, mapDispatchToProps)\n)(PasswordReset);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { Page } from '../../shared/components/Page';\nimport { ChevronLeftCircleIcon } from '../../shared/icons/chevron-left-circle-icon';\nimport { LandingPageUrl } from '../../shared/constants';\n\nconst PasswordResetSuccess = () => {\n const params = new URLSearchParams(window.location.search);\n const returnUrl = params.get('returnUrl') || '';\n return (\n \n \n PASSWORD RESET\n \n \n You have successfully reset your password. Please return to the\n application you are trying to access to login.\n \n window.location.replace(returnUrl || LandingPageUrl)}\n >\n \n RETURN TO LOGIN\n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm.dataModel };\n}\n\nexport const PasswordResetSuccessPage = connect(mapStateToProps)(\n PasswordResetSuccess\n);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport { Page } from '../../shared/components/Page';\nimport { ConnectedPasswordForm } from '../../shared/components/PasswordForm';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport * as CommonStore from '../../store/CommonForm';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { useAxios } from '../../shared/utils/use-axios';\n\ntype ChangePasswordProps = { replace: any } & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst ChangePassword = (props: ChangePasswordProps) => {\n const [result, busy] = useAxios('/account/getPartialLoginInfo', undefined);\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/password/change',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n const onCancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n \n CHANGE PASSWORD\n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm, ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const ChangePasswordPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ChangePassword);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { replace } from 'connected-react-router';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { Page } from '../../shared/components/Page';\nimport { continueLogin } from '../../shared/utils/continue-login';\n\ntype ChangePasswordSuccessProps = {\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst ChangePasswordSuccess = (props: ChangePasswordSuccessProps) => {\n const continueToApplication = () => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n \n PASSWORD CHANGED\n \n \n You have successfully changed your password. You will use this new\n password going forward.\n \n \n Continue\n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\nexport const ChangePasswordSuccessPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ChangePasswordSuccess);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport { Page } from '../../shared/components/Page';\nimport { ConnectedPasswordForm } from '../../shared/components/PasswordForm';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport * as CommonStore from '../../store/CommonForm';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { useAxios } from '../../shared/utils/use-axios';\n\ntype CreatePasswordProps = { replace: any } & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst CreatePassword = (props: CreatePasswordProps) => {\n const [result, busy] = useAxios('/account/getPartialLoginInfo', undefined);\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/password/create',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {});\n };\n\n const onCancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n \n CREATE PASSWORD\n \n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm, ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const CreatePasswordPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CreatePassword);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { Page } from '../../shared/components/Page';\nimport { continueLogin } from '../../shared/utils/continue-login';\n\ntype CreatePasswordSuccessProps = {\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst CreatePasswordSuccess = (props: CreatePasswordSuccessProps) => {\n const continueToApplication = () => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n \n PASSWORD CREATED\n \n \n You have successfully created your password. You will use this new\n password going forward.\n \n \n Continue\n \n \n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const CreatePasswordSuccessPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CreatePasswordSuccess);\n","import { replace } from 'connected-react-router';\nimport React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { axiosApi } from '@dealersocket/react-common';\nimport { useAsyncOperation } from '../../shared/utils/use-async-operation';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { LandingPageUrl } from '../../shared/constants';\nimport { VerifyPage } from '../../shared/components/Verify';\n\ntype VerifyPasswordResetProps = {\n isSubmitting: boolean;\n replace: any;\n verificationCode: string;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst VerifyPasswordReset = (props: VerifyPasswordResetProps) => {\n const { isSubmitting, verificationCode } = props;\n\n const [disableResend, setDisableResend] = useState(false);\n const [isInvalid, setIsInvalid] = useState(false);\n const [submittedCode, setSubmittedCode] = useState('');\n const [timeoutEnd, setTimeoutEnd] = useState(0);\n\n const params = new URLSearchParams(window.location.search);\n const [username] = useState(decodeURIComponent(params.get('username') || ''));\n const [returnUrl] = useState(params.get('returnUrl') || '');\n const [lastSent, setLastSent] = useState();\n async function resendVerificationCode() {\n return axiosApi('/password/resendReset', {\n method: 'post',\n data: { username, returnUrl },\n });\n }\n\n const [\n resendVerificationCodeFunc,\n busy,\n ] = useAsyncOperation(resendVerificationCode, (result, error) =>\n error ? props.setAlertMessage(error) : startTimer(result)\n );\n\n const startTimer = (result: any) => {\n let lastSendTime = lastSent;\n if (!lastSendTime) {\n lastSendTime = Date.now();\n setLastSent(lastSendTime);\n }\n const lastSendIso = new Date(lastSendTime).toISOString();\n lastSendTime = Date.parse(lastSendIso) + result.delay;\n const currentTime = Date.now();\n\n if (lastSendTime - currentTime > 0) {\n setTimeoutEnd(lastSendTime);\n setDisableResend(true);\n setTimeout(() => {\n setDisableResend(false);\n setLastSent(null);\n }, lastSendTime - currentTime);\n }\n };\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n username,\n returnUrl,\n };\n\n axiosHelper(\n '/password/verify',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((payload) => {\n if (payload.isSpaRoute) {\n props.replace(payload.redirectUrl);\n } else {\n window.location.replace(payload.redirectUrl);\n }\n })\n .catch(() => {\n setSubmittedCode(verificationCode);\n setIsInvalid(true);\n });\n };\n\n const cancel = () => {\n window.location.replace(returnUrl || LandingPageUrl);\n };\n\n return (\n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const verificationCode = selector(state, 'verificationCode');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n verificationCode,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const VerifyPasswordResetPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(VerifyPasswordReset);\n","import React from 'react';\nimport { withStyles } from '@material-ui/styles';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport { StyleRules } from '@material-ui/core/styles';\n\nconst styles = (): StyleRules => {\n return {\n container: { margin: '30px 30px 30px 30px' },\n header: { paddingBottom: '20px', textAlign: 'center' },\n content: {\n padding: '0px 50px 0px 50px',\n },\n };\n};\ntype EulaContentProps = {\n classes: JssClasses;\n ref: any;\n header: any;\n mainEulaContent: any;\n};\n\n// Refs are not available for stateless components. For \"react-to-print\" to work only Class based components can be printed\n// eslint-disable-next-line react/prefer-stateless-function\nclass EulaContent extends React.Component {\n render() {\n const { classes, mainEulaContent, header } = this.props;\n return (\n
\n
\n
{header}
\n
{mainEulaContent}
\n
\n
\n );\n }\n}\n\nexport const StyledEulaContent = withStyles(styles)(EulaContent);\n","import { StyleRules, Theme } from '@material-ui/core/styles';\nimport React, { useRef } from 'react';\nimport ReactToPrint from 'react-to-print';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport PrintIcon from '@material-ui/icons/Print';\nimport { withStyles } from '@material-ui/styles';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport { StyledEulaContent } from './eula-content';\n\ntype PrintableEulaContentProps = {\n classes: JssClasses;\n header: any;\n mainEulaContent: any;\n};\n\nconst printableEulaContentStyle = (theme: Theme): StyleRules => {\n return {\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n icon: { fontSize: 20, cursor: 'pointer', color: '#acacac', marginRight: 6 },\n mobileIcon: {\n display: 'none',\n [theme.breakpoints.down('xs')]: {\n fontSize: 20,\n cursor: 'pointer',\n color: '#acacac',\n marginRight: 6,\n display: 'inline-block',\n },\n },\n buttonContainer: {\n [theme.breakpoints.down('xs')]: {\n display: 'none',\n },\n },\n };\n};\n\nconst PrintableEulaContentCore = (props: PrintableEulaContentProps) => {\n const { classes, header, mainEulaContent } = props;\n const isMountedRef: any = useRef(undefined);\n return (\n
\n (\n
\n
\n \n
\n \n
\n )}\n content={() => isMountedRef.current}\n />\n
\n \n
\n
\n );\n};\n\nexport const PrintableEulaContent = withStyles(printableEulaContentStyle)(\n PrintableEulaContentCore\n);\n","/* eslint-disable max-lines */\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { replace } from 'connected-react-router';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { FormCheckboxField } from '@dealersocket/ds-ui-react/form/fields/FormCheckboxField';\nimport * as AlertStore from '../../store/Alert';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport { PrintableEulaContent } from './printable-eula-content';\nimport * as CommonStore from '../../store/CommonForm';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\n\nconst styles = (theme: Theme): StyleRules => ({\n acceptEula: {\n [theme.breakpoints.between('sm', 'md')]: {\n width: 230,\n },\n },\n acceptLabel: {\n paddingLeft: 5,\n },\n agreementGroup: {\n marginTop: 20,\n },\n button: {\n height: 40,\n marginLeft: 10,\n width: 120,\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row',\n [theme.breakpoints.down('xs')]: {\n justifyContent: 'space-between',\n },\n },\n content: {\n marginRight: 15,\n maxHeight: 'calc(40vh)',\n overflow: 'auto',\n },\n formCheckbox: {\n marginLeft: 5,\n },\n formGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n justifyContent: 'space-between',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n },\n },\n header: {\n textAlign: 'left',\n },\n printableEulaContainer: {\n float: 'right',\n },\n});\n\ntype AcceptEulaProps = {\n acceptedEula: boolean;\n classes: any;\n isSubmitting: boolean;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst AcceptEula = (props: AcceptEulaProps) => {\n const { acceptedEula, isSubmitting, classes } = props;\n\n const theme = useTheme();\n const xs = useMediaQuery(theme.breakpoints.only('xs'));\n\n const cancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n const onSubmit = () => {\n const body = {};\n\n axiosHelper(\n '/eula/accept',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n const header = (\n
\n \n DEALERSOCKET, INC.\n \n \n END USER LICENSE AGREEMENT\n \n Last updated: October 2022\n
\n );\n const eulaContent = (\n
\n \n In order to use the software products and applications provided to you\n by DealerSocket (collectively, the “Software”), you must first agree to\n the terms and conditions in the End User License Agreement (the “EULA”).\n You may not use the Software if you do not accept the terms and\n conditions of the EULA. You can accept the EULA by (1) clicking to\n accept or agree to the EULA, where this option is made available to you\n in the user interface for the Software; or (2) by actually using the\n Software. In this case, you understand and agree that DealerSocket will\n treat your use of the Software as acceptance of the terms and conditions\n of the EULA from that point onwards. If any materials are available for\n downloading, access or other use from the Software with their own\n license terms, conditions and notices, you will also be subject to such\n license terms, conditions and notices.\n \n\n \n DealerSocket may update the EULA from time to time. You understand and\n agree that if you use the Software after the date on which the EULA\n changed, DealerSocket will treat your use as acceptance of the updated\n EULA.\n \n\n \n Subject to your compliance with all of the terms and conditions of the\n EULA, the current Terms of Service, and any other agreement relating to\n the Software, DealerSocket grants to you a revocable, non-exclusive,\n non-assignable, non-sublicensable and non-transferable license to use\n the Software solely in support of your internal business operations,\n subject to the usage restrictions, overages, or other limitations\n contained in the applicable order form, master services agreement, or\n other agreement, or as otherwise listed in the product descriptions and\n current Terms of Service available at\n https://www.dealersocket.com/licensing.\n \n\n \n You may not (and you may not permit anyone else to) copy, modify, create\n a derivative work of, reverse engineer, decompile or otherwise attempt\n to extract the source code of the Software or any part thereof, unless\n this is expressly permitted or required by law. The Software, and any\n applications made available through the Software, are licensed, not\n sold, to you. All rights not expressly granted to you in are reserved by\n us, or the third-party vendor, as applicable. DealerSocket may make\n changes to the Software, or any product or service offered by\n DealerSocket or to the applicable prices, at any time, without notice.\n \n\n \n You are solely responsible for keeping your account information\n (including, without limitation, your user ID and password) confidential,\n and for any and all activity that occurs through your account as a\n result of your failing to keep this information confidential. You agree\n to notify DealerSocket immediately of any unauthorized use of your\n account, and of any other breach of security. You may be held liable for\n losses incurred by DealerSocket or any other user of the Software due to\n someone else using your account as a result of your failing to keep your\n account information secure and confidential. You may not share your\n account information with anyone, and may not use anyone else’s account\n information for the Software at any time. DealerSocket cannot and will\n not be liable for any loss or damage arising from your failure to comply\n with these obligations.\n \n\n \n By installing or using the Software, you agree to allow DealerSocket to\n collect and use your data in accordance with DealerSocket’s privacy\n policy available at dealersocket.com.\n \n \n YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT USE OF THE SOFTWARE IS AT YOUR\n SOLE RISK. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE\n SOFTWARE IS PROVIDED “AS IS” AND “AS AVAILABLE,” WITH ALL FAULTS AND\n FAULTS AND WITHOUT WARRANTY OF ANY KIND, AND DEALERSOCKET HEREBY\n DISCLAIMS ALL WARRANTIES AND CONDITIONS WITH RESPECT TO THE SOFTWARE AND\n ANY SERVICES, EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES MERCHANTABILITY, OF SATISFACTORY\n QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET\n ENJOYMENT, AND OF NONINFRINGEMENT OF THIRD-PARTY RIGHTS. NO ORAL OR\n WRITTEN INFORMATION OR ADVICE GIVEN BY DEALERSOCKET OR ITS AUTHORIZED\n REPRESENTATIVE CREATES A WARRANTY. YOU ASSUME TOTAL RESPONSIBILITY FOR\n YOUR USE OF THE SOFTWARE AND ANY RELATED PRODUCTS. TO THE EXTENT NOT\n PROHIBITED BY LAW, IN NO EVENT WILL DEALERSOCKET BE LIABLE FOR PERSONAL\n INJURY OR ANY INCIDENTAL, SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES\n WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS,\n LOSS OF DATA, BUSINESS INTERRUPTION, OR ANY OTHER COMMERCIAL DAMAGES OR\n LOSSES, ARISING OUT OF OR RELATED TO YOUR USE OF OR INABILITY TO USE THE\n SOFTWARE, HOWEVER CAUSED, REGARDLESS OF THE THEORY OF LIABILITY\n (CONTRACT, TORT, OR OTHERWISE) AND EVEN IF DEALERSOCKET HAS BEEN ADVISED\n OF THE POSSIBILITY OF SUCH DAMAGES. In no event will DealerSocket’s\n total liability to you for all damages damages (other than as may be\n required by applicable law in cases involving personal injury) exceed\n the amount of $100.00. The foregoing limitations will apply even if the\n above stated remedy fails of its essential purpose.\n \n\n \n \n Users of SocketTalk\n \n
\n You agree not to send any information protected under the\n Gramm-Leach-Bliley Act through SocketTalk.\n
\n \n Users of DealerSocket Email\n \n
\n You agree not to send any information protected under the\n Gramm-Leach-Bliley Act through DealerSocket Email.\n
\n\n \n Please note that the use of the Software may be subject to data\n protection laws or regulations in certain jurisdictions. You are\n responsible for ensuring that your use of the Software is in accordance\n with such laws or regulations. You must comply with all U.S. or other\n export and re-export restrictions that may apply to goods, software\n (including the Software), technology, and services, and you will not\n transfer, or encourage, assist, or authorize the transfer of the\n Software to prohibited countries or regions or otherwise in violation of\n any such restrictions.\n \n\n \n All matters relating to your access to or use of the Software, including\n all disputes, will be governed by the laws of the State of Texas without\n regard to any conflict of law provisions, and you hereby irrevocably\n submit to the non-exclusive jurisdiction of the courts located in the\n state of Texas and waive any objection to such exclusive jurisdiction or\n venue. Resolution of all disputes shall be conducted and resolved on an\n individual basis only, and not on a class-wide, multiple plaintiff,\n multiple claimant, consolidated or similar basis. You waive any right to\n participate in any way in a class action lawsuit against us. If\n DealerSocket takes any legal action against you due to your violation of\n the EULA, DealerSocket will be entitled to recover from you, and you\n agree to pay, all reasonable attorneys’ fees and costs of such action,\n in addition to any other relief granted to us.\n \n\n \n If any court of law, having the jurisdiction to decide on the matter,\n rules that any provision of the EULA is invalid, then that provision\n will be removed from the EULA without affecting the rest of the terms.\n The remaining provisions of the EULA will continue to be valid and\n enforceable. Failure to enforce the strict performance of any provision\n of the EULA will not constitute a waiver of DealerSocket’s right to\n subsequently enforce such provisions or any other provisions of the\n EULA. No waiver of any provision of the EULA shall be effective unless\n in writing.\n \n\n \n This EULA shall terminate upon your breach of any term contained herein.\n Upon termination, you shall immediately stop using and destroy all\n copies of the Software. You may not assign the rights granted under the\n EULA, in whole or in part and whether by operation of contract, law or\n otherwise, without DealerSocket’s prior express written consent.\n \n\n \n The EULA, the current Terms of Service, and the applicable order form or\n other agreement governing the Software are the complete and exclusive\n agreement between you and DealerSocket relating to the Software and\n supersede any previous or contemporaneous oral or written\n communications, proposals, and representations with respect to its\n subject matter. The EULA prevails over any conflicting or additional\n terms of any purchase order, ordering document, acknowledgement or\n confirmation or other document.\n \n
\n );\n return (\n \n
\n
\n \n
\n {header}\n
\n
{eulaContent}
\n
\n
\n \n \n I HAVE READ THE END USER LICENSE AGREEMENT\n \n }\n required\n />\n
\n \n Cancel\n \n \n I Agree\n \n
\n
\n
\n
\n
\n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const acceptedEula = selector(state, 'acceptEula');\n\n return { ...state.commonForm, ...state.commonForm.dataModel, acceptedEula };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nconst StyledEula = withStyles(styles)(AcceptEula);\n\nexport const AcceptEulaPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledEula);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { formValueSelector, isInvalid } from 'redux-form';\nimport { replace } from 'connected-react-router';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { required } from '../../shared/utils/validation';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\n\ntype UserImpersonationProps = {\n isSubmitting: boolean;\n isFormInvalid: boolean;\n username: string;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\nconst UserImpersonation = (props: UserImpersonationProps) => {\n const { isSubmitting, isFormInvalid, username } = props;\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/admin/impersonateUser',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n const continueAsSelf = () => {\n axiosHelper(\n '/admin/skipImpersonation',\n {\n method: 'post',\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n const cancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n return (\n \n
\n \n \n \n Impersonate User\n \n \n \n Cancel\n \n \n Continue as Self\n \n \n
\n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const username = selector(state, 'username');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n isFormInvalid: isInvalid('pageForm')(state),\n username,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nexport const UserImpersonationPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(UserImpersonation);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { JssClasses } from '@dealersocket/ds-ui-react/types';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonStore from '../../store/CommonForm';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\n\nconst styles = (): StyleRules => {\n return {\n buttonStyle: {\n whitespace: 'nowrap',\n marginLeft: 12,\n padding: '10px 40px',\n },\n formGroupStyle: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n };\n};\n\ntype VerifyMfaProps = {\n isSubmitting: boolean;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonStore.actionCreators;\n\ntype InternalProps = {\n classes: JssClasses;\n};\n\nconst VerifyMfa = (props: VerifyMfaProps & InternalProps) => {\n const { isSubmitting, classes } = props;\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/mfa/verify',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n return (\n \n
\n \n ENTER VERIFICATION CODE\n \n \n A verification code was sent to your email address.\n \n\n \n \n \n Verify\n \n \n
\n
\n );\n};\n\nfunction mapStateToProps(state) {\n return { ...state.commonForm, ...state.commonForm.dataModel };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n { replace, ...AlertStore.actionCreators, ...CommonStore.actionCreators },\n dispatch\n );\n}\n\nconst StyledPage = withStyles(styles)(VerifyMfa);\n\nexport const VerifyMfaPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledPage);\n","import React from 'react';\nimport { Route } from 'react-router';\nimport { Redirect, RouteComponentProps } from 'react-router-dom';\nimport { useAxios } from '../../utils/use-axios';\n\ntype PartialLoginRouteProps = {\n path: string;\n component:\n | React.ComponentType>\n | React.ComponentType;\n};\n\nconst renderMergedProps = (component, ...rest) => {\n const finalProps = Object.assign({}, ...rest);\n return React.createElement(component, finalProps);\n};\n\nexport const PartialLoginRoute = (props: PartialLoginRouteProps) => {\n const { component, ...other } = props;\n\n const [result, busy] = useAxios('/account/partialLoginValid', undefined);\n\n return busy ? null : (\n \n result ? (\n renderMergedProps(component, routeProps, other)\n ) : (\n \n )\n }\n />\n );\n};\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport {\n getProductDisplayName,\n getProductFromEnum,\n} from '../../../shared/enums';\n\nconst useStyles = makeStyles({\n description: {\n marginBottom: 30,\n },\n headerTitle: {\n marginBottom: 15,\n },\n});\n\ntype ExternalProps = {\n product: any;\n};\n\nexport const AssociatedProducts = (props: ExternalProps) => {\n const { product } = props;\n\n const classes = useStyles();\n\n const getParentProduct = () => {\n switch (product.type) {\n case -2:\n return 'DealerFire';\n default:\n return 'CRM';\n }\n };\n\n return (\n <>\n
\n \n {getProductDisplayName(getProductFromEnum(product.type))}\n \n
\n
\n \n Connect your {getProductDisplayName(getProductFromEnum(product.type))}{' '}\n account by linking your {getParentProduct()} login.\n \n
\n \n );\n};\n","import React from 'react';\nimport PersonIcon from '@material-ui/icons/Person';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { TextField } from '@dealersocket/ds-ui-react/fields/TextField';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n getProductDisplayName,\n getProductFromEnum,\n} from '../../../shared/enums';\n\nconst useStyles = makeStyles({\n description: {\n marginBottom: 30,\n },\n headerTitle: {\n marginBottom: 15,\n },\n textFieldIcon: {\n marginRight: 5,\n },\n});\n\ntype ExternalProps = {\n product: any;\n};\n\nexport const LinkedProductComponent = (props: ExternalProps) => {\n const { product } = props;\n\n const classes = useStyles();\n\n return (\n <>\n
\n \n {getProductDisplayName(getProductFromEnum(product.type))} has been\n linked\n \n
\n
\n \n Select another product from the left to link into your DealerSocket\n Account.\n \n
\n }\n />\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { connect, useDispatch } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport PersonIcon from '@material-ui/icons/Person';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { change, formValueSelector } from 'redux-form';\nimport {\n getProductDisplayName,\n getProductFromEnum,\n} from '../../../shared/enums';\nimport { required } from '../../../shared/utils/validation';\nimport { Form } from '../../../shared/components/Form';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonFormStore from '../../../store/CommonForm';\n\nconst useStyles = makeStyles({\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n description: {\n marginBottom: 30,\n },\n headerTitle: {\n marginBottom: 15,\n },\n passwordForm: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n spacerDiv: {\n flexGrow: 1,\n },\n textFieldIcon: {\n marginRight: 5,\n },\n});\n\ntype ExternalProps = {\n isSubmitting: boolean;\n isUsernameFieldEmpty: boolean;\n product: any;\n onCancel: any;\n onSubmit: any;\n username: string;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators;\n\nconst ForgotPasswordComponent = (props: ExternalProps) => {\n const {\n isSubmitting,\n isUsernameFieldEmpty,\n onCancel,\n onSubmit,\n product,\n username,\n } = props;\n const classes = useStyles();\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(change('pageForm', 'username', username));\n /* eslint-disable react-hooks/exhaustive-deps */\n }, []);\n\n return (\n <>\n
\n Forgot Password\n
\n
\n \n Enter your {getProductDisplayName(getProductFromEnum(product.type))}{' '}\n username and we'll send an account recovery code to the email\n associated with that account.\n \n
\n
\n
\n \n }\n autoFocus\n validate={[required]}\n required\n />\n \n
\n
\n \n Cancel\n \n \n Send Email\n \n
\n \n
\n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const username = selector(state, 'username');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n isUsernameFieldEmpty:\n username === null || username === undefined || username.trim() === '',\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const ForgotPassword: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ForgotPasswordComponent);\n","import React, { useState } from 'react';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\nimport { StyleRules } from '@material-ui/core/styles';\nimport { axiosApi } from '@dealersocket/react-common';\nimport { bindActionCreators } from 'redux';\nimport { withStyles } from '@material-ui/styles';\nimport { connect } from 'react-redux';\nimport { formValueSelector } from 'redux-form';\nimport { Timer } from '../../../shared/components/Timer/timer.component';\nimport { Form } from '../../../shared/components/Form';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonFormStore from '../../../store/CommonForm';\nimport { getProductValue } from '../../../shared/enums';\nimport { useAsyncOperation } from '../../../shared/utils/use-async-operation';\nimport { required, validCode } from '../../../shared/utils/validation';\n\nconst styles = (theme: Theme): StyleRules => {\n return {\n buttonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n description: {\n marginBottom: 30,\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n headerTitle: {\n marginBottom: 15,\n },\n secondaryButtonStyle: {\n [theme.breakpoints.only('xs')]: {\n height: 40,\n },\n },\n spacerDiv: {\n flexGrow: 1,\n },\n tooltip: {\n maxWidth: 300,\n },\n whiteText: {\n color: theme.palette.common.white,\n },\n };\n};\n\ntype InternalProps = {\n classes: any;\n};\n\ntype ExternalProps = {\n isSubmitting: boolean;\n product: any;\n onCancel: any;\n onSubmit: any;\n username: string;\n verificationCode: string;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators;\n\nconst VerificationCodeInputComponent = (\n props: ExternalProps & InternalProps\n) => {\n const {\n classes,\n isSubmitting,\n onCancel,\n onSubmit,\n product,\n username,\n verificationCode,\n } = props;\n\n const [disableResend, setDisableResend] = useState(false);\n const [timeoutEnd, setTimeoutEnd] = useState(0);\n const [lastSent, setLastSent] = useState();\n const [submittedCode, setSubmittedCode] = useState('');\n const [isInvalid, setIsInvalid] = useState(false);\n\n async function resendVerificationCode() {\n const body = {\n username,\n product: getProductValue(product.type),\n };\n\n startTimer();\n\n return axiosApi('/accountSetup/sendForgotPasswordCode', {\n method: 'post',\n data: body,\n });\n }\n\n const [resendVerificationCodeFunc, busy] = useAsyncOperation(\n resendVerificationCode\n );\n\n const startTimer = () => {\n let lastSendTime = lastSent;\n if (!lastSendTime) {\n lastSendTime = Date.now();\n setLastSent(lastSendTime);\n }\n const lastSendIso = new Date(lastSendTime).toISOString();\n lastSendTime = Date.parse(lastSendIso) + 300000;\n const currentTime = Date.now();\n\n if (lastSendTime - currentTime > 0) {\n setTimeoutEnd(lastSendTime);\n setDisableResend(true);\n setTimeout(() => {\n setDisableResend(false);\n setLastSent(null);\n }, lastSendTime - currentTime);\n }\n };\n const tooltipText = (\n \n Verification code sent. You may send another code after{' '}\n have passed.\n \n );\n\n const tooltip = (\n \n
\n \n RESEND CODE\n \n
\n \n );\n\n return (\n <>\n
\n \n Enter reset code\n \n
\n
\n \n Enter the code that was sent to your email to link this account with\n your DealerSocket account.\n \n
\n
\n \n onSubmit(values).catch(() => {\n setSubmittedCode(verificationCode);\n setIsInvalid(true);\n })\n }\n >\n \n \n {tooltip}\n \n
\n
\n \n Cancel\n \n \n Link Accounts\n \n
\n \n
\n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const verificationCode = selector(state, 'verificationCode');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n verificationCode,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nconst StyledComponent = withStyles(styles)(VerificationCodeInputComponent);\n\nexport const VerificationCodeInput: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledComponent);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { formValueSelector } from 'redux-form';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport PersonIcon from '@material-ui/icons/Person';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { FormTextField } from '@dealersocket/ds-ui-react/form/fields/FormTextField';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport {\n getProductDisplayName,\n getProductFromEnum,\n} from '../../../shared/enums';\nimport { Form } from '../../../shared/components/Form';\nimport { required } from '../../../shared/utils/validation';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonFormStore from '../../../store/CommonForm';\n\nconst useStyles = makeStyles({\n buttonContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n description: {\n marginBottom: 30,\n },\n headerTitle: {\n marginBottom: 15,\n },\n textFieldIcon: {\n marginRight: 5,\n },\n});\n\ntype ExternalProps = {\n isSubmitting: boolean;\n product: any;\n onForgotPassword: any;\n onSubmit: any;\n username: string;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators;\n\nconst UnlinkedProductComponent = (props: ExternalProps) => {\n const { isSubmitting, onForgotPassword, onSubmit, product, username } = props;\n\n const classes = useStyles();\n\n return (\n <>\n
\n \n Use your existing credentials to sign in to each product you own.\n \n
\n
\n \n {getProductDisplayName(getProductFromEnum(product.type))}\n \n
\n
\n
\n \n }\n autoFocus\n validate={[required]}\n required\n />\n }\n validate={[required]}\n required\n />\n \n
\n {\n onForgotPassword(username);\n }}\n >\n Forgot Password\n \n \n Link Account\n \n
\n
\n
\n \n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const username = selector(state, 'username');\n return {\n ...state.commonForm,\n ...state.commonForm.dataModel,\n username,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const UnlinkedProduct: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(UnlinkedProductComponent);\n","import React, { useState } from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { replace } from 'connected-react-router';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { Typography } from '@dealersocket/ds-ui-react/Typography';\nimport { axiosHelper } from '../../../shared/utils/axios-helper';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonFormStore from '../../../store/CommonForm';\nimport * as CommonStore from '../../../store/Common';\nimport { isAssociatedProduct } from '../../../shared/utils/helpers';\nimport { AssociatedProducts } from './associated-products.component';\nimport { LinkedProductComponent } from './linked-product.component';\nimport { ForgotPassword } from './forgot-password.component';\nimport { VerificationCodeInput } from './verification-code-input.component';\nimport { UnlinkedProduct } from './unlinked-products.component';\nimport { continueLogin } from '../../../shared/utils/continue-login';\n\nconst useStyles = makeStyles({\n bottomContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n continueButton: {\n alignSelf: 'flex-end',\n },\n rightContent: {\n display: 'flex',\n flexDirection: 'column',\n margin: '40px',\n width: '60%',\n },\n spacerDiv: {\n flexGrow: 1,\n },\n bottomContainerDiv: {\n textAlign: 'right',\n },\n});\n\ntype ProductLinkingComponentProps = {\n refreshFunc: any;\n isSubmitting: boolean;\n selectedProduct: any;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst ProductLinkingComponent = (props: ProductLinkingComponentProps) => {\n const { selectedProduct, refreshFunc, isSubmitting } = props;\n\n const classes = useStyles();\n\n const [showForgotPassword, setShowForgotPassword] = useState(false);\n const [showCodeInput, setShowCodeInput] = useState(false);\n const [username, setUsername] = useState();\n\n React.useEffect(() => {\n setShowForgotPassword(false);\n setShowCodeInput(false);\n setUsername('');\n }, [selectedProduct]);\n\n const onCancel = () => {\n axiosHelper(\n `/accountSetup/skipLinking?doNotAskAgain=false`,\n {\n method: 'post',\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n const onContinue = () => {\n axiosHelper(\n '/accountSetup/completeLinking',\n {\n method: 'post',\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n const onSendEmailSubmit = (values: any): any => {\n const body = {\n ...values,\n product: selectedProduct.type,\n };\n\n axiosHelper(\n '/accountSetup/sendForgotPasswordCode',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n setShowCodeInput(true);\n setShowForgotPassword(false);\n setUsername(body.username);\n })\n .catch(() => {});\n };\n\n const onVerifyCodeSubmit = (values: any): any => {\n const body = {\n ...values,\n username,\n product: selectedProduct.type,\n };\n\n return axiosHelper(\n '/accountSetup/verifyCode',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n ).then(() => {\n refreshFunc(false);\n setShowCodeInput(false);\n });\n };\n\n const onLinkAccountSubmit = (values: any): any => {\n const body = {\n ...values,\n product: selectedProduct.type,\n };\n\n axiosHelper(\n '/accountSetup/link',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n refreshFunc(false);\n })\n .catch(() => {});\n };\n\n const getContent = () => {\n if (isAssociatedProduct(selectedProduct)) {\n return ;\n }\n\n if (selectedProduct.linked) {\n return ;\n }\n\n if (showForgotPassword) {\n return (\n {\n setShowForgotPassword(false);\n }}\n username={username}\n />\n );\n }\n\n if (showCodeInput) {\n return (\n {\n setShowCodeInput(false);\n }}\n username={username}\n />\n );\n }\n\n return (\n {\n setUsername(proposedUsername);\n setShowForgotPassword(true);\n }}\n />\n );\n };\n\n return (\n
\n {getContent()}\n {!showForgotPassword && !showCodeInput && (\n <>\n
\n
\n \n Need more time? You can always link your accounts later in your\n DealerSocket profile.\n \n
\n \n Cancel\n \n \n Finished\n \n
\n
\n \n )}\n
\n );\n};\n\nfunction mapStateToProps(state) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const ProductLinking: any = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductLinkingComponent);\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport classNames from 'classnames';\nimport { replace } from 'connected-react-router';\nimport { withStyles, StyleRules } from '@material-ui/styles';\nimport Card from '@material-ui/core/Card';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { Typography } from '@dealersocket/ds-ui-react/Typography';\nimport {\n AutoMateLongIcon,\n InvPlusLogoIcon,\n CrmLongIcon,\n DealerFireLongIcon,\n IdmsLongIcon,\n PrecisePriceLongIcon,\n RevenueRadarLongIcon,\n} from '@dealersocket/ds-ui-react/logos';\nimport { DsLogoProgress } from '@dealersocket/ds-ui-react/DsLogoProgress';\nimport { Page } from '../../../shared/components/Page';\nimport { axiosHelper } from '../../../shared/utils/axios-helper';\nimport { isAssociatedProduct } from '../../../shared/utils/helpers';\nimport * as AlertStore from '../../../store/Alert';\nimport * as CommonFormStore from '../../../store/CommonForm';\nimport * as CommonStore from '../../../store/Common';\nimport { ProductLinking } from './product-linking.component';\nimport { getProductFromEnum } from '../../../shared/enums';\n\nconst styles = (): StyleRules => {\n return {\n buttonContainer: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n position: 'relative',\n },\n contentContainer: {\n display: 'flex',\n flexDirection: 'row',\n minHeight: 572,\n },\n highlight: {\n backgroundColor: 'white !important',\n },\n ieLinkedContainer: {\n alignItems: 'center',\n display: 'flex',\n left: 75,\n position: 'absolute',\n top: 45,\n },\n leftContent: {\n backgroundColor: '#f5f5f5',\n minHeight: 572,\n paddingBottom: 40,\n paddingTop: 40,\n width: 283,\n },\n linkedContainer: {\n alignItems: 'center',\n display: 'flex',\n left: 80,\n position: 'absolute',\n top: 45,\n },\n linkedIcon: {\n fontSize: 20,\n paddingRight: 2,\n },\n linkedItem: {\n paddingLeft: 0,\n },\n loader: { margin: 'auto' },\n loaderContainer: { display: 'flex', height: '100%' },\n menuItem: {\n backgroundColor: 'inherit',\n height: 76,\n paddingLeft: 40,\n paddingRight: 40,\n width: '100%',\n },\n unlinkedItem: { paddingLeft: 40 },\n };\n};\n\ntype InternalProps = {\n classes: any;\n isSubmitting: boolean;\n replace?: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst LinkingComponent = (props: InternalProps) => {\n const { classes, webPSupported } = props;\n\n const title = 'Link your accounts';\n\n const iconProps = { width: '210px', height: '36px', viewBox: '0 0 210 36' };\n\n const [selectedProduct, setSelectedProduct] = useState({ type: '' });\n const [products, setProducts] = useState([]);\n const [busy, setBusy] = useState(false);\n\n const getProducts = (selectUnlinkedProduct: boolean) => {\n setBusy(true);\n\n axiosHelper(\n '/accountSetup/getEnabledLinkingProducts',\n null,\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then((result) => {\n const newProducts = result && Array.isArray(result) ? [...result] : [];\n if (newProducts.find((p) => p.type === 1)) {\n newProducts.push({\n type: -1,\n linked: newProducts.find((p) => p.type === 1).linked,\n });\n }\n\n if (newProducts.find((p) => p.type === 3)) {\n newProducts.push({\n type: -2,\n linked: newProducts.find((p) => p.type === 3).linked,\n });\n }\n\n newProducts.sort((p1, p2) => {\n if (getProductFromEnum(p1.type) > getProductFromEnum(p2.type))\n return 1;\n if (getProductFromEnum(p1.type) < getProductFromEnum(p2.type))\n return -1;\n return 0;\n });\n\n setProducts(newProducts);\n\n if (selectUnlinkedProduct) {\n setSelectedProduct(\n newProducts.find((p) => !p.linked) || newProducts[0]\n );\n } else {\n setSelectedProduct(\n newProducts.find((p) => p.type === selectedProduct.type)\n );\n }\n })\n .finally(() => {\n setBusy(false);\n });\n };\n\n useEffect(() => {\n getProducts(true);\n /* eslint-disable react-hooks/exhaustive-deps */\n }, []);\n\n const getItem = (product: number) => {\n switch (product) {\n case 4:\n return ;\n case 1:\n return ;\n case 3:\n return ;\n case 5:\n return ;\n case 2:\n return ;\n case -2:\n return ;\n case -1:\n return ;\n default:\n return null;\n }\n };\n\n return (\n <>\n \n
\n \n
\n
\n {busy ? (\n
\n
\n \n
\n
\n ) : (\n
\n {products.map((p) => (\n setSelectedProduct(p)}\n >\n {getItem(p.type)}\n {p.linked && !isAssociatedProduct(p) && (\n \n \n Linked\n
\n )}\n \n ))}\n
\n )}\n
\n {selectedProduct && (\n \n )}\n
\n \n
\n \n \n );\n};\n\nfunction mapStateToProps(state: any) {\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n };\n}\n\nfunction mapDispatchToProps(dispatch: any) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nconst StyledPage = withStyles(styles)(LinkingComponent);\n\nexport const LinkingPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(StyledPage);\n","import React from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { formValueSelector, isInvalid } from 'redux-form';\nimport { replace } from 'connected-react-router';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport { makeStyles } from '@material-ui/core/styles';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { FormSelectField } from '@dealersocket/ds-ui-react/form/fields/FormSelectField';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport * as AlertStore from '../../store/Alert';\nimport * as CommonFormStore from '../../store/CommonForm';\nimport * as CommonStore from '../../store/Common';\nimport { Page } from '../../shared/components/Page';\nimport { Form } from '../../shared/components/Form';\nimport { continueLogin } from '../../shared/utils/continue-login';\nimport { cancelLogin } from '../../shared/utils/cancel-login';\nimport { axiosHelper } from '../../shared/utils/axios-helper';\nimport { useAxios } from '../../shared/utils/use-axios';\n\ntype LinkedAccountsProps = {\n selectedDealershipId: string;\n isSubmitting: boolean;\n replace: any;\n} & typeof AlertStore.actionCreators &\n typeof CommonFormStore.actionCreators &\n CommonStore.CommonStateType;\n\nconst useStyles = makeStyles({\n continueButton: { marginBottom: 5, marginLeft: 10, paddingBottom: 8 },\n iEContinueButton: {\n marginBottom: 5,\n marginLeft: 10,\n paddingBottom: 8,\n width: '35%',\n },\n formGroup: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n },\n loader: { margin: 'auto' },\n loaderContainer: { display: 'flex', height: '100%' },\n});\n\nconst LinkedAccounts = (props: LinkedAccountsProps) => {\n const { isSubmitting, selectedDealershipId, webPSupported } = props;\n const classes = useStyles();\n\n const [result] = useAxios('/account/GetLinkedAccounts', undefined);\n\n const onSubmit = (values) => {\n const body = {\n ...values,\n };\n\n axiosHelper(\n '/admin/setLinkedAccount',\n {\n method: 'post',\n data: body,\n },\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n )\n .then(() => {\n continueLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n })\n .catch(() => {});\n };\n\n const cancel = () => {\n cancelLogin(\n props.setIsSubmitting,\n props.replace,\n props.setAlertMessage,\n props.clearAlertMessage\n );\n };\n\n const required: boolean = !!selectedDealershipId;\n\n if (Array.isArray(result)) {\n result.sort((p1, p2) => {\n if (p1.name > p2.name) return 1;\n if (p1.name < p2.name) return -1;\n return 0;\n });\n }\n\n return (\n \n \n Select an account\n \n \n Select the account you wish to access. Once logged in, you must log out\n to access another account.\n \n
\n \n
\n \n \n - Select -\n \n {Array.isArray(result) &&\n result.map((p) => (\n \n {p.name}\n \n ))}\n \n \n Continue\n \n
\n
\n \n Return to Login\n \n \n
\n );\n};\n\nfunction mapStateToProps(state) {\n const selector = formValueSelector('pageForm');\n const selectedDealershipId = selector(state, 'selectedDealershipId');\n return {\n ...state.common,\n ...state.commonForm,\n ...state.commonForm.dataModel,\n isFormInvalid: isInvalid('pageForm')(state),\n selectedDealershipId,\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n replace,\n ...AlertStore.actionCreators,\n ...CommonFormStore.actionCreators,\n },\n dispatch\n );\n}\n\nexport const LinkedAccountsPage = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LinkedAccounts);\n","import '@babel/polyfill';\nimport Axios from 'axios';\nimport { ConnectedRouter } from 'connected-react-router';\nimport { createBrowserHistory } from 'history';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { IntlProvider } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { axiosHelper } from '@dealersocket/react-common';\nimport { theme } from '@dealersocket/ds-ui-react/theme';\nimport { ThemeProvider } from '@dealersocket/ds-ui-react/theme/ThemeProvider';\nimport { getSessionProduct } from './shared/utils/helpers';\nimport { checkWebPFeature } from './shared/utils/web-browser-helper';\nimport { configureStore } from './store/configureStore';\nimport * as RoutesModule from './routes';\n// import { registerServiceWorker } from './registerServiceWorker';\n\nconst { routes } = RoutesModule;\nconst appAxios = Axios.create({ headers: { Pragma: 'no-cache' } });\naxiosHelper.setAxios(appAxios);\n\n// Create browser history to use in the Redux store\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst history = createBrowserHistory({ basename: baseUrl || undefined });\n\ncheckWebPFeature('lossy', (feature, isSupported) => {\n // Get the application-wide store instance, prepopulating with state from the server where available.\n const initialState = {\n common: { product: getSessionProduct(), webPSupported: isSupported },\n alert: {},\n commonForm: { dataModel: {}, isSubmitting: false },\n };\n const store = configureStore(history, initialState);\n\n theme.overrides = {\n ...theme.overrides,\n MuiFormControl: {\n ...(theme.overrides && theme.overrides.MuiFormControl),\n root: {\n ...(theme.overrides &&\n theme.overrides.MuiFormControl &&\n theme.overrides.MuiFormControl.root),\n height: 55,\n },\n },\n };\n\n ReactDOM.render(\n \n \n \n {routes}\n \n \n ,\n document.getElementById('root')\n );\n\n // registerServiceWorker();\n});\n","import React from 'react';\nimport { Route, Switch, Redirect } from 'react-router-dom';\nimport { Layout } from './shared/components/Layout';\nimport { ForbiddenPage } from './area/forbidden-page';\nimport { ClientErrorPage } from './area/client-error';\nimport { NotFoundPage } from './area/not-found-page';\nimport { LoginExpiredPage } from './area/login-expired-page';\nimport { LoginPage } from './area/account/login-page';\nimport { LogoutPage } from './area/account/logout-page';\nimport { UsernameUpdatePage } from './area/accountSetup/username-update-page';\nimport { AccountExistsPage } from './area/accountSetup/account-exists-page';\nimport { UsernameVerificationPage } from './area/accountSetup/username-verification-page';\nimport { VerifyUsernamePage } from './area/accountSetup/verify-username-page';\nimport { SetAccountPasswordPage } from './area/accountSetup/set-account-password-page';\nimport { LinkingIntroPage } from './area/accountSetup/linking/linking-intro-page';\nimport { AccountSetupSuccessPage } from './area/accountSetup/account-setup-success-page';\nimport { LinkingSuccessPage } from './area/accountSetup/linking/linking-success-page';\nimport { EmailVerificationPage } from './area/email/verification-page';\nimport { EmailVerificationErrorPage } from './area/email/email-verification-error-page';\nimport { ErrorPage } from './area/error/error-page';\nimport { VerifyEmailPage } from './area/email/verify-page';\nimport { EmailVerificationSuccessPage } from './area/email/verification-success-page';\nimport { PasswordResetErrorPage } from './area/password/password-reset-error-page';\nimport { ForgotPasswordPage } from './area/password/forgot-page';\nimport { ForgotPasswordSentPage } from './area/password/forgot-sent-page';\nimport { PasswordResetPage } from './area/password/reset-page';\nimport { PasswordResetSuccessPage } from './area/password/reset-success-page';\nimport { ChangePasswordPage } from './area/password/change-page';\nimport { ChangePasswordSuccessPage } from './area/password/change-success-page';\nimport { CreatePasswordPage } from './area/password/create-page';\nimport { CreatePasswordSuccessPage } from './area/password/create-success-page';\nimport { VerifyPasswordResetPage } from './area/password/verify-page';\nimport { AcceptEulaPage } from './area/eula/accept-eula-page';\nimport { UserImpersonationPage } from './area/admin/user-impersonation-page';\nimport { VerifyMfaPage } from './area/mfa/verify-page';\nimport { getBackgroundImage } from './shared/utils/background-image';\nimport { PartialLoginRoute } from './shared/components/PartialLoginRoute';\nimport { LinkingPage } from './area/accountSetup/linking/linking-page';\nimport { LinkedAccountsPage } from './area/admin/linked-accounts-page';\n\nexport const routes = (\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 \n \n \n \n \n);\n","export const getBackgroundImage = () => {\n const min = 1;\n const max = 25;\n return Math.floor(Math.random() * max) + min;\n};\n","import React from 'react';\nimport { LandingPageUrl } from '../../shared/constants';\nimport { ErrorPageComponent } from '../../shared/components/Page/error-page-component';\n\nexport const EmailVerificationErrorPage = () => {\n const errorMessage =\n 'The email verification link has expired. Please request a new verification link and promptly follow the email verification steps.';\n const title = 'Cannot Validate Email';\n return (\n \n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { ErrorPageComponent } from '../../shared/components/Page/error-page-component';\n\nexport const ErrorPage = () => {\n const [requestId, setRequestId] = useState();\n const [returnUrl, setReturnUrl] = useState();\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n setRequestId(params.get('requestId') || '');\n\n if (params.get('returnUrl')) {\n setReturnUrl(params.get('returnUrl') || '');\n }\n }, []);\n\n const errorMessage = `The page could not be loaded. If the problem persists, contact support.\\nRequest Id: ${requestId}`;\n const title = 'Error';\n return (\n \n );\n};\n","import React from 'react';\nimport { LandingPageUrl } from '../../shared/constants';\nimport { ErrorPageComponent } from '../../shared/components/Page/error-page-component';\n\nexport const PasswordResetErrorPage = () => {\n const errorMessage =\n 'The password reset link has expired. Please request a new password reset\\n' +\n 'link and promptly follow the password reset steps.';\n const title = 'Cannot Reset Password';\n return (\n \n );\n};\n","import React from 'react';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { Page } from '../shared/components/Page';\nimport { ChevronLeftCircleIcon } from '../shared/icons/chevron-left-circle-icon';\nimport { LandingPageUrl } from '../shared/constants';\n\nexport const ClientErrorPage = () => {\n const params = new URLSearchParams(window.location.search);\n const reason = params.get('reason') || 'Bad Request';\n const traceId = params.get('trace_id');\n\n return (\n \n \n 400 - Bad Request\n \n \n {reason}\n \n \n {traceId ? `Request ID: ${traceId}` : ''}\n \n window.location.replace(LandingPageUrl)}\n >\n \n RETURN TO LOGIN\n \n \n );\n};\n","import React from 'react';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Button } from '@dealersocket/ds-ui-react/Button';\nimport { Page } from '../shared/components/Page';\nimport { ChevronLeftCircleIcon } from '../shared/icons/chevron-left-circle-icon';\nimport { LandingPageUrl } from '../shared/constants';\n\nexport const LoginExpiredPage = () => {\n return (\n \n \n Login Session Expired\n \n \n We're sorry, your login session has expired.\n \n window.location.replace(LandingPageUrl)}\n >\n \n RETURN TO LOGIN\n \n \n );\n};\n","import React from 'react';\nimport {\n Typography,\n TypographyVariants,\n} from '@dealersocket/ds-ui-react/Typography';\nimport { Page } from '../shared/components/Page';\n\nexport const NotFoundPage = () => {\n return (\n \n \n 404 - Page Not Found\n \n \n This page does not exist.\n \n \n );\n};\n","export function checkWebPFeature(feature, callback) {\n const kTestImages = {\n lossy: 'UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA',\n lossless: 'UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==',\n alpha:\n 'UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==',\n animation:\n 'UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA',\n };\n const img = new Image();\n img.onload = () => {\n const result = img.width > 0 && img.height > 0;\n callback(feature, result);\n };\n img.onerror = () => {\n callback(feature, false);\n };\n img.src = `data:image/webp;base64,${kTestImages[feature]}`;\n}\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\nimport { History } from 'history';\nimport { reducer as formReducer } from 'redux-form';\nimport { ApplicationStateType as ApplicationState, reducers } from '.';\n\nexport const configureStore = (\n history: History,\n initialState?: ApplicationState\n) => {\n const middleware = [thunk, routerMiddleware(history)];\n\n const rootReducer = combineReducers({\n ...reducers,\n router: connectRouter(history),\n form: formReducer,\n });\n\n const enhancers: Function[] = [];\n const windowIfDefined =\n typeof window === 'undefined' ? null : (window as any);\n\n /* eslint-disable no-underscore-dangle */\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\n }\n /* eslint-enable */\n\n return createStore(\n rootReducer,\n initialState,\n compose(applyMiddleware(...middleware), ...enhancers)\n );\n};\n"],"sourceRoot":""}