{"version":3,"sources":["pages/FindMyWorkspacePage/index.module.scss","components/MainContent/MainContent.module.scss","components/Layout/index.module.scss","pages/SignupPage/index.module.scss","services/localStorage.ts","api/index.ts","api/password.ts","api/customer.ts","utils/actions.ts","store/auth/constants.ts","store/auth/actions.ts","components/Navbar/index.tsx","utils/useInitData.ts","pages/ResetPasswordEmailPage/index.tsx","components/PasswordField/index.tsx","models/Password.ts","pages/ResetPasswordPage/index.tsx","pages/InviteCustomerPage/index.tsx","pages/InviteExpiredPage/index.tsx","pages/LoginPage/index.tsx","pages/DefaultPage/index.tsx","pages/CreateWorkspacePage/index.tsx","pages/ErrorPage/index.tsx","pages/CreatePasswordPage/index.tsx","pages/EnterWorkspacePage/index.tsx","pages/FindMyWorkspacePage/index.tsx","pages/SignupPage/index.tsx","pages/AccessPage/index.tsx","routes/index.tsx","pages/NoMatchPage/index.tsx","config.ts","components/MainContent/index.tsx","store/app/constants.ts","store/app/actions.ts","components/Layout/index.tsx","components/Layout/Scene.tsx","components/PrivateRoutes/index.tsx","components/App/index.tsx","store/auth/reducer.ts","store/app/reducer.ts","store/index.ts","serviceWorker.ts","utils/log.ts","index.tsx","pages/CreatePasswordPage/index.module.scss","pages/AccessPage/index.module.scss","pages/ResetPasswordPage/index.module.scss","pages/LoginPage/index.module.scss","components/PasswordField/index.module.scss","pages/CreateWorkspacePage/index.module.scss"],"names":["module","exports","BASE_INFO_NAME","authInstance","localStorageService","key","data","window","localStorage","getItem","JSON","parse","getBaseInfo","removeItem","sendResetPasswordEmail","email","a","getAuthInstance","post","response","verifyEmailLinkHash","inviteHash","resetFromEmail","password","createPassword","workspaceDomain","headers","verifyInviteLinkHash","createWorkspace","createData","verifyEmail","res","verifyUserEmail","getCustomerSignupForm","get","signupCustomer","getDropDownOptions","field","verifyWorkspaceDomain","findMyWorkspace","resendInvite","getIntercomId","API","Password","Customer","createAction","type","payload","reducerFromMap","initialState","map","middlewares","state","action","actionHandler","nextState","forEach","fn","authConstants","authActions","authorized","user","logout","Navbar","backButton","title","leftLogo","useInitData","ihb","nonIHB","useState","setData","sideURL","setSideURL","getData","useCallback","count","i","setInterval","newData","clearInterval","parsed","ihpOwner","pages","landingPages","useEffect","IHB_IMAGE_URL","SVG_HOST_URL","NON_IHB_IMAGE_URL","ResetPasswordEmailPage","location","useLocation","emailAddress","setEmailAddress","validationUtils","validateEmail","emailValidity","setEmailValidity","visibleCard","setVisibleCard","loading","setLoading","useAdblockCheck","adblockEnabled","errorMsg","setErrorMsg","successMsg","setSuccessMsg","handleSend","isResend","success","setTimeout","rightPartImage","docTitle","leftChildren","className","TwoPartScreenStyles","card","show","hide","subtitle","onSubmit","e","preventDefault","variant","name","value","onChange","label","placeholder","onValidate","inputAttributes","autoComplete","autoFocus","validationRules","func","error","errorMessage","iconName","button","iconPosition","disabled","onClick","successMessage","PasswordField","props","inputRef","helpText","passwordVisible","setPasswordVisible","styles","passwordField","helpActions","togglePasswordVisibilityIcon","val","disableLogging","defaultProps","hintsList","regex","match","ResetPasswordPage","passwrd","setPasswrd","hints","setHints","history","useHistory","mounted","useRef","verifyHash","hash","hash1","replace","isValid","resetEmail","invalidReason","current","URLSearchParams","search","length","hintsToSave","h","test","handleCreatePassword","credential","PasswordCredential","id","navigator","credentials","store","errorObjects","size","style","opacity","position","hint","find","push","INVALID_LINK","InviteCustomerPage","isExpired","pathname","isInviteCancelled","isInviteProcessed","isInviteDeleted","isNewUser","invitedToWorkspace","inviteEmail","href","btoa","isIHPCustomer","height","InviteExpiredPage","EMAIL_INVALID_MSG","LoginForm","onSuccess","onError","passwd","setPasswd","isAutoLogin","setAutoLogin","apiError","isSubmitting","submitData","setSubmitData","setAdblockEnabled","useCapslockCheck","isCapsLock","pwdRef","initData","getOrgName","organizationName","handleEmailVerification","emailParam","ORIGIN_URL","substring","indexOf","isWorkspaceAllowed","focus","userEmail","owId","Number","apiToken","atob","isNaN","currentIndex","savedOwIds","index","newList","setItem","stringify","String","AuthService","singleSignon","then","userData","catch","emailToSave","handleSubmitForm","authorize","message","display","text","ihpLink","nonIhpLink","to","readonlyEmail","ref","passwordNote","warningMessage","CAPSLOCK_MESSAGE","ADBLOCK_MESSAGE","link","DefaultPage","parseInt","CreateWorkspacePage","workspaceUrl","setWorkspaceUrl","workspaceURLSuffix","formatedWorkspaceUrl","endsWith","slice","domain","creatorEmail","suffix","workspaceURLField","trim","RIGHT_PART_IMAGE_URL","ErrorPage","for404Page","CreatePasswordPage","setOwId","includes","redirectionUrl","authorizedUser","userAuth","passwordHints","EnterWorkspacePage","verifyWorkspace","CHECK_CIRCLE_IMAGE_URL","FindMyWorkspacePage","urlsEmailSend","src","alt","IHB_INVITE_CARD_URL","NON_IHB_INVITE_CARD_URL","EMAIL_CARD","DETAILS_CARD","INVITE_CARD","SignupPage","isCustomerVerificationEnabled","setCustomerVerificationStatus","signUpErrorMsg","setSignUpErrorMsg","dropDownOptions","setDropDownOptions","formValues","setFormValues","formFields","setFormFields","fieldValidity","setFieldValidity","intercomId","setIntercomId","setIntercom","chatbotAppId","console","log","fields","API_KEYS","mediaBudget","industry","companySize","selectFields","element","Promise","all","responses","options","idx","dropDown","Object","keys","optionValue","handleUserEmailVerification","isOrganizationOwnerUser","userName","setValue","signUpFormRes","numberInputs","selectFormFields","placeholderMessages","budgetSpent","isCustomerVerificationEnable","customerFormDetails","inputType","some","handleSignup","requestObj","selectedValue","toString","prevState","getValue","setValidity","checkLengthValidity","renderLoginLink","Intercom","app_id","changeEmail","ihpButton","nonIhpButton","signupCard","mailIcon","editIcon","isUserRequired","textField","Dollar","showLabelAlways","values","successIcon","successTitle","AccessPage","buttonWrapper","ihpSignUpBtn","nonIhpSignUpBtn","ihpLoginBtn","nonIhpLoginBtn","routes","path","exact","component","MainContentComponent","children","container","MainContent","applicationConstants","applicationActions","toggleSidebarMenu","LayoutComponent","this","isSidebarOpened","toggleSidebar","sidebar","opened","PureComponent","mapActions","Layout","connect","app","sidebarOpened","Scene","mainTitle","PrivateRoutes","routePaths","route","mapAction","App","onstorage","bootIntercomFn","documentTitle","successLoginRedirectPath","onSuccessLogin","config","instance","axios","create","baseURL","domainURL","interceptors","use","isCancel","status","reload","reject","createIqmInstance","onLogout","loginForm","publicRoutes","defaultAuthState","reducer","defaultApplicationState","isOpenExchangeMode","combineReducers","auth","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","applyMiddleware","thunk","Boolean","hostname","initDataDog","allowedTracingOrigins","trackViewsManually","Authorization","BASIC_AUTH_HEADER_VALUE","language","split","messages","ru","messagesRu","en","messagesEn","ReactDOM","render","locale","document","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.3b253a3e.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"urlsEmailSend\":\"FindMyWorkspacePage_urlsEmailSend__364O_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MainContent_container__HZJO7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mainTitle\":\"Layout_mainTitle__1q-OT\",\"hover-ripples\":\"Layout_hover-ripples__3S9Ug\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"successTitle\":\"SignupPage_successTitle__ppOIn\",\"successIcon\":\"SignupPage_successIcon__MAXPo\",\"ihpButton\":\"SignupPage_ihpButton__3DTll\",\"nonIhpButton\":\"SignupPage_nonIhpButton__3Ysj1\",\"text\":\"SignupPage_text__3JMbI\",\"ihpLink\":\"SignupPage_ihpLink__1lKgZ\",\"nonIhpLink\":\"SignupPage_nonIhpLink__2hhVJ\",\"textField\":\"SignupPage_textField__2MxqM\",\"Dollar\":\"SignupPage_Dollar__m64zH\",\"subtitle\":\"SignupPage_subtitle__27ZKQ\",\"signupCard\":\"SignupPage_signupCard__1XN7w\",\"readonlyEmail\":\"SignupPage_readonlyEmail__3B-WO\",\"mailIcon\":\"SignupPage_mailIcon__2JIG-\",\"editIcon\":\"SignupPage_editIcon__3FF8t\",\"show\":\"SignupPage_show__23OLX\",\"showme\":\"SignupPage_showme__cW1xA\",\"errorMessage\":\"SignupPage_errorMessage__c1etB\",\"hover-ripples\":\"SignupPage_hover-ripples__3qreS\"};","const BASE_INFO_NAME = 'authorizedUser';\n\nexport type LocalData = {\n _time: Date;\n data: T;\n};\n\nexport function saveLocal(key: string, data: T): void {\n window.localStorage.setItem(\n key,\n JSON.stringify({\n _time: Date.now(),\n data,\n }),\n );\n}\n\nexport function getLocal(key: string): LocalData {\n const data = window.localStorage.getItem(key) as string;\n return JSON.parse(data) || null;\n}\n\nfunction getBaseInfo(key: string): T {\n const data = window.localStorage.getItem(key) as string;\n return JSON.parse(data) || null;\n}\n\nexport function removeLocal(key: string): void {\n window.localStorage.removeItem(key);\n}\n\nexport const localStorageService = {\n saveBaseInfo(data: T) {\n saveLocal(BASE_INFO_NAME, data);\n },\n getBaseInfo() {\n return getBaseInfo(BASE_INFO_NAME);\n },\n removeBaseInfo() {\n removeLocal(BASE_INFO_NAME);\n },\n saveLocal,\n getLocal,\n};\n","import axios, { AxiosInstance } from 'axios';\nimport { ORIGIN_URL, BASIC_AUTH_HEADER_VALUE } from 'iqm-framework';\n\nimport { localStorageService } from 'services/localStorage';\nimport { HEADER_TOKEN_NAME } from 'config';\n\nimport * as Password from './password';\nimport * as Customer from './customer';\n\nexport type IQMInstanceConfigParams = {\n apiToken: string;\n domainURL: string;\n};\n\nexport type Params = { [key: string]: string | number };\n\nlet IQMInstance: AxiosInstance;\nlet authInstance: AxiosInstance;\n\nexport function createIqmInstance(config: IQMInstanceConfigParams) {\n const instance = axios.create({\n ...config,\n baseURL: `https://${config.domainURL}/api`,\n headers: {\n [HEADER_TOKEN_NAME]: config.apiToken,\n },\n });\n\n instance.interceptors.response.use(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (response: any) => {\n return response;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (response: any) => {\n if (axios.isCancel(response)) {\n const res = {\n response: {\n data: response,\n },\n };\n\n throw res;\n }\n if (response.response.status === 401) {\n localStorageService.removeBaseInfo();\n window.location.reload();\n }\n return Promise.reject(response);\n },\n );\n\n IQMInstance = instance;\n}\n\nexport function createAuthInstance() {\n authInstance = axios.create({\n baseURL: `${ORIGIN_URL}/api`,\n headers: {\n Authorization: BASIC_AUTH_HEADER_VALUE,\n },\n });\n}\n\nexport function getInstance(): AxiosInstance {\n return IQMInstance || axios;\n}\n\nexport function getAuthInstance(): AxiosInstance {\n return authInstance;\n}\n\nexport const API = {\n Password,\n Customer,\n};\n","import { AxiosResponse } from 'axios';\n\nimport { getAuthInstance } from 'api';\nimport { WithResponse } from 'models/API';\n\nexport const sendResetPasswordEmail = async (email: string): Promise> => {\n try {\n const response: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/user/reset-password',\n { email },\n );\n return response.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\ninterface VerifyLinkResponse {\n isValid: boolean;\n resetEmail?: string;\n invalidReason?: string;\n}\n\nexport const verifyEmailLinkHash = async (\n inviteHash: string,\n): Promise> => {\n try {\n const response: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/user/reset-password/validate',\n { inviteHash },\n );\n return response.data;\n } catch (e) {\n return e.response?.data;\n }\n};\n\nexport const resetFromEmail = async (\n email: string,\n password: string,\n inviteHash: string,\n): Promise> => {\n try {\n const response: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/user/update-password',\n { email, password, inviteHash },\n );\n return response.data;\n } catch (e) {\n return e.response?.data;\n }\n};\n\ninterface CreatePasswordRequestData {\n email: string;\n password: string;\n inviteHash: string;\n}\n\ninterface CreatePasswordResponse {\n /* eslint-disable camelcase */\n access_token: string;\n refresh_token: string;\n token_type: string;\n expires_in: number;\n /* eslint-enable camelcase */\n scope: string;\n owId: number;\n redirectionUrl?: string;\n}\n\nexport const createPassword = async (\n data: CreatePasswordRequestData,\n workspaceDomain: string,\n): Promise> => {\n try {\n const response: AxiosResponse> =\n await getAuthInstance().post('/v3/ua/sign-up', data, {\n headers: {\n 'x-iaa-host': workspaceDomain,\n },\n });\n\n return response.data;\n } catch (e) {\n return e.response.data;\n }\n};\n","import { getAuthInstance } from 'api';\nimport { AxiosResponse } from 'axios';\nimport { WithResponse } from 'models/API';\n\nexport interface VerifyLinkResponse {\n isIHPCustomer: boolean;\n isExpired?: boolean;\n inviteEmail?: string;\n invitedToWorkspace?: string;\n organizationName?: string;\n workspaceDomain?: string; // if a workspace was already created with this invite\n isInviteProcessed?: boolean; // if user has already created (workspace AND) password with this invite, this flag will be true\n isInviteCancelled?: boolean; // if invite is cancelled before invitee tries to use the link\n isNewUser?: boolean;\n isInviteDeleted?: boolean;\n}\n\nexport const verifyInviteLinkHash = async (\n inviteHash: string,\n): Promise> => {\n try {\n const response: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/invite/validate',\n { inviteHash },\n );\n return response.data;\n } catch (e) {\n return e.response?.data;\n }\n};\n\ninterface CreateRequestData {\n creatorEmail: string;\n domain: string;\n inviteHash: string;\n}\n\nexport const createWorkspace = async (\n createData: CreateRequestData,\n): Promise> => {\n try {\n const response: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/workspace',\n createData,\n );\n\n return response.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\ninterface VerifyEmailRequestData {\n workspaceDomain: string;\n email: string;\n}\n\ninterface VerifyEmailResponse {\n isValid: boolean;\n isWorkspaceAllowed: boolean;\n}\n\nexport const verifyEmail = async (\n data: VerifyEmailRequestData,\n): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/user/email/validate',\n data,\n );\n\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\ninterface VerifyUserEmailResponse {\n userName: string;\n isNewUser: string;\n isOrganizationOwnerUser: string;\n}\n\nexport const verifyUserEmail = async (\n email: string,\n): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/user-email/validate',\n { email },\n );\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\ninterface SignupFormResponse {\n isCustomerVerificationEnable: boolean;\n customerFormDetails: [\n {\n id: number;\n field: string;\n label: string;\n isUserRequired: boolean;\n },\n ];\n}\n\nexport const getCustomerSignupForm = async (): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().get(\n '/v3/ua/customer/signup-form',\n );\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\ntype CustomerSignupRequest = {\n email: string;\n organizationName: string;\n userName: string;\n industry?: string;\n companySize?: string;\n mediaBudget?: string;\n budgetSpent?: number;\n};\n\nexport const signupCustomer = async (\n data: CustomerSignupRequest,\n): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/customer/signup',\n data,\n );\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\ninterface IOptions {\n name: string;\n id: number;\n label: string;\n order: number;\n}\n\nexport const getDropDownOptions = async (field: string): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().get(\n `/v3/ua/static/${field}`,\n );\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\nexport const verifyWorkspaceDomain = async (\n data: VerifyEmailRequestData,\n): Promise => {\n try {\n const res: AxiosResponse = await getAuthInstance().post(\n '/v3/ua/user/workspace/validate',\n data,\n );\n\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\nexport const findMyWorkspace = async (email: string): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/find-my-workspace',\n { email },\n );\n\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\nexport const resendInvite = async (inviteHash: string): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().post(\n '/v3/ua/customer/invite/re-send',\n { inviteHash },\n );\n\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n\nexport const getIntercomId = async (): Promise> => {\n try {\n const res: AxiosResponse> = await getAuthInstance().get(\n `/v3/ua/st/chatbot`,\n );\n return res.data;\n } catch (e) {\n return e.response.data;\n }\n};\n","import { Action } from 'models/Action';\n\nexport function createAction(type: string, payload?: T): Action {\n return {\n type,\n payload,\n };\n}\n\ntype TFunction = (state: T) => void;\n\nexport function reducerFromMap(\n initialState: T,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n map: { [key: string]: (state: T, action: Action) => T } = {},\n middlewares?: TFunction[],\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (state: T = initialState, action: Action): T => {\n const { type } = action;\n if (map[type]) {\n const actionHandler = map[type];\n const nextState = actionHandler(state, action);\n if (middlewares) {\n middlewares.forEach((fn) => fn(nextState));\n }\n return nextState;\n }\n return state;\n };\n}\n","export const authConstants = {\n LOGIN_SUCCESS: 'LOGIN_SUCCESS',\n LOGOUT: 'LOGOUT',\n};\n","import { User } from 'models/User';\nimport { createAction } from 'utils/actions';\nimport { authConstants } from './constants';\n\nexport const authActions = {\n authorized(user: User) {\n return createAction(authConstants.LOGIN_SUCCESS, user);\n },\n\n logout() {\n return createAction(authConstants.LOGOUT);\n },\n};\n\nexport interface Authorized {\n authorized: (user: User) => void;\n}\n\nexport interface Logout {\n logout: () => void;\n}\n","import React from 'react';\nimport { Header } from 'iqm-framework';\n\nconst NavbarComponent = () => {\n return
;\n};\n\nexport const Navbar = NavbarComponent;\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { InitData } from 'models/User';\n\nexport const useInitData = ({ ihb = '', nonIHB = '' }) => {\n const [data, setData] = useState(null);\n const [sideURL, setSideURL] = useState('');\n\n const getData = useCallback(() => {\n let count = 0;\n\n const i = setInterval(() => {\n const newData = localStorage.getItem('initData');\n if (newData) {\n clearInterval(i);\n const parsed = JSON.parse(newData) as InitData;\n setData(parsed);\n setSideURL(\n parsed.ihpOwner\n ? parsed.pages.landingPages[0] || ihb\n : parsed.pages.landingPages[0] || nonIHB,\n );\n } else {\n count += 1;\n if (count > 50) {\n clearInterval(i);\n }\n }\n }, 200);\n }, [ihb, nonIHB]);\n\n useEffect(() => {\n getData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n data,\n sideURL,\n };\n};\n","import React, { useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport get from 'lodash/get';\nimport {\n TwoPartScreen,\n TwoPartScreenStyles,\n validationUtils,\n useAdblockCheck,\n} from 'iqm-framework';\nimport { SVG_HOST_URL, TextField, Button } from 'factor';\n\nimport { API } from 'api';\nimport { useInitData } from 'utils/useInitData';\n\ninterface StateType {\n emailAddress: string;\n}\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/email-message.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/onboarding1Asset2.svg`;\n\nexport const ResetPasswordEmailPage = () => {\n const location = useLocation();\n const [emailAddress, setEmailAddress] = useState(location.state?.emailAddress || '');\n const [emailValidity, setEmailValidity] = useState(\n location.state?.emailAddress\n ? validationUtils.validateEmail(location.state.emailAddress)\n : false,\n );\n const [visibleCard, setVisibleCard] = useState<1 | 2>(1);\n const [loading, setLoading] = useState(false);\n const [adblockEnabled] = useAdblockCheck();\n const [errorMsg, setErrorMsg] = useState('');\n const [successMsg, setSuccessMsg] = useState('');\n\n const { sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n const handleSend = async (isResend = false) => {\n setErrorMsg('');\n setLoading(true);\n const res = await API.Password.sendResetPasswordEmail(emailAddress);\n if (res.success) {\n setVisibleCard(2);\n if (isResend) {\n setSuccessMsg(res.data || '');\n setTimeout(() => {\n setSuccessMsg('');\n }, 8000);\n }\n } else {\n setErrorMsg(get(res, 'errorObjects[0].error', ''));\n }\n setLoading(false);\n };\n\n return (\n \n \n
Reset your password
\n
Enter your registered email
\n {\n e.preventDefault();\n handleSend();\n }}\n >\n {\n return 'Please enter a valid email address';\n },\n },\n ]}\n />\n {errorMsg ?
{errorMsg}
: null}\n \n Next\n \n \n \n \n
Reset your password
\n

\n We’ve sent a password reset email, please check your inbox\n

\n

\n Haven’t received an email? Please check your spam folder, or\n

\n handleSend(true)}\n >\n Resend\n \n {errorMsg ?
{errorMsg}
: null}\n {successMsg ? (\n
{successMsg}
\n ) : null}\n \n \n }\n />\n );\n};\n","import React, { useState } from 'react';\nimport { TextField, Icon } from 'factor';\n\nimport styles from './index.module.scss';\n\ninterface Props {\n className: string;\n name: string;\n placeholder: string;\n label?: string;\n helpText?: string;\n value: string;\n onChange: (val: string) => void;\n inputAttributes: { [key: string]: string | boolean };\n inputRef?: (ref: HTMLInputElement) => void;\n}\n\nexport const PasswordField = (props: Props) => {\n const {\n className,\n inputAttributes,\n inputRef,\n label,\n name,\n helpText,\n onChange,\n placeholder,\n value,\n } = props;\n\n const [passwordVisible, setPasswordVisible] = useState(false);\n\n return (\n {\n setPasswordVisible((val) => !val);\n }}\n >\n \n \n }\n inputAttributes={inputAttributes}\n inputRef={inputRef}\n disableLogging\n />\n );\n};\n\nPasswordField.defaultProps = {\n label: null,\n helpText: null,\n inputRef: null,\n};\n","export interface THint {\n regex: RegExp;\n label: string;\n match: boolean;\n}\n\nexport const hintsList: THint[] = [\n {\n regex: /(?=.{8,})/g,\n label: 'contains at least 8 characters',\n match: false,\n },\n {\n regex: /(?=.*[A-Z])/g,\n label: 'contains at least one uppercase',\n match: false,\n },\n {\n regex: /(?=.*[0-9])/g,\n label: 'contains at least one number',\n match: false,\n },\n {\n regex: /(?=.*[!@#$%^&*])/g,\n label: 'contains at least one special character (like !@#$%^&*)',\n match: false,\n },\n];\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { TwoPartScreen, TwoPartScreenStyles, useAdblockCheck } from 'iqm-framework';\nimport { SVG_HOST_URL, Button, ProgressCircle } from 'factor';\n\nimport { PasswordField } from 'components/PasswordField';\nimport { API } from 'api';\nimport { hintsList, THint } from 'models/Password';\nimport { useInitData } from 'utils/useInitData';\n\nimport styles from './index.module.scss';\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/onboarding1Asset2.svg`;\n\n// eslint-disable-next-line\ndeclare let PasswordCredential: any;\n\nexport const ResetPasswordPage = () => {\n const [visibleCard, setVisibleCard] = useState<1 | 2>(1);\n const [errorMsg, setErrorMsg] = useState('');\n const [emailAddress, setEmailAddress] = useState('');\n const [loading, setLoading] = useState(false);\n const [passwrd, setPasswrd] = useState('');\n const [hints, setHints] = useState(hintsList);\n const [adblockEnabled] = useAdblockCheck();\n const history = useHistory();\n const mounted = useRef(false);\n\n const { sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n useEffect(() => {\n const verifyHash = async (hash: string) => {\n const hash1 = hash.replace(/\\s/g, '+');\n const res = await API.Password.verifyEmailLinkHash(hash1);\n if (res?.success && res?.data?.isValid) {\n setEmailAddress(res.data.resetEmail || '');\n } else if (res?.data?.invalidReason) {\n setErrorMsg(res.data.invalidReason);\n } else {\n setErrorMsg('Invalid link. Please contact your admin.');\n }\n setLoading(false);\n };\n\n if (history.location && mounted.current === false) {\n mounted.current = true;\n const hash = new URLSearchParams(history.location.search).get('hash');\n if (hash) {\n verifyHash(hash);\n }\n }\n }, [history.location]);\n\n useEffect(() => {\n if (passwrd.length) {\n const hintsToSave = hintsList.map((h) => ({ ...h, match: h.regex.test(passwrd) }));\n setHints(hintsToSave);\n } else {\n setHints(hintsList);\n }\n }, [passwrd]);\n\n const handleCreatePassword = async () => {\n if (history.location) {\n // logic to prompt save password popup in chrome and edge while resetting password\n if ('PasswordCredential' in window) {\n const credential = new PasswordCredential({\n id: emailAddress,\n name: emailAddress,\n password: passwrd,\n });\n navigator.credentials.store(credential);\n }\n\n const inviteHash = new URLSearchParams(history.location.search)\n .get('hash')\n ?.replace(/\\s/g, '+');\n if (inviteHash) {\n const res = await API.Password.resetFromEmail(emailAddress, passwrd, inviteHash);\n if (res.success) {\n setVisibleCard(2);\n } else if (res.errorObjects?.length) {\n setErrorMsg(res.errorObjects[0].error || '');\n }\n }\n }\n };\n\n const navigateToLogin = () => {\n history.push('/login', { emailAddress });\n };\n\n return (\n \n \n
\n {!loading && emailAddress ? 'Create new password' : 'Link Expired'}\n
\n\n {\n e.preventDefault();\n handleCreatePassword();\n }}\n >\n {loading ? (\n \n ) : (\n
\n {emailAddress ? (\n <>\n \n \n
    \n {hints.map((h) => (\n \n {h.label}\n \n ))}\n
\n \n ) : (\n
{errorMsg}
\n )}\n
\n )}\n\n !hint.match)\n }\n type=\"submit\"\n >\n Next\n \n \n \n \n
Password reset successful
\n
\n Awesome, you've successfully updated your password\n
\n \n Continue Login\n \n \n \n }\n />\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { TwoPartScreen, TwoPartScreenStyles } from 'iqm-framework';\nimport { SVG_HOST_URL, ProgressCircle } from 'factor';\n\nimport { API } from 'api';\nimport { useInitData } from 'utils/useInitData';\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/onboarding1Asset2.svg`;\nconst INVALID_LINK = 'The invitation link is invalid.';\n\nexport const InviteCustomerPage = () => {\n const history = useHistory();\n const [errorMsg, setErrorMsg] = useState('');\n\n const { sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n useEffect(() => {\n const verifyHash = async (hash: string) => {\n const hash1 = hash.replace(/\\s/g, '+');\n const res = await API.Customer.verifyInviteLinkHash(hash1);\n\n // invite expired\n if (res.data?.isExpired) {\n history.push({\n pathname: '/invite-expired',\n search: history.location.search,\n });\n\n // invite cancelled\n } else if (res.data?.isInviteCancelled) {\n history.push('/404');\n } else if (res.success && (res.data?.isInviteProcessed || res.data?.isInviteDeleted)) {\n setErrorMsg(INVALID_LINK);\n\n // if a user with the invited email already exists in the system\n } else if (\n res.success &&\n !res.data?.isNewUser &&\n res.data?.invitedToWorkspace &&\n res.data.inviteEmail\n ) {\n window.location.href = `https://${res.data.invitedToWorkspace}/#/login?email=${btoa(\n res.data.inviteEmail,\n )}`;\n\n // invite from IHB\n } else if (res.success && res.data?.isIHPCustomer) {\n // if a workspace was already created with this invite\n if (res.data.workspaceDomain) {\n history.push({\n pathname: '/create-password',\n state: { ...res.data, hash: hash1, invitedToWorkspace: res.data.workspaceDomain },\n });\n\n // if no workspace already created\n } else {\n history.push({\n pathname: '/create-workspace',\n state: { hash: hash1, ...res.data },\n });\n }\n\n // invite from non-IHB\n } else if (res.success && !res.data?.isIHPCustomer) {\n history.push({\n pathname: '/create-password',\n state: { hash: hash1, ...res.data },\n });\n } else {\n setErrorMsg(INVALID_LINK);\n }\n };\n\n if (history.location) {\n const hash = new URLSearchParams(history.location.search).get('hash');\n if (hash) {\n verifyHash(hash);\n }\n }\n }, [history]);\n\n return (\n \n
Validating invite URL
\n {errorMsg ? (\n
{errorMsg}
\n ) : (\n \n \n \n )}\n \n }\n />\n );\n};\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { TwoPartScreen, TwoPartScreenStyles } from 'iqm-framework';\nimport { SVG_HOST_URL } from 'factor';\n\nimport { useInitData } from 'utils/useInitData';\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/calendar-blue.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/calendar-teal.svg`;\n\nexport const InviteExpiredPage = () => {\n const history = useHistory();\n const { sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n const renderLeftChildren = () => {\n return (\n
\n
Invitation Expired
\n
Uh Oh! Invitation link is expired
\n
\n But don't worry, happens to the best of us.\n
\n
\n );\n };\n\n useEffect(() => {\n if (!history.location.search) {\n history.push('/404');\n }\n }, [history]);\n\n return (\n \n );\n};\n","import React, { FormEvent, useCallback, useEffect, useRef, useState } from 'react';\nimport { Link, useHistory } from 'react-router-dom';\n// import Postmate from 'postmate';\nimport { TextField, Button, SVG_HOST_URL, Pill, ProgressCircle } from 'factor';\nimport {\n AuthService,\n validationUtils,\n TwoPartScreen,\n TwoPartScreenStyles,\n useAdblockCheck,\n ADBLOCK_MESSAGE,\n useCapslockCheck,\n CAPSLOCK_MESSAGE,\n ORIGIN_URL,\n} from 'iqm-framework';\n\nimport { PasswordField } from 'components/PasswordField';\nimport { API } from 'api';\nimport { useInitData } from 'utils/useInitData';\nimport { localStorageService } from 'services/localStorage';\nimport { User } from 'models/User';\n\nimport styles from './index.module.scss';\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/intelligence2Asset2.svg`;\nconst EMAIL_INVALID_MSG = \"Sorry, we couldn't recognize this email address\";\n\ninterface Props {\n onSuccess: (userData: unknown) => void;\n onError: (error: unknown) => void;\n}\n\nexport const LoginForm = (props: Props) => {\n const { onSuccess, onError } = props;\n const [visibleCard, setVisibleCard] = useState<1 | 2>(1);\n const [passwd, setPasswd] = useState('');\n const [emailAddress, setEmailAddress] = useState('');\n const [emailValidity, setEmailValidity] = useState(false);\n const [errorMsg, setErrorMsg] = useState('');\n const [isAutoLogin, setAutoLogin] = useState(false);\n const [submitData, setSubmitData] = useState({ apiError: '', isSubmitting: false });\n const [adblockEnabled, setAdblockEnabled] = useAdblockCheck();\n const [isCapsLock] = useCapslockCheck();\n const history = useHistory();\n const pwdRef = useRef(null);\n const mounted = useRef(false);\n\n const { data: initData, sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n const getOrgName = useCallback(() => {\n return initData?.organizationName || 'IHP';\n }, [initData?.organizationName]);\n\n const handleEmailVerification = useCallback(\n async (emailParam = '') => {\n if (emailValidity) {\n const workspaceDomain = ORIGIN_URL.substring(ORIGIN_URL.indexOf('//') + 2);\n\n const res = await API.Customer.verifyEmail({\n workspaceDomain,\n email: emailParam || emailAddress,\n });\n\n if (res.success && res.data?.isWorkspaceAllowed) {\n setVisibleCard(2);\n setTimeout(() => pwdRef.current?.focus(), 0);\n } else if (res.data?.isValid && initData?.ihpOwner) {\n history.push({\n pathname: '/enter-workspace',\n state: {\n userEmail: emailParam || emailAddress,\n },\n });\n } else if (!res.success && res.errorObjects?.length) {\n setErrorMsg(res.errorObjects[0].error ?? EMAIL_INVALID_MSG);\n } else {\n setErrorMsg(EMAIL_INVALID_MSG);\n }\n }\n },\n [emailAddress, emailValidity, history, initData?.ihpOwner],\n );\n\n useEffect(() => {\n if (history.location.search && !mounted.current) {\n mounted.current = true;\n\n const owId = Number(new URLSearchParams(history.location.search).get('ow'));\n // const ihpParam = new URLSearchParams(history.location.search).get('owner');\n const emailParam = new URLSearchParams(history.location.search).get('email');\n let apiToken = '';\n try {\n apiToken = atob(new URLSearchParams(history.location.search).get('apiToken') ?? '');\n } catch (e) {\n apiToken = '';\n }\n if (apiToken && !Number.isNaN(owId)) {\n let currentIndex = 0;\n const savedOwIds = JSON.parse(localStorage.getItem('owIds') || '[]') || [];\n const index = savedOwIds.indexOf(owId);\n if (index !== -1) {\n currentIndex = index;\n } else {\n const newList = [...savedOwIds, owId];\n localStorage.setItem('owIds', JSON.stringify(newList));\n currentIndex = newList.length - 1;\n }\n localStorage.setItem('transitionOWIdIndex', String(currentIndex));\n\n setAutoLogin(true);\n AuthService.singleSignon(apiToken, [owId])\n .then((userData: unknown) => {\n onSuccess(userData);\n })\n .catch((e: unknown) => {\n if (onError) {\n onError(e);\n localStorage.removeItem('transitionOWIdIndex');\n }\n });\n } else if (emailParam) {\n const emailToSave = atob(emailParam);\n setEmailAddress(emailToSave);\n setVisibleCard(2);\n setTimeout(() => pwdRef.current?.focus(), 0);\n }\n } else if (localStorageService.getBaseInfo()?.apiToken) {\n setTimeout(() => {\n window.location.href = '/dashboard/u/0/';\n }, 0);\n }\n }, [history.location.search, onError, onSuccess]);\n\n // clear the error if user modifies the email\n useEffect(() => {\n setErrorMsg('');\n }, [emailAddress]);\n\n const handleSubmitForm = async (e: FormEvent) => {\n e.preventDefault();\n setSubmitData({ apiError: '', isSubmitting: true });\n\n try {\n const userData = await AuthService.authorize({ email: emailAddress, password: passwd }, true);\n if (onSuccess) {\n onSuccess(userData);\n }\n } catch (error) {\n if (onError) {\n onError(error);\n }\n setSubmitData({\n apiError: error.errorMessage,\n isSubmitting: false,\n });\n if (!error.errorMessage) {\n setAdblockEnabled(error.message === 'Endpoint is not available');\n }\n }\n };\n\n const renderSignupLink = () => (\n
\n Not registered yet?\n \n Signup now\n \n
\n );\n\n return (\n <>\n
\n \n \n {isAutoLogin ? (\n <>\n
Logging you in...
\n \n \n
\n \n ) : (\n <>\n
Let's get you started!
\n
Enter your email to sign in
\n {\n e.preventDefault();\n handleEmailVerification();\n }}\n >\n {\n return 'Please enter a valid email address';\n },\n },\n ]}\n />\n {errorMsg ? (\n
{errorMsg}
\n ) : null}\n \n Next\n \n \n {renderSignupLink()}\n \n )}\n \n \n
Login to {getOrgName()}
\n
Enter your login password
\n {\n setVisibleCard(1);\n setSubmitData({\n apiError: '',\n isSubmitting: false,\n });\n }}\n >\n \n \n
\n \n {\n pwdRef.current = ref;\n }}\n />\n
\n {initData?.passwordNote ? `Note: ${initData.passwordNote}` : ''}\n
\n {isCapsLock ? (\n
{CAPSLOCK_MESSAGE}
\n ) : null}\n {adblockEnabled ? (\n
{ADBLOCK_MESSAGE}
\n ) : null}\n {submitData.apiError && !submitData.isSubmitting ? (\n
{submitData.apiError}
\n ) : null}\n\n \n Login\n \n \n \n Forgot Password?\n \n \n \n }\n />\n \n );\n};\n","import React, { useEffect } from 'react';\n\nconst DefaultPage = () => {\n useEffect(() => {\n const savedOwIds = JSON.parse(localStorage.getItem('owIds') || '[]') || [];\n const currentIndex = Number.parseInt(localStorage.getItem('transitionOWIdIndex') ?? '', 10);\n // redirect to dashboard from here\n if (!Number.isNaN(currentIndex) && currentIndex < savedOwIds.length) {\n localStorage.removeItem('transitionOWIdIndex');\n setTimeout(() => {\n window.location.href = `/dashboard/u/${currentIndex}/`;\n }, 0);\n } else {\n window.location.href = '/dashboard/u/0/';\n }\n }, []);\n\n return
Redirecting...
;\n};\n\nexport { DefaultPage };\n","import React, { useState } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { TwoPartScreen, TwoPartScreenStyles, useAdblockCheck } from 'iqm-framework';\nimport { SVG_HOST_URL, TextField, Button } from 'factor';\n\nimport { API } from 'api';\nimport { VerifyLinkResponse } from 'api/customer';\nimport { useInitData } from 'utils/useInitData';\n\nimport styles from './index.module.scss';\n\ninterface LocationData extends VerifyLinkResponse {\n hash: string;\n}\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/onboarding1Asset2.svg`;\n\nexport const CreateWorkspacePage = () => {\n const [errorMsg, setErrorMsg] = useState('');\n const [workspaceUrl, setWorkspaceUrl] = useState('');\n const [adblockEnabled] = useAdblockCheck();\n const history = useHistory();\n const location = useLocation();\n const [loading, setLoading] = useState(false);\n\n const { sideURL, data: initData } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n const workspaceURLSuffix = initData?.workspaceURLSuffix || '';\n\n const createWorkspace = async () => {\n const formatedWorkspaceUrl = workspaceUrl.endsWith('-')\n ? workspaceUrl.slice(0, -1)\n : workspaceUrl;\n setWorkspaceUrl(formatedWorkspaceUrl);\n\n if (!location.state?.inviteEmail) {\n setErrorMsg('Wrong invite link');\n return;\n }\n\n setLoading(true);\n const res = await API.Customer.createWorkspace({\n domain: formatedWorkspaceUrl,\n creatorEmail: location.state.inviteEmail,\n inviteHash: location.state.hash,\n });\n setLoading(false);\n\n const domain = `${formatedWorkspaceUrl}${workspaceURLSuffix}`;\n\n if (res.success) {\n history.push({\n pathname: '/create-password',\n state: { ...location.state, invitedToWorkspace: domain },\n });\n } else if (res.errorObjects?.length) {\n setErrorMsg(res.errorObjects[0].error);\n }\n };\n\n const onChangeWorkspaceUrl = (value: string) => {\n setWorkspaceUrl(value.replace(/[^A-Z\\-0-9]+/gi, '').replace(/-+/gi, '-'));\n };\n\n return (\n \n
\n
Claim workspace URL
\n
Create workspace URL
\n
\n {location.state?.organizationName || 'IHP'}\n
\n\n {\n e.preventDefault();\n createWorkspace();\n }}\n >\n
\n {workspaceURLSuffix}
}\n className={styles.workspaceURLField}\n value={workspaceUrl}\n onChange={onChangeWorkspaceUrl}\n inputAttributes={{\n autoFocus: true,\n }}\n />\n
\n
{errorMsg}
\n\n \n Next\n \n \n \n \n }\n />\n );\n};\n","import React from 'react';\nimport { TwoPartScreen, TwoPartScreenStyles } from 'iqm-framework';\nimport { SVG_HOST_URL } from 'factor';\n\nconst RIGHT_PART_IMAGE_URL = `${SVG_HOST_URL}/misc/404-error.svg`;\n\nexport const ErrorPage = () => (\n \n
Oops! Page not found
\n
\n Something went wrong. We can't seem to find the page you are looking for.\n
\n
Please check your URL.
\n {/* {\n history.push('/login');\n }}\n >\n Take me to Login\n s */}\n \n }\n />\n);\n","import React, { useEffect, useState } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport {\n TwoPartScreen,\n TwoPartScreenStyles,\n userAuth,\n AuthService,\n ORIGIN_URL,\n} from 'iqm-framework';\nimport { SVG_HOST_URL, Button, Pill } from 'factor';\nimport get from 'lodash/get';\n\nimport { PasswordField } from 'components/PasswordField';\nimport { API } from 'api';\nimport { VerifyLinkResponse } from 'api/customer';\nimport { hintsList, THint } from 'models/Password';\nimport { User } from 'models/User';\nimport { useInitData } from 'utils/useInitData';\n\nimport styles from './index.module.scss';\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/group12.svg`;\n\ninterface LocationData extends VerifyLinkResponse {\n hash: string;\n}\n\nexport const CreatePasswordPage = () => {\n const [visibleCard, setVisibleCard] = useState<1 | 2>(1);\n const [errorMsg, setErrorMsg] = useState('');\n const [passwrd, setPasswrd] = useState('');\n const [hints, setHints] = useState(hintsList);\n const [emailAddress, setEmailAddress] = useState('');\n const [workspaceUrl, setWorkspaceUrl] = useState('');\n const [owId, setOwId] = useState();\n const history = useHistory();\n const location = useLocation();\n\n const { sideURL, data: initData } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n useEffect(() => {\n if (!location.state?.inviteEmail) {\n history.push('/404');\n } else if (location.state.invitedToWorkspace) {\n setEmailAddress(location.state.inviteEmail);\n setWorkspaceUrl(location.state.invitedToWorkspace);\n }\n }, [history, location]);\n\n useEffect(() => {\n if (passwrd.length) {\n const hintsToSave = hintsList.map((h) => ({ ...h, match: h.regex.test(passwrd) }));\n setHints(hintsToSave);\n } else {\n setHints(hintsList);\n }\n }, [passwrd]);\n\n useEffect(() => {\n if (visibleCard === 2 && owId != null) {\n setTimeout(() => {\n if (ORIGIN_URL.includes(workspaceUrl)) {\n // we're in the correct workspace URL already\n window.location.href = '/marketplace/u/0';\n } else {\n window.location.href = `https://${workspaceUrl}/#/login?owner=${btoa(\n ORIGIN_URL,\n )}&ow=${owId}`;\n }\n }, 4000);\n }\n }, [emailAddress, owId, visibleCard, workspaceUrl]);\n\n const handleCreatePassword = async () => {\n if (location.state.inviteEmail) {\n const res = await API.Password.createPassword(\n {\n email: location.state.inviteEmail,\n password: passwrd,\n inviteHash: location.state.hash,\n },\n workspaceUrl,\n );\n\n if (res.success && res.data) {\n if (res?.data?.redirectionUrl) {\n window.location.href = res.data.redirectionUrl;\n return;\n }\n const authorizedUser: Partial = userAuth(res.data);\n localStorage.setItem('authorizedUser', JSON.stringify(authorizedUser));\n setOwId(res.data.owId);\n if (ORIGIN_URL.includes(workspaceUrl)) {\n localStorage.setItem('owIds', JSON.stringify([res.data.owId]));\n AuthService.authorize(authorizedUser, true);\n }\n\n setVisibleCard(2);\n } else {\n setErrorMsg(get(res, 'errorObjects[0].error', ''));\n }\n }\n };\n\n return (\n \n \n
Create new password
\n
\n \n
\n \n\n {\n e.preventDefault();\n handleCreatePassword();\n }}\n >\n
\n \n \n
\n {initData?.passwordNote ? `Note: ${initData.passwordNote}` : ''}\n
\n\n
\n {initData?.passwordNote ? 'Hints for a stronger password' : ''}\n
\n
    \n {hints.map((h) => (\n \n {h.label}\n \n ))}\n
\n
{errorMsg}
\n
\n\n !hint.match)}\n type=\"submit\"\n >\n Next\n \n \n \n \n
Password created successfully
\n
\n Welcome to {location.state?.organizationName || 'IHP'}!\n
\n \n \n }\n />\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Link, useHistory, useLocation } from 'react-router-dom';\nimport { TwoPartScreen, TwoPartScreenStyles, useAdblockCheck } from 'iqm-framework';\nimport { SVG_HOST_URL, TextField, Button, Pill } from 'factor';\n\nimport { API } from 'api';\nimport { useInitData } from 'utils/useInitData';\n\ninterface LocationData {\n userEmail: string;\n}\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/onboarding1Asset2.svg`;\n\nexport const EnterWorkspacePage = () => {\n const [errorMsg, setErrorMsg] = useState('');\n const [workspaceUrl, setWorkspaceUrl] = useState('');\n const [emailAddress, setEmailAddress] = useState('');\n const [adblockEnabled] = useAdblockCheck();\n const history = useHistory();\n const location = useLocation();\n\n const { sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n useEffect(() => {\n if (!location.state?.userEmail) {\n history.push('/login');\n } else {\n setEmailAddress(location.state.userEmail);\n }\n }, [history, location]);\n\n // reset error if user changes workspace domain field\n useEffect(() => {\n setErrorMsg('');\n }, [workspaceUrl]);\n\n const verifyWorkspace = async () => {\n if (!location.state?.userEmail) {\n return;\n }\n\n const workspaceDomain = workspaceUrl.replace(/^https?:\\/\\//, '');\n\n const res = await API.Customer.verifyWorkspaceDomain({\n workspaceDomain,\n email: emailAddress,\n });\n\n if (res.success) {\n window.location.href = `https://${workspaceDomain}/#/login?email=${btoa(emailAddress)}`;\n } else if (res.errorObjects?.length) {\n setErrorMsg(res.errorObjects[0].error);\n } else {\n setErrorMsg(\"You don't seem to have access to this workspace\");\n }\n };\n\n return (\n \n
\n
Enter workspace URL
\n
\n Let us redirect you to your destination!\n
\n {\n history.push('/login');\n }}\n >\n \n
\n {\n e.preventDefault();\n verifyWorkspace();\n }}\n >\n
\n \n
\n
{errorMsg}
\n\n \n Next\n \n \n \n Forgot your URL?\n \n \n \n }\n />\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport {\n TwoPartScreen,\n TwoPartScreenStyles,\n useAdblockCheck,\n validationUtils,\n} from 'iqm-framework';\nimport { SVG_HOST_URL, TextField, Button } from 'factor';\n\nimport { API } from 'api';\nimport { useInitData } from 'utils/useInitData';\nimport styles from './index.module.scss';\n\ninterface LocationData {\n userEmail: string;\n}\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/brand/onboarding1Asset2.svg`;\nconst CHECK_CIRCLE_IMAGE_URL = `${SVG_HOST_URL}/check_circle.svg`;\n\nexport const FindMyWorkspacePage = () => {\n const [visibleCard, setVisibleCard] = useState<1 | 2>(1);\n const [errorMsg, setErrorMsg] = useState('');\n const [emailAddress, setEmailAddress] = useState('');\n const [emailValidity, setEmailValidity] = useState(false);\n const [adblockEnabled] = useAdblockCheck();\n const history = useHistory();\n const location = useLocation();\n\n const { sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n useEffect(() => {\n if (location.state?.userEmail) {\n setEmailAddress(location.state.userEmail);\n }\n }, [history, location]);\n\n // reset error if email changes\n useEffect(() => {\n setErrorMsg('');\n }, [emailAddress]);\n\n const findMyWorkspace = async () => {\n const res = await API.Customer.findMyWorkspace(emailAddress);\n\n if (res.success) {\n setVisibleCard(2);\n } else {\n setErrorMsg('Email ID does not exist. Please enter a valid email ID.');\n }\n };\n\n return (\n \n \n
Find your workspace
\n
\n We will help you find existing workspaces associated with your email address\n
\n {\n e.preventDefault();\n findMyWorkspace();\n }}\n >\n
\n {\n return 'Please enter a valid email address';\n },\n },\n ]}\n />\n
\n
{errorMsg}
\n\n \n Next\n \n \n \n \n \"CHECK_CIRCLE\"\n
URLs Email sent
\n
\n We have sent you URLs on the associated email.\n
\n Check your email for logging in your workspaces.\n
\n \n \n }\n />\n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { TextField, Button, SVG_HOST_URL, Pill, Select, Icon } from 'factor';\nimport { validationUtils, TwoPartScreen, TwoPartScreenStyles } from 'iqm-framework';\n\nimport { API } from 'api';\nimport { useInitData } from 'utils/useInitData';\n\nimport styles from './index.module.scss';\n\ninterface option {\n label: string;\n value: number;\n}\n\ninterface FormValues {\n [key: string]: string | number | option;\n}\n\ninterface IAPIFields {\n [key: string]: string;\n}\n\ninterface CustomerSignupRequest {\n [key: string]: string | number;\n email: string;\n userName: string;\n organizationName: string;\n}\n\ninterface DropDownOptions {\n [key: string]: option[];\n}\n\ninterface FormField {\n field: string;\n id: number;\n label: string;\n isUserRequired: boolean;\n type: string;\n inputType: string;\n placeholder: string;\n}\n\ninterface FieldValidity {\n [key: string]: boolean;\n}\n\nconst IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/office-people.svg`;\nconst NON_IHB_IMAGE_URL = `${SVG_HOST_URL}/misc/fingerprint.svg`;\nconst IHB_INVITE_CARD_URL = `${SVG_HOST_URL}/misc/email-invite-wait-primary.svg`;\nconst NON_IHB_INVITE_CARD_URL = `${SVG_HOST_URL}/misc/email-invite-wait.svg`;\nconst EMAIL_INVALID_MSG =\n 'This email address owns an organization account on the platform. Please use a different email address.';\n\nconst EMAIL_CARD = 'enterEmail';\nconst DETAILS_CARD = 'enterDetails';\nconst INVITE_CARD = 'emailInvite';\n\nexport type CardState = 'enterEmail' | 'enterDetails' | 'emailInvite';\n\nexport const SignupPage = () => {\n const [visibleCard, setVisibleCard] = useState(EMAIL_CARD);\n const [isCustomerVerificationEnabled, setCustomerVerificationStatus] = useState();\n const [emailValidity, setEmailValidity] = useState();\n const [errorMsg, setErrorMsg] = useState('');\n const [signUpErrorMsg, setSignUpErrorMsg] = useState('');\n const [dropDownOptions, setDropDownOptions] = useState({});\n const [formValues, setFormValues] = useState({});\n const [formFields, setFormFields] = useState([]);\n const [fieldValidity, setFieldValidity] = useState({});\n const [intercomId, setIntercomId] = useState('');\n\n const setIntercom = async () => {\n try {\n const data = await API.Customer.getIntercomId();\n setIntercomId(data.data?.chatbotAppId);\n } catch (e) {\n // eslint-disable-next-line\n console.log('intercom:', e);\n }\n };\n\n useEffect(() => {\n setIntercom();\n }, []);\n\n const { data: initData, sideURL } = useInitData({\n ihb: IHB_IMAGE_URL,\n nonIHB: NON_IHB_IMAGE_URL,\n });\n\n const ihpOwner = initData?.ihpOwner;\n\n const getInviteSentImage = () => (ihpOwner ? IHB_INVITE_CARD_URL : NON_IHB_INVITE_CARD_URL);\n\n const getDropDownOptions = async (fields: { type: string; field: string }[]) => {\n const API_KEYS: IAPIFields = {\n mediaBudget: 'media-budget',\n industry: 'industries',\n companySize: 'company-size',\n };\n const selectFields: string[] = [];\n fields.forEach((element) => {\n if (element.type === 'select') {\n selectFields.push(API_KEYS[element.field]);\n }\n });\n if (selectFields.length) {\n const responses = await Promise.all(\n selectFields.map((field) => API.Customer.getDropDownOptions(field)),\n );\n const options: DropDownOptions = {};\n responses.forEach((res, idx) => {\n if (res.success && res.data) {\n const dropDown: keyof DropDownOptions | undefined = Object.keys(API_KEYS).find(\n (key) => API_KEYS[key] === selectFields[idx],\n );\n if (dropDown) {\n options[dropDown] = res.data.map((optionValue: { label: string; id: number }) => {\n return { label: optionValue.label, value: optionValue.id };\n });\n }\n }\n });\n setDropDownOptions(options);\n }\n };\n\n const handleUserEmailVerification = useCallback(\n async (emailParam = '') => {\n const res = await API.Customer.verifyUserEmail(formValues?.email || emailParam);\n if (res.success && res.data) {\n if (res.data.isOrganizationOwnerUser) {\n setErrorMsg(EMAIL_INVALID_MSG);\n } else {\n if (res.data?.userName) {\n setValue('userName', res.data.userName);\n }\n const signUpFormRes = await API.Customer.getCustomerSignupForm();\n if (signUpFormRes.success && signUpFormRes?.data) {\n const numberInputs = ['budgetSpent'];\n const selectFormFields = ['industry', 'companySize', 'mediaBudget'];\n const placeholderMessages: IAPIFields = {\n organizationName: 'Enter your organization name',\n userName: 'Enter your full name',\n mediaBudget: 'Select budget',\n budgetSpent: 'Enter budget',\n industry: 'Select industry',\n companySize: 'Select company size',\n };\n setCustomerVerificationStatus(signUpFormRes.data.isCustomerVerificationEnable);\n const fields = signUpFormRes.data.customerFormDetails.map((value) => {\n return {\n ...value,\n type: selectFormFields.includes(value.field) ? 'select' : 'text',\n inputType: numberInputs.includes(value.field) ? 'number' : 'string',\n placeholder: placeholderMessages[value.field],\n };\n });\n setFormFields(fields);\n if (fields.some((field) => field.type === 'select')) {\n await getDropDownOptions(fields);\n setVisibleCard(DETAILS_CARD);\n } else {\n setVisibleCard(DETAILS_CARD);\n }\n }\n }\n }\n },\n [formValues?.email],\n );\n\n const handleSignup = useCallback(async () => {\n const requestObj: CustomerSignupRequest = {\n email: '',\n userName: '',\n organizationName: '',\n };\n if (formValues) {\n const selectFormFields = ['industry', 'companySize', 'mediaBudget'];\n Object.keys(formValues).forEach((key: string) => {\n if (selectFormFields.includes(key)) {\n const selectedValue = formValues[key] as option;\n requestObj[key] = selectedValue.value;\n } else {\n const selectedValue = formValues[key] as string | number;\n requestObj[key] = selectedValue;\n }\n });\n const res = await API.Customer.signupCustomer(requestObj);\n if (res.success) {\n setVisibleCard(INVITE_CARD);\n } else if (res?.errorObjects) {\n setSignUpErrorMsg(res.errorObjects[0].error);\n }\n }\n }, [formValues]);\n\n const setValue = (key: string, value: string | option) => {\n if (key === 'budgetSpent') {\n if ((value.toString().length <= 10 && /^\\d+$/.test(value as string)) || !value) {\n return setFormValues((prevState) => ({\n ...prevState,\n [key]: Number(value),\n }));\n }\n return null;\n }\n return setFormValues((prevState) => ({\n ...prevState,\n [key]: value,\n }));\n };\n\n const getValue = (field: string) => {\n if (formValues) {\n return formValues[field] ? formValues[field].toString() : '';\n }\n return '';\n };\n\n const isFormDataValid = () => {\n if (formValues && !Object.values(fieldValidity).includes(true)) {\n return formFields.some((element: { isUserRequired: boolean; field: string | number }) => {\n return element.isUserRequired && !formValues[element.field];\n });\n }\n return true;\n };\n\n const setValidity = (field: string, value: boolean) =>\n setFieldValidity((prevState) => {\n return {\n ...prevState,\n [field]: value,\n };\n });\n\n const checkLengthValidity = (value: string, element: { name: string }) => {\n const maxCharLength: { [key: string]: number } = {\n userName: 150,\n organizationName: 100,\n };\n if (value.trim().length <= maxCharLength[element.name]) {\n setValidity(element.name, false);\n return true;\n }\n setValidity(element.name, true);\n return false;\n };\n\n const changeEmail = (value: string) => {\n setErrorMsg('');\n setSignUpErrorMsg('');\n setValue('email', value);\n };\n\n const renderLoginLink = () => (\n
\n Already registered?\n \n Login here\n \n
\n );\n\n const renderEmailField = () => (\n \n
Let's get you started!
\n
Enter your email and press 'Enter'
\n {\n e.preventDefault();\n handleUserEmailVerification();\n if (formValues.email && !!intercomId) {\n try {\n // eslint-disable-next-line\n window?.Intercom?.('update', {\n app_id: intercomId,\n email: formValues?.email,\n });\n } catch (error) {\n // eslint-disable-next-line\n console.log('error initalizing intercom', error);\n }\n }\n }}\n >\n changeEmail(value)}\n label=\"Email ID\"\n placeholder=\"Enter your email ID\"\n className=\"mt-5\"\n onValidate={setEmailValidity}\n inputAttributes={{\n autoComplete: 'on',\n autoFocus: true,\n }}\n validationRules={[\n {\n func: validationUtils.validateEmail,\n error: () => {\n return 'Please enter a valid email address';\n },\n },\n ]}\n />\n {errorMsg &&
{errorMsg}
}\n \n Next\n \n \n {renderLoginLink()}\n \n );\n\n const renderSignupForm = () => (\n <>\n {\n e.preventDefault();\n if (formValues && !!intercomId) {\n try {\n // eslint-disable-next-line\n window?.Intercom?.('update', {\n app_id: intercomId,\n email: formValues?.email,\n name: formValues?.userName,\n });\n } catch (error) {\n // eslint-disable-next-line\n console.log('error initalizing intercom', error);\n }\n }\n handleSignup();\n }}\n >\n {visibleCard === DETAILS_CARD && (\n \n
Help us know you better
\n
Enter the below details and press 'Enter'
\n {\n setVisibleCard(EMAIL_CARD);\n }}\n >\n \n \n {formValues?.email}\n \n \n }\n />\n \n {formFields.map(\n (\n element: {\n type: string;\n field: string;\n label: string;\n inputType: string;\n isUserRequired: boolean;\n placeholder: string;\n },\n idx: number,\n ) =>\n element.type === 'text' ? (\n setValue(element.field, value)}\n label={`${element.label}${element.isUserRequired ? ' *' : ''}`}\n placeholder={element.placeholder}\n className={`mt-5 ${element.field === 'budgetSpent' && styles.textField} ${\n element.field === 'budgetSpent' && styles.Dollar\n }`}\n inputAttributes={{\n autoFocus: idx === 0,\n }}\n validationRules={\n element.inputType === 'string'\n ? [\n {\n func: checkLengthValidity,\n error: () => 'Input value exceeds the maximum allowed length',\n },\n ]\n : []\n }\n />\n ) : (\n setValue(element.field, e)}\n />\n ),\n )}\n \n Next\n \n {signUpErrorMsg &&
{signUpErrorMsg}
}\n {visibleCard === DETAILS_CARD && renderLoginLink()}\n \n )}\n \n \n );\n\n const renderInviteMsg = () => {\n return (\n \n \n
\n {isCustomerVerificationEnabled ? 'Invite requested Successfully!' : 'Check your email'}\n
\n
\n {isCustomerVerificationEnabled\n ? 'Your request is under review, once your request is processed, the result will be sent to you by email.'\n : 'We have sent you a Sign Up link on the associated email.'}\n
\n
\n {isCustomerVerificationEnabled\n ? 'Please wait for email for further process.'\n : 'Check your email for continuing to Sign Up to your workspaces.'}\n
\n \n );\n };\n\n return (\n \n {renderEmailField()}\n {renderSignupForm()}\n {renderInviteMsg()}\n \n }\n />\n );\n};\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { Button } from 'factor';\nimport { SimpleHeader } from 'iqm-framework';\n\nimport { useInitData } from 'utils/useInitData';\n\nimport styles from './index.module.scss';\n\nexport const AccessPage = () => {\n const { data: initData } = useInitData({});\n const ihpOwner = initData?.ihpOwner;\n return (\n <>\n \n {initData && (\n
\n \n \n Signup\n \n \n \n \n Login\n \n \n
\n )}\n \n );\n};\n","import { NoMatchPage } from 'pages/NoMatchPage';\n\nexport type Route = {\n path: string;\n component: React.ComponentType;\n exact?: boolean;\n private?: boolean;\n};\n\nexport const fallbackRoute: Route = {\n path: '*',\n exact: true,\n component: NoMatchPage,\n};\n\nexport const routes: Route[] = [fallbackRoute];\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\n\nimport { BASE_URL } from 'config';\n\nexport const NoMatchPage = () => ;\n","export const isProd = process.env.REACT_APP_ENVIRONMENT === 'production';\nexport const HEADER_TOKEN_NAME = 'x-iaa-api-token';\nexport const BASE_URL = '/';\n","import React from 'react';\n\nimport styles from './MainContent.module.scss';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n};\n\nconst MainContentComponent = (props: Props) => {\n const { className, children } = props;\n\n return
{children}
;\n};\n\nMainContentComponent.defaultProps = {\n className: '',\n};\n\nexport const MainContent = MainContentComponent;\n","export const applicationConstants = {\n TOGGLE__SIDEBAR_MENU: 'TOGGLE__SIDEBAR_MENU',\n};\n","import { createAction } from 'utils/actions';\nimport { applicationConstants } from './constants';\n\nexport const applicationActions = {\n toggleSidebarMenu() {\n return createAction(applicationConstants.TOGGLE__SIDEBAR_MENU);\n },\n};\n\nexport interface ToggleSidebarMenu {\n toggleSidebarMenu: () => void;\n}\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { Layout as FactorLayout } from 'factor';\n\nimport { applicationActions } from '../../store/app/actions';\nimport { AppState } from '../../store';\n\ninterface Props {\n children: React.ReactNode;\n isSidebarOpened: boolean;\n toggleSidebar: () => void;\n sidebar: React.ReactNode;\n}\n\nclass LayoutComponent extends PureComponent {\n render() {\n const { children, isSidebarOpened, toggleSidebar, sidebar } = this.props;\n\n return (\n \n {children}\n \n );\n }\n}\n\nconst mapState = (state: AppState) => ({\n isSidebarOpened: state.app.sidebarOpened,\n});\n\nconst mapActions = {\n toggleSidebar: applicationActions.toggleSidebarMenu,\n};\n\nexport const Layout = connect(mapState, mapActions)(LayoutComponent);\n","import React from 'react';\n\nimport { MainContent } from '../MainContent';\nimport { Layout } from '.';\n\nimport styles from './index.module.scss';\n\ninterface Props {\n children: React.ReactNode;\n}\n\nexport const Scene = (props: Props) => {\n const { children } = props;\n\n return (\n {children}}>\n \n
All Conversions (45)
\n
\n
\n );\n};\n","import React from 'react';\nimport { Switch } from 'react-router-dom';\nimport { DataDogRumRoute } from 'iqm-framework';\n\nimport { routes, Route as RouteType } from '../../routes';\nimport { Scene } from '../Layout/Scene';\n\nexport const PrivateRoutes = () => {\n const routePaths = routes.map((route: RouteType) => route.path);\n return (\n \n \n \n \n {routes.map((route) => (\n \n ))}\n \n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport { IQMRouter, DataDogRumRoute, bootIntercomFn } from 'iqm-framework';\n\nimport { authActions, Authorized, Logout } from 'store/auth/actions';\nimport { User } from 'models/User';\nimport { createIqmInstance, API } from 'api';\nimport { Navbar } from 'components/Navbar';\nimport { ResetPasswordEmailPage } from 'pages/ResetPasswordEmailPage';\nimport { ResetPasswordPage } from 'pages/ResetPasswordPage';\nimport { InviteCustomerPage } from 'pages/InviteCustomerPage';\nimport { InviteExpiredPage } from 'pages/InviteExpiredPage';\nimport { LoginForm } from 'pages/LoginPage';\nimport { DefaultPage } from 'pages/DefaultPage';\nimport { CreateWorkspacePage } from 'pages/CreateWorkspacePage';\nimport { ErrorPage } from 'pages/ErrorPage';\nimport { CreatePasswordPage } from 'pages/CreatePasswordPage';\nimport { EnterWorkspacePage } from 'pages/EnterWorkspacePage';\nimport { FindMyWorkspacePage } from 'pages/FindMyWorkspacePage';\nimport { SignupPage } from 'pages/SignupPage';\nimport { AccessPage } from 'pages/AccessPage';\nimport { PrivateRoutes } from '../PrivateRoutes';\n\nimport './App.scss';\n\n/* eslint-disable */\ndeclare global {\n interface Window {\n Intercom: any;\n intercomSettings: any;\n }\n}\n/* eslint-enable */\n\ntype Props = Authorized & Logout;\n\nconst AppComponent = (props: Props) => {\n const { authorized, logout } = props;\n const [intercomId, setIntercomId] = useState('');\n\n const onSuccessLogin = (data: User) => {\n authorized(data);\n createIqmInstance({\n apiToken: data.apiToken,\n domainURL: data.domainURL,\n });\n };\n\n const setIntercom = async () => {\n try {\n const data = await API.Customer.getIntercomId();\n setIntercomId(data.data?.chatbotAppId);\n } catch (e) {\n // eslint-disable-next-line\n console.log('intercom:', e);\n }\n };\n\n useEffect(() => {\n setIntercom();\n window.onstorage = null;\n }, []);\n\n useEffect(() => {\n if (intercomId) {\n bootIntercomFn(intercomId);\n }\n }, [intercomId]);\n\n useEffect(() => {\n if (intercomId) {\n try {\n // eslint-disable-next-line\n window?.Intercom?.('boot', {\n app_id: intercomId,\n });\n } catch (e) {\n // eslint-disable-next-line\n console.log('error initalizing intercom', e);\n }\n }\n return () => {\n // eslint-disable-next-line\n window.Intercom?.('shutdown');\n };\n }, [intercomId]);\n\n const onLogout = () => logout();\n\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\nconst mapAction = {\n authorized: authActions.authorized,\n logout: authActions.logout,\n};\n\nexport const App = connect(null, mapAction)(AppComponent);\n","import { reducerFromMap } from 'utils/actions';\nimport { Action } from 'models/Action';\nimport { User } from 'models/User';\nimport { authConstants } from './constants';\n\nexport interface AuthState {\n user: User | null;\n authorized: boolean;\n}\n\nexport const defaultAuthState: AuthState = {\n user: null,\n authorized: false,\n};\n\nfunction loginSuccess(state: AuthState, action: Action): AuthState {\n return {\n ...state,\n user: action.payload,\n authorized: true,\n };\n}\n\nfunction logout(): AuthState {\n return {\n ...defaultAuthState,\n };\n}\n\nconst reducer = reducerFromMap(defaultAuthState, {\n [authConstants.LOGIN_SUCCESS]: loginSuccess,\n [authConstants.LOGOUT]: logout,\n});\n\nexport const auth = (state: AuthState = defaultAuthState, action: Action) =>\n reducer(state, action);\n","import { reducerFromMap } from 'utils/actions';\nimport { Action } from 'models/Action';\nimport { applicationConstants } from './constants';\n\nexport interface ApplicationState {\n sidebarOpened: boolean;\n isOpenExchangeMode: boolean;\n}\n\nconst defaultApplicationState: ApplicationState = {\n sidebarOpened: true,\n isOpenExchangeMode: true,\n};\n\nfunction toggleSidebar(state: ApplicationState): ApplicationState {\n return {\n ...state,\n sidebarOpened: !state.sidebarOpened,\n };\n}\n\nconst reducer = reducerFromMap(defaultApplicationState, {\n [applicationConstants.TOGGLE__SIDEBAR_MENU]: toggleSidebar,\n});\n\nexport const app = (state: ApplicationState = defaultApplicationState, action: Action) =>\n reducer(state, action);\n","import { applyMiddleware, combineReducers, createStore, compose } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport { auth, AuthState } from './auth/reducer';\nimport { app, ApplicationState } from './app/reducer';\n\nexport interface AppState {\n auth: AuthState;\n app: ApplicationState;\n}\n\nconst reducer = combineReducers({\n auth,\n app,\n});\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const store = createStore(\n reducer,\n composeEnhancers(applyMiddleware(thunk)),\n);\n","/* eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","export const logWarningXSS = () => {\n const styleHeading = 'font-size: 38px; color: red; text-shadow: 1px 1px 1px black;';\n const styleText =\n 'font-size: 30px; color: red; text-shadow: 1px 1px 1px black; background: yellow;';\n /* eslint-disable-next-line */\n console.log(\n `%c⚠️ WARNING ⚠️\\n` +\n `%cPlease do not copy and paste anything here; ` +\n `you might become a victim of a hacker attack. ` +\n `Learn more about Self-XSS: https://en.wikipedia.org/wiki/Self-XSS`,\n styleHeading,\n styleText,\n );\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { IntlProvider } from 'react-intl';\nimport { initDataDog, ORIGIN_URL } from 'iqm-framework';\n\nimport { logWarningXSS } from 'utils/log';\nimport { createAuthInstance } from 'api';\n\nimport messagesRu from 'translations/ru.json';\nimport messagesEn from 'translations/en.json';\n\nimport { App } from './components/App';\nimport { store } from './store';\nimport * as serviceWorker from './serviceWorker';\nimport { isProd } from './config';\n\nif (process.env.NODE_ENV === 'production') {\n logWarningXSS();\n}\n\nif (isProd) {\n initDataDog('auth-pages', 'prod', {\n allowedTracingOrigins: [ORIGIN_URL],\n trackViewsManually: true,\n });\n} else {\n initDataDog('auth-pages', 'stage', {\n allowedTracingOrigins: [ORIGIN_URL],\n trackViewsManually: true,\n });\n}\n\ncreateAuthInstance();\n\nconst language: string = navigator.language.split(/[-_]/)[0];\n\ninterface IMessages {\n [key: string]: {\n [key: string]: string;\n };\n}\n\nconst messages: IMessages = {\n ru: messagesRu,\n en: messagesEn,\n};\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"passwordField\":\"CreatePasswordPage_passwordField__1ew5c\",\"passwordNote\":\"CreatePasswordPage_passwordNote__cW3-h\",\"passwordHints\":\"CreatePasswordPage_passwordHints__3GoE-\",\"hints\":\"CreatePasswordPage_hints__2mUZI\",\"hint\":\"CreatePasswordPage_hint__3Jc-z\",\"green\":\"CreatePasswordPage_green__3cCEv\",\"red\":\"CreatePasswordPage_red__SIP63\",\"hover-ripples\":\"CreatePasswordPage_hover-ripples__37O8s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonWrapper\":\"AccessPage_buttonWrapper__2yn0B\",\"ihpSignUpBtn\":\"AccessPage_ihpSignUpBtn__1vabo\",\"ihpLoginBtn\":\"AccessPage_ihpLoginBtn__1Bpkl\",\"nonIhpSignUpBtn\":\"AccessPage_nonIhpSignUpBtn__3T1vt\",\"nonIhpLoginBtn\":\"AccessPage_nonIhpLoginBtn__13fR4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"passwordField\":\"ResetPasswordPage_passwordField__2pWDP\",\"hints\":\"ResetPasswordPage_hints__73Wqs\",\"hint\":\"ResetPasswordPage_hint__3322J\",\"green\":\"ResetPasswordPage_green__1S5Jq\",\"red\":\"ResetPasswordPage_red__27MxI\",\"hover-ripples\":\"ResetPasswordPage_hover-ripples__1WC1h\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"text\":\"LoginPage_text__2KAO8\",\"ihpLink\":\"LoginPage_ihpLink__1w9aL\",\"nonIhpLink\":\"LoginPage_nonIhpLink__35jWi\",\"passwordNote\":\"LoginPage_passwordNote__3wh5Z\",\"hover-ripples\":\"LoginPage_hover-ripples__hdhzK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"passwordField\":\"PasswordField_passwordField__25-98\",\"togglePasswordVisibilityIcon\":\"PasswordField_togglePasswordVisibilityIcon__B8THL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"workspaceURLField\":\"CreateWorkspacePage_workspaceURLField__2JYRt\",\"suffix\":\"CreateWorkspacePage_suffix__3JDNA\",\"hover-ripples\":\"CreateWorkspacePage_hover-ripples__3h59z\"};"],"sourceRoot":""}