{"version":3,"sources":["main.style.ts","theme.ts","utils/checkVersion.ts","utils/initTranslation.ts","locales/index.ts","locales/en/index.ts","App.style.ts","components/LoginHeader/LoginHeader.styled.tsx","store/user/user.actions.types.ts","store/user/user.actions.ts","store/user/user.selectors.ts","components/SessionExpiredModal/SessionExpiredModal.styled.tsx","components/SessionExpiredModal/SessionExpiredModal.tsx","components/LoginHeader/LoginHeader.tsx","components/CustomLink/CustomLink.tsx","components/Form/Div/FormDiv.tsx","components/Form/Input/CustomInput.style.ts","components/Form/Input/CustomField.tsx","components/Form/Title/FormTitle.tsx","store/spinner/spinner.selectors.ts","utils/customRegex.ts","utils/objectEquality.ts","utils/customValidators.ts","containers/Login/LoginContainer.style.ts","enums/resetPasswordRouteParameter.ts","containers/Login/LoginContainer.tsx","containers/ResetPassword/ResetPasswordContainer.style.ts","containers/ResetPassword/ResetPasswordContainer.tsx","components/ChangePasswordForm/ChangePasswordForm.tsx","layouts/login/routes.ts","containers/ChangePasswordContainer/ChangePasswordContainer.tsx","layouts/login/index.tsx","utils/restApplicationClient.ts","utils/axiosInstance.ts","enums/userRouteParameter.ts","components/LoginHeader/Buttons/Logout.tsx","utils/envHandler.ts","components/LoginHeader/Buttons/Manual.tsx","components/LoginHeader/Buttons/ReleaseNotes.tsx","components/Form/ButtonContainer/ButtonContainer.tsx","components/Form/CilentData/EditData.tsx","components/Form/Input/CustomCheckbox.tsx","components/Form/Input/CustomFieldRow.tsx","components/Form/Input/CustomSelect.tsx","store/administrator/administrator.actions.types.ts","store/administrator/administrator.actions.ts","store/administrator/administrator.selectors.ts","store/client/client.actions.types.ts","store/client/client.actions.ts","store/client/client.selectors.ts","containers/AddAdministrator/AddAdministratorContainer.tsx","components/CustomTooltip/CustomTooltip.tsx","components/CustomTooltip/CustomTooltip.styled.tsx","components/Form/Input/CustomAutocomplete.tsx","containers/LanguageMapping/LanguageMappingContainer.styled.tsx","containers/LanguageMapping/LanguageMappingContainer.tsx","containers/AddClientContainer/addClientContainer.style.ts","containers/AddClientContainer/AddClientContainer.tsx","components/Form/Accordion/Accordion.style.ts","enums/roles.ts","components/Form/Accordion/AccordionIcon.tsx","components/Form/Accordion/XtmConnectAccordion/XtmConnectAccordion.tsx","components/TableToolbar/TableToolbar.style.ts","components/Form/ConnectedFields/ConnectedFields.tsx","utils/checkRoles.ts","enums/filter.ts","containers/AddUser/AddUserContainer.tsx","store/table/table.actions.types.ts","store/table/table.actions.ts","store/table/table.selectors.ts","utils/parseDate.ts","components/Table/CustomTable.style.ts","components/Table/PaginationTransLabel.tsx","components/Table/Pagination.tsx","components/Table/TableEmpty/TableEmpty.style.ts","components/Table/TableEmpty/TableEmpty.tsx","components/Table/CustomTable.tsx","components/IconButtonLabel/IconButtonLabel.style.ts","components/IconButtonLabel/IconButtonLabel.tsx","components/TableToolbar/TableToolbar.tsx","containers/Administrators/AdministratorsContainer.tsx","containers/Clients/ClientsContainer.tsx","store/user/users.selectors.ts","containers/Users/UsersContainer.tsx","layouts/main/routes.ts","components/Navbar/Navbar.style.ts","components/Navbar/Navbar.tsx","layouts/main/index.tsx","utils/browserHistory.ts","store/notify/notify.actions.types.ts","store/notify/notify.actions.ts","components/NotifyAlert/NotifyAlert.tsx","App.tsx","store/administrator/administrator.epics.ts","store/administrator/administrator.reducer.ts","store/client/client.epics.ts","store/client/client.reducer.ts","store/notify/notify.reducer.ts","store/spinner/spinner.actions.types.ts","store/spinner/spinner.actions.ts","store/spinner/spinner.epics.ts","store/spinner/spinner.reducer.ts","store/table/table.epics.ts","store/table/table.reducer.ts","store/user/user.epics.ts","store/user/user.reducer.ts","store/index.ts","index.tsx","utils/handlers/envHandler.ts"],"names":["mainStyles","css","theme","createMuiTheme","overrides","MuiSvgIcon","root","padding","MuiTablePagination","toolbar","background","MuiButton","textTransform","fontWeight","MuiTabs","backgroundColor","indicator","height","MuiTableCell","head","MuiTableRow","MuiTableContainer","width","MuiTab","fontSize","color","MuiAppBar","display","flexDirection","alignItems","boxShadow","justifyContent","MuiTextField","MuiSelect","palette","primary","main","contrastText","light","secondary","clearCaches","a","window","location","reload","caches","keys","forEach","key","delete","console","error","checkVersion","currentVersion","process","fetch","json","metaVersion","version","resources","en","translation","common","client","table","administrator","validator","auth","users","i18n","i18next","initTranslation","use","LanguageDetector","initReactI18next","init","lng","fallbackLng","interpolation","escapeValue","appStyle","loginHeaderStyle","title","img","logoContainer","HeaderButton","styled","Button","HeaderLogoutButton","UserActionTypes","verifyPassToken","createAction","verifyPassTokenSuccess","verifyPassTokenError","changePassword","changePasswordSuccess","changePasswordError","changeUserPassword","changeUserPasswordSuccess","changeUserPasswordError","loginUser","loginUserSuccess","loginUserError","logoutUser","logoutUserSuccess","resetPassword","resetPasswordSuccess","resetPasswordError","resetUserPassword","resetUserPasswordSuccess","resetUserPasswordError","verifyToken","verifyTokenSuccess","verifyTokenError","refreshTokenSuccess","getAllUsersSuccess","createUser","createUserSuccess","createUserError","usersPageable","usersPageableSuccess","usersPageableError","editUser","editUserSuccess","getUserById","getUserByIdSuccess","getUserByIdError","clearUser","clearUserErrors","xtmConnect","xtmConnectError","xtmConnectSuccess","xtmConnectUser","xtmConnectUserError","xtmConnectUserSuccess","xtmGetCustomers","xtmGetCustomersError","xtmGetCustomersSuccess","xtmGetTemplates","xtmGetTemplatesError","xtmGetTemplatesSuccess","xtmGetCustomersById","xtmGetCustomersByIdError","xtmGetCustomersByIdSuccess","xtmGetTemplatesById","xtmGetTemplatesByIdError","xtmGetTemplatesByIdSuccess","xtmGetConnectData","xtmGetConnectDataError","xtmGetConnectDataSuccess","xtmConnectToCMS","xtmConnectToCMSError","xtmConnectToCMSSuccess","getDefaultUserLanguages","getDefaultUserLanguagesSuccess","getDefaultUserLanguagesError","clearDefaultUserLanguages","clearXtmTemplates","sessionExpired","showSessionExpired","hideSessionExpired","getAuthSelector","createSelector","state","user","getVerifyFinishSelector","verifyFinished","finished","getUserDataSelector","data","roles","getUserErrorsSelector","errors","getUserSelector","getXtmAuthorizationIdSelector","xtmAuthorizationId","authorizationId","getXtmCustomersSelector","customers","getXtmTemplatesSelector","templates","Array","isArray","length","undefined","getXtmConnectDataSelector","connectData","getDefaultUserLanguagesSelector","xtmCMSconnected","cmsConnected","defaultUserLanguages","languages","getSessionExpiredSeletor","ModalDropdown","div","ModalWindow","ModalLogoBar","ModalTextDiv","SessionExpiredModal","handleClick","props","setSessionExpired","logout","this","t","visibility","src","Typography","variant","onClick","Component","connect","dispatch","payload","withTranslation","LoginHeader","AppBar","position","children","PureComponent","CustomLink","StyledDiv","wide","testId","text","linkProps","data-testid","FormDiv","center","customInputStyles","label","outlineError","textError","textErrorNoMargin","checkbox","radio","ErrorDiv","span","FieldDiv","CheckboxDiv","CustomInputError","SelectDiv","TextField","StyledTextField","StyledSelect","Select","InputDiv","column","CustomAutocompleteTypography","AutocompleteChipDefaultSpan","AutocompleteTextField","draggable","CustomEndAdornment","CustomDraggableContainer","CustomField","touched","type","inputProps","disableAutoComplete","shouldErrorDisplay","margin","autoComplete","FormTitle","StyledTypography","align","getFetchSpinnerSelector","spinner","fetchSpinner","fetchSelector","getTemplateSpinnerSelector","templateSpinner","templateSelector","getCustomerSpinnerSelector","customerSpinner","getconnectDataSpinnerSelector","connectDataSpinner","getConnectToXtmSpinnerSelector","connectToXtmSpinner","connectToCMSSpinner","defaultUserLanguagesSpinner","EMAIL_REGEX","PASSWORD_REGEX","isObjectEqual","objectA","objectB","objectAProperties","Object","getOwnPropertyNames","objectBProperties","reduce","previousValue","currentValue","required","value","isString","email","test","password","requiredAutocomplete","composeValidators","validators","fetchValidator","fetchValidatorObject","values","map","optionalValidator","resetPasswordRouteParameterEnum","loginContainerStyles","button","form","LoginContainer","unsubscribe","onSubmit","setState","submitValues","login","createForm","subscribe","validate","subscription","pristine","submitting","render","handleSubmit","name","input","meta","disabled","CircularProgress","size","to","resetPasswordContainerStyles","ResetPasswordContainer","match","params","admin","withRouter","ChangePasswordForm","useDispatch","useTranslation","useLocation","URLSearchParams","search","get","useSelector","newPassword","token","resetPasswordToken","confirmPassword","comparePass","loginRoutes","pathname","component","exact","parameters","useEffect","verifyPassFinished","LoginLayoutComponent","route","path","RestApplicationClient","httpClient","options","request","method","url","uriEncoding","createAdministrator","queryParams","administratorId","updateAdministrator","authRequest","createClient","clientId","updateClient","xtmProject","activeProjectSearch","xtmCustomerId","connectRequest","pageIds","translateRequest","userId","updateUser","xtmConnectRequest","template","result","i","encodeURIComponent","AxiosHttpClient","axios","requestConfig","config","target","source","hasOwnProperty","assign","copyFn","then","axiosResponse","originalData","AxiosRestApplicationClient","baseURL","axiosInstance","create","defaults","Axios","interceptors","headers","accessToken","localStorage","getItem","refreshToken","includes","Authorization","response","ttl","setItem","String","UserRouteParameterEnum","api","Logout","disableTouchRipple","viewBox","fill","xmlns","d","getAllEnvironment","_env_","Manual","REACT_APP_HELP_URL","ReleaseNotes","REACT_APP_CHANGELOG_URL","ButtonContainerDiv","ButtonLink","Link","ButtonContainer","backTo","style","textDecoration","Container","Date","p","EditData","createdAt","modifiedAt","moment","format","CustomCheckbox","Checkbox","CustomFieldRow","CustomSelect","rows","onChange","selectStyle","FormControl","selectProps","native","placeholder","row","index","AdministratorActionTypes","createAdministratorError","createAdministratorSuccess","clearAdministratorErrors","getAdministratorsPageable","getAdministratorsPageableSuccess","getAdministratorsPageableError","getAdministratorById","getAdministratorByIdSuccess","getAdministratorByIdError","clearAdministrator","editAdministrator","editAdministratorSuccess","getAdministratorErrorsSelector","getAdministratorsPageableSelector","administratorsPageable","administrators","getAdministratorSelector","ClientActionTypes","getAllClients","getAllClientsError","getAllClientsSuccess","createClientSuccess","createClientError","getClientsPageable","getClientsPageableSuccess","getClientsPageableError","editClient","editClientSuccess","getClientById","getClientByIdSuccess","getClientByIdError","clearClient","clearClientErrors","getXTMLanguageCodes","getXTMLanguageCodesSuccess","getXTMLanguageCodesError","clientStateSelector","getClientsPageableSelector","clientsPageable","getAllClientsSelector","clients","getClientErrorsSelector","getClientSelector","getXTMLanguageCodesSelector","xtmLanguageCodes","AddAdministratorContainer","id","clientName","initialValue","parseClientSelect","status","Name","isOverflown","element","checkIfOverflown","offsetHeight","scrollHeight","offsetWidth","scrollWidth","typographyProps","maxLines","textColor","NameTypographyWidth","lines","CustomTooltipTypography","Tooltip","ref","CustomAutocomplete","handleChange","event","onDragEnd","destination","filteredData","splice","removed","renderTags","getTagProps","tag","Chip","deleteIcon","icon","renderCustomTags","droppableId","direction","provided","innerRef","draggableId","draggableProps","dragHandleProps","renderAdornment","endAdornment","multi","noOptionsText","allowDragAndDrop","Box","Autocomplete","fullWidth","multiple","getOptionLabel","option","getOptionSelected","renderInput","Boolean","InputProps","renderOption","CustomTooltip","marginTop","React","CustomLanguageMappingFieldContainer","CustomLanguageMappingContainer","fieldset","CustomLanguageMappingLegend","legend","CustomLanguageMappingButton","IconButton","CustomLanguageMappingRemoveButton","LanguageMappingContainer","handleAddLanguageMapping","fields","push","xtmLanguage","hubspotLanguage","setFilteredLanguages","handleRemoveLanguageMapping","remove","onHubspotLanguageChange","_","update","filteredLanguages","hubspotLanguages","languageMappingFields","getFieldState","setTimeout","chosenHubspotLanguages","filter","languageMappingField","xtmLanguages","getHubspotLanguageValue","addClientContainerStyles","heading","btnContainer","getHubspotLanguages","useRouteMatch","useState","mappingInitialValue","setMappingInitialValue","setSubmitValues","languageMappings","hubspotCode","xtmCode","contentfulXtmLanguagesMap","submitFailed","mutators","arrayMutators","stateErrors","code","Roles","accordionStyles","summary","details","accordionError","accordionErrorText","accordionLabel","AccordionDiv","AccordionIcon","connected","className","renderIcon","XtmConnectAccordion","isNewPassword","xtmPassword","connectionParameters","userUuidToCopyPassword","edit","xtmParameters","duplicate","xtmUrl","xtmCompanyName","username","getConnectData","previousProps","xtmUsername","rest","Accordion","AccordionSummary","expandIcon","AccordionDetails","tableToolbarStyles","endAdornmentIcon","endAdornmentSpinner","ConnectedFields","handleCustomerChange","getTemplates","getTemplatesById","change","xtmAuthId","selectSpinner","getCustomers","getCustomersById","xtmProperties","toString","shouldUpdate","clearTemplates","previousCustomers","previous","current","customer","xtmTemplateId","defaultLanguages","mapCustomersToRows","IconComponent","mapTemplatesToRows","defaultValue","userSpecification","defaultTranslationSourceLanguage","mapUsersLanguages","forceDefaultCustomerSettings","OrderDirection","checkRoles","routeRoles","userRoles","AddUserContainer","editValues","currentUser","shouldConnectedFieldsRender","isClientAdmin","ADMIN_CLIENT","firstName","lastName","TableActionTypes","setPaginationOptions","setPaginationOptionsNoEmit","clearPaginationOptions","setPaginationSearch","setPaginationAction","setPaginationSearchSpinner","getPaginationOptionsSelector","paginationOptions","getPaginationSearchSpinnerSelector","searchSpinner","parseDateBulk","contentParsed","content","createdAtParsed","modifiedAtParsed","parseDate","customTableStyle","container","iconContainer","spinnerCell","PaginationTransLabel","from","count","Fragment","Trans","i18nKey","Pagination","onChangePage","onChangeRowsPerPage","page","rowsPerPage","TablePagination","SelectProps","nativeSelect","labelDisplayedRows","getPaginationLabelDisplayedRows","rowsPerPageOptions","labelRowsPerPage","nextIconButtonProps","backIconButtonProps","nextIconButtonText","backIconButtonText","tableEmptyStyles","TableEmpty","CustomTable","Number","onChangeOrder","property","orderBy","order","isAsc","ASC","DESC","paginationProps","pageable","totalElements","parseColumn","renderEmpty","fetchSpinnerOverride","paginationAction","onEdit","onDuplicate","displayActionsLabel","TableContainer","Paper","Table","stickyHeader","TableHead","TableRow","headCell","TableCell","sortDirection","TableSortLabel","active","TableBody","colSpan","hover","header","TableFooter","mapStateToProps","mapDispatchToProps","CustomTableContainer","iconButtonLabelStyle","Text","IconButtonLabel","buttonLabelKey","onAdd","TableToolbar","searchValue","debounceFn","throttleFn","onInputChange","persist","throttle","debounce","setSearch","callbackFunc","limit","wait","timeout","clearTimeout","TestTable","AdministratorsContainer","history","ClientsContainer","getUsersPageableSelector","UserTable","UsersContainer","mainRoutes","ADMIN_XTM","navbar","routeTextKey","AddClientContainer","navbarStyles","routeValues","Navbar","pagesToRender","setTabValue","find","startsWith","handleTabChange","pages","Tabs","Tab","MainLayoutComponent","handleOpenLink","open","renderRoute","isAuth","createBrowserHistory","NotificationActionTypes","showError","showSuccessful","closeAlert","displayed","withSnackbar","notifications","store","notify","useSnackbar","enqueueSnackbar","closeSnackbar","message","onClose","reason","myKey","onExited","_event","dp","notistackRef","createRef","onClickDismiss","App","action","browserHistory","administratorEpics","combineEpics","action$","pipe","ofType","switchMap","of","catchError","getAllAdministrators","actions$","getAdministrator","initState","administratorReducer","createReducer","builder","addCase","clientEpics","getAllClients$GET$api_client_pageable","getAllClients$GET$api_client","getClient","getXtmLanguagesCodes","clientReducer","notifyReducer","getTime","Math","floor","random","SpinnerActionTypes","setFetchSpinner","setTemplateSpinner","setCustomerSpinner","setConnectDataSpinner","setConnectToXtmSpinner","setConnectToCMSSpinner","setDefaultUserLanguageSpinner","spinnerEpics","debounceTime","endsWith","spinnerReducer","tableEpics","getState","dispatchAction","sort","EMPTY","tableReducer","userEpics","authenticateAdmin","tap","removeItem","sendResetPasswordEmailForAdmin","language","pluck","delayWhen","timer","state$","verifyResetPasswordToken","getAllUsers","getUser","res","connectToXtm","getXTMCustomers$GET$api_xtm_customers","getXTMTemplates","getXTMCustomersForExistingUser","getXTMTemplatesForExistingUser$GET$api_xtm_templates_userId","getXTMConnectionParameters","reconnectToXtm","sendResetPasswordEmail","href","userReducer","cmsConnect","appReducer","combineReducers","epicMiddleware","createEpicMiddleware","dependencies","configureStore","reducer","middleware","devTools","run","ReactDOM","StrictMode","ThemeProvider","styles","document","getElementById","Sentry","dsn","env","getEnvironment","environment","addEventListener"],"mappings":"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","file":"static/js/main.e740804f.chunk.js","sourcesContent":["import { css, SerializedStyles } from '@emotion/core';\n\nexport const mainStyles = (): SerializedStyles => css`\n *,\n *:before,\n *:after {\n box-sizing: border-box;\n }\n\n html {\n display: table;\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n }\n\n body {\n display: table-cell;\n width: 100%;\n margin: 0;\n padding: 0;\n font-weight: 400;\n font-family: Lato, arial, sans-serif;\n text-rendering: optimizeLegibility;\n font-smooth: always;\n -webkit-font-smoothing: antialiased;\n font-kerning: auto;\n background: #eff3f7;\n }\n\n #root {\n width: 100%;\n height: 100%;\n }\n\n a:link {\n color: #0c93e4;\n }\n\n a:visited {\n color: #0c93e4;\n }\n\n @supports (-moz-appearance: none) {\n #root {\n height: 100vh;\n }\n }\n`;\n","import { createMuiTheme } from '@material-ui/core';\n\nexport const theme = createMuiTheme({\n overrides: {\n MuiSvgIcon: {\n root: {\n padding: '2px',\n },\n },\n MuiTablePagination: {\n toolbar: {\n background: '#fff',\n },\n },\n MuiButton: {\n root: {\n textTransform: 'none',\n fontWeight: 400,\n },\n },\n MuiTabs: {\n root: {\n backgroundColor: '#fff',\n },\n indicator: {\n backgroundColor: '#0096eb',\n height: '3px',\n },\n },\n MuiTableCell: {\n head: {\n fontWeight: 'bold',\n background: '#fff',\n },\n },\n MuiTableRow: {\n root: {\n backgroundColor: '#fff',\n '&.MuiTableRow-hover:hover': {\n backgroundColor: '#ccedfa',\n },\n },\n },\n MuiTableContainer: {\n root: {\n width: 'auto',\n },\n },\n MuiTab: {\n root: {\n textTransform: 'none',\n fontSize: '16px',\n color: '#536171 !important',\n },\n },\n MuiAppBar: {\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n padding: '16px',\n boxShadow: 'none',\n justifyContent: 'space-between',\n },\n },\n MuiTextField: {\n root: {\n background: '#fff',\n },\n },\n MuiSelect: {\n root: {\n background: '#fff',\n },\n },\n },\n palette: {\n primary: {\n main: '#2e3645',\n contrastText: '#FFFFFF',\n light: '5EB555',\n },\n secondary: {\n main: '#0096eb',\n },\n },\n});\n","/* eslint-disable no-console */\n\n/**\n * Clears workers cache and force reloads page\n */\nconst clearCaches = async (): Promise => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window.location.reload as any)(true);\n if (caches) {\n try {\n const keys = await caches.keys();\n keys.forEach(async (key) => {\n await caches.delete(key);\n });\n } catch {\n console.error(\"Couldn't clear worker cache\");\n }\n }\n};\n\n/**\n * Compares app version with currently deployed version and clears cache if needed\n */\nexport const checkVersion = async (): Promise => {\n const currentVersion = process.env.REACT_APP_VERSION;\n let metaVersion: string | undefined;\n try {\n metaVersion = (await (await fetch('./meta.json')).json()).version;\n } catch {\n console.error(\"Couldn't fetch meta.json\");\n return;\n }\n\n if (currentVersion !== metaVersion) {\n await clearCaches();\n }\n};\n","import i18next from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n// eslint-disable-next-line id-match\nimport { initReactI18next } from 'react-i18next';\nimport locales from 'locales';\n\nconst resources = locales;\n\nconst i18n = i18next;\n\n/**\n * Initializes i18next module with translation from src/locales\n */\nexport function initTranslation(): void {\n i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources,\n lng: 'en',\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n });\n}\n\nexport default i18n;\n","import en from './en';\n\nconst locales = {\n en,\n};\n\nexport default locales;\n","import administrator from './administrator.json';\nimport auth from './auth.json';\nimport client from './client.json';\nimport common from './common.json';\nimport table from './table.json';\nimport users from './users.json';\nimport validator from './validator.json';\n\nconst en = {\n translation: {\n common,\n client,\n table,\n administrator,\n validator,\n auth,\n users,\n },\n};\n\nexport default en;\n","import { css } from '@emotion/core';\n\nexport const appStyle = css`\n text-align: center;\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\n","import { css } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { Button } from '@material-ui/core';\n\nconst loginHeaderStyle = {\n title: css`\n font-size: 22px;\n padding-top: 10px;\n `,\n img: css`\n width: auto;\n height: 40px;\n `,\n logoContainer: css`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n `,\n};\n\nexport const HeaderButton = styled(Button)`\n font-size: 16px !important;\n font-weight: 400 !important;\n color: #fff !important;\n transition: opacity 0.2s !important;\n\n &:hover {\n opacity: 0.8;\n }\n\n svg {\n width: 24px;\n height: 24px;\n padding: 0 4px 0 0;\n }\n`;\n\nexport const HeaderLogoutButton = styled(HeaderButton)`\n color: #219ce6 !important;\n font-size: 16px !important;\n font-weight: bold !important;\n`;\n\nexport default loginHeaderStyle;\n","export const UserActionTypes = {\n Login: 'USER_LOGIN',\n LoginSuccess: 'USER_LOGIN_SUCCESS',\n LoginError: 'USER_LOGIN_ERROR',\n Logout: 'USER_LOGOUT',\n LogoutSuccess: 'USER_LOGOUT_SUCCESS',\n LogoutError: 'USER_LOGOUT_ERROR',\n ResetPassword: 'USER_RESET_PASSWORD',\n ResetPasswordSuccess: 'USER_RESET_PASSWORD_SUCCESS',\n ResetPasswordError: 'USER_RESET_PASSWORD_ERROR',\n ResetUserPassword: 'USER_RESET_USER_PASSWORD',\n ResetUserPasswordSuccess: 'USER_RESET_USER_PASSWORD_SUCCESS',\n ResetUserPasswordError: 'USER_RESET_USER_PASSWORD_ERROR',\n VerifyToken: 'USER_VERIFY_TOKEN',\n VerifyTokenSuccess: 'USER_VERIFY_TOKEN_SUCCESS',\n VerifyTokenError: 'USER_VERIFY_TOKEN_ERROR',\n RefreshTokenSuccess: 'REFRESH_USER_TOKEN_SUCCESS',\n ChangePasswordSuccess: 'CHANGE_PASSWORD_SUCCESS',\n ChangePasswordError: 'CHANGE_PASSWORD_ERROR',\n ChangePassword: 'CHANGE_PASSWORD',\n ChangeUserPasswordSuccess: 'CHANGE_USER_PASSWORD_SUCCESS',\n ChangeUserPasswordError: 'CHANGE_USER_PASSWORD_ERROR',\n ChangeUserPassword: 'CHANGE_USER_PASSWORD',\n verifyPassTokenSuccess: 'VERIFY_PASS_TOKEN_SUCCESS',\n verifyPassTokenError: 'VERIFY_PASS_TOKEN_ERROR',\n verifyPassToken: 'VERIFY_PASS_TOKEN',\n GetAllUsers: 'GET_ALL_USERS',\n GetAllUsersError: 'GET_ALL_USERS_ERROR',\n GetAllUsersSuccess: 'GET_ALL_USERS_SUCCESS',\n CreateUser: 'CREATE_USER',\n CreateUserSuccess: 'CREATE_USER_SUCCESS',\n CreateUserError: 'CREATE_USER_ERROR',\n UsersPageable: 'USERS-PAGEABLE',\n UsersPageableError: 'USERS_PAGEABLE_ERROR',\n UsersPageableSuccess: 'USERS_PAGEABLE_SUCCESS',\n EditUser: 'EDIT_USER',\n EditUserSuccess: 'EDIT_USER_SUCCESS',\n EditUserError: 'EDIT_USER_ERROR',\n GetUserById: 'GET_USER_BY_ID',\n GetUserByIdSuccess: 'GET_USER_BY_ID_SUCCESS',\n GetUserByIdError: 'GET_USER_BY_ID_ERROR',\n ClearUser: 'CLEAR_USER',\n ClearUserErrors: 'CLEAR_USER_ERROR',\n xtmConnect: 'USER_XTM_CONNECT',\n xtmConnectSuccess: 'USER_XTM_CONNECT_SUCCESS',\n xtmConnectError: 'USER_XTM_CONNECT_ERROR',\n xtmGetCustomers: 'USER_XTM_GET_CUSTOMERS',\n xtmGetCustomersError: 'USER_XTM_GET_CUSTOMERS_ERROR',\n xtmGetCustomersSuccess: 'USER_XTM_GET_CUSTOMERS_SUCCESS',\n xtmGetTemplates: 'USER_XTM_GET_TEMPLATES',\n xtmGetTemplatesSuccess: 'USER_XTM_GET_TEMPLATES_SUCCESS',\n xtmGetTemplatesError: 'USER_XTM_GET_TEMPLATES_ERROR',\n xtmGetCustomersById: 'USER_XTM_GET_CUSTOMERS_BY_ID',\n xtmGetCustomersByIdSuccess: 'USER_XTM_GET_CUSTOMERS_BY_ID_SUCCESS',\n xtmGetCustomersByIdError: 'USER_XTM_GET_CUSTOMERS_BY_ID_ERROR',\n xtmGetTemplatesById: 'USER_XTM_GET_TEMPLATES_BY_ID',\n xtmGetTemplatesByIdSucess: 'USER_XTM_GET_TEMPLATES_BY_ID_SUCCESS',\n xtmGetTemplatesByIdError: 'USER_XTM_GET_TEMPLATES_BY_ID_ERROR',\n xtmGetConnectData: 'USER_XTM_GET_CONNECT_DATA',\n xtmGetConnectDataSuccess: 'USER_XTM_GET_CONNECT_DATA_SUCCESS',\n xtmGetConnectDataError: 'USER_XTM_GET_CONNECT_DATA_ERROR',\n xtmConnectToCMS: 'USER_CONNET_TO_CMS',\n xtmConnectToCMSSuccess: 'USER_CONNET_TO_CMS_SUCCESS',\n xtmConnectToCMSError: 'USER_CONNET_TO_CMS_ERROR',\n xtmConnectUser: 'USER_CONNECT_TO_XTM_USER',\n xtmConnectUserError: 'USER_CONNECT_TO_XTM_USER_ERROR',\n xtmConnectUserSuccess: 'USER_CONNECT_TO_XTM_USER_SUCCESS',\n clearTemplates: 'USER_CLEAR_XTM_TEMPLATES',\n getDefaultUserLanguage: 'USER_GET_DEFAULT_LANGUAGE',\n getDefaultUserLanguageSuccess: 'USER_GET_DEFAULT_LANGUAGE_SUCCESS',\n getDefaultUserLanguageError: 'USER_GET_DEFAULT_LANGUAGE_ERROR',\n clearDefaultUserLanguage: 'USER_CLEAR_DEFAULT_LANGUAGE',\n sessionExpired: 'USER_SESSION_EXPIRED',\n showSessionExpired: 'USER_SHOW_SESSION_EXPIRED',\n hideSessionExpired: 'USER_HIDE_SESSION_EXPIRED',\n};\n\nexport interface IRemindPasswordPayload {\n email: string;\n}\n","import { createAction } from '@reduxjs/toolkit';\nimport {\n AuthenticationResult,\n HubspotLanguageDTO,\n Page,\n RefreshTokenResult,\n UserDTO,\n UserOverviewDTO,\n XTMConnectDTO,\n XTMCustomerDTO,\n XTMTemplateDTO,\n} from 'utils/restApplicationClient';\nimport {\n AuthenticationRequest,\n ChangePasswordDTO,\n CreateUserDTO,\n XTMConnectionParametersDTO,\n XTMConnectRequest,\n} from 'utils/restApplicationClientTypeOverrides';\nimport { IRemindPasswordPayload, UserActionTypes } from './user.actions.types';\nimport { IEditUser, IUsersPageable } from './user.interface';\n\nexport const verifyPassToken = createAction(UserActionTypes.verifyPassToken);\nexport const verifyPassTokenSuccess = createAction(UserActionTypes.verifyPassTokenSuccess);\nexport const verifyPassTokenError = createAction(UserActionTypes.verifyPassTokenError);\nexport const changePassword = createAction(UserActionTypes.ChangePassword);\nexport const changePasswordSuccess = createAction(UserActionTypes.ChangePasswordSuccess);\nexport const changePasswordError = createAction(UserActionTypes.ChangePasswordError);\nexport const changeUserPassword = createAction(UserActionTypes.ChangeUserPassword);\nexport const changeUserPasswordSuccess = createAction(UserActionTypes.ChangeUserPasswordSuccess);\nexport const changeUserPasswordError = createAction(UserActionTypes.ChangeUserPasswordError);\nexport const loginUser = createAction(UserActionTypes.Login);\nexport const loginUserSuccess = createAction(UserActionTypes.LoginSuccess);\nexport const loginUserError = createAction<{ [key: string]: string | undefined } | undefined>(\n UserActionTypes.LoginError,\n);\n\nexport const logoutUser = createAction(UserActionTypes.Logout);\nexport const logoutUserSuccess = createAction(UserActionTypes.LogoutSuccess);\nexport const logoutUserError = createAction(UserActionTypes.LogoutError);\n\nexport const resetPassword = createAction(UserActionTypes.ResetPassword);\nexport const resetPasswordSuccess = createAction(UserActionTypes.ResetPasswordSuccess);\nexport const resetPasswordError = createAction(UserActionTypes.ResetPasswordError);\n\nexport const resetUserPassword = createAction(UserActionTypes.ResetUserPassword);\nexport const resetUserPasswordSuccess = createAction(UserActionTypes.ResetUserPasswordSuccess);\nexport const resetUserPasswordError = createAction(UserActionTypes.ResetUserPasswordError);\n\nexport const verifyToken = createAction(UserActionTypes.VerifyToken);\nexport const verifyTokenSuccess = createAction<{ ttl: number }>(UserActionTypes.VerifyTokenSuccess);\nexport const verifyTokenError = createAction(UserActionTypes.VerifyTokenError);\nexport const refreshTokenSuccess = createAction(UserActionTypes.RefreshTokenSuccess);\n\nexport const getAllUsers = createAction(UserActionTypes.GetAllUsers);\nexport const getAllUsersError = createAction(UserActionTypes.GetAllUsersError);\nexport const getAllUsersSuccess = createAction(UserActionTypes.GetAllUsersSuccess);\nexport const createUser = createAction(UserActionTypes.CreateUser);\nexport const createUserSuccess = createAction(UserActionTypes.CreateUserSuccess);\nexport const createUserError = createAction<{ [key: string]: string | undefined } | undefined>(\n UserActionTypes.CreateUserError,\n);\n\nexport const usersPageable = createAction(UserActionTypes.UsersPageable);\nexport const usersPageableSuccess = createAction>(UserActionTypes.UsersPageableSuccess);\nexport const usersPageableError = createAction(UserActionTypes.UsersPageableError);\nexport const editUser = createAction(UserActionTypes.EditUser);\nexport const editUserSuccess = createAction(UserActionTypes.EditUserSuccess);\nexport const editUserError = createAction(UserActionTypes.EditUserError);\n\nexport const getUserById = createAction(UserActionTypes.GetUserById);\nexport const getUserByIdSuccess = createAction(UserActionTypes.GetUserByIdSuccess);\nexport const getUserByIdError = createAction(UserActionTypes.GetUserByIdError);\n\nexport const clearUser = createAction(UserActionTypes.ClearUser);\n\nexport const clearUserErrors = createAction(UserActionTypes.ClearUserErrors);\n\nexport const xtmConnect = createAction(UserActionTypes.xtmConnect);\n\nexport const xtmConnectError = createAction(UserActionTypes.xtmConnectError);\n\nexport const xtmConnectSuccess = createAction(UserActionTypes.xtmConnectSuccess);\n\nexport const xtmConnectUser = createAction<{\n userId: string;\n xtmParameters: XTMConnectRequest;\n}>(UserActionTypes.xtmConnectUser);\n\nexport const xtmConnectUserError = createAction(UserActionTypes.xtmConnectUserError);\n\nexport const xtmConnectUserSuccess = createAction(UserActionTypes.xtmConnectUserSuccess);\n\nexport const xtmGetCustomers = createAction(UserActionTypes.xtmGetCustomers);\n\nexport const xtmGetCustomersError = createAction(UserActionTypes.xtmGetCustomersError);\n\nexport const xtmGetCustomersSuccess = createAction(UserActionTypes.xtmGetCustomersSuccess);\n\nexport const xtmGetTemplates = createAction<{\n xtmAuthId: string;\n xtmCustomerId: string;\n}>(UserActionTypes.xtmGetTemplates);\n\nexport const xtmGetTemplatesError = createAction(UserActionTypes.xtmGetTemplatesError);\n\nexport const xtmGetTemplatesSuccess = createAction(UserActionTypes.xtmGetTemplatesSuccess);\n\nexport const xtmGetCustomersById = createAction(UserActionTypes.xtmGetCustomersById);\n\nexport const xtmGetCustomersByIdError = createAction(UserActionTypes.xtmGetCustomersByIdError);\n\nexport const xtmGetCustomersByIdSuccess = createAction(UserActionTypes.xtmGetCustomersByIdSuccess);\n\nexport const xtmGetTemplatesById = createAction<{\n userId: string;\n queryParams: { xtmCustomerId: string };\n}>(UserActionTypes.xtmGetTemplatesById);\n\nexport const xtmGetTemplatesByIdError = createAction(UserActionTypes.xtmGetTemplatesByIdError);\n\nexport const xtmGetTemplatesByIdSuccess = createAction(UserActionTypes.xtmGetTemplatesByIdSucess);\n\nexport const xtmGetConnectData = createAction(UserActionTypes.xtmGetConnectData);\n\nexport const xtmGetConnectDataError = createAction(UserActionTypes.xtmGetConnectDataError);\n\nexport const xtmGetConnectDataSuccess = createAction(\n UserActionTypes.xtmGetConnectDataSuccess,\n);\n\nexport const xtmConnectToCMS = createAction(UserActionTypes.xtmConnectToCMS);\n\nexport const xtmConnectToCMSError = createAction(UserActionTypes.xtmConnectToCMSError);\n\nexport const xtmConnectToCMSSuccess = createAction(UserActionTypes.xtmConnectToCMSSuccess);\n\nexport const getDefaultUserLanguages = createAction(UserActionTypes.getDefaultUserLanguage);\nexport const getDefaultUserLanguagesSuccess = createAction(\n UserActionTypes.getDefaultUserLanguageSuccess,\n);\nexport const getDefaultUserLanguagesError = createAction(UserActionTypes.getDefaultUserLanguageError);\nexport const clearDefaultUserLanguages = createAction(UserActionTypes.clearDefaultUserLanguage);\n\nexport const clearXtmTemplates = createAction(UserActionTypes.clearTemplates);\n\nexport const sessionExpired = createAction(UserActionTypes.sessionExpired);\n\nexport const showSessionExpired = createAction(UserActionTypes.showSessionExpired);\n\nexport const hideSessionExpired = createAction(UserActionTypes.hideSessionExpired);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport {\n AuthenticationResult,\n HubspotLanguageDTO,\n RefreshTokenResult,\n UserDTO,\n XTMCustomerDTO,\n XTMTemplateDTO,\n} from 'utils/restApplicationClient';\nimport { XTMConnectionParametersDTO } from 'utils/restApplicationClientTypeOverrides';\n\nconst authSelector = (state: AppState): boolean => state.user.auth;\n\nconst verifyFinishSelector = (state: AppState): boolean => state.user.verifyFinished;\n\nconst userDataSelector = (state: AppState): AuthenticationResult & RefreshTokenResult => {\n return state.user.data;\n};\n\nconst userErrorsSelector = (state: AppState): { [key: string]: string } => state.user.errors;\n\nconst userSelector = (state: AppState): UserDTO | undefined => state.user.user;\n\nconst xtmAuthorizationIdSelector = ({ user: { xtmAuthorizationId } }: AppState): string | undefined =>\n xtmAuthorizationId;\n\nconst xtmCustomersSelector = ({ user: { customers } }: AppState): XTMCustomerDTO[] | undefined => customers;\n\nconst xtmTemplatesSelector = ({ user: { templates } }: AppState): XTMTemplateDTO[] | undefined => templates;\n\nconst xtmConnectDataSelector = ({ user: { connectData } }: AppState): XTMConnectionParametersDTO | undefined =>\n connectData;\n\nconst cmsConnectedSelector = ({ user: { xtmCMSconnected } }: AppState): boolean | undefined => xtmCMSconnected;\n\nconst sessionExpiredSelector = ({ user: { sessionExpired } }: AppState): boolean => sessionExpired;\n\nexport const getAuthSelector = createSelector(authSelector, (auth) => auth);\n\nexport const getVerifyFinishSelector = createSelector(verifyFinishSelector, (finished) => finished);\n\nexport const getUserDataSelector = createSelector(userDataSelector, (roles) => roles);\n\nexport const getUserErrorsSelector = createSelector(userErrorsSelector, (errors) => errors);\n\nexport const getUserSelector = createSelector(userSelector, (user) => user);\n\nexport const getXtmAuthorizationIdSelector = createSelector(\n xtmAuthorizationIdSelector,\n (authorizationId) => authorizationId,\n);\n\nexport const getXtmCustomersSelector = createSelector(xtmCustomersSelector, (customers) => customers);\n\nexport const getXtmTemplatesSelector = createSelector(xtmTemplatesSelector, (templates) =>\n Array.isArray(templates) && templates.length === 0 ? undefined : templates,\n);\n\nexport const getXtmConnectDataSelector = createSelector(xtmConnectDataSelector, (connectData) => connectData);\n\nexport const getCMSConnectedSelector = createSelector(cmsConnectedSelector, (cmsConnected) => cmsConnected);\nexport const allDefaultUserLanguages = (state: AppState): Array => state.user.defaultUserLanguages;\nexport const getDefaultUserLanguagesSelector = createSelector(allDefaultUserLanguages, (languages) => languages);\n\nexport const getSessionExpiredSeletor = createSelector(sessionExpiredSelector, (sessionExpired) => sessionExpired);\n","import styled from '@emotion/styled';\n\nexport const ModalDropdown = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: 9999;\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const ModalWindow = styled.div`\n background-color: #eff3f7;\n text-align: center;\n border-radius: 15px;\n border: 2px solid #2e3645;\n width: 300px;\n button:last-child {\n margin-bottom: 20px;\n }\n`;\n\nexport const ModalLogoBar = styled.div`\n height: 100px;\n width: 100%;\n background-color: #2e3645;\n padding: 20px;\n border-top-right-radius: 12px;\n border-top-left-radius: 12px;\n > img {\n height: 100%;\n }\n`;\nexport const ModalTextDiv = styled.div`\n padding: 20px 40px;\n p:first-of-type {\n margin-bottom: 10px;\n }\n`;\n","/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { Button, Typography } from '@material-ui/core';\nimport loginHeaderStyle from 'components/LoginHeader/LoginHeader.styled';\nimport { Component } from 'react';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { logoutUser, sessionExpired } from 'store/user/user.actions';\nimport { getSessionExpiredSeletor } from 'store/user/user.selectors';\nimport { ModalDropdown, ModalLogoBar, ModalTextDiv, ModalWindow } from './SessionExpiredModal.styled';\n\ninterface IStateProps {\n sessionExpired: boolean;\n}\n\ninterface IDispatchProps {\n setSessionExpired: (payload: boolean) => AppDispatch;\n logout: () => AppDispatch;\n}\n\ntype PropType = WithTranslation & IDispatchProps & IStateProps;\n\nclass SessionExpiredModal extends Component {\n handleClick = (): void => {\n const { setSessionExpired, logout } = this.props;\n setSessionExpired(false);\n logout();\n };\n\n render(): JSX.Element {\n const { t, sessionExpired } = this.props;\n const visibility = css`\n visibility: ${sessionExpired ? 'visible' : 'hidden'};\n `;\n return (\n \n \n \n \n \n \n {t('auth.sessionExpired.text1')}\n {t('auth.sessionExpired.text2')}\n \n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n sessionExpired: getSessionExpiredSeletor(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n setSessionExpired: (payload: boolean): AppDispatch => dispatch(sessionExpired(payload)),\n logout: (): AppDispatch => dispatch(logoutUser()),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation()(SessionExpiredModal));\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { AppBar } from '@material-ui/core';\nimport { PureComponent, ReactNode } from 'react';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport loginHeaderStyle from './LoginHeader.styled';\n\ninterface IProps {\n children?: ReactNode;\n}\n\ntype PropType = IProps & WithTranslation;\n\nclass LoginHeader extends PureComponent {\n render(): JSX.Element {\n const { t } = this.props;\n\n return (\n \n
\n \n \n {t('common.title')} {t('common.version', { version: process.env.REACT_APP_VERSION })}\n \n
\n {this.props.children}\n
\n );\n }\n}\n\nexport default withTranslation()(LoginHeader);\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { PureComponent } from 'react';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { Link, LinkProps } from 'react-router-dom';\n\ninterface IProps {\n testId?: string;\n text: string;\n wide?: boolean;\n linkProps: React.PropsWithoutRef & React.RefAttributes;\n}\n\nclass CustomLink extends PureComponent {\n StyledDiv = styled.div`\n font-weight: bold;\n text-align: start;\n ${this.props.wide ? 'width: 100%;' : ''}\n\n & > a {\n transition: opacity 0.2s;\n }\n\n & > a:hover {\n opacity: 0.8;\n }\n `;\n\n render(): JSX.Element {\n const { t, testId, text, linkProps } = this.props;\n return (\n \n \n {t(text)}\n \n \n );\n }\n}\n\nexport default withTranslation()(CustomLink);\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { Fragment, PureComponent, ReactNode } from 'react';\n\ninterface IProps {\n children?: ReactNode;\n center?: boolean;\n width?: number;\n}\n\nclass FormDiv extends PureComponent {\n StyledDiv = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: ${this.props.width ? this.props.width : '700'}px;\n align-self: center;\n margin-bottom: 60px;\n ${this.props.center ? 'margin: auto;' : ''}\n & form {\n width: 100%;\n }\n `;\n\n render(): JSX.Element {\n const { StyledDiv } = this;\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nexport default FormDiv;\n","import { css } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { Select, TextField, Typography, TypographyProps } from '@material-ui/core';\nimport { DetailedHTMLProps, HTMLAttributes } from 'react';\n\ninterface StyledAutocompleteTextFieldProps {\n draggable?: boolean;\n}\n\ninterface CustomAutocompleteTypographyProps extends TypographyProps {\n column?: boolean | string;\n component?: string;\n}\n\ninterface FieldDivProps extends DetailedHTMLProps, HTMLDivElement> {\n column?: boolean;\n}\n\nexport const customInputStyles = {\n root: css`\n display: flex;\n flex-direction: column;\n margin: 4px auto;\n width: 100%;\n `,\n label: css`\n font-weight: bold;\n color: #333;\n text-align: start;\n max-width: 300px;\n width: 295px;\n `,\n outlineError: css`\n &:hover {\n fieldset {\n border-color: red !important;\n border-width: 3px;\n }\n }\n\n fieldset {\n border-color: red !important;\n border-width: 2px;\n }\n `,\n textError: css`\n color: red;\n text-align: start;\n max-width: 400px;\n margin-left: 300px;\n `,\n textErrorNoMargin: css`\n color: red;\n text-align: start;\n max-width: 400px;\n `,\n checkbox: css`\n display: flex;\n `,\n radio: css`\n width: 100%;\n `,\n};\n\nexport const CustomCheckboxGroupLabel = styled.span`\n font-weight: bold;\n color: #333;\n text-align: start;\n max-width: 300px;\n width: 295px;\n align-self: flex-start;\n margin-top: 12px;\n`;\n\nexport const ErrorDiv = styled.div`\n width: 100%;\n text-align: left;\n`;\n\nexport const FieldDiv = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const CheckboxFieldDiv = styled(FieldDiv)`\n margin-top: 12px;\n justify-content: flex-start;\n`;\n\nexport const FieldContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nexport const CheckboxDiv = styled.div`\n display: flex;\n width: 406px;\n align-items: center;\n & label {\n margin-left: 0;\n }\n`;\n\nexport const CustomCheckboxGroupTypography = styled(Typography)`\n cursor: pointer;\n user-select: none;\n`;\n\nexport const CustomCheckboxGroupDivRow = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const CustomCheckboxGroupDiv = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const CustomInputError = styled.span`\n margin-left: 306px;\n display: flex;\n color: red;\n text-align: start;\n max-width: 400px;\n`;\n\nexport const CustomCheckboxGroupTextField = styled(TextField)`\n max-width: 60px;\n margin: 0 6px !important;\n`;\n\nexport const SelectDiv = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n`;\n\nexport const StyledTextField = styled(TextField)`\n width: 400px;\n`;\n\nexport const StyledSelect = styled(Select)`\n width: 400px !important;\n`;\nexport const RadioTypography = styled(Typography)`\n font-weight: bold !important;\n color: #333 !important;\n text-align: start !important;\n max-width: 300px !important;\n width: 295px !important;\n`;\n\nexport const CheckboxTypography = styled(Typography)`\n font-weight: bold !important;\n color: #333 !important;\n text-align: start !important;\n`;\n\nexport const CheckboxLabelTypography = styled(Typography)`\n font-weight: bold !important;\n color: #333 !important;\n text-align: start !important;\n padding-top: 10px;\n`;\n\nexport const RadioButtonsContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const InputDiv = styled.div(\n ({ column }: FieldDivProps) => `\n display: flex;\n flex-direction: ${column ? 'column' : 'row'};\n justify-content: space-between;\n align-items: ${column ? 'stretch' : 'baseline'};\n margin: 4px auto;\n width: 100%;\n text-align: start;\n\n .MuiAutocomplete-inputRoot {\n padding-top: 3.8px !important;\n padding-bottom: 3.8px !important;\n }\n`,\n);\n\nexport const CustomAutocompleteTypography = styled(Typography)(\n ({ column }: CustomAutocompleteTypographyProps) => `\n align-self: ${column ? 'start' : 'center'};\n`,\n);\n\nexport const AutocompleteChipDefaultSpan = styled.span`\n color: rgba(0, 0, 0, 0.35);\n padding-left: 5px;\n`;\n\nexport const AutocompleteTextField = styled(TextField)(\n ({ draggable }: StyledAutocompleteTextFieldProps) => `\n .MuiAutocomplete-popupIndicator {\n margin-right: -4px;\n }\n\n ${\n draggable\n ? `\n .MuiInputBase-root {\n display:flex;\n align-items: flex-start;\n flex-direction: column-reverse;\n padding: 6px !important;\n cursor: auto;\n\n .MuiInputBase-input {\n width: calc(100% - 58px);\n }\n\n .MuiAutocomplete-endAdornment {\n top:5px;\n }\n }`\n : ''\n };\n`,\n);\n\nexport const CustomEndAdornment = styled.div`\n position: absolute;\n right: 12px;\n`;\n\nexport const CustomDraggableContainer = styled.div`\n display: flex;\n overflow: auto;\n margin-top: 5px;\n padding: 5px 0;\n border-top: 1px solid rgba(0, 0, 0, 0.23);\n width: 100%;\n\n &::-webkit-scrollbar-track {\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n border-radius: 10px;\n background-color: #f5f5f5;\n }\n\n &::-webkit-scrollbar {\n height: 8px;\n background-color: #f5f5f5;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n background-color: #dde0e6;\n }\n`;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { TextField } from '@material-ui/core';\nimport { Component } from 'react';\nimport { FieldInputProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { customInputStyles } from './CustomInput.style';\n\ninterface IProps {\n label: string;\n error?: string | boolean;\n touched?: boolean;\n inputProps: FieldInputProps;\n type?: string;\n testId?: string;\n disableAutoComplete?: boolean;\n}\n\nexport class CustomField extends Component {\n render(): JSX.Element {\n const { t, error, touched, type, testId, inputProps, disableAutoComplete } = this.props;\n\n const shouldErrorDisplay = typeof error === 'boolean' || (error && touched);\n\n return (\n
\n {t(this.props.label)}\n \n {shouldErrorDisplay && (\n \n {typeof error !== 'boolean' && t(error as string)}\n \n )}\n
\n );\n }\n}\n\nexport default withTranslation()(CustomField);\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { Typography } from '@material-ui/core';\nimport { Fragment, PureComponent } from 'react';\nimport { withTranslation, WithTranslation } from 'react-i18next';\n\ninterface IProps {\n text: string;\n width?: number;\n}\n\nclass FormTitle extends PureComponent {\n StyledTypography = styled(Typography)`\n width: ${this.props.width ? this.props.width : '700'}px;\n font-size: 20px !important;\n margin: 16px !important;\n `;\n\n render(): JSX.Element {\n const { t, text } = this.props;\n const { StyledTypography } = this;\n return (\n \n \n {t(text)}\n \n \n );\n }\n}\n\nexport default withTranslation()(FormTitle);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\n\nconst fetchSpinnerSelector = ({ spinner: { fetchSpinner } }: AppState): boolean => fetchSpinner;\n\nconst templateSpinnerSelector = ({ spinner: { templateSpinner } }: AppState): boolean => templateSpinner;\n\nconst customerSpinnerSelector = ({ spinner: { customerSpinner } }: AppState): boolean => customerSpinner;\n\nconst connectDataSpinnerSelector = ({ spinner: { connectDataSpinner } }: AppState): boolean => connectDataSpinner;\n\nconst connectToXtmSpinnerSelector = ({ spinner: { connectToXtmSpinner } }: AppState): boolean => connectToXtmSpinner;\n\nconst connectToCMSSpinnerSelector = ({ spinner: { connectToCMSSpinner } }: AppState): boolean => connectToCMSSpinner;\n\nconst defaultUserLanguagesSelector = ({ spinner: { defaultUserLanguagesSpinner } }: AppState): boolean =>\n defaultUserLanguagesSpinner;\n\nexport const getFetchSpinnerSelector = createSelector(fetchSpinnerSelector, (fetchSelector) => fetchSelector);\n\nexport const getTemplateSpinnerSelector = createSelector(\n templateSpinnerSelector,\n (templateSelector) => templateSelector,\n);\n\nexport const getCustomerSpinnerSelector = createSelector(customerSpinnerSelector, (customerSpinner) => customerSpinner);\nexport const getconnectDataSpinnerSelector = createSelector(\n connectDataSpinnerSelector,\n (connectDataSpinner) => connectDataSpinner,\n);\n\nexport const getConnectToXtmSpinnerSelector = createSelector(\n connectToXtmSpinnerSelector,\n (connectToXtmSpinner) => connectToXtmSpinner,\n);\n\nexport const getConnectToCMSSpinnerSelector = createSelector(\n connectToCMSSpinnerSelector,\n (connectToCMSSpinner) => connectToCMSSpinner,\n);\n\nexport const getDefaultLanguagesSpinnerSelector = createSelector(\n defaultUserLanguagesSelector,\n (defaultUserLanguagesSpinner) => defaultUserLanguagesSpinner,\n);\n","export const EMAIL_REGEX = /^[\\w!#$%&'*+./=?^`{|}~-]+@[\\dA-Za-z](?:[\\dA-Za-z-]{0,61}[\\dA-Za-z])?(?:\\.[\\dA-Za-z](?:[\\dA-Za-z-]{0,61}[\\dA-Za-z])?)*$/;\nexport const LOWERCASE_REGEX = /[a-z]/;\nexport const UPPERCASE_REGEX = /[A-Z]/;\nexport const NUMBER_REGEX = /\\d/;\nexport const WHITESPACE_REGEX = /\\s/;\nexport const PASSWORD_REGEX = /^((?=.*[a-z])(?=.*\\d)(?=.*[A-Z])(?!.*\\s).{8,64})$/;\nexport const ISNUMBER = /^\\d+$/;\nexport const PREFIX_REGEX = /[\"*/:<>?\\\\{|}]/;\n/**\n * Returns length regexp\n *\n * @param min - Minimum amout of letters\n * @param max - Maximum amout of letters\n *\n * @returns {RegExp} Length regexp\n */\nexport const LENGTH_REGEX = (min: number, max: number): RegExp => new RegExp(`^.{${min},${max}}$`);\n","/**\n * Returns whether objects are equal (shallow compare)\n *\n * @param objectA - Key - Value object\n *\n * @param objectB - Key - Value object\n *\n * @returns {boolean} Whether objects are equal\n */\nexport function isObjectEqual(objectA: Record, objectB: Record): boolean {\n const objectAProperties = Object.getOwnPropertyNames(objectA);\n const objectBProperties = Object.getOwnPropertyNames(objectB);\n\n if (objectAProperties.length !== objectBProperties.length) {\n return false;\n }\n\n return objectAProperties.reduce(\n (previousValue: boolean, currentValue: string) => objectA[currentValue] === objectB[currentValue] && previousValue,\n true,\n );\n}\n","import { ValidationErrors } from 'final-form';\nimport { IAutocompleteField } from 'types/shared';\nimport { isString } from 'util';\nimport { EMAIL_REGEX, ISNUMBER, LENGTH_REGEX, PASSWORD_REGEX, PREFIX_REGEX, WHITESPACE_REGEX } from './customRegex';\nimport { isObjectEqual } from './objectEquality';\n\n/**\n * Returns whether given field has a value\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst required = (value: string): string | null => {\n if (value && isString(value)) {\n return null;\n }\n return 'validator.required';\n};\n/**\n * Returns whether given field is a valid email\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst email = (value: string): string | null => {\n // eslint-disable-next-line no-console\n if (EMAIL_REGEX.test(value)) {\n return null;\n }\n return 'validator.email';\n};\n/**\n * Returns whether given field is a valid password\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst password = (value: string): string | null => {\n if (PASSWORD_REGEX.test(value)) {\n return null;\n }\n return 'validator.password';\n};\n/**\n * Returns whether given field contains whitespaces\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst noWhitespace = (value: string): string | null => {\n if (!WHITESPACE_REGEX.test(value)) {\n return null;\n }\n return 'validator.whitespace';\n};\n/**\n * Returns whether field does not match\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst comparePass = (values: {\n newPassword: string;\n confirmPassword: string;\n}): ValidationErrors | Promise | undefined => {\n if (values.newPassword !== values.confirmPassword) {\n return {\n confirmPassword: 'validator.confirmPassword',\n };\n }\n return undefined;\n};\n\n/**\n * Returns whether value is not a number\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst isNumber = (value: string): string | null => {\n if (ISNUMBER.test(value)) {\n return null;\n }\n return 'validator.removeXTMFiles';\n};\n\n/**\n * Returns whether value length is composed of between 1 and 9\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst isMaxLength = (value: string): string | null => {\n if (LENGTH_REGEX(1, 9).test(value)) {\n return null;\n }\n return 'validator.maxLength';\n};\n\n/**\n * Returns whether value does not contain any special characters\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst isAllowedPrefix = (value: string): string | null => {\n if (!PREFIX_REGEX.test(value)) {\n return null;\n }\n return 'validator.XTMProjectPrefix';\n};\n\n/**\n * Returns whether given field has a value\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst requiredAutocomplete = (value: IAutocompleteField | Array | null): string | null => {\n if (Array.isArray(value) && value.length > 0) {\n return null;\n } else if (!Array.isArray(value) && value?.value) {\n return null;\n }\n return 'validator.required';\n};\n\n/**\n * Returns reduced validator from given validator array\n *\n * @param validators - An array of validators\n *\n * @returns {(value: string) => string | null} A reduced validator function\n */\nconst composeValidators = (\n validators: ((value: string) => boolean | string | null)[],\n): ((value: string) => boolean | string | null) => (value: string) => {\n return validators.reduce((error: boolean | string | null, validator) => error || validator(value), null);\n};\n/**\n * Returns whether a field has an error field assigned to it in store and has different value than the one that threw an error\n *\n * @param error - An error returned from api\n *\n * @param previousValue - A value which caused error\n *\n * @returns {string | null} Wheter given value is the same as the one that threw an error\n */\nconst fetchValidator = (error: string | undefined, previousValue: string | undefined) => (\n value: string,\n): string | null => {\n if (error && previousValue && previousValue === value) {\n return error;\n }\n return null;\n};\n/**\n * Returns whether a submit object has an error assigned to it in store and has different value than the one that threw an error\n *\n * @param error - An error returned from api\n *\n * @param previousValue - Values which caused error\n *\n * @returns {string | null} Wheter given value is the same as the one that threw an error\n */\nconst fetchValidatorObject = (\n error: string | undefined,\n previousValue: Record,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => (values: Record): {} => {\n const errors: Record = {};\n if (error && previousValue && isObjectEqual(values, previousValue)) {\n const valuesParameters = Object.keys(values);\n valuesParameters.map((key) => {\n errors[key] = true;\n });\n }\n return errors;\n};\n\n/**\n * Returns whether a field has an error field assigned to it in store\n *\n * @param error - Whether should display red outline\n *\n * @returns {string | null} Whether store field is set to true\n */\nfunction booleanValidator(error: boolean) {\n return function () {\n return error ? error : null;\n };\n}\n\n/**\n * Returns whether a field is not empty and validator\n *\n * @param value - field value\n * @param validator - optional validator\n */\nfunction optionalValidator(value: string, validator: Function): null | string {\n if (value === undefined) {\n return null;\n }\n\n return validator(value);\n}\n\nexport {\n required,\n email,\n composeValidators,\n password,\n noWhitespace,\n fetchValidator,\n comparePass,\n booleanValidator,\n fetchValidatorObject,\n isNumber,\n isAllowedPrefix,\n optionalValidator,\n isMaxLength,\n requiredAutocomplete,\n};\n","import { css } from '@emotion/core';\n\nexport const loginContainerStyles = {\n root: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: center;\n `,\n button: css`\n margin-top: 20px !important;\n width: 75%;\n `,\n form: css`\n margin: 16px;\n `,\n};\n","export enum resetPasswordRouteParameterEnum {\n admin = 'admin',\n user = 'user',\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Button, CircularProgress } from '@material-ui/core';\nimport CustomLink from 'components/CustomLink/CustomLink';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport CustomField from 'components/Form/Input/CustomField';\nimport { customInputStyles, ErrorDiv } from 'components/Form/Input/CustomInput.style';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport { createForm, FormApi, Unsubscribe } from 'final-form';\nimport { Component } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport { clearUserErrors, loginUser } from 'store/user/user.actions';\nimport { getUserErrorsSelector } from 'store/user/user.selectors';\nimport { composeValidators, email, fetchValidatorObject, required } from 'utils/customValidators';\nimport { AuthenticationRequest } from 'utils/restApplicationClientTypeOverrides';\nimport { loginContainerStyles } from './LoginContainer.style';\n\ninterface IDispatchProps {\n login: (payload: AuthenticationRequest) => AppDispatch;\n clearUserErrors: () => AppDispatch;\n}\n\ninterface IStateProps {\n errors: { [key: string]: string };\n fetchSpinner: boolean;\n}\n\ninterface IFormValues {\n email: string;\n password: string;\n}\n\ninterface IState {\n submitValues: {\n email: string;\n password: string;\n };\n}\n\ntype PropType = IDispatchProps & WithTranslation & IStateProps;\n\nexport class LoginContainer extends Component {\n form: FormApi>>;\n unsubscribe: Unsubscribe;\n constructor(props: PropType) {\n super(props);\n this.state = {\n submitValues: {\n email: '',\n password: '',\n },\n };\n this.form = createForm({\n onSubmit: this.onSubmit,\n });\n this.unsubscribe = this.form.subscribe(\n () => {\n if (this.props.errors['login']) {\n this.props.clearUserErrors();\n }\n },\n { values: true },\n );\n }\n\n componentWillUnmount(): void {\n this.unsubscribe();\n }\n\n onSubmit = ({ email, password }: IFormValues): void => {\n this.setState({ submitValues: { email, password } });\n this.props.login({ email, password });\n };\n\n render(): JSX.Element {\n const { t, errors, fetchSpinner } = this.props;\n const { submitValues } = this.state;\n return (\n \n \n (\n
\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {t(this.props.errors['login'])}\n \n \n {fetchSpinner ? : t('auth.login')}\n \n \n )}\n />\n \n
\n );\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n login: (payload: AuthenticationRequest): AppDispatch => dispatch(loginUser(payload)),\n clearUserErrors: (): AppDispatch => dispatch(clearUserErrors()),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n errors: getUserErrorsSelector(state),\n fetchSpinner: getFetchSpinnerSelector(state),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation()(LoginContainer));\n","import { css } from '@emotion/core';\n\nexport const resetPasswordContainerStyles = {\n root: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: center;\n max-width: 400px;\n align-self: center;\n `,\n button: css`\n margin-top: 20px !important;\n width: 75%;\n `,\n text: css`\n text-align: start;\n margin: 20px 10px;\n `,\n form: css`\n margin: 16px;\n `,\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Button, CircularProgress } from '@material-ui/core';\nimport CustomLink from 'components/CustomLink/CustomLink';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport CustomField from 'components/Form/Input/CustomField';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport { resetPasswordRouteParameterEnum } from 'enums/resetPasswordRouteParameter';\nimport { Component } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport { resetPassword, resetUserPassword } from 'store/user/user.actions';\nimport { IRemindPasswordPayload } from 'store/user/user.actions.types';\nimport { composeValidators, email, required } from 'utils/customValidators';\nimport { resetPasswordContainerStyles } from './ResetPasswordContainer.style';\n\ninterface IFormValues {\n email: string;\n}\n\ninterface IDispatchProps {\n resetPassword: (payload: IRemindPasswordPayload) => void;\n resetUserPassword: (payload: IRemindPasswordPayload) => void;\n}\n\ninterface IStateProps {\n fetchSpinner: boolean;\n}\n\ninterface IMatchProps {\n type: resetPasswordRouteParameterEnum;\n}\n\nexport class ResetPasswordContainer extends Component<\n WithTranslation & IDispatchProps & IStateProps & RouteComponentProps\n> {\n onSubmit = (values: IFormValues): void => {\n const {\n match: {\n params: { type },\n },\n } = this.props;\n if (type === resetPasswordRouteParameterEnum.admin) {\n this.props.resetPassword(values);\n } else if (type === resetPasswordRouteParameterEnum.user) {\n this.props.resetUserPassword(values);\n }\n };\n\n render(): JSX.Element {\n const {\n t,\n fetchSpinner,\n match: {\n params: { type },\n },\n } = this.props;\n return (\n \n \n {t('auth.password.resetInfo')}\n (\n
\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {fetchSpinner ? : t('common.send')}\n \n \n )}\n />\n {type === resetPasswordRouteParameterEnum.admin && (\n \n )}\n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n fetchSpinner: getFetchSpinnerSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n resetPassword: (payload: IRemindPasswordPayload): AppDispatch => dispatch(resetPassword(payload)),\n resetUserPassword: (payload: IRemindPasswordPayload): AppDispatch => dispatch(resetUserPassword(payload)),\n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(withTranslation()(ResetPasswordContainer)));\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Button, CircularProgress } from '@material-ui/core';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport { resetPasswordRouteParameterEnum } from 'enums/resetPasswordRouteParameter';\nimport { ValidationErrors } from 'final-form';\nimport { Field, Form } from 'react-final-form';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router';\nimport { AppState } from 'store';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport { loginContainerStyles } from '../../containers/Login/LoginContainer.style';\nimport { changePassword, changeUserPassword } from '../../store/user/user.actions';\nimport { comparePass, composeValidators, password, required } from '../../utils/customValidators';\nimport { ChangePasswordDTO } from '../../utils/restApplicationClientTypeOverrides';\nimport CustomField from '../Form/Input/CustomField';\n\ninterface IResetFormValues {\n newPassword: string;\n confirmPassword: string;\n}\n\ninterface IResetFormProps {\n token: string | null;\n}\n\nexport const ChangePasswordForm = (props: IResetFormProps): JSX.Element => {\n const dispatch = useDispatch();\n const { t } = useTranslation();\n const location = useLocation();\n const parameters = new URLSearchParams(location.search);\n const type = parameters.get('type');\n const fetchSpinner = useSelector((state: AppState) => getFetchSpinnerSelector(state));\n const onSubmit = ({ newPassword }: IResetFormValues): void => {\n if (props.token && type === resetPasswordRouteParameterEnum.admin) {\n dispatch(\n changePassword({\n newPassword,\n resetPasswordToken: props.token,\n } as ChangePasswordDTO),\n );\n } else if (props.token && type === resetPasswordRouteParameterEnum.user) {\n dispatch(\n changeUserPassword({\n newPassword,\n resetPasswordToken: props.token,\n } as ChangePasswordDTO),\n );\n }\n };\n\n return (\n \n \n comparePass(values)}\n render={({ handleSubmit, submitting }): JSX.Element => (\n
\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n
\n \n
\n )}\n
\n \n {fetchSpinner ? : t('auth.password.change')}\n \n \n )}\n />\n
\n );\n};\n","import LoginContainer from 'containers/Login/LoginContainer';\nimport ResetPasswordContainer from 'containers/ResetPassword/ResetPasswordContainer';\nimport { IRoute } from 'types/route';\nimport ChangePasswordContainer from '../../containers/ChangePasswordContainer/ChangePasswordContainer';\n\nexport const loginRoutes: IRoute[] = [\n {\n pathname: '/login',\n component: LoginContainer,\n exact: true,\n },\n {\n pathname: '/reset-password/:type',\n component: ResetPasswordContainer,\n exact: true,\n },\n {\n pathname: '/changePassword',\n component: ChangePasswordContainer,\n exact: false,\n },\n];\n","// @flow\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { ChangePasswordForm } from '../../components/ChangePasswordForm/ChangePasswordForm';\nimport { AppState } from '../../store';\nimport { verifyPassToken } from '../../store/user/user.actions';\n\nconst ChangePasswordContainer = (): JSX.Element => {\n const location = useLocation();\n const parameters = new URLSearchParams(location.search);\n const dispatch = useDispatch();\n const token = parameters.get('token');\n useEffect(() => {\n if (token) {\n dispatch(verifyPassToken(token));\n }\n }, []);\n const selector = (state: AppState): boolean => state.user.verifyPassFinished;\n const finished = useSelector(selector);\n return {finished && };\n};\n\nexport default ChangePasswordContainer;\n","import LoginHeader from 'components/LoginHeader/LoginHeader';\nimport React, { Component } from 'react';\nimport { Route } from 'react-router-dom';\nimport { loginRoutes } from './routes';\n\nclass LoginLayoutComponent extends Component {\n render(): JSX.Element {\n return (\n <>\n \n {loginRoutes.map((route) => {\n return ;\n })}\n \n );\n }\n}\n\nexport default LoginLayoutComponent;\n","/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n// Generated using typescript-generator version 2.24.612 on 2024-05-17 05:25:27.\n\nimport { TranslateRequestDTO, AuthenticationRequest, ChangePasswordDTO, CreateAdministratorDTO, UpdateAdministratorDTO, CreateUserDTO, UpdateUserDTO, XTMConnectionParametersDTO, XTMConnectRequest, GetTemplatesDTO, GetCustomersDTO } from \"./restApplicationClientTypeOverrides\";\n\nexport interface AbstractCreateOrUpdateUserDTO extends Serializable {\n firstName: string;\n lastName: string;\n interfaceLanguage: string;\n email: string;\n clientUUID: string;\n xtmCustomerId: number;\n xtmTemplateId: number;\n status: boolean;\n forceDefaultCustomerSettings: boolean;\n defaultTranslationSourceLanguage: string;\n}\n\nexport interface TranslationProduct extends Serializable {\n productId: string;\n productType: ProductType;\n}\n\nexport interface Serializable {\n}\n\nexport interface AdministratorDTO extends BaseDTO, Serializable {\n email: string;\n status: boolean;\n clientName: string;\n client: ClientDTO;\n}\n\nexport interface AuthenticationResult {\n accessToken: string;\n ttl: number;\n refreshToken: string;\n username: string;\n roles: string[];\n}\n\nexport interface RefreshTokenResult {\n accessToken: string;\n ttl: number;\n refreshToken: string;\n username: string;\n roles: string[];\n}\n\nexport interface CreateOrUpdateClientDTO extends Serializable {\n clientName: string;\n status: boolean;\n languageMappings: LanguageMappingDTO[];\n}\n\nexport interface ClientDTO extends BaseDTO, Serializable {\n clientName: string;\n status: boolean;\n languageMappings: LanguageMappingDTO[];\n}\n\nexport interface HubspotConnectRequest extends Serializable {\n code: string;\n}\n\nexport interface XTMConnectDTO extends Serializable {\n xtmAuthorizationId: string;\n}\n\nexport interface ActiveProjectSearchDTO extends Serializable {\n sourceLanguage: string;\n targetLanguages: string[];\n customerId: number;\n}\n\nexport interface XTMProjectVerifyDTO extends Serializable {\n customerId: number;\n templateId: number;\n sourceLanguage: string;\n targetLanguages: string[];\n entries: TranslationProduct[];\n}\n\nexport interface XTMProjectEntryVerifyDTO extends Serializable {\n entries: XTMProjectEntriesVerifyDTO[];\n haveProjects: boolean;\n}\n\nexport interface MassOperationRequest extends Serializable {\n jobsIds: string[];\n operation: JobOperation;\n}\n\nexport interface ResetPasswordDTO extends Serializable {\n email: string;\n language: string;\n}\n\nexport interface VerifyTokenDTO extends Serializable {\n token: string;\n}\n\nexport interface UserDTO extends BaseDTO {\n email: string;\n status: boolean;\n clientName: string;\n interfaceLanguage: string;\n client: ClientDTO;\n xtmProperties: UserXTMPropertiesDTO;\n userSpecification: UserSpecificationDTO;\n}\n\nexport interface UserConfigurationDTO extends Serializable {\n forceDefaultCustomerSettings: boolean;\n defaultLanguage: string;\n}\n\nexport interface BaseDTO extends Serializable {\n id: string;\n createdAt: Date;\n modifiedAt: Date;\n}\n\nexport interface Page extends Slice {\n totalPages: number;\n totalElements: number;\n}\n\nexport interface LanguageMappingDTO extends Serializable {\n xtmCode: string;\n hubspotCode: string;\n}\n\nexport interface HubspotProductDTO extends Serializable {\n id: string;\n name: string;\n authorName: string;\n type: ProductType;\n updated: Date;\n screenshotPreviewUrl: string;\n currentState: string;\n sourceLanguages: string[];\n availableTargetLanguages: string[];\n}\n\nexport interface PageLanguageVariationsDTO extends Serializable {\n pageId: number;\n sourceLanguages: string[];\n}\n\nexport interface XTMProjectDTO extends Serializable {\n id: number;\n name: string;\n status: string;\n activityEnum: ActivityEnum;\n}\n\nexport interface XTMProjectEntriesVerifyDTO extends Serializable {\n entryId: string;\n entryName: string;\n projectId: number;\n}\n\nexport interface XTMCustomerDTO extends Serializable {\n xtmCustomerId: number;\n name: string;\n}\n\nexport interface HubspotLanguageDTO extends Serializable {\n code: string;\n name: string;\n}\n\nexport interface XTMTemplateDTO extends Serializable {\n xtmTemplateId: number;\n name: string;\n}\n\nexport interface XTMJobDTO extends BaseDTO {\n projectName: string;\n sourceLanguage: string;\n targetLanguage: string;\n errorMessage: string;\n errorMessagesDetails: string[];\n status: XTMJobStatus;\n workflowStep: string;\n jobProgress: number;\n dueDate: Date;\n projectId: number;\n customerId: number;\n templateId: number;\n contentName: string;\n}\n\nexport interface UserOverviewDTO extends BaseDTO {\n email: string;\n status: boolean;\n clientName: string;\n}\n\nexport interface UserXTMPropertiesDTO extends BaseDTO {\n xtmCustomerId: number;\n xtmTemplateId: number;\n}\n\nexport interface UserSpecificationDTO extends BaseDTO {\n firstName: string;\n lastName: string;\n defaultTranslationSourceLanguage: string;\n generateAndUploadScreenshots: boolean;\n forceDefaultCustomerSettings: boolean;\n automaticImport: boolean;\n importPerJobs: boolean;\n importAllJobs: boolean;\n importInterval: number;\n}\n\nexport interface Sort extends Streamable, Serializable {\n sorted: boolean;\n unsorted: boolean;\n}\n\nexport interface Pageable {\n offset: number;\n sort: Sort;\n paged: boolean;\n unpaged: boolean;\n pageNumber: number;\n pageSize: number;\n}\n\nexport interface Slice extends Streamable {\n size: number;\n content: T[];\n number: number;\n sort: Sort;\n numberOfElements: number;\n pageable: Pageable;\n first: boolean;\n last: boolean;\n}\n\nexport interface Streamable extends Iterable, Supplier> {\n empty: boolean;\n}\n\nexport interface Order extends Serializable {\n direction: Direction;\n property: string;\n ignoreCase: boolean;\n nullHandling: NullHandling;\n ascending: boolean;\n descending: boolean;\n}\n\nexport interface Iterable {\n}\n\nexport interface Supplier {\n}\n\nexport interface Stream extends BaseStream> {\n}\n\nexport interface BaseStream extends AutoCloseable {\n parallel: boolean;\n}\n\nexport interface AutoCloseable {\n}\n\nexport interface RestApplication {\n\n /**\n * HTTP GET /\n * Java method: cloud.xtm.hubspot.backend.common.app.api.RootController.getRoot\n */\n getRoot(options?: O): RestResponse;\n\n /**\n * HTTP GET /api\n * Java method: cloud.xtm.hubspot.backend.common.app.api.RootController.getApiRoot\n */\n getApiRoot(options?: O): RestResponse;\n\n /**\n * HTTP POST /api/administrators\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.createAdministrator\n */\n createAdministrator(createAdministrator: CreateAdministratorDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/administrators/pageable\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.getAllAdministrators\n */\n getAllAdministrators(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP DELETE /api/administrators/{administratorId}\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.deleteAdministrator\n */\n deleteAdministrator(administratorId: string, options?: O): RestResponse;\n\n /**\n * HTTP PUT /api/administrators/{administratorId}\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.editAdministrator\n */\n editAdministrator(administratorId: string, updateAdministrator: UpdateAdministratorDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/administrators/{administratorId}\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.getAdministrator\n */\n getAdministrator(administratorId: string, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/auth/admin\n * Java method: cloud.xtm.hubspot.backend.auth.app.api.AuthController.authenticateAdmin\n */\n authenticateAdmin(authRequest: AuthenticationRequest, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/auth/refreshToken\n * Java method: cloud.xtm.hubspot.backend.auth.app.api.AuthController.refreshToken\n */\n refreshToken(options?: O): RestResponse;\n\n /**\n * HTTP POST /api/auth/user\n * Java method: cloud.xtm.hubspot.backend.auth.app.api.AuthController.authenticateUser\n */\n authenticateUser(authRequest: AuthenticationRequest, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/client\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.createClient\n */\n createClient(createClient: CreateOrUpdateClientDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/client\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.getAllClients\n */\n getAllClients$GET$api_client(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/client/pageable\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.getAllClients\n */\n getAllClients$GET$api_client_pageable(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP DELETE /api/client/{clientId}\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.deleteClient\n */\n deleteClient(clientId: string, options?: O): RestResponse;\n\n /**\n * HTTP PUT /api/client/{clientId}\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.editClient\n */\n editClient(clientId: string, updateClient: CreateOrUpdateClientDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/client/{clientId}\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.getClient\n */\n getClient(clientId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/content/customers\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.getXTMCustomers\n */\n getXTMCustomers$GET$api_content_customers(options?: O): RestResponse;\n\n /**\n * HTTP POST /api/content/entries/verify\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.verify\n */\n verify(xtmProject: XTMProjectVerifyDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/content/projects/active\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.getActiveXTMProjects\n */\n getActiveXTMProjects(activeProjectSearch: ActiveProjectSearchDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/content/templates/{xtmCustomerId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.getXTMTemplatesForExistingUser\n */\n getXTMTemplatesForExistingUser$GET$api_content_templates_xtmCustomerId(xtmCustomerId: number, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/hubspot/blog-post/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.blog.api.HubspotBlogPostController.findHubspotBlogPosts\n */\n findHubspotBlogPosts(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP POST /api/hubspot/connect\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.auth.app.api.HubspotConnectController.connect\n */\n connect(connectRequest: HubspotConnectRequest, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/hubspot/connect/refresh\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.auth.app.api.HubspotConnectController.refresh\n */\n refresh(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/hubspot/connect/status\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.auth.app.api.HubspotConnectController.status\n */\n status(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/hubspot/email/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.email.api.HubspotEmailController.findHubspotEmails\n */\n findHubspotEmails(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP GET /api/hubspot/form/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.form.api.HubspotFormController.findHubspotForms\n */\n findHubspotForms(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP POST /api/hubspot/page/languages\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.page.api.HubspotPageController.getLanguageVariations\n */\n getLanguageVariations(pageIds: string[], options?: O): RestResponse;\n\n /**\n * HTTP GET /api/hubspot/page/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.page.api.HubspotPageController.findHubspotPages\n */\n findHubspotPages(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP GET /api/jobs\n * Java method: cloud.xtm.hubspot.backend.jobs.app.api.JobsController.findAllPaged\n */\n findAllPaged(queryParams?: { forceRefresh?: boolean; search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP POST /api/jobs\n * Java method: cloud.xtm.hubspot.backend.jobs.app.api.JobsController.performOperation\n */\n performOperation(request: MassOperationRequest, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/jobs/operation-applicable-for\n * Java method: cloud.xtm.hubspot.backend.jobs.app.api.JobsController.findJobsIdsByOperationType\n */\n findJobsIdsByOperationType(request: MassOperationRequest, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/notifications/admin/send-reset-password-email\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.sendResetPasswordEmailForAdmin\n */\n sendResetPasswordEmailForAdmin(resetPassword: ResetPasswordDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/notifications/change-password\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.changePassword\n */\n changePassword(changePassword: ChangePasswordDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/notifications/send-reset-password-email\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.sendResetPasswordEmail\n */\n sendResetPasswordEmail(resetPassword: ResetPasswordDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/notifications/verify-reset-password-token\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.verifyResetPasswordToken\n */\n verifyResetPasswordToken(verifyToken: VerifyTokenDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/translations/translate\n * Java method: cloud.xtm.hubspot.backend.translation.app.api.XTMTranslationController.translate\n */\n translate(translateRequest: TranslateRequestDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/users\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.createUser\n */\n createUser(createUser: CreateUserDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/users/import-configuration\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.importConfiguration\n */\n importConfiguration(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/users/pageable\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.getAllUsers\n */\n getAllUsers(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP DELETE /api/users/{userId}\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.deleteUser\n */\n deleteUser(userId: string, options?: O): RestResponse;\n\n /**\n * HTTP PUT /api/users/{userId}\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.editUser\n */\n editUser(userId: string, updateUser: UpdateUserDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/users/{userId}\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.getUser\n */\n getUser(userId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/callbacks/jobs/{clientId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.callback.app.api.XTMCallbackController.getJobFinishedCallback\n */\n getJobFinishedCallback(clientId: string, queryParams: { xtmJobId: number; xtmProjectId: number; }, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/xtm/callbacks/project/analysis/finished/{clientId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.callback.app.api.XTMCallbackController.analysisFinished\n */\n analysisFinished(clientId: string, queryParams: { xtmProjectId: number; }, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/xtm/connect\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.auth.app.api.XTMConnectController.connectToXtm\n */\n connectToXtm(xtmConnectRequest: XTMConnectRequest, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/connect/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.auth.app.api.XTMConnectController.getXTMConnectionParameters\n */\n getXTMConnectionParameters(userId: string, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/xtm/connect/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.auth.app.api.XTMConnectController.reconnectToXtm\n */\n reconnectToXtm(userId: string, xtmConnectRequest: XTMConnectRequest, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/customers\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.customers.app.api.XTMCustomersController.getXTMCustomers\n */\n getXTMCustomers$GET$api_xtm_customers(queryParams: { xtmAuthId: string; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/customers/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.customers.app.api.XTMCustomersController.getXTMCustomersForExistingUser\n */\n getXTMCustomersForExistingUser(userId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/languages/hubspot\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.languages.app.api.LanguageController.getHubspotLanguages\n */\n getHubspotLanguages(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/languages/xtm\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.languages.app.api.LanguageController.getXtmLanguagesCodes\n */\n getXtmLanguagesCodes(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/templates\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.templates.app.api.XTMTemplatesController.getXTMTemplates\n */\n getXTMTemplates(queryParams: { xtmAuthId: string; xtmCustomerId: number; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/templates/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.templates.app.api.XTMTemplatesController.getXTMTemplatesForExistingUser\n */\n getXTMTemplatesForExistingUser$GET$api_xtm_templates_userId(userId: string, queryParams: { xtmCustomerId: number; }, options?: O): RestResponse;\n}\n\nexport interface HttpClient {\n\n request(requestConfig: { method: string; url: string; queryParams?: any; data?: any; copyFn?: (data: R) => R; options?: O; }): RestResponse;\n}\n\nexport class RestApplicationClient implements RestApplication {\n\n constructor(protected httpClient: HttpClient) {\n }\n\n /**\n * HTTP GET /\n * Java method: cloud.xtm.hubspot.backend.common.app.api.RootController.getRoot\n */\n getRoot(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding``, options: options });\n }\n\n /**\n * HTTP GET /api\n * Java method: cloud.xtm.hubspot.backend.common.app.api.RootController.getApiRoot\n */\n getApiRoot(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api`, options: options });\n }\n\n /**\n * HTTP POST /api/administrators\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.createAdministrator\n */\n createAdministrator(createAdministrator: CreateAdministratorDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/administrators`, data: createAdministrator, options: options });\n }\n\n /**\n * HTTP GET /api/administrators/pageable\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.getAllAdministrators\n */\n getAllAdministrators(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/administrators/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP DELETE /api/administrators/{administratorId}\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.deleteAdministrator\n */\n deleteAdministrator(administratorId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"DELETE\", url: uriEncoding`api/administrators/${administratorId}`, options: options });\n }\n\n /**\n * HTTP PUT /api/administrators/{administratorId}\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.editAdministrator\n */\n editAdministrator(administratorId: string, updateAdministrator: UpdateAdministratorDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"PUT\", url: uriEncoding`api/administrators/${administratorId}`, data: updateAdministrator, options: options });\n }\n\n /**\n * HTTP GET /api/administrators/{administratorId}\n * Java method: cloud.xtm.hubspot.backend.administrators.app.api.ClientAdministratorController.getAdministrator\n */\n getAdministrator(administratorId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/administrators/${administratorId}`, options: options });\n }\n\n /**\n * HTTP POST /api/auth/admin\n * Java method: cloud.xtm.hubspot.backend.auth.app.api.AuthController.authenticateAdmin\n */\n authenticateAdmin(authRequest: AuthenticationRequest, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/auth/admin`, data: authRequest, options: options });\n }\n\n /**\n * HTTP GET /api/auth/refreshToken\n * Java method: cloud.xtm.hubspot.backend.auth.app.api.AuthController.refreshToken\n */\n refreshToken(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/auth/refreshToken`, options: options });\n }\n\n /**\n * HTTP POST /api/auth/user\n * Java method: cloud.xtm.hubspot.backend.auth.app.api.AuthController.authenticateUser\n */\n authenticateUser(authRequest: AuthenticationRequest, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/auth/user`, data: authRequest, options: options });\n }\n\n /**\n * HTTP POST /api/client\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.createClient\n */\n createClient(createClient: CreateOrUpdateClientDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/client`, data: createClient, options: options });\n }\n\n /**\n * HTTP GET /api/client\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.getAllClients\n */\n getAllClients$GET$api_client(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/client`, options: options });\n }\n\n /**\n * HTTP GET /api/client/pageable\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.getAllClients\n */\n getAllClients$GET$api_client_pageable(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/client/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP DELETE /api/client/{clientId}\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.deleteClient\n */\n deleteClient(clientId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"DELETE\", url: uriEncoding`api/client/${clientId}`, options: options });\n }\n\n /**\n * HTTP PUT /api/client/{clientId}\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.editClient\n */\n editClient(clientId: string, updateClient: CreateOrUpdateClientDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"PUT\", url: uriEncoding`api/client/${clientId}`, data: updateClient, options: options });\n }\n\n /**\n * HTTP GET /api/client/{clientId}\n * Java method: cloud.xtm.hubspot.backend.clients.app.api.ClientController.getClient\n */\n getClient(clientId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/client/${clientId}`, options: options });\n }\n\n /**\n * HTTP GET /api/content/customers\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.getXTMCustomers\n */\n getXTMCustomers$GET$api_content_customers(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/content/customers`, options: options });\n }\n\n /**\n * HTTP POST /api/content/entries/verify\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.verify\n */\n verify(xtmProject: XTMProjectVerifyDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/content/entries/verify`, data: xtmProject, options: options });\n }\n\n /**\n * HTTP POST /api/content/projects/active\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.getActiveXTMProjects\n */\n getActiveXTMProjects(activeProjectSearch: ActiveProjectSearchDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/content/projects/active`, data: activeProjectSearch, options: options });\n }\n\n /**\n * HTTP GET /api/content/templates/{xtmCustomerId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.content.api.XTMAddContentController.getXTMTemplatesForExistingUser\n */\n getXTMTemplatesForExistingUser$GET$api_content_templates_xtmCustomerId(xtmCustomerId: number, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/content/templates/${xtmCustomerId}`, options: options });\n }\n\n /**\n * HTTP GET /api/hubspot/blog-post/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.blog.api.HubspotBlogPostController.findHubspotBlogPosts\n */\n findHubspotBlogPosts(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/hubspot/blog-post/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/hubspot/connect\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.auth.app.api.HubspotConnectController.connect\n */\n connect(connectRequest: HubspotConnectRequest, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/hubspot/connect`, data: connectRequest, options: options });\n }\n\n /**\n * HTTP POST /api/hubspot/connect/refresh\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.auth.app.api.HubspotConnectController.refresh\n */\n refresh(options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/hubspot/connect/refresh`, options: options });\n }\n\n /**\n * HTTP GET /api/hubspot/connect/status\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.auth.app.api.HubspotConnectController.status\n */\n status(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/hubspot/connect/status`, options: options });\n }\n\n /**\n * HTTP GET /api/hubspot/email/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.email.api.HubspotEmailController.findHubspotEmails\n */\n findHubspotEmails(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/hubspot/email/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/hubspot/form/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.form.api.HubspotFormController.findHubspotForms\n */\n findHubspotForms(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/hubspot/form/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/hubspot/page/languages\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.page.api.HubspotPageController.getLanguageVariations\n */\n getLanguageVariations(pageIds: string[], options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/hubspot/page/languages`, data: pageIds, options: options });\n }\n\n /**\n * HTTP GET /api/hubspot/page/pageable\n * Java method: cloud.xtm.hubspot.backend.integration.hubspot.page.api.HubspotPageController.findHubspotPages\n */\n findHubspotPages(queryParams?: { page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/hubspot/page/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/jobs\n * Java method: cloud.xtm.hubspot.backend.jobs.app.api.JobsController.findAllPaged\n */\n findAllPaged(queryParams?: { forceRefresh?: boolean; search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/jobs`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/jobs\n * Java method: cloud.xtm.hubspot.backend.jobs.app.api.JobsController.performOperation\n */\n performOperation(request: MassOperationRequest, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/jobs`, data: request, options: options });\n }\n\n /**\n * HTTP POST /api/jobs/operation-applicable-for\n * Java method: cloud.xtm.hubspot.backend.jobs.app.api.JobsController.findJobsIdsByOperationType\n */\n findJobsIdsByOperationType(request: MassOperationRequest, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/jobs/operation-applicable-for`, data: request, options: options });\n }\n\n /**\n * HTTP POST /api/notifications/admin/send-reset-password-email\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.sendResetPasswordEmailForAdmin\n */\n sendResetPasswordEmailForAdmin(resetPassword: ResetPasswordDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/notifications/admin/send-reset-password-email`, data: resetPassword, options: options });\n }\n\n /**\n * HTTP POST /api/notifications/change-password\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.changePassword\n */\n changePassword(changePassword: ChangePasswordDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/notifications/change-password`, data: changePassword, options: options });\n }\n\n /**\n * HTTP POST /api/notifications/send-reset-password-email\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.sendResetPasswordEmail\n */\n sendResetPasswordEmail(resetPassword: ResetPasswordDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/notifications/send-reset-password-email`, data: resetPassword, options: options });\n }\n\n /**\n * HTTP POST /api/notifications/verify-reset-password-token\n * Java method: cloud.xtm.hubspot.backend.notification.app.api.NotificationController.verifyResetPasswordToken\n */\n verifyResetPasswordToken(verifyToken: VerifyTokenDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/notifications/verify-reset-password-token`, data: verifyToken, options: options });\n }\n\n /**\n * HTTP POST /api/translations/translate\n * Java method: cloud.xtm.hubspot.backend.translation.app.api.XTMTranslationController.translate\n */\n translate(translateRequest: TranslateRequestDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/translations/translate`, data: translateRequest, options: options });\n }\n\n /**\n * HTTP POST /api/users\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.createUser\n */\n createUser(createUser: CreateUserDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/users`, data: createUser, options: options });\n }\n\n /**\n * HTTP GET /api/users/import-configuration\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.importConfiguration\n */\n importConfiguration(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/users/import-configuration`, options: options });\n }\n\n /**\n * HTTP GET /api/users/pageable\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.getAllUsers\n */\n getAllUsers(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/users/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP DELETE /api/users/{userId}\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.deleteUser\n */\n deleteUser(userId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"DELETE\", url: uriEncoding`api/users/${userId}`, options: options });\n }\n\n /**\n * HTTP PUT /api/users/{userId}\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.editUser\n */\n editUser(userId: string, updateUser: UpdateUserDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"PUT\", url: uriEncoding`api/users/${userId}`, data: updateUser, options: options });\n }\n\n /**\n * HTTP GET /api/users/{userId}\n * Java method: cloud.xtm.hubspot.backend.users.app.api.UserController.getUser\n */\n getUser(userId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/users/${userId}`, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/callbacks/jobs/{clientId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.callback.app.api.XTMCallbackController.getJobFinishedCallback\n */\n getJobFinishedCallback(clientId: string, queryParams: { xtmJobId: number; xtmProjectId: number; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/callbacks/jobs/${clientId}`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/xtm/callbacks/project/analysis/finished/{clientId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.callback.app.api.XTMCallbackController.analysisFinished\n */\n analysisFinished(clientId: string, queryParams: { xtmProjectId: number; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/xtm/callbacks/project/analysis/finished/${clientId}`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/xtm/connect\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.auth.app.api.XTMConnectController.connectToXtm\n */\n connectToXtm(xtmConnectRequest: XTMConnectRequest, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/xtm/connect`, data: xtmConnectRequest, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/connect/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.auth.app.api.XTMConnectController.getXTMConnectionParameters\n */\n getXTMConnectionParameters(userId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/connect/${userId}`, options: options });\n }\n\n /**\n * HTTP POST /api/xtm/connect/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.auth.app.api.XTMConnectController.reconnectToXtm\n */\n reconnectToXtm(userId: string, xtmConnectRequest: XTMConnectRequest, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/xtm/connect/${userId}`, data: xtmConnectRequest, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/customers\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.customers.app.api.XTMCustomersController.getXTMCustomers\n */\n getXTMCustomers$GET$api_xtm_customers(queryParams: { xtmAuthId: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/customers`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/customers/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.customers.app.api.XTMCustomersController.getXTMCustomersForExistingUser\n */\n getXTMCustomersForExistingUser(userId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/customers/${userId}`, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/languages/hubspot\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.languages.app.api.LanguageController.getHubspotLanguages\n */\n getHubspotLanguages(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/languages/hubspot`, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/languages/xtm\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.languages.app.api.LanguageController.getXtmLanguagesCodes\n */\n getXtmLanguagesCodes(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/languages/xtm`, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/templates\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.templates.app.api.XTMTemplatesController.getXTMTemplates\n */\n getXTMTemplates(queryParams: { xtmAuthId: string; xtmCustomerId: number; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/templates`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/templates/{userId}\n * Java method: cloud.xtm.hubspot.backend.integration.xtm.templates.app.api.XTMTemplatesController.getXTMTemplatesForExistingUser\n */\n getXTMTemplatesForExistingUser$GET$api_xtm_templates_userId(userId: string, queryParams: { xtmCustomerId: number; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/templates/${userId}`, queryParams: queryParams, options: options });\n }\n}\n\nexport type RestResponse = Promise>;\n\nexport type ProductType = \"PAGE\" | \"BLOG_POST\" | \"EMAIL\" | \"FORM\";\n\nexport type JobOperation = \"CANCEL\" | \"DELETE\" | \"IMPORT\";\n\nexport type ActivityEnum = \"ACTIVE\" | \"ARCHIVED\" | \"AUTO_ARCHIVED\" | \"DELETED\" | \"INACTIVE\";\n\nexport type XTMJobStatus = \"NEW\" | \"SENT\" | \"IN_PROGRESS\" | \"FINISHED\" | \"CANCELLED\";\n\nexport type Direction = \"ASC\" | \"DESC\";\n\nexport type NullHandling = \"NATIVE\" | \"NULLS_FIRST\" | \"NULLS_LAST\";\n\nfunction uriEncoding(template: TemplateStringsArray, ...substitutions: any[]): string {\n let result = \"\";\n for (let i = 0; i < substitutions.length; i++) {\n result += template[i];\n result += encodeURIComponent(substitutions[i]);\n }\n result += template[template.length - 1];\n return result;\n}\n\n\n// Added by 'AxiosClientExtension' extension\n\nimport axios from \"axios\";\nimport * as Axios from \"axios\";\n\ndeclare module \"axios\" {\n export interface GenericAxiosResponse extends Axios.AxiosResponse {\n data: R;\n }\n}\n\nclass AxiosHttpClient implements HttpClient {\n\n constructor(private axios: Axios.AxiosInstance) {\n }\n\n request(requestConfig: { method: string; url: string; queryParams?: any; data?: any; copyFn?: (data: R) => R; options?: Axios.AxiosRequestConfig; }): RestResponse {\n function assign(target: any, source?: any) {\n if (source != undefined) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }\n\n const config: Axios.AxiosRequestConfig = {};\n config.method = requestConfig.method as typeof config.method; // `string` in axios 0.16.0, `Method` in axios 0.19.0\n config.url = requestConfig.url;\n config.params = requestConfig.queryParams;\n config.data = requestConfig.data;\n assign(config, requestConfig.options);\n const copyFn = requestConfig.copyFn;\n\n const axiosResponse = this.axios.request(config);\n return axiosResponse.then(axiosResponse => {\n if (copyFn && axiosResponse.data) {\n (axiosResponse as any).originalData = axiosResponse.data;\n axiosResponse.data = copyFn(axiosResponse.data);\n }\n return axiosResponse;\n });\n }\n}\n\nexport class AxiosRestApplicationClient extends RestApplicationClient {\n\n constructor(baseURL: string, axiosInstance: Axios.AxiosInstance = axios.create()) {\n axiosInstance.defaults.baseURL = baseURL;\n super(new AxiosHttpClient(axiosInstance));\n }\n}\n","import Axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { AuthenticationResult, AxiosRestApplicationClient } from './restApplicationClient';\n\nconst axiosInstance = Axios.create();\nexport const tokenStorageKey = '___TOKEN_KEY___';\nexport const refreshTokenStorageKey = '___TOKEN2_KEY___';\nexport const tokenTtlStorageKey = '___TOKEN3_KEY___';\n\n/**\n * request interceptor\n *\n * @param config - axios default configuration\n */\nconst requestInterceptor = (config: AxiosRequestConfig): AxiosRequestConfig => {\n let headers: AxiosRequestConfig['headers'];\n const accessToken = localStorage.getItem(tokenStorageKey);\n const refreshToken = localStorage.getItem(refreshTokenStorageKey);\n\n if (config.url && config.url.includes('refreshToken')) {\n headers = {\n Authorization: `${accessToken}`,\n 'X-Authorization': `${refreshToken}`,\n };\n } else {\n headers = {\n Authorization: `Bearer ${accessToken}`,\n };\n }\n\n config.headers = headers;\n return config;\n};\n\n/**\n * response interceptor\n *\n * @param response - axios response\n */\nconst responseInterceptor = (response: AxiosResponse): AxiosResponse => {\n if (response.config.url === 'api/auth/admin' || response.config.url === 'api/auth/refreshToken') {\n const { accessToken, refreshToken, ttl } = response.data as AuthenticationResult;\n localStorage.setItem(tokenStorageKey, accessToken);\n localStorage.setItem(refreshTokenStorageKey, refreshToken);\n localStorage.setItem(tokenTtlStorageKey, String(ttl));\n }\n\n return response;\n};\n\naxiosInstance.interceptors.request.use(requestInterceptor);\naxiosInstance.interceptors.response.use(responseInterceptor);\n\nconst baseUrl = '/';\n\n// eslint-disable-next-line require-jsdoc\nexport const clearToken = (): void => {\n localStorage.removeItem(tokenStorageKey);\n localStorage.removeItem(refreshTokenStorageKey);\n localStorage.removeItem(tokenTtlStorageKey);\n};\n\n// eslint-disable-next-line require-jsdoc\nexport const getTTL = (): number => {\n return Number(localStorage.getItem(tokenTtlStorageKey));\n};\n\nexport const api = new AxiosRestApplicationClient(baseUrl, axiosInstance);\nexport default axiosInstance;\n","export enum UserRouteParameterEnum {\n edit = 'edit',\n duplicate = 'duplicate',\n}\n","import React, { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { tokenStorageKey } from 'utils/axiosInstance';\nimport { HeaderLogoutButton } from '../LoginHeader.styled';\n\ninterface IProps {\n onClick: () => void;\n}\n\nexport const Logout: FC = ({ onClick }) => {\n const { t } = useTranslation();\n\n if (!!localStorage.getItem(tokenStorageKey)) {\n return (\n \n \n \n \n {t('common.logout')}\n \n );\n }\n\n return null;\n};\n","/**\n * Return string value either from .env file or window._env_ if defined\n *\n * @param key - Env variable key\n *\n */\nexport const getEnvironment = (key: string): string | undefined => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const env = (window as any)._env_;\n return env ? env[key] : process.env[key];\n};\n\n/**\n * Return all evnironmental variables either from .env file or window._env_ if defined\n */\nexport const getAllEnvironment = (): { [key: string]: string } => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (window as any)._env_ || process.env;\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { tokenStorageKey } from 'utils/axiosInstance';\nimport { getAllEnvironment } from 'utils/envHandler';\nimport { HeaderButton } from '../LoginHeader.styled';\n\ninterface IProps {\n onClick: (filename: string) => () => void;\n}\n\nexport const Manual: FC = ({ onClick }) => {\n const { REACT_APP_HELP_URL } = getAllEnvironment();\n const { t } = useTranslation();\n\n if (localStorage.getItem(tokenStorageKey) && REACT_APP_HELP_URL) {\n return (\n \n \n \n \n {t('common.help')}\n \n );\n }\n\n return null;\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { tokenStorageKey } from 'utils/axiosInstance';\nimport { getAllEnvironment } from 'utils/envHandler';\nimport { HeaderButton } from '../LoginHeader.styled';\n\ninterface IProps {\n onClick: (filename: string) => () => void;\n}\n\nexport const ReleaseNotes: FC = ({ onClick }) => {\n const { REACT_APP_CHANGELOG_URL } = getAllEnvironment();\n const { t } = useTranslation();\n\n if (localStorage.getItem(tokenStorageKey) && REACT_APP_CHANGELOG_URL) {\n return (\n \n \n \n \n {t('common.releaseNotes')}\n \n );\n }\n\n return null;\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { Button, CircularProgress } from '@material-ui/core';\nimport { PureComponent } from 'react';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { AppState } from 'store';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\n\ninterface IProps {\n submitting: boolean;\n backTo: string;\n}\n\ninterface IStateProps {\n fetchSpinner: boolean;\n}\n\nconst ButtonContainerDiv = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n width: 40%;\n margin: 0 auto;\n margin-top: 20px !important;\n & button {\n min-width: 100px;\n }\n`;\n\nconst ButtonLink = styled(Link)`\n text-decoration: none;\n`;\n\nclass ButtonContainer extends PureComponent {\n render(): JSX.Element {\n const { t, submitting, backTo, fetchSpinner } = this.props;\n return (\n \n \n \n \n \n {fetchSpinner ? : t('common.save')}\n \n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n fetchSpinner: getFetchSpinnerSelector(state),\n});\n\nexport default connect(mapStateToProps)(withTranslation()(ButtonContainer));\n","import styled from '@emotion/styled';\nimport moment from 'moment';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FieldDiv } from '../Input/CustomInput.style';\n\ninterface IProps {\n createdAt: Date;\n modifiedAt: Date;\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n text-align: left;\n font-weight: bold;\n color: #333;\n`;\n\nconst Date = styled.p`\n font-weight: 400;\n width: 400px;\n`;\n\nexport const EditData = (props: IProps): JSX.Element => {\n const { createdAt, modifiedAt } = props;\n const { t } = useTranslation();\n return (\n \n \n

{t('common.creationDate')}

\n {moment(createdAt).format('LLL')}\n
\n \n

{t('common.modificationDate')}

\n {moment(modifiedAt).format('LLL')}\n
\n
\n );\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Checkbox } from '@material-ui/core';\nimport { InputHTMLAttributes, PureComponent } from 'react';\nimport { FieldInputProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { CheckboxDiv, customInputStyles, FieldDiv } from './CustomInput.style';\n\ninterface IProps {\n label: string;\n inputProps: FieldInputProps;\n testId?: string;\n}\n\nexport class CustomCheckbox extends PureComponent {\n render(): JSX.Element {\n const { t, inputProps, label, testId } = this.props;\n return (\n \n {t(label)}\n \n }\n color={'secondary'}\n />\n \n \n );\n }\n}\n\nexport default withTranslation()(CustomCheckbox);\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Component } from 'react';\nimport { FieldInputProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { customInputStyles, FieldDiv, StyledTextField } from './CustomInput.style';\n\ninterface IProps {\n label: string;\n error?: string;\n touched?: boolean;\n inputProps: FieldInputProps;\n type?: string;\n testId?: string;\n disableAutoComplete?: boolean;\n}\n\nexport class CustomFieldRow extends Component {\n render(): JSX.Element {\n const { t, error, touched, type, testId, inputProps, disableAutoComplete } = this.props;\n\n return (\n
\n \n {t(this.props.label)}\n\n \n \n {error && touched && (\n \n {t(error)}\n \n )}\n
\n );\n }\n}\n\nexport default withTranslation()(CustomFieldRow);\n","/** @jsx jsx */\nimport { css, jsx } from '@emotion/core';\nimport { FormControl, SelectProps } from '@material-ui/core';\nimport { ChangeEvent, Component } from 'react';\nimport { FieldInputProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { customInputStyles, SelectDiv, StyledSelect } from './CustomInput.style';\n\ninterface IProps {\n label: string;\n error: string;\n touched?: boolean;\n inputProps: FieldInputProps;\n testId?: string;\n rows: Array<{ value: string; name: string }>;\n width?: string;\n selectProps?: SelectProps;\n onChange?: (\n event: ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>,\n ) => void;\n}\n\nexport class CustomSelect extends Component {\n render(): JSX.Element {\n const { t, error, touched, testId, inputProps, rows, width, onChange } = this.props;\n\n const selectStyle = css`\n width: ${width ? width : 'auto'};\n margin-top: 8px;\n margin-bottom: 4px;\n background-color: #fff;\n `;\n\n return (\n
\n \n {t(this.props.label)}\n \n \n {!this.props.inputProps.value && }\n {rows.map((row, index) => {\n return (\n \n );\n })}\n \n \n \n\n {error && touched && (\n \n {t(error)}\n \n )}\n
\n );\n }\n}\n\nexport default withTranslation()(CustomSelect);\n","export const AdministratorActionTypes = {\n CreateAdministrator: 'ADMINISTRATOR_CREATE_ADMINISTRATOR',\n CreateAdministratorError: 'ADMINISTRATOR_CREATE_ADMINISTRATOR_ERROR',\n CreateAdministratorSuccess: 'ADMINISTRATOR_CREATE_ADMINISTRATOR_SUCCESS',\n ClearAdministratorErrors: 'ADMINISTRATOR_CLEAR_ERRORS',\n GetAdministatorsPageable: 'ADMINISTRATOR_GET_ADMINISTRATORS_PAGEABLE',\n GetAdministratorsPageableSuccess: 'ADMINISTRATOR_GET_ADMINISTRATORS_PAGEABLE_SUCCESS',\n GetAdministratorsPageableError: 'ADMINISTRATOR_GET_ADMINISTRATORS_PAGEABLE_ERROR',\n GetAdministratorById: 'ADMINISTRATOR_GET_ADMINISTRATOR_BY_ID',\n GetAdministratorByIdSuccess: 'ADMINISTRATOR_GET_ADMINISTRATOR_BY_ID_SUCCESS',\n GetAdministratorByIdError: 'ADMINISTRATOR_GET_ADMINISTRATOR_BY_ID_ERROR',\n ClearAdministrator: 'ADMINISTRATOR_CLEAR_ADMINISTRATOR',\n EditAdministrator: 'ADMINISTRATOR_EDIT_ADMINISTRATOR',\n EditAdministratorSuccess: 'ADMINISTRATOR_EDIT_ADMINISTRATOR_SUCCESS',\n EditAdministratorError: 'ADMINISTRATOR_EDIT_ADMINISTRATOR_ERROR',\n};\n","import { createAction } from '@reduxjs/toolkit';\nimport { IEditAdministrator, IPaginationOptions } from 'types/api';\nimport { AdministratorDTO, Page } from 'utils/restApplicationClient';\nimport { CreateAdministratorDTO } from 'utils/restApplicationClientTypeOverrides';\nimport { AdministratorActionTypes } from './administrator.actions.types';\n\nexport const createAdministrator = createAction(AdministratorActionTypes.CreateAdministrator);\nexport const createAdministratorError = createAction(\n AdministratorActionTypes.CreateAdministratorError,\n);\nexport const createAdministratorSuccess = createAction(AdministratorActionTypes.CreateAdministratorSuccess);\n\nexport const clearAdministratorErrors = createAction(AdministratorActionTypes.ClearAdministratorErrors);\n\nexport const getAdministratorsPageable = createAction(\n AdministratorActionTypes.GetAdministatorsPageable,\n);\nexport const getAdministratorsPageableSuccess = createAction>(\n AdministratorActionTypes.GetAdministratorsPageableSuccess,\n);\nexport const getAdministratorsPageableError = createAction(AdministratorActionTypes.GetAdministratorsPageableError);\n\nexport const getAdministratorById = createAction(AdministratorActionTypes.GetAdministratorById);\nexport const getAdministratorByIdSuccess = createAction(\n AdministratorActionTypes.GetAdministratorByIdSuccess,\n);\nexport const getAdministratorByIdError = createAction(AdministratorActionTypes.GetAdministratorByIdError);\n\nexport const clearAdministrator = createAction(AdministratorActionTypes.ClearAdministrator);\n\nexport const editAdministrator = createAction(AdministratorActionTypes.EditAdministrator);\n\nexport const editAdministratorSuccess = createAction(AdministratorActionTypes.EditAdministratorSuccess);\n\nexport const editAdministratorError = createAction(AdministratorActionTypes.EditAdministratorError);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { AdministratorDTO, Page } from 'utils/restApplicationClient';\n\nexport const administratorErrorsSelector = (state: AppState): { [key: string]: string | undefined } =>\n state.administrator.errors;\n\nexport const administratorsPageableSelector = (state: AppState): Page | undefined =>\n state.administrator.administratorsPageable;\n\nexport const administratorSelector = (state: AppState): AdministratorDTO | undefined =>\n state.administrator.administrator;\n\nexport const getAdministratorErrorsSelector = createSelector(administratorErrorsSelector, (errors) => errors);\n\nexport const getAdministratorsPageableSelector = createSelector(\n administratorsPageableSelector,\n (administrators) => administrators,\n);\n\nexport const getAdministratorSelector = createSelector(administratorSelector, (administrator) => administrator);\n","export const ClientActionTypes = {\n GetClientsPageable: 'CLIENT_GET_CLIENTS_PAGEABLE',\n GetClientsPageableSuccess: 'CLIENT_GET_CLIENTS_PAGEABLE_SUCCESS',\n GetClientsPageableError: 'CLIENT_GET_CLIENTS_PAGEABLE_ERROR',\n GetAllClients: 'CLIENT_GET_ALL_CLIENTS',\n GetAllClientsSuccess: 'CLIENT_GET_ALL_CLIENTS_SUCCESS',\n GetAllClientsError: 'CLIENT_GET_ALL_CLIENTS_ERROR',\n CreateClient: 'CLIENT_CREATE_CLIENT',\n CreateClientSuccess: 'CLIENT_CREATE_CLIENT_SUCCESS',\n CreateClientError: 'CLIENT_CREATE_CLIENT_ERROR',\n EditClient: 'CLIENT_EDIT_CLIENT',\n EditClientSuccess: 'CLIENT_EDIT_CLIENT_SUCCESS',\n EditClientError: 'CLIENT_EDIT_CLIENT_ERROR',\n GetClientById: 'CLIENT_GET_CLIENT_BY_ID',\n GetClientByIdSuccess: 'CLIENT_GET_CLIENT_BY_ID_SUCCESS',\n GetClientByIdError: 'CLIENT_GET_CLIENT_BY_ID_ERROR',\n ClearClient: 'CLIENT_CLEAR_CLIENT',\n ClearClientErrors: 'CLIENT_CLEAR_ERRORS',\n GetXTMLanguageCodes: 'CLIENT_GET_XTM_LANGUAGE_CODES',\n GetXTMLanguageCodesSuccess: 'CLIENT_GET_XTM_LANGUAGE_CODES_SUCCESS',\n GetXTMLanguageCodesError: 'CLIENT_GET_XTM_LANGUAGE_CODES_ERRO',\n};\n","import { createAction } from '@reduxjs/toolkit';\nimport { IEditClient, IPaginationOptions } from 'types/api';\nimport { ClientDTO, CreateOrUpdateClientDTO, Page } from 'utils/restApplicationClient';\nimport { ClientActionTypes } from './client.actions.types';\n\nexport const getAllClients = createAction(ClientActionTypes.GetAllClients);\n\nexport const getAllClientsError = createAction(ClientActionTypes.GetAllClientsError);\nexport const getAllClientsSuccess = createAction(ClientActionTypes.GetAllClientsSuccess);\nexport const createClient = createAction(ClientActionTypes.CreateClient);\nexport const createClientSuccess = createAction(ClientActionTypes.CreateClientSuccess);\nexport const createClientError = createAction(ClientActionTypes.CreateClientError);\n\nexport const getClientsPageable = createAction(ClientActionTypes.GetClientsPageable);\nexport const getClientsPageableSuccess = createAction>(ClientActionTypes.GetClientsPageableSuccess);\nexport const getClientsPageableError = createAction(ClientActionTypes.GetClientsPageableError);\nexport const editClient = createAction(ClientActionTypes.EditClient);\nexport const editClientSuccess = createAction(ClientActionTypes.EditClientSuccess);\nexport const editClientError = createAction(ClientActionTypes.EditClientError);\n\nexport const getClientById = createAction(ClientActionTypes.GetClientById);\nexport const getClientByIdSuccess = createAction(ClientActionTypes.GetClientByIdSuccess);\nexport const getClientByIdError = createAction(ClientActionTypes.GetClientByIdError);\n\nexport const clearClient = createAction(ClientActionTypes.ClearClient);\n\nexport const clearClientErrors = createAction(ClientActionTypes.ClearClientErrors);\n\nexport const getXTMLanguageCodes = createAction(ClientActionTypes.GetXTMLanguageCodes);\n\nexport const getXTMLanguageCodesSuccess = createAction>(ClientActionTypes.GetXTMLanguageCodesSuccess);\n\nexport const getXTMLanguageCodesError = createAction(ClientActionTypes.GetXTMLanguageCodesError);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { IClientState } from './client.interface';\n\nconst clientStateSelector = (state: AppState): IClientState => state.client;\n\nexport const getClientsPageableSelector = createSelector(clientStateSelector, ({ clientsPageable }) => clientsPageable);\n\nexport const getAllClientsSelector = createSelector(clientStateSelector, ({ clients }) => clients);\n\nexport const getClientErrorsSelector = createSelector(clientStateSelector, ({ errors }) => errors);\n\nexport const getClientSelector = createSelector(clientStateSelector, ({ client }) => client);\n\nexport const getXTMLanguageCodesSelector = createSelector(\n clientStateSelector,\n ({ xtmLanguageCodes }) => xtmLanguageCodes,\n);\n","import { Dispatch } from '@reduxjs/toolkit';\nimport ButtonContainer from 'components/Form/ButtonContainer/ButtonContainer';\nimport { EditData } from 'components/Form/CilentData/EditData';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport CustomCheckbox from 'components/Form/Input/CustomCheckbox';\nimport CustomFieldRow from 'components/Form/Input/CustomFieldRow';\nimport CustomSelect from 'components/Form/Input/CustomSelect';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport React, { Component } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\nimport { AppDispatch, AppState } from 'store';\nimport {\n clearAdministrator,\n clearAdministratorErrors,\n createAdministrator,\n editAdministrator,\n getAdministratorById,\n} from 'store/administrator/administrator.actions';\nimport { getAdministratorErrorsSelector, getAdministratorSelector } from 'store/administrator/administrator.selectors';\nimport { getAllClients } from 'store/client/client.actions';\nimport { getAllClientsSelector } from 'store/client/client.selectors';\nimport { IEditAdministrator } from 'types/api';\nimport {\n composeValidators,\n email,\n fetchValidator,\n optionalValidator,\n password,\n required,\n} from 'utils/customValidators';\nimport { AdministratorDTO, ClientDTO } from 'utils/restApplicationClient';\nimport { CreateAdministratorDTO, UpdateAdministratorDTO } from 'utils/restApplicationClientTypeOverrides';\n\ninterface IState {\n submitValues?: CreateAdministratorDTO & UpdateAdministratorDTO;\n}\n\ninterface IDispatchProps {\n createAdministrator: (payload: CreateAdministratorDTO) => AppDispatch;\n getAllClients: () => AppDispatch;\n clearAdministratorErrors: () => AppDispatch;\n clearAdministrator: () => AppDispatch;\n getAdministratorById: (payload: string) => AppDispatch;\n editAdministrator: (payload: IEditAdministrator) => AppDispatch;\n}\n\ninterface IStateProps {\n clients: ClientDTO[];\n errors: { [key: string]: string | undefined };\n administrator?: AdministratorDTO;\n}\n\ninterface IProps {\n native?: boolean;\n}\n\ninterface IMatchParams {\n id?: string;\n}\n\nexport class AddAdministratorContainer extends Component<\n WithTranslation & RouteComponentProps & IDispatchProps & IStateProps & IProps,\n IState\n> {\n componentDidMount(): void {\n const {\n match: {\n params: { id: administratorId },\n },\n getAdministratorById,\n getAllClients,\n } = this.props;\n\n if (administratorId) {\n getAdministratorById(administratorId);\n }\n getAllClients();\n }\n\n componentWillUnmount(): void {\n const { clearAdministrator, clearAdministratorErrors } = this.props;\n clearAdministratorErrors();\n clearAdministrator();\n }\n\n parseClientSelect(rows: ClientDTO[]): Array<{ value: string; name: string }> {\n return rows.map((client) => ({\n value: client.id,\n name: client.clientName,\n }));\n }\n\n onSubmit = (values: CreateAdministratorDTO & UpdateAdministratorDTO): void => {\n const {\n match: {\n params: { id: administratorId },\n },\n createAdministrator,\n editAdministrator,\n } = this.props;\n this.props.clearAdministratorErrors();\n this.setState({ submitValues: values });\n if (administratorId) {\n editAdministrator({ administratorId, updateAdministrator: values });\n } else {\n createAdministrator(values);\n }\n };\n render(): JSX.Element {\n const {\n errors,\n match: {\n params: { id: administratorId },\n },\n administrator,\n native,\n } = this.props;\n return (\n \n \n (\n
\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n optionalValidator(value, password) : password\n }\n >\n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n {administrator && }\n \n \n )}\n />\n
\n );\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n createAdministrator: (payload: CreateAdministratorDTO): AppDispatch => dispatch(createAdministrator(payload)),\n getAllClients: (): AppDispatch => dispatch(getAllClients()),\n clearAdministratorErrors: (): AppDispatch => dispatch(clearAdministratorErrors()),\n getAdministratorById: (payload: string): AppDispatch => dispatch(getAdministratorById(payload)),\n clearAdministrator: (): AppDispatch => dispatch(clearAdministrator()),\n editAdministrator: (payload: IEditAdministrator): AppDispatch => dispatch(editAdministrator(payload)),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n clients: getAllClientsSelector(state),\n errors: getAdministratorErrorsSelector(state),\n administrator: getAdministratorSelector(state),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(withTranslation()(AddAdministratorContainer)));\n","import { Tooltip, TypographyProps } from '@material-ui/core';\nimport React, { Component, Fragment } from 'react';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport { CustomTooltipTypography } from './CustomTooltip.styled';\n\ninterface IProps {\n text: string;\n width: number;\n maxLines: number;\n typographyProps?: TypographyProps;\n textColor?: string;\n}\n\ninterface IState {\n isOverflown: boolean;\n}\n\ntype PropType = IProps & WithTranslation;\n\nclass Name extends Component {\n state = {\n isOverflown: false,\n };\n\n componentDidMount(): void {\n this.checkIfOverflown();\n }\n\n componentDidUpdate(): void {\n this.checkIfOverflown();\n }\n\n checkIfOverflown(): void {\n const { element } = this;\n\n if (element) {\n const isOverflown = element.offsetHeight < element.scrollHeight || element.offsetWidth < element.scrollWidth;\n\n if (this.state.isOverflown !== isOverflown) {\n this.setState({ isOverflown });\n }\n }\n }\n\n element: HTMLSpanElement | null = null;\n\n render(): JSX.Element {\n const { isOverflown } = this.state;\n const { text, width, t, typographyProps, maxLines, textColor } = this.props;\n const NameTypographyWidth = CustomTooltipTypography(`${width}px`, maxLines, textColor);\n\n return (\n \n {isOverflown ? (\n {t(text)}}>\n {\n this.element = element;\n }}\n >\n {t(text)}\n \n \n ) : (\n {\n this.element = element;\n }}\n >\n {t(text)}\n \n )}\n \n );\n }\n}\n\nexport default withTranslation()(Name);\n","import styled, { StyledComponent } from '@emotion/styled';\nimport { Typography, TypographyProps, TypographyStyle } from '@material-ui/core';\n\nexport const CustomTooltipTypography = (\n width: string,\n lines: number,\n textColor?: string,\n): StyledComponent => styled(Typography)`\n text-overflow: ellipsis !important;\n overflow: hidden !important;\n max-width: ${width} !important;\n display: -webkit-box;\n -webkit-line-clamp: ${lines};\n -webkit-box-orient: vertical;\n overflow: hidden;\n overflow-wrap: break-word;\n color: ${textColor ? `${textColor} !important` : `inherit !important`};\n`;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Box, Chip, CircularProgress, Tooltip, Typography } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport { Autocomplete, AutocompleteGetTagProps } from '@material-ui/lab';\nimport CustomTooltip from 'components/CustomTooltip/CustomTooltip';\nimport React, { ComponentType, Fragment, ReactNode } from 'react';\nimport { DragDropContext, Draggable, Droppable, OnDragEndResponder } from 'react-beautiful-dnd';\nimport { FieldRenderProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { IAutocompleteField } from 'types/shared';\nimport {\n AutocompleteChipDefaultSpan,\n AutocompleteTextField,\n CustomAutocompleteTypography,\n CustomDraggableContainer,\n CustomEndAdornment,\n InputDiv,\n} from './CustomInput.style';\n\ninterface IProps extends FieldRenderProps> {\n options: Array;\n onChange?: (event: React.ChangeEvent<{}>, value: IAutocompleteField | Array | null) => void;\n multi?: boolean;\n label: string;\n noOptionsText?: string;\n error?: string;\n spinner?: boolean;\n disabled?: boolean;\n column?: boolean;\n allowDragAndDrop?: boolean;\n placeholder?: string;\n}\n\ntype PropType = IProps & WithTranslation;\n\nexport class CustomAutocomplete extends React.Component {\n handleChange = (event: React.ChangeEvent<{}>, value: IAutocompleteField | Array | null): void => {\n const { onChange, input } = this.props;\n\n if (onChange) {\n onChange(event, value);\n }\n input.onChange(value);\n };\n\n onDragEnd: OnDragEndResponder = ({ destination, source }) => {\n const { input } = this.props;\n\n if (!destination) {\n return;\n }\n\n const filteredData = input.value as IAutocompleteField[];\n const [removed] = filteredData.splice(source.index, 1);\n\n filteredData.splice(destination.index, 0, removed);\n input.onChange(filteredData);\n };\n\n renderTags = (\n value: {\n label: string;\n value: string;\n }[],\n getTagProps: AutocompleteGetTagProps,\n ): JSX.Element => {\n return (\n \n {value.map((tag, index) => (\n }\n icon={}\n label={tag.label}\n />\n ))}\n \n );\n };\n\n renderCustomTags = (\n value: {\n label: string;\n value: string;\n }[],\n getTagProps: AutocompleteGetTagProps,\n ): JSX.Element => {\n const { t } = this.props;\n\n return (\n \n \n {(provided): JSX.Element => (\n \n {value.map((tag, index) => (\n \n {(provided): JSX.Element => (\n }\n icon={}\n label={\n
\n {tag.label}\n {index === 0 ? (\n {`(${t('common.default')})`}\n ) : (\n ''\n )}\n
\n }\n />\n )}\n
\n ))}\n
\n )}\n
\n
\n );\n };\n\n renderAdornment = (endAdornment: ReactNode): JSX.Element => {\n const { spinner, error, t } = this.props;\n\n if (spinner) {\n return (\n \n \n \n );\n }\n return (\n \n {error && (\n {t(error)}}>\n \n \n )}\n {endAdornment}\n \n );\n };\n\n render(): JSX.Element {\n const {\n options,\n multi,\n input,\n label,\n t,\n meta: { error, touched },\n spinner,\n disabled,\n noOptionsText,\n column,\n allowDragAndDrop,\n placeholder,\n } = this.props;\n\n return (\n \n {/* column as boolean throws type exception for some reason */}\n \n \n {t(label)}\n \n \n \n (option.label ? option.label : '')}\n onChange={this.handleChange}\n getOptionSelected={(option, value): boolean => value.label === option.label || !multi}\n value={input.value ? input.value : []}\n renderInput={(parameters): JSX.Element => (\n \n \n \n )}\n renderTags={allowDragAndDrop ? this.renderCustomTags : this.renderTags}\n renderOption={(option): JSX.Element => }\n size=\"small\"\n />\n {error && touched && (\n \n {t(error)}\n \n )}\n \n \n );\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default withTranslation()(CustomAutocomplete) as ComponentType>;\n","import styled from '@emotion/styled';\nimport { IconButton } from '@material-ui/core';\n\nexport const CustomLanguageMappingFieldContainer = styled.div`\n margin: 12px 12px 8px 0;\n width: 100%;\n`;\n\nexport const CustomLanguageMappingContainer = styled.fieldset`\n margin: 20px -16px;\n display: flex;\n flex-direction: column;\n padding: 16px 13px 16px 15px;\n border: 1px solid #6f8294;\n`;\n\nexport const CustomLanguageMappingLegend = styled.legend`\n text-align: initial;\n font-weight: 700;\n font-size: 14px;\n color: #333;\n padding: 0 4px;\n margin-left: -5px;\n`;\n\nexport const CustomLanguageMappingButton = styled(IconButton)`\n align-self: flex-start;\n padding: 0 !important;\n color: #38af49 !important;\n`;\n\nexport const CustomLanguageMappingRemoveButton = styled(IconButton)`\n margin: 36px -8px 0 -8px !important;\n`;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Box } from '@material-ui/core';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport CustomAutocomplete from 'components/Form/Input/CustomAutocomplete';\nimport { IClientForm } from 'containers/AddClientContainer/AddClientContainer';\nimport { FormApi } from 'final-form';\nimport { Component } from 'react';\nimport { Field } from 'react-final-form';\nimport { FieldArray, FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport { IAutocompleteField, ILanguageMappingField } from 'types/shared';\nimport { requiredAutocomplete } from 'utils/customValidators';\nimport {\n CustomLanguageMappingButton,\n CustomLanguageMappingContainer,\n CustomLanguageMappingFieldContainer,\n CustomLanguageMappingLegend,\n CustomLanguageMappingRemoveButton,\n} from './LanguageMappingContainer.styled';\n\ninterface IState {\n filteredLanguages: IAutocompleteField[][];\n}\n\ninterface IProps {\n form: FormApi;\n hubspotLanguages: Array;\n xtmLanguages: Array;\n initialValue?: Array;\n}\n\ntype PropType = IProps & WithTranslation;\n\nexport class LanguageMappingContainer extends Component {\n constructor(props: PropType) {\n super(props);\n\n this.state = {\n filteredLanguages: [],\n };\n }\n\n componentDidUpdate(): void {\n const { form, hubspotLanguages } = this.props;\n const { filteredLanguages } = this.state;\n\n const languageMappingFields = form.getFieldState('languageMappings')?.value;\n\n if (languageMappingFields?.length && hubspotLanguages && !filteredLanguages?.length) {\n this.setFilteredLanguages();\n }\n }\n\n setFilteredLanguages(): void {\n const { form, hubspotLanguages } = this.props;\n\n setTimeout(() => {\n const languageMappingFields = form.getFieldState('languageMappings')?.value;\n\n let filteredLanguages: IAutocompleteField[][] = [];\n\n const chosenHubspotLanguages: string[] =\n languageMappingFields?.map(({ hubspotLanguage }) => hubspotLanguage?.value) || [];\n\n filteredLanguages =\n languageMappingFields?.map((_, index) =>\n hubspotLanguages.filter(\n ({ value }) =>\n !chosenHubspotLanguages.includes(value) || languageMappingFields[index]?.hubspotLanguage?.value === value,\n ),\n ) || [];\n\n this.setState({\n filteredLanguages,\n });\n }, 1);\n }\n\n getHubspotLanguageValue(index: number): string | undefined {\n const { form } = this.props;\n const languageMappingField = form.getFieldState('languageMappings')?.value;\n\n return languageMappingField?.[index]?.hubspotLanguage?.value;\n }\n\n handleAddLanguageMapping = (\n fields: FieldArrayRenderProps['fields'],\n ) => (): void => {\n fields.push({ xtmLanguage: { label: '', value: '' }, hubspotLanguage: { label: '', value: '' } });\n this.setFilteredLanguages();\n };\n\n handleRemoveLanguageMapping = (\n fields: FieldArrayRenderProps['fields'],\n index: number,\n ) => (): void => {\n fields.remove(index);\n this.setFilteredLanguages();\n };\n\n onHubspotLanguageChange = (index: number, fields: FieldArrayRenderProps['fields']) => (\n _: React.ChangeEvent<{}>,\n value: IAutocompleteField | Array | null,\n ): void => {\n if (!value) {\n fields.update(index, '');\n }\n\n this.setFilteredLanguages();\n };\n\n render(): JSX.Element {\n const { filteredLanguages } = this.state;\n const { t, hubspotLanguages, xtmLanguages, initialValue } = this.props;\n\n return (\n \n {({ fields }): JSX.Element => (\n \n {t('client.languageMapping')}\n {fields.map(\n (name, index: number): JSX.Element => (\n \n \n ['fields'],\n )}\n />\n \n\n \n \n \n\n \n \n \n \n ),\n )}\n {hubspotLanguages?.length !== fields?.length && (\n \n \n \n )}\n \n )}\n \n );\n }\n}\n\nexport default withTranslation()(LanguageMappingContainer);\n","import { css } from '@emotion/core';\nimport styled from '@emotion/styled';\n\nexport const Title = styled.div`\n margin: 16px 0;\n`;\n\nexport const addClientContainerStyles = {\n root: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-start;\n `,\n heading: css`\n color: #0796eb;\n font-weight: 100;\n `,\n\n form: css`\n margin: 16px;\n `,\n btnContainer: css`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 40%;\n margin: 0 auto;\n margin-top: 20px !important;\n `,\n checkbox: css`\n display: flex;\n `,\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Dispatch } from '@reduxjs/toolkit';\nimport ButtonContainer from 'components/Form/ButtonContainer/ButtonContainer';\nimport { EditData } from 'components/Form/CilentData/EditData';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport CustomCheckbox from 'components/Form/Input/CustomCheckbox';\nimport CustomFieldRow from 'components/Form/Input/CustomFieldRow';\nimport { CustomInputError } from 'components/Form/Input/CustomInput.style';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport LanguageMappingContainer from 'containers/LanguageMapping/LanguageMappingContainer';\nimport arrayMutators from 'final-form-arrays';\nimport { useEffect, useState } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { useRouteMatch } from 'react-router-dom';\nimport { AppDispatch, AppState } from 'store';\nimport {\n clearClient,\n clearClientErrors,\n createClient,\n editClient,\n getClientById,\n getXTMLanguageCodes,\n} from 'store/client/client.actions';\nimport { getClientErrorsSelector, getClientSelector, getXTMLanguageCodesSelector } from 'store/client/client.selectors';\nimport { getDefaultUserLanguages } from 'store/user/user.actions';\nimport { getDefaultUserLanguagesSelector } from 'store/user/user.selectors';\nimport { IEditClient } from 'types/api';\nimport { ILanguageMappingField } from 'types/shared';\nimport { composeValidators, fetchValidator, required } from 'utils/customValidators';\nimport {\n ClientDTO,\n CreateOrUpdateClientDTO,\n HubspotLanguageDTO,\n LanguageMappingDTO,\n} from 'utils/restApplicationClient';\nimport { addClientContainerStyles } from './addClientContainer.style';\n\nexport interface IClientForm extends Omit {\n languageMappings: Array;\n}\n\ninterface IStateProps {\n errors: { [key: string]: string | undefined };\n client: ClientDTO | undefined;\n hubspotLanguages: Array;\n xtmLanguageCodes: Array;\n}\n\ninterface IDispatchProps {\n createClient: (payload: CreateOrUpdateClientDTO) => AppDispatch;\n editClient: (payload: IEditClient) => AppDispatch;\n getClientById: (payload: string) => AppDispatch;\n clearClient: () => AppDispatch;\n clearClientErrors: () => AppDispatch;\n getHubspotLanguages: () => AppDispatch;\n getXTMLanguageCodes: () => AppDispatch;\n}\n\n// eslint-disable-next-line max-lines-per-function\nexport const AddClientForm = (props: IStateProps & IDispatchProps): JSX.Element => {\n const {\n params: { id: clientId },\n } = useRouteMatch<{ id: string }>();\n\n const { t } = useTranslation();\n const { errors, createClient, editClient } = props;\n const [mappingInitialValue, setMappingInitialValue] = useState | undefined>(undefined);\n const [submitValues, setSubmitValues] = useState<{\n clientName?: string;\n status?: boolean;\n }>({\n clientName: undefined,\n status: undefined,\n });\n\n const { client, hubspotLanguages, xtmLanguageCodes } = props;\n\n const mapLanguages = (\n contentfulXtmLanguagesMap: Array,\n ): Array | undefined => {\n return contentfulXtmLanguagesMap?.map(\n ({ hubspotLanguage: { value: hubspotCode }, xtmLanguage: { value: xtmCode } }) => ({ xtmCode, hubspotCode }),\n );\n };\n\n const onSubmit = (values: IClientForm): void => {\n const languageMappings = mapLanguages(values.languageMappings) || [];\n\n props.clearClientErrors();\n setSubmitValues(values);\n\n if (clientId) {\n editClient({ clientId, updateClient: { ...values, languageMappings } });\n } else {\n createClient({ ...values, languageMappings });\n }\n };\n\n useEffect(() => {\n const { getHubspotLanguages, getXTMLanguageCodes } = props;\n\n getHubspotLanguages();\n getXTMLanguageCodes();\n\n if (clientId) {\n props.getClientById(clientId);\n }\n return (): void => {\n props.clearClient();\n props.clearClientErrors();\n };\n }, []);\n\n useEffect(() => {\n setMappingInitialValue(\n client?.languageMappings?.map(({ hubspotCode, xtmCode }) => ({\n hubspotLanguage: { label: hubspotCode, value: hubspotCode },\n xtmLanguage: { label: xtmCode, value: xtmCode },\n })),\n );\n }, [client]);\n\n return (\n \n \n (\n
\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n ({ label: code, value: code }))}\n xtmLanguages={xtmLanguageCodes.map((value) => ({ label: value, value }))}\n initialValue={mappingInitialValue}\n />\n {stateErrors && submitFailed && {t(stateErrors.error || '')}}\n {client && }\n \n \n )}\n />\n
\n );\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n createClient: (payload: CreateOrUpdateClientDTO): AppDispatch => dispatch(createClient(payload)),\n editClient: (payload: IEditClient): AppDispatch => dispatch(editClient(payload)),\n getClientById: (payload: string): AppDispatch => dispatch(getClientById(payload)),\n clearClient: (): AppDispatch => dispatch(clearClient()),\n clearClientErrors: (): AppDispatch => dispatch(clearClientErrors()),\n getHubspotLanguages: (): AppDispatch => dispatch(getDefaultUserLanguages()),\n getXTMLanguageCodes: (): AppDispatch => dispatch(getXTMLanguageCodes()),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n errors: getClientErrorsSelector(state),\n client: getClientSelector(state),\n hubspotLanguages: getDefaultUserLanguagesSelector(state),\n xtmLanguageCodes: getXTMLanguageCodesSelector(state),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AddClientForm);\n","import { css } from '@emotion/core';\nimport styled from '@emotion/styled';\n\nexport const accordionStyles = {\n root: css`\n margin: 0 0 20px 0 !important;\n box-sizing: border-box;\n width: 400px;\n `,\n summary: css`\n background: #dde0e6 !important;\n min-height: fit-content !important;\n\n .MuiAccordionSummary-content {\n margin: 0;\n align-items: center;\n span {\n padding-left: 8px;\n }\n }\n\n .MuiAccordionSummary-content.Mui-expanded {\n margin: 12px 0;\n }\n\n .Mui-expanded {\n margin: 0 !important;\n }\n\n .MuiIconButton-root {\n padding: 8px;\n }\n\n .MuiSvgIcon-root {\n padding-right: 0;\n width: auto;\n }\n .MuiSvgIcon-root.connectedIcon {\n transform-origin: center !important;\n transform: rotate(-45deg) !important;\n }\n\n .MuiAccordion-root {\n margin-bottom: 24px !important;\n }\n `,\n details: css`\n flex-direction: column;\n `,\n accordionError: css`\n border: 2px solid red;\n border-radius: 4px !important;\n `,\n accordionErrorText: css`\n color: red;\n text-align: start;\n max-width: 400px;\n margin: 12px 0;\n `,\n accordionLabel: css`\n font-weight: bold;\n color: #333;\n text-align: start;\n margin-top: 12px;\n `,\n spinner: css`\n width: 20px !important;\n height: auto !important;\n margin-right: 8px;\n `,\n};\n\nexport const AccordionDiv = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: start;\n margin-top: 20px;\n`;\n","export enum Roles {\n ADMIN_XTM = 'ROLE_XTM_ADMIN',\n ADMIN_CLIENT = 'ROLE_CLIENT_ADMIN',\n USER = 'USER',\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { CircularProgress } from '@material-ui/core';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport LinkIcon from '@material-ui/icons/Link';\nimport LinkOffIcon from '@material-ui/icons/LinkOff';\nimport { Component, Fragment } from 'react';\nimport { accordionStyles } from './Accordion.style';\n\ninterface IProps {\n connected: boolean;\n spinner?: boolean;\n error?: boolean;\n touched?: boolean;\n}\n\nclass AccordionIcon extends Component {\n renderIcon(): JSX.Element {\n const { connected, spinner, error, touched } = this.props;\n if (error && touched) {\n return ;\n }\n if (spinner) {\n return ;\n }\n if (connected) {\n return ;\n }\n return ;\n }\n\n render(): JSX.Element {\n return {this.renderIcon()};\n }\n}\n\nexport default AccordionIcon;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Accordion, AccordionDetails, AccordionSummary, Button, CircularProgress } from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { UserRouteParameterEnum } from 'enums/userRouteParameter';\nimport { createForm, FormApi, Unsubscribe } from 'final-form';\nimport { Component, Fragment } from 'react';\nimport { Field, FieldRenderProps, Form } from 'react-final-form';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { getconnectDataSpinnerSelector, getConnectToXtmSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport { clearUserErrors, xtmConnect, xtmConnectUser, xtmGetConnectData } from 'store/user/user.actions';\nimport {\n getUserErrorsSelector,\n getUserSelector,\n getXtmAuthorizationIdSelector,\n getXtmConnectDataSelector,\n} from 'store/user/user.selectors';\nimport { composeValidators, fetchValidatorObject, required } from 'utils/customValidators';\nimport { UserDTO } from 'utils/restApplicationClient';\nimport { XTMConnectionParametersDTO, XTMConnectRequest } from 'utils/restApplicationClientTypeOverrides';\nimport CustomField from '../../Input/CustomField';\nimport { customInputStyles } from '../../Input/CustomInput.style';\nimport { AccordionDiv, accordionStyles } from '../Accordion.style';\nimport AccordionIcon from '../AccordionIcon';\n\ninterface IStateProps {\n errors: { [key: string]: string };\n authorizationId?: string;\n user?: UserDTO;\n connectData?: XTMConnectionParametersDTO;\n connectDataSpinner: boolean;\n connectToXtmSpinner: boolean;\n}\n\ninterface IDispatchProps {\n xtmConnect: (payload: XTMConnectRequest) => AppDispatch;\n xtmConnectUser: (payload: { userId: string; xtmParameters: XTMConnectRequest }) => AppDispatch;\n clearUserErrors: () => AppDispatch;\n getConnectData: (payload: string) => AppDispatch;\n}\n\ninterface IState {\n connected: boolean;\n submitValues: XTMConnectRequest;\n}\n\ninterface IMatchParams {\n id?: string;\n type?: UserRouteParameterEnum;\n}\n\ntype PropType = FieldRenderProps &\n WithTranslation &\n IStateProps &\n IDispatchProps &\n RouteComponentProps;\n\nexport class XtmConnectAccordion extends Component {\n unsubscribe: Unsubscribe;\n constructor(props: PropType) {\n super(props);\n this.state = {\n connected: false,\n submitValues: {\n userUuidToCopyPassword: null,\n xtmUrl: '',\n xtmCompanyName: '',\n password: '',\n username: '',\n },\n };\n this.form = createForm({\n onSubmit: this.onSubmit,\n });\n this.unsubscribe = this.form.subscribe(\n () => {\n if (this.props.errors['xtmConnect']) {\n this.props.clearUserErrors();\n }\n },\n { values: true },\n );\n }\n\n componentDidMount(): void {\n const {\n match: {\n params: { id: userId },\n },\n getConnectData,\n } = this.props;\n if (userId) {\n getConnectData(userId);\n }\n }\n\n componentDidUpdate(previousProps: PropType): void {\n const {\n authorizationId,\n errors: { xtmConnect },\n connectData,\n match: {\n params: { id: userId, type },\n },\n xtmConnectUser,\n } = this.props;\n const { connected } = this.state;\n if (previousProps.authorizationId !== authorizationId && authorizationId) {\n this.props.input.onChange(authorizationId);\n this.setState({ connected: true });\n } else if (xtmConnect && connected) {\n this.props.input.onChange(undefined);\n this.setState({ connected: false });\n }\n if (previousProps.connectData === undefined && connectData && userId && type === UserRouteParameterEnum.edit) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { xtmUsername, xtmPassword, ...rest } = connectData;\n xtmConnectUser({\n userId,\n xtmParameters: {\n password: null,\n username: connectData.xtmUsername,\n userUuidToCopyPassword: userId,\n ...rest,\n },\n });\n }\n }\n\n componentWillUnmount(): void {\n this.unsubscribe();\n }\n\n form: FormApi>>;\n\n onSubmit = (values: XTMConnectRequest): void => {\n const {\n match: {\n params: { id: userId, type },\n },\n connectData,\n } = this.props;\n const isNewPassword = values.password !== connectData?.xtmPassword;\n if (userId) {\n const connectionParameters = {\n ...values,\n password: isNewPassword ? values.password : null,\n userUuidToCopyPassword: isNewPassword ? null : userId,\n };\n if (userId && type === UserRouteParameterEnum.edit) {\n this.props.xtmConnectUser({\n userId,\n xtmParameters: {\n ...connectionParameters,\n },\n });\n } else if (userId && type === UserRouteParameterEnum.duplicate) {\n this.props.xtmConnect({\n ...connectionParameters,\n });\n }\n } else {\n this.props.xtmConnect(values);\n }\n this.setState({ submitValues: values });\n };\n\n render(): JSX.Element {\n const { t, errors, connectData, connectDataSpinner, connectToXtmSpinner, meta } = this.props;\n return (\n \n {t('users.xtm.connect')}\n \n }>\n \n \n {this.state.connected ? t('users.connected') : t('users.disconnected')}\n \n \n \n {errors['xtmConnect'] && (\n \n {t(errors['xtmConnect'])}\n \n )}\n ,\n )}\n subscription={{ pristine: true, submitting: true }}\n render={({ handleSubmit, submitting }): JSX.Element => (\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {connectToXtmSpinner ? (\n \n ) : (\n t('users.xtm.connect')\n )}\n \n \n )}\n />\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n errors: getUserErrorsSelector(state),\n authorizationId: getXtmAuthorizationIdSelector(state),\n user: getUserSelector(state),\n connectData: getXtmConnectDataSelector(state),\n connectDataSpinner: getconnectDataSpinnerSelector(state),\n connectToXtmSpinner: getConnectToXtmSpinnerSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n xtmConnect: (payload: XTMConnectRequest): AppDispatch => dispatch(xtmConnect(payload)),\n clearUserErrors: (): AppDispatch => dispatch(clearUserErrors()),\n getConnectData: (payload: string): AppDispatch => dispatch(xtmGetConnectData(payload)),\n xtmConnectUser: (payload: { userId: string; xtmParameters: XTMConnectRequest }): AppDispatch =>\n dispatch(xtmConnectUser(payload)),\n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(withTranslation()(XtmConnectAccordion)));\n","import { css } from '@emotion/core';\n\nexport const tableToolbarStyles = {\n root: css`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0px 16px;\n margin-top: 8px;\n justify-content: space-between;\n `,\n input: css`\n background: #fff;\n `,\n endAdornmentIcon: css`\n width: 40px !important;\n `,\n endAdornmentSpinner: css`\n width: 40px !important;\n height: auto !important;\n padding: 8px;\n `,\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { CircularProgress } from '@material-ui/core';\nimport { tableToolbarStyles } from 'components/TableToolbar/TableToolbar.style';\nimport { FormApi } from 'final-form';\nimport { ChangeEvent, Component, Fragment } from 'react';\nimport { Field } from 'react-final-form';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { getCustomerSpinnerSelector, getTemplateSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport {\n clearXtmTemplates,\n xtmGetCustomers,\n xtmGetCustomersById,\n xtmGetTemplates,\n xtmGetTemplatesById,\n} from 'store/user/user.actions';\nimport {\n getDefaultUserLanguagesSelector,\n getXtmCustomersSelector,\n getXtmTemplatesSelector,\n} from 'store/user/user.selectors';\nimport { required } from 'utils/customValidators';\nimport { isObjectEqual } from 'utils/objectEquality';\nimport {\n HubspotLanguageDTO,\n UserDTO,\n XTMConnectDTO,\n XTMCustomerDTO,\n XTMTemplateDTO,\n} from 'utils/restApplicationClient';\nimport { IForm } from '../../../containers/AddUser/AddUserContainer';\nimport { EditData } from '../CilentData/EditData';\nimport CustomCheckbox from '../Input/CustomCheckbox';\nimport CustomSelect from '../Input/CustomSelect';\n\ninterface IProps {\n native?: boolean;\n authorizationId?: string;\n user?: UserDTO;\n form: FormApi;\n}\n\ninterface IDispatchProps {\n getCustomers: (payload: XTMConnectDTO) => AppDispatch;\n getTemplates: (payload: { xtmAuthId: string; xtmCustomerId: string }) => AppDispatch;\n getCustomersById: (payload: string) => AppDispatch;\n getTemplatesById: (payload: { userId: string; queryParams: { xtmCustomerId: string } }) => AppDispatch;\n clearTemplates: () => AppDispatch;\n}\n\ninterface IStateProps {\n customers?: XTMCustomerDTO[];\n templates?: XTMTemplateDTO[];\n customerSpinner: boolean;\n templateSpinner: boolean;\n defaultLanguages: HubspotLanguageDTO[];\n}\n\ntype PropType = IProps & IDispatchProps & IStateProps;\n\nexport class ConnectedFields extends Component {\n componentDidMount(): void {\n const { authorizationId, getCustomers, getCustomersById, user, getTemplatesById } = this.props;\n\n if (authorizationId) {\n getCustomers({ xtmAuthorizationId: authorizationId });\n } else if (user && user.id) {\n getCustomersById(user.id);\n if (user.xtmProperties.xtmCustomerId) {\n getTemplatesById({\n userId: user.id,\n queryParams: {\n xtmCustomerId: user.xtmProperties.xtmCustomerId.toString(),\n },\n });\n }\n }\n }\n\n componentDidUpdate(previousProps: PropType): void {\n const { authorizationId } = this.props;\n\n if (\n this.props.customers &&\n previousProps.customers &&\n this.shouldUpdate(previousProps.customers, this.props.customers) &&\n authorizationId\n ) {\n this.props.form.change('xtmCustomerId', undefined);\n this.props.form.change('xtmTemplateId', undefined);\n this.props.form.change('defaultTranslationSourceLanguage', undefined);\n this.props.clearTemplates();\n }\n }\n\n shouldUpdate(previousCustomers: XTMCustomerDTO[], customers: XTMCustomerDTO[]): boolean {\n if (previousCustomers.length !== customers.length) {\n return true;\n }\n return !customers.reduce((previous: boolean, current: XTMCustomerDTO, index) => {\n return (\n isObjectEqual(\n current as unknown as Record,\n previousCustomers[index] as unknown as Record\n ) && previous\n );\n }, true);\n }\n\n mapCustomersToRows(customers?: XTMCustomerDTO[]): Array<{ value: string; name: string }> {\n if (!customers) {\n return [];\n }\n return customers.map((customer) => ({\n value: customer.xtmCustomerId.toString(),\n name: customer.name,\n }));\n }\n\n mapTemplatesToRows(templates?: XTMTemplateDTO[]): Array<{ value: string; name: string }> {\n if (!templates) {\n return [];\n }\n return templates.map((template) => ({\n value: template.xtmTemplateId.toString(),\n name: template.name,\n }));\n }\n mapUsersLanguages(languages: HubspotLanguageDTO[]): Array<{ value: string; name: string }> {\n if (!languages) {\n return [];\n }\n return languages.map(({ code, name }) => ({\n value: code,\n name,\n }));\n }\n\n handleCustomerChange = (\n event: ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>\n ): void => {\n const { authorizationId, getTemplates, getTemplatesById, user, form } = this.props;\n const xtmCustomerId = event.target.value as string;\n\n form.change('defaultTranslationSourceLanguage', 'en');\n form.change('xtmTemplateId', undefined);\n\n if (authorizationId) {\n getTemplates({\n xtmAuthId: authorizationId,\n xtmCustomerId,\n });\n } else if (user && user.id) {\n getTemplatesById({\n userId: user.id,\n queryParams: { xtmCustomerId: event.target.value as string },\n });\n }\n };\n\n selectSpinner = (): JSX.Element => {\n return (\n \n );\n };\n\n render(): JSX.Element {\n const { native, customers, templates, customerSpinner, templateSpinner, user, defaultLanguages } = this.props;\n return (\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n {user && }\n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n customers: getXtmCustomersSelector(state),\n templates: getXtmTemplatesSelector(state),\n customerSpinner: getCustomerSpinnerSelector(state),\n templateSpinner: getTemplateSpinnerSelector(state),\n defaultLanguages: getDefaultUserLanguagesSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n getCustomers: (payload: XTMConnectDTO): AppDispatch => dispatch(xtmGetCustomers(payload)),\n getTemplates: (payload: { xtmAuthId: string; xtmCustomerId: string }): AppDispatch =>\n dispatch(xtmGetTemplates(payload)),\n getCustomersById: (payload: string): AppDispatch => dispatch(xtmGetCustomersById(payload)),\n getTemplatesById: (payload: { userId: string; queryParams: { xtmCustomerId: string } }): AppDispatch =>\n dispatch(xtmGetTemplatesById(payload)),\n clearTemplates: (): AppDispatch => dispatch(clearXtmTemplates()),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ConnectedFields);\n","import { Roles } from 'enums/roles';\n\n/**\n * Return whether user roles match route roles\n *\n * @param {Roles} routeRoles - Route roles\n * @param {Roles} userRoles - User roles\n * @returns {boolean} Either true or false\n */\nexport const checkRoles = (routeRoles: Roles[] = [], userRoles: Roles[] = []): boolean => {\n return routeRoles.reduce((previous: boolean, current: Roles) => userRoles.includes(current) || previous, false);\n};\n","export enum OrderDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n","import { Dispatch } from '@reduxjs/toolkit';\nimport XtmConnectAccordion from 'components/Form/Accordion/XtmConnectAccordion/XtmConnectAccordion';\nimport ButtonContainer from 'components/Form/ButtonContainer/ButtonContainer';\nimport ConnectedFields from 'components/Form/ConnectedFields/ConnectedFields';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport CustomCheckbox from 'components/Form/Input/CustomCheckbox';\nimport CustomFieldRow from 'components/Form/Input/CustomFieldRow';\nimport { CustomInputError } from 'components/Form/Input/CustomInput.style';\nimport CustomSelect from 'components/Form/Input/CustomSelect';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport { Roles } from 'enums/roles';\nimport { UserRouteParameterEnum } from 'enums/userRouteParameter';\nimport { createForm, FormApi } from 'final-form';\nimport React, { Component } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { AppDispatch, AppState } from 'store';\nimport { getAllClients } from 'store/client/client.actions';\nimport { getAllClientsSelector } from 'store/client/client.selectors';\nimport {\n clearUser,\n clearUserErrors,\n createUser,\n editUser,\n getDefaultUserLanguages,\n getUserById,\n} from 'store/user/user.actions';\nimport { IEditUser } from 'store/user/user.interface';\nimport {\n getDefaultUserLanguagesSelector,\n getUserDataSelector,\n getUserErrorsSelector,\n getUserSelector,\n getXtmAuthorizationIdSelector,\n} from 'store/user/user.selectors';\nimport { checkRoles } from 'utils/checkRoles';\nimport {\n composeValidators,\n email,\n fetchValidator,\n optionalValidator,\n password,\n required,\n} from 'utils/customValidators';\nimport { AuthenticationResult, ClientDTO, HubspotLanguageDTO, UserDTO } from 'utils/restApplicationClient';\nimport { CreateUserDTO, UpdateUserDTO } from 'utils/restApplicationClientTypeOverrides';\n\ninterface IStateProps {\n errors: { [key: string]: string };\n clients: ClientDTO[];\n user?: UserDTO;\n authorizationId?: string;\n currentUser: AuthenticationResult;\n defaultLanguages: HubspotLanguageDTO[];\n}\n\ninterface IDispatchProps {\n getAllClients: () => AppDispatch;\n createUser: (payload: CreateUserDTO) => AppDispatch;\n getUserById: (payload: string) => AppDispatch;\n editUser: (payload: IEditUser) => AppDispatch;\n clearUserErrors: () => AppDispatch;\n clearUser: () => AppDispatch;\n getDefaultUserLanguages: () => AppDispatch;\n}\n\ninterface IState {\n submitValues?: UpdateUserDTO | CreateUserDTO | IForm;\n}\n\ninterface IProps {\n native?: boolean;\n}\n\ninterface IMatchParams {\n id?: string;\n type?: UserRouteParameterEnum;\n}\n\nexport interface IForm extends Omit {\n language: string;\n}\n\nexport class AddUserContainer extends Component<\n WithTranslation & RouteComponentProps & IProps & IStateProps & IDispatchProps,\n IState\n> {\n componentDidMount(): void {\n const {\n getAllClients,\n getUserById,\n defaultLanguages,\n getDefaultUserLanguages,\n match: {\n params: { id: userId },\n },\n } = this.props;\n clearUserErrors();\n clearUser();\n getAllClients();\n\n if (!defaultLanguages?.length) {\n getDefaultUserLanguages();\n }\n\n if (userId) {\n getUserById(userId);\n }\n }\n\n componentWillUnmount(): void {\n const { clearUser, clearUserErrors } = this.props;\n clearUserErrors();\n clearUser();\n }\n\n parseClientSelect(rows: ClientDTO[]): Array<{ value: string; name: string }> {\n return rows.map((client) => ({\n value: client.id,\n name: client.clientName,\n }));\n }\n\n onSubmit = (values: IForm): void => {\n const {\n match: {\n params: { id: userId, type },\n },\n } = this.props;\n this.props.clearUserErrors();\n this.setState({ submitValues: values });\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { xtmAuthorizationId, ...editValues } = values;\n\n if (userId && type === UserRouteParameterEnum.edit) {\n this.props.editUser({\n userId,\n updateUser: editValues,\n });\n } else {\n this.props.createUser(values);\n }\n };\n\n form: FormApi = createForm({\n onSubmit: this.onSubmit,\n });\n\n render(): JSX.Element {\n const {\n match: {\n params: { id: userId, type },\n },\n native,\n errors,\n user,\n authorizationId,\n currentUser,\n t,\n } = this.props;\n\n const shouldConnectedFieldsRender =\n user && user.xtmProperties && user.xtmProperties.xtmCustomerId && user.xtmProperties.xtmTemplateId;\n\n const isClientAdmin = checkRoles([Roles.ADMIN_CLIENT], currentUser.roles as Roles[]);\n\n return (\n \n \n (\n
\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n optionalValidator(value, password)\n : password\n }\n >\n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n {stateErrors && submitFailed && {t(stateErrors.error)}}\n\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n \n {(inputProps): JSX.Element => }\n \n {(authorizationId || shouldConnectedFieldsRender) && (\n \n )}\n \n \n )}\n />\n
\n );\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n getAllClients: (): AppDispatch => dispatch(getAllClients()),\n createUser: (payload: CreateUserDTO): AppDispatch => dispatch(createUser(payload)),\n editUser: (payload: IEditUser): AppDispatch => dispatch(editUser(payload)),\n getUserById: (payload: string): AppDispatch => dispatch(getUserById(payload)),\n clearUserErrors: (): AppDispatch => dispatch(clearUserErrors()),\n clearUser: (): AppDispatch => dispatch(clearUser()),\n getDefaultUserLanguages: (): AppDispatch => dispatch(getDefaultUserLanguages()),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n clients: getAllClientsSelector(state),\n errors: getUserErrorsSelector(state),\n user: getUserSelector(state),\n authorizationId: getXtmAuthorizationIdSelector(state),\n currentUser: getUserDataSelector(state),\n defaultLanguages: getDefaultUserLanguagesSelector(state),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withTranslation()(AddUserContainer));\n","export const TableActionTypes = {\n setPaginationOptions: 'TABLE_SET_PAGINATION_OPTIONS',\n setPaginationOptionsNoEmit: 'TABLE_SET_PAGINATION_OPTIONS_NO_EMIT',\n clearPaginationOptions: 'TABLE_CLEAR_PAGINATION_OPTIONS',\n setPaginationSearch: 'TABLE_SET_PAGINATION_SEARCH',\n setPaginationAction: 'TABLE_SET_PAGINATION_ACTION',\n setPaginationSearchSpinner: 'TABLE_SET_SEARCH_SPINNER',\n};\n","import { ActionCreatorWithPayload, createAction } from '@reduxjs/toolkit';\nimport { IPaginationOptions } from 'types/api';\nimport { TableActionTypes } from './table.actions.types';\nimport { ITablePaginationOptions } from './table.interface';\n\nexport const setPaginationOptions = createAction(TableActionTypes.setPaginationOptions);\n\nexport const setPaginationOptionsNoEmit = createAction(\n TableActionTypes.setPaginationOptionsNoEmit,\n);\n\nexport const clearPaginationOptions = createAction(TableActionTypes.clearPaginationOptions);\n\nexport const setPaginationSearch = createAction(TableActionTypes.setPaginationSearch);\n\nexport const setPaginationAction = createAction | undefined>(\n TableActionTypes.setPaginationAction,\n);\n\nexport const setPaginationSearchSpinner = createAction(TableActionTypes.setPaginationSearchSpinner);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { ITablePaginationOptions } from './table.interface';\n\nconst paginationOptionsSelector = (state: AppState): ITablePaginationOptions => state.table.paginationOptions;\n\nconst searchSpinnerSelector = (state: AppState): boolean => state.table.searchSpinner;\n\nexport const getPaginationOptionsSelector = createSelector(\n paginationOptionsSelector,\n (paginationOptions) => paginationOptions,\n);\n\nexport const getPaginationSearchSpinnerSelector = createSelector(\n searchSpinnerSelector,\n (searchSpinner) => searchSpinner,\n);\n","import moment from 'moment';\nimport { IDateFields } from 'types/api';\n\ninterface IResponsePayload {\n content: Content[];\n}\n\n/**\n * Returns object with parsed date fields\n *\n * @param content - Database entity object with createdAt and modifiedAt fields\n *\n * @returns - Database entity object with parsed date fields\n */\nexport function parseDate(content: Content): Content {\n const { createdAt, modifiedAt } = content;\n const createdAtParsed = moment(createdAt).format('LLL');\n const modifiedAtParsed = moment(modifiedAt).format('LLL');\n return {\n ...content,\n createdAt: createdAtParsed,\n modifiedAt: modifiedAtParsed,\n };\n}\n\n/**\n * Returns an array of objects with parsed date fields\n *\n * @param payload - Database entity object with \"content\" field containing an array of objects with createdAt and modifiedAt fields\n *\n * @returns - Database entity object array with parsed date fields\n */\nexport function parseDateBulk>(\n payload: Payload,\n): Payload {\n const { content } = payload;\n const contentParsed = content.map((element) => parseDate(element));\n return { ...payload, content: contentParsed };\n}\n","import { css } from '@emotion/core';\n\nexport const customTableStyle = {\n root: css`\n margin: 12px;\n .sortLabel {\n svg {\n color: #10a4e4;\n }\n }\n `,\n button: css`\n padding: 4px !important;\n `,\n container: css`\n max-height: 500px;\n `,\n iconContainer: css`\n display: flex;\n .MuiSvgIcon-root:hover {\n color: #10a4e4;\n }\n `,\n spinnerCell: css`\n display: flex !important;\n justify-content: center;\n width: 100%;\n `,\n spinner: css`\n margin: 24px;\n `,\n};\n","import React, { Component } from 'react';\nimport { Trans } from 'react-i18next';\n\ninterface IProps {\n from: number;\n to: number;\n count: number;\n}\n\nclass PaginationTransLabel extends Component {\n render(): JSX.Element {\n const { from, to, count } = this.props;\n return (\n \n {count < 0 ? (\n \n ) : (\n \n )}\n \n );\n }\n}\n\nexport default PaginationTransLabel;\n","import { IconButtonTypeMap, SelectProps, TablePagination } from '@material-ui/core';\n// eslint-disable-next-line import/no-unresolved\nimport { OverrideProps } from '@material-ui/core/OverridableComponent';\nimport React, { ChangeEvent, MouseEvent, PureComponent } from 'react';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport PaginationTransLabel from './PaginationTransLabel';\n\nexport interface IPaginationProps {\n onChangePage: (event: MouseEvent | null, page: number) => void;\n onChangeRowsPerPage: (event: ChangeEvent) => void;\n page: number;\n rowsPerPage: number;\n count?: number;\n nativeSelect?: boolean;\n}\n\nclass Pagination extends PureComponent {\n getPaginationLabelDisplayedRows({ to, from, count }: { to: number; from: number; count: number }): JSX.Element {\n return ;\n }\n render(): JSX.Element {\n const { count, t, onChangePage, onChangeRowsPerPage, page, rowsPerPage } = this.props;\n return (\n \n }\n labelDisplayedRows={this.getPaginationLabelDisplayedRows}\n rowsPerPageOptions={[5, 10, 20, 50, 100]}\n labelRowsPerPage={t('table.labelRowsPerPage')}\n onChangePage={onChangePage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n page={page}\n rowsPerPage={rowsPerPage}\n count={count !== undefined ? count : -1}\n nextIconButtonProps={\n { 'data-testid': 'nextPage' } as Partial, 'button'>> | undefined\n }\n backIconButtonProps={\n { 'data-testid': 'previousPage' } as\n | Partial, 'button'>>\n | undefined\n }\n nextIconButtonText={t('table.nextPage')}\n backIconButtonText={t('table.previousPage')}\n />\n );\n }\n}\n\nexport default withTranslation()(Pagination);\n","import { css } from '@emotion/core';\n\nexport const tableEmptyStyles = {\n root: css`\n display: flex;\n align-items: center;\n flex-direction: column;\n background: #fff !important;\n padding: 20px;\n width: 100%;\n `,\n icon: css`\n font-size: 80px !important;\n `,\n text: css`\n color: grey;\n letter-spacing: 0.075em !important;\n `,\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Typography } from '@material-ui/core';\nimport SpeakerNotesOffIcon from '@material-ui/icons/SpeakerNotesOff';\nimport { PureComponent } from 'react';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { tableEmptyStyles } from './TableEmpty.style';\n\nclass TableEmpty extends PureComponent {\n render(): JSX.Element {\n const { t } = this.props;\n return (\n
\n \n {t('table.tableEmpty')}\n
\n );\n }\n}\n\nexport default withTranslation()(TableEmpty);\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport {\n CircularProgress,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableFooter,\n TableHead,\n TableRow,\n TableSortLabel,\n Tooltip,\n} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport PersonAddIcon from '@material-ui/icons/PersonAdd';\nimport { ActionCreatorWithPayload, Dispatch } from '@reduxjs/toolkit';\nimport { OrderDirection } from 'enums/filter';\nimport { ChangeEvent, ClassAttributes, Component, ComponentType, Fragment, MouseEvent } from 'react';\nimport { withTranslation, WithTranslation, WithTranslationProps } from 'react-i18next';\nimport { connect, ConnectedComponent } from 'react-redux';\nimport { AppDispatch, AppState } from 'store';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport { clearPaginationOptions, setPaginationAction, setPaginationOptions } from 'store/table/table.actions';\nimport { ITablePaginationOptions } from 'store/table/table.interface';\nimport { getPaginationOptionsSelector } from 'store/table/table.selectors';\nimport { IDateFields, IPaginationOptions } from 'types/api';\nimport { parseDateBulk } from 'utils/parseDate';\nimport { Page } from 'utils/restApplicationClient';\nimport { customTableStyle } from './CustomTable.style';\nimport Pagination, { IPaginationProps } from './Pagination';\nimport TableEmpty from './TableEmpty/TableEmpty';\n\ninterface IProps {\n headers: { id: string; label: string }[];\n onEdit: (row: T) => void;\n onDuplicate?: (row: T) => void;\n paginationAction: ActionCreatorWithPayload;\n pageable?: Page;\n search: string;\n nativeSelect?: boolean;\n fetchSpinnerOverride?: boolean;\n displayActionsLabel?: boolean;\n}\n\ninterface IState {\n page: number;\n rowsPerPage: number;\n orderBy: string;\n order: OrderDirection;\n}\n\ninterface IStateProps {\n paginationOptions: ITablePaginationOptions;\n fetchSpinner: boolean;\n}\n\ninterface IDispatchProps {\n setPaginationOptions: (payload: ITablePaginationOptions) => AppDispatch;\n setPaginationAction: (payload: ActionCreatorWithPayload | undefined) => AppDispatch;\n clearPaginationOptions: () => AppDispatch;\n}\n\ninterface IExtend extends IDateFields {\n id: string;\n}\n\nexport class CustomTable extends Component<\n IProps & WithTranslation & IStateProps & IDispatchProps,\n IState\n> {\n componentDidMount(): void {\n this.props.setPaginationAction(this.props.paginationAction);\n }\n\n componentWillUnmount(): void {\n this.props.setPaginationAction(undefined);\n this.props.clearPaginationOptions();\n }\n\n onChangePage = (event: MouseEvent | null, page: number): void => {\n this.props.setPaginationOptions({ page });\n };\n onChangeRowsPerPage = ({ target: { value } }: ChangeEvent): void => {\n this.props.setPaginationOptions({ size: Number(value) });\n };\n onChangeOrder = (property: string): (() => void) => {\n return (): void => {\n const { orderBy, order } = this.props.paginationOptions;\n const isAsc = orderBy === property && order === OrderDirection.ASC;\n this.props.setPaginationOptions({\n order: isAsc ? OrderDirection.DESC : OrderDirection.ASC,\n orderBy: property,\n });\n };\n };\n paginationProps = (): IPaginationProps => {\n const {\n pageable,\n paginationOptions: { page, size },\n } = this.props;\n return {\n onChangePage: this.onChangePage,\n onChangeRowsPerPage: this.onChangeRowsPerPage,\n page: page as number,\n rowsPerPage: size as number,\n count: pageable ? pageable.totalElements : 0,\n nativeSelect: this.props.nativeSelect,\n };\n };\n\n parseColumn = (row: T, key: keyof T): string => {\n if (key === 'client.clientName') {\n return String(row['clientName' as keyof T]);\n }\n if (key !== 'status') {\n return String(row[key]);\n }\n\n const { t } = this.props;\n\n if (row[key]) {\n return t('common.active');\n }\n return t('common.inactive');\n };\n\n renderEmpty = (): JSX.Element => {\n const { fetchSpinner, fetchSpinnerOverride } = this.props;\n if (fetchSpinner && !fetchSpinnerOverride) {\n return ;\n }\n return ;\n };\n\n render(): JSX.Element {\n const {\n headers,\n pageable,\n onEdit,\n t,\n fetchSpinner,\n fetchSpinnerOverride,\n onDuplicate,\n displayActionsLabel,\n } = this.props;\n const { orderBy, order } = this.props.paginationOptions;\n return (\n \n \n \n \n \n \n {Boolean(pageable && pageable.content && pageable.content.length && !fetchSpinner) && (\n \n {headers.map((headCell, index) => (\n \n \n {t(headCell.label)}\n \n \n ))}\n {displayActionsLabel ? t('common.actions') : ''}\n \n )}\n \n \n {(pageable && pageable.content && !pageable.content.length) ||\n !pageable ||\n (fetchSpinner && !fetchSpinnerOverride) ? (\n \n \n {this.renderEmpty()}\n \n \n ) : (\n pageable &&\n pageable.content &&\n pageable.content.length &&\n parseDateBulk>(pageable).content.map((row, index) => (\n \n {headers.map((header) => (\n {this.parseColumn(row, header.id as keyof T)}\n ))}\n \n
\n \n onEdit(row)}\n data-testid={`edit-${row.id}`}\n css={customTableStyle.button}\n >\n \n \n \n {onDuplicate ? (\n {t('users.duplicate')} }>\n onDuplicate(row)}\n >\n \n \n \n ) : null}\n
\n
\n
\n ))\n )}\n
\n \n \n \n \n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n paginationOptions: getPaginationOptionsSelector(state),\n fetchSpinner: getFetchSpinnerSelector(state),\n});\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n setPaginationOptions: (payload: ITablePaginationOptions): AppDispatch => dispatch(setPaginationOptions(payload)),\n setPaginationAction: (payload: ActionCreatorWithPayload | undefined): AppDispatch =>\n dispatch(setPaginationAction(payload)),\n clearPaginationOptions: (): AppDispatch => dispatch(clearPaginationOptions()),\n});\nexport default function CustomTableContainer(): ConnectedComponent<\n ComponentType<\n Pick<\n IProps & WithTranslation & IStateProps & IDispatchProps,\n | 'paginationOptions'\n | 'pageable'\n | 'headers'\n | 'onEdit'\n | 'paginationAction'\n | 'search'\n | 'setPaginationOptions'\n | 'setPaginationAction'\n | 'clearPaginationOptions'\n | 'onDuplicate'\n | 'fetchSpinner'\n | 'fetchSpinnerOverride'\n | 'displayActionsLabel'\n > &\n WithTranslationProps\n >,\n Pick<\n ClassAttributes> & IProps,\n | 'pageable'\n | 'ref'\n | 'key'\n | 'headers'\n | 'onEdit'\n | 'paginationAction'\n | 'search'\n | 'onDuplicate'\n | 'fetchSpinnerOverride'\n | 'displayActionsLabel'\n >\n> {\n return connect(\n mapStateToProps,\n mapDispatchToProps,\n )(withTranslation()(CustomTable as new (props: IProps & WithTranslation) => CustomTable));\n}\n","import { css } from '@emotion/core';\n\nexport const iconButtonLabelStyle = {\n button: css`\n text-transform: none !important;\n padding: 0px !important;\n `,\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { Button } from '@material-ui/core';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport { Component } from 'react';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { iconButtonLabelStyle } from './IconButtonLabel.style';\n\ninterface IProps {\n buttonLabelKey: string;\n onAdd: () => void;\n testId?: string;\n}\n\nconst Text = styled.span`\n letter-spacing: 0.075em;\n margin: 8px;\n font-size: 16px;\n`;\n\nclass IconButtonLabel extends Component {\n render(): JSX.Element {\n const { t, buttonLabelKey, onAdd } = this.props;\n return (\n
\n \n
\n );\n }\n}\n\nexport default withTranslation()(IconButtonLabel);\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { CircularProgress, TextField } from '@material-ui/core';\nimport SearchIcon from '@material-ui/icons/Search';\nimport IconButtonLabel from 'components/IconButtonLabel/IconButtonLabel';\nimport { ChangeEvent, Component, Dispatch } from 'react';\nimport { connect } from 'react-redux';\nimport { AppDispatch, AppState } from 'store';\nimport { setPaginationSearch, setPaginationSearchSpinner } from 'store/table/table.actions';\nimport { getPaginationSearchSpinnerSelector } from 'store/table/table.selectors';\nimport { tableToolbarStyles } from './TableToolbar.style';\n\ninterface IProps {\n buttonLabelKey: string;\n onAdd: () => void;\n}\n\ninterface IStateProps {\n searchSpinner: boolean;\n}\n\ninterface IDispatchProps {\n setSearch: (payload: string) => void;\n setPaginationSearchSpinner: (payload: boolean) => void;\n}\nexport class TableToolbar extends Component {\n state = {\n searchValue: '',\n };\n\n debounceFn: Function | undefined;\n\n throttleFn: (() => void) | undefined;\n throttle(callbackFunc: Function, limit: number): () => void {\n let wait = false;\n return (): void => {\n if (!wait) {\n callbackFunc();\n wait = true;\n setTimeout(function () {\n wait = false;\n }, limit);\n }\n };\n }\n\n debounce(callbackFunc: Function, limit: number): () => void {\n let timeout: NodeJS.Timeout | null;\n return (): void => {\n const later = (): void => {\n timeout = null;\n callbackFunc();\n };\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(later, limit);\n };\n }\n\n onInputChange = (event: ChangeEvent): void => {\n event.persist();\n if (!this.throttleFn) {\n this.throttleFn = this.throttle(() => {\n this.props.setPaginationSearchSpinner(true);\n }, 500);\n this.throttleFn();\n } else {\n this.throttleFn();\n }\n\n if (!this.debounceFn) {\n this.debounceFn = this.debounce(() => {\n return this.props.setSearch(event.target.value);\n }, 500);\n this.debounceFn();\n } else {\n this.debounceFn();\n }\n };\n\n render(): JSX.Element {\n const { buttonLabelKey, onAdd } = this.props;\n return (\n
\n
\n \n \n ) : (\n \n ),\n }}\n onChange={this.onInputChange}\n />\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n searchSpinner: getPaginationSearchSpinnerSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n setSearch: (payload: string): void => dispatch(setPaginationSearch(payload)),\n setPaginationSearchSpinner: (payload: boolean): void => dispatch(setPaginationSearchSpinner(payload)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TableToolbar);\n","import CustomTableContainer from 'components/Table/CustomTable';\nimport TableToolbar from 'components/TableToolbar/TableToolbar';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\nimport { AppState, AppDispatch } from 'store';\nimport { getAdministratorsPageable } from 'store/administrator/administrator.actions';\nimport { getAdministratorsPageableSelector } from 'store/administrator/administrator.selectors';\nimport { AdministratorDTO, Page } from 'utils/restApplicationClient';\nimport { ITablePaginationOptions } from 'store/table/table.interface';\nimport { OrderDirection } from 'enums/filter';\nimport { Dispatch } from 'redux';\nimport { setPaginationOptionsNoEmit } from 'store/table/table.actions';\n\ninterface IStateProps {\n administratorsPageable?: Page;\n fetchSpinnerOverride?: boolean;\n}\n\ninterface IDispatchProps {\n setPaginationOptions: (payload: ITablePaginationOptions) => AppDispatch;\n}\n\nconst TestTable = CustomTableContainer();\n\ntype IProps = IStateProps & RouteComponentProps & IDispatchProps;\n\nexport class AdministratorsContainer extends Component {\n headers = [\n { label: 'common.id', id: 'id' },\n { label: 'common.administratorEmail', id: 'email' },\n { label: 'common.client', id: 'client.clientName' },\n { label: 'common.status', id: 'status' },\n { label: 'common.creationDate', id: 'createdAt' },\n { label: 'common.lastModificationDate', id: 'modifiedAt' },\n ];\n onEdit = (row: AdministratorDTO): void => {\n this.props.history.push(`/administrator/edit/${row.id}`);\n };\n\n onAdd = (): void => {\n this.props.history.push(`/administrator/add`);\n };\n\n componentDidMount(): void {\n this.props.setPaginationOptions({\n order: OrderDirection.ASC,\n orderBy: 'email',\n });\n }\n\n render(): JSX.Element {\n const { administratorsPageable, fetchSpinnerOverride } = this.props;\n return (\n
\n \n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n administratorsPageable: getAdministratorsPageableSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n setPaginationOptions: (payload: ITablePaginationOptions): AppDispatch =>\n dispatch(setPaginationOptionsNoEmit(payload)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(AdministratorsContainer));\n","import CustomTableContainer from 'components/Table/CustomTable';\nimport TableToolbar from 'components/TableToolbar/TableToolbar';\nimport { OrderDirection } from 'enums/filter';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { getClientsPageable } from 'store/client/client.actions';\nimport { getClientsPageableSelector } from 'store/client/client.selectors';\nimport { setPaginationOptionsNoEmit } from 'store/table/table.actions';\nimport { ITablePaginationOptions } from 'store/table/table.interface';\nimport { ClientDTO, Page } from 'utils/restApplicationClient';\n\ninterface IStateProps {\n clientsPageable?: Page;\n fetchSpinnerOverride?: boolean;\n}\n\ninterface IDispatchProps {\n setPaginationOptions: (payload: ITablePaginationOptions) => AppDispatch;\n}\n\nconst TestTable = CustomTableContainer();\n\ntype IProps = IStateProps & RouteComponentProps & IDispatchProps;\n\nexport class ClientsContainer extends Component {\n headers = [\n { label: 'common.id', id: 'id' },\n { label: 'common.clientName', id: 'clientName' },\n { label: 'common.status', id: 'status' },\n { label: 'common.creationDate', id: 'createdAt' },\n { label: 'common.lastModificationDate', id: 'modifiedAt' },\n ];\n onEdit = (row: ClientDTO): void => {\n this.props.history.push(`client/edit/${row.id}`);\n };\n\n onAdd = (): void => {\n this.props.history.push('client/add');\n };\n\n componentDidMount(): void {\n this.props.setPaginationOptions({\n order: OrderDirection.ASC,\n orderBy: 'clientName',\n });\n }\n\n render(): JSX.Element {\n const { clientsPageable, fetchSpinnerOverride } = this.props;\n return (\n
\n \n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n clientsPageable: getClientsPageableSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n setPaginationOptions: (payload: ITablePaginationOptions): AppDispatch =>\n dispatch(setPaginationOptionsNoEmit(payload)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(ClientsContainer));\n","import { createSelector } from '@reduxjs/toolkit';\nimport { Page, UserDTO } from '../../utils/restApplicationClient';\nimport { AppState } from '../index';\n\nconst usersPageableSelector = (state: AppState): Page | undefined => state.user.usersPageable;\n\nconst allUsersSelector = (state: AppState): UserDTO[] => state.user.users;\n\nconst userSelector = (state: AppState): UserDTO | undefined => state.user.user;\n\nexport const getUsersPageableSelector = createSelector(usersPageableSelector, (users) => users);\n\nexport const getAllUsersSelector = createSelector(allUsersSelector, (users) => users);\n\nexport const getUserSelector = createSelector(userSelector, (updateUser) => updateUser);\n","import CustomTableContainer from 'components/Table/CustomTable';\nimport TableToolbar from 'components/TableToolbar/TableToolbar';\nimport { UserRouteParameterEnum } from 'enums/userRouteParameter';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { AppState, AppDispatch } from 'store';\nimport { usersPageable } from 'store/user/user.actions';\nimport { Page, UserDTO } from 'utils/restApplicationClient';\nimport { getUsersPageableSelector } from '../../store/user/users.selectors';\nimport { ITablePaginationOptions } from 'store/table/table.interface';\nimport { OrderDirection } from 'enums/filter';\nimport { setPaginationOptionsNoEmit } from 'store/table/table.actions';\nimport { Dispatch } from 'redux';\n\ninterface IStateProps {\n users?: Page;\n}\n\ninterface IDispatchProps {\n setPaginationOptions: (payload: ITablePaginationOptions) => AppDispatch;\n}\n\nconst UserTable = CustomTableContainer();\n\ntype IProps = IStateProps & RouteComponentProps & IDispatchProps;\n\nclass UsersContainer extends Component {\n headers = [\n { label: 'common.id', id: 'id' },\n { label: 'common.userEmail', id: 'email' },\n { label: 'common.client', id: 'client.clientName' },\n { label: 'common.status', id: 'status' },\n { label: 'common.creationDate', id: 'createdAt' },\n { label: 'common.modificationDate', id: 'modifiedAt' },\n ];\n onEdit = (row: UserDTO): void => {\n this.props.history.push(`user/${UserRouteParameterEnum.edit}/${row.id}`);\n };\n\n onDuplicate = (row: UserDTO): void => {\n this.props.history.push(`user/${UserRouteParameterEnum.duplicate}/${row.id}`);\n };\n\n onAdd = (): void => {\n this.props.history.push('user/add');\n };\n\n componentDidMount(): void {\n this.props.setPaginationOptions({\n order: OrderDirection.ASC,\n orderBy: 'email',\n });\n }\n\n render(): JSX.Element {\n const { users } = this.props;\n return (\n
\n \n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n users: getUsersPageableSelector(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n setPaginationOptions: (payload: ITablePaginationOptions): AppDispatch =>\n dispatch(setPaginationOptionsNoEmit(payload)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(UsersContainer));\n","import AddAdministratorContainer from 'containers/AddAdministrator/AddAdministratorContainer';\nimport AddClientContainer from 'containers/AddClientContainer/AddClientContainer';\nimport AddUserContainer from 'containers/AddUser/AddUserContainer';\nimport AdministratorsContainer from 'containers/Administrators/AdministratorsContainer';\nimport ClientsContainer from 'containers/Clients/ClientsContainer';\nimport UsersContainer from 'containers/Users/UsersContainer';\nimport { Roles } from 'enums/roles';\nimport { IRoute } from 'types/route';\n\nexport const mainRoutes: IRoute[] = [\n {\n pathname: '/clients',\n component: ClientsContainer,\n exact: true,\n roles: [Roles.ADMIN_XTM],\n navbar: true,\n routeTextKey: 'common.clients',\n },\n {\n pathname: '/administrators',\n component: AdministratorsContainer,\n exact: true,\n roles: [Roles.ADMIN_XTM],\n navbar: true,\n routeTextKey: 'common.administrators',\n },\n {\n pathname: '/users',\n component: UsersContainer,\n exact: true,\n roles: [Roles.ADMIN_CLIENT, Roles.ADMIN_XTM],\n navbar: true,\n routeTextKey: 'common.users',\n },\n {\n pathname: '/client/add',\n component: AddClientContainer,\n exact: true,\n roles: [Roles.ADMIN_XTM],\n },\n {\n pathname: '/client/edit/:id',\n component: AddClientContainer,\n exact: true,\n roles: [Roles.ADMIN_XTM],\n },\n {\n pathname: '/administrator/add',\n component: AddAdministratorContainer,\n exact: true,\n roles: [Roles.ADMIN_XTM],\n },\n {\n pathname: '/administrator/edit/:id',\n component: AddAdministratorContainer,\n exact: true,\n roles: [Roles.ADMIN_XTM],\n },\n {\n pathname: '/user/add',\n component: AddUserContainer,\n exact: true,\n roles: [Roles.ADMIN_CLIENT, Roles.ADMIN_XTM],\n },\n {\n pathname: '/user/:type/:id',\n component: AddUserContainer,\n exact: true,\n roles: [Roles.ADMIN_CLIENT, Roles.ADMIN_XTM],\n },\n];\n","import { css } from '@emotion/core';\n\nexport const navbarStyles = {\n root: css`\n display: flex;\n background: #fff;\n padding: 0 12px;\n border-bottom: 1px solid rgba(140, 140, 140, 0.4);\n `,\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Tab, Tabs } from '@material-ui/core';\nimport { Roles } from 'enums/roles';\nimport { mainRoutes } from 'layouts/main/routes';\nimport { Component } from 'react';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\nimport { AppState } from 'store';\nimport { getUserDataSelector } from 'store/user/user.selectors';\nimport { IRoute } from 'types/route';\nimport { checkRoles } from 'utils/checkRoles';\nimport { AuthenticationResult, RefreshTokenResult } from 'utils/restApplicationClient';\nimport { navbarStyles } from './Navbar.style';\n\ninterface IProps extends RouteComponentProps {\n pages: IRoute[];\n}\n\ninterface IStateProps {\n data: AuthenticationResult & RefreshTokenResult;\n}\n\nconst routeValues = mainRoutes.filter((route) => route.navbar);\n\nexport class Navbar extends Component {\n pagesToRender: IRoute[];\n\n constructor(props: IProps & WithTranslation & IStateProps) {\n super(props);\n this.pagesToRender = this.props.pages.filter((element) => {\n return element.navbar && element.routeTextKey && checkRoles(element.roles, this.props.data?.roles as Roles[]);\n });\n }\n\n setTabValue = (): string | boolean => {\n const value = this.pagesToRender.find((element) => this.props.location.pathname.startsWith(element.pathname));\n if (value && routeValues.includes(value)) {\n return value.pathname;\n }\n return false;\n };\n\n handleTabChange = (pathname: string) => (): void => {\n this.props.history.push(pathname);\n };\n\n render(): JSX.Element {\n const { t } = this.props;\n return (\n
\n \n {this.pagesToRender.map((element, index) => (\n \n ))}\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n data: getUserDataSelector(state),\n});\n\nexport default connect(mapStateToProps)(withTranslation()(withRouter(Navbar)));\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Box } from '@material-ui/core';\nimport { Logout } from 'components/LoginHeader/Buttons/Logout';\nimport { Manual } from 'components/LoginHeader/Buttons/Manual';\nimport { ReleaseNotes } from 'components/LoginHeader/Buttons/ReleaseNotes';\nimport LoginHeader from 'components/LoginHeader/LoginHeader';\nimport Navbar from 'components/Navbar/Navbar';\nimport { Roles } from 'enums/roles';\nimport { mainRoutes } from 'layouts/main/routes';\nimport { Component, Dispatch, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Route, RouteComponentProps, Switch } from 'react-router-dom';\nimport { AppDispatch, AppState } from 'store';\nimport { logoutUser } from 'store/user/user.actions';\nimport { getAuthSelector, getUserDataSelector } from 'store/user/user.selectors';\nimport { IRoute } from 'types/route';\nimport { checkRoles } from 'utils/checkRoles';\nimport { AuthenticationResult, RefreshTokenResult } from 'utils/restApplicationClient';\n\n// will change to user credentials later\ninterface IStateProps {\n isAuth: boolean;\n data: AuthenticationResult & RefreshTokenResult;\n}\n\ninterface IDispatchProps {\n logout: () => void;\n}\n\nexport class MainLayoutComponent extends Component {\n logout = (): void => {\n this.props.logout();\n };\n\n handleOpenLink = (url: string) => (): void => {\n window.open(url, '_blank');\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderRoute(route: IRoute, props: RouteComponentProps): JSX.Element {\n const { component: Component, roles } = route;\n const isAllowed = checkRoles(roles, (this.props.data?.roles as Roles[]) || roles);\n return isAllowed ? : ;\n }\n\n render(): JSX.Element {\n return (\n \n \n \n \n \n \n \n \n \n \n {mainRoutes.map((route) => {\n return (\n this.renderRoute(route, props)}\n />\n );\n })}\n } />\n \n \n );\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n logout: (): void => dispatch(logoutUser()),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n isAuth: getAuthSelector(state),\n data: getUserDataSelector(state),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MainLayoutComponent);\n","import { createBrowserHistory } from 'history';\n\nexport default createBrowserHistory();\n","import { OptionsObject } from 'notistack';\n\nexport const NotificationActionTypes = {\n showError: 'SHOW_ERROR',\n closeAlert: 'CLOSE_ALERT',\n showSuccessful: 'SHOW_SUCCESSFUL',\n};\n\nexport interface IShowErrorPayload {\n message: string;\n options?: OptionsObject;\n}\n\nexport interface ICloseAlertPayload {\n key: number;\n}\n","import { createAction } from '@reduxjs/toolkit';\nimport { ICloseAlertPayload, IShowErrorPayload, NotificationActionTypes } from './notify.actions.types';\n\ntype ErrorAction = typeof NotificationActionTypes;\n\nexport const showError = createAction(NotificationActionTypes.showError);\nexport const showSuccessful = createAction(\n NotificationActionTypes.showSuccessful,\n);\nexport const closeAlert = createAction(\n NotificationActionTypes.closeAlert,\n);\n","// @flow\nimport { useSnackbar, withSnackbar } from 'notistack';\nimport React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { closeAlert } from 'store/notify/notify.actions';\nimport { IErrorNofitication } from 'store/notify/notify.interface';\n\nlet displayed: number[] = [];\n\nexport function getDisplayedKeys(): number[] {\n return displayed;\n}\n\nconst NotifyAlert: React.FC = () => {\n const dispatch = useDispatch>();\n const notifications = useSelector((store) => store.notify.notifications);\n const { t } = useTranslation();\n\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n useEffect(() => {\n notifications.map(({ key, message, options = {} }) => {\n if (displayed.includes(key)) return;\n\n enqueueSnackbar(t(message), {\n key,\n ...options,\n onClose: (event, reason, myKey) => {\n if (options.onClose) {\n options.onClose(event, reason, myKey);\n }\n },\n onExited: (_event, myKey) => {\n dispatch(closeAlert({ key: Number(myKey) }));\n displayed = [...displayed.filter((dp) => dp !== key)];\n },\n });\n\n displayed = [...displayed, key];\n });\n }, [notifications, closeSnackbar, enqueueSnackbar, dispatch]);\n\n return null;\n};\n\nexport default withSnackbar(NotifyAlert);\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Box, CircularProgress, IconButton } from '@material-ui/core';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport { appStyle } from 'App.style';\nimport SessionExpiredModal from 'components/SessionExpiredModal/SessionExpiredModal';\nimport LoginLayoutComponent from 'layouts/login';\nimport { loginRoutes } from 'layouts/login/routes';\nimport MainLayoutComponent from 'layouts/main';\nimport { ProviderContext, SnackbarProvider } from 'notistack';\nimport React, { RefObject, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route, Router, Switch } from 'react-router-dom';\nimport { Dispatch } from 'redux';\nimport { AppDispatch } from 'store';\nimport { verifyToken } from 'store/user/user.actions';\nimport { getAuthSelector, getVerifyFinishSelector } from 'store/user/user.selectors';\nimport browserHistory from 'utils/browserHistory';\nimport NotifyAlert from './components/NotifyAlert/NotifyAlert';\n\nconst notistackRef: RefObject = React.createRef();\nconst onClickDismiss = (key: string | number) => (): void => {\n if (notistackRef.current) {\n notistackRef.current.closeSnackbar(key);\n }\n};\n\nfunction App(): JSX.Element {\n const isAuth = useSelector(getAuthSelector);\n const verifyFinished = useSelector(getVerifyFinishSelector);\n const dispatch = useDispatch>();\n\n useEffect(() => {\n dispatch(verifyToken());\n }, []);\n\n const mainLayoutRoute = (): JSX.Element => {\n if (!isAuth && !verifyFinished) {\n return ;\n } else if (!isAuth && verifyFinished) {\n return ;\n }\n return ;\n };\n return (\n (\n \n \n \n \n \n )}\n >\n {verifyFinished && (\n
\n \n \n \n \n {loginRoutes.map((route) => {\n return (\n {\n return isAuth ? : ;\n }}\n />\n );\n })}\n \n \n \n
\n )}\n \n );\n}\n\nexport default App;\n","import { combineEpics, Epic, ofType } from 'redux-observable';\nimport { from, of } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport store from 'store';\nimport { showError, showSuccessful } from 'store/notify/notify.actions';\nimport { setPaginationSearchSpinner } from 'store/table/table.actions';\nimport { sessionExpired } from 'store/user/user.actions';\nimport { api } from 'utils/axiosInstance';\nimport {\n createAdministrator,\n createAdministratorError,\n createAdministratorSuccess,\n editAdministrator,\n editAdministratorSuccess,\n getAdministratorById,\n getAdministratorByIdError,\n getAdministratorByIdSuccess,\n getAdministratorsPageable,\n getAdministratorsPageableError,\n getAdministratorsPageableSuccess,\n} from './administrator.actions';\n\nexport const createAdministratorEpic: Epic = (action$, _, { browserHistory }) =>\n action$.pipe(\n ofType(createAdministrator.type),\n switchMap(({ payload }) =>\n from(api.createAdministrator(payload)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'administrator.success.create' }));\n browserHistory.push('/administrators');\n return of(createAdministratorSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'administrator.errors.create' }));\n if (status === 409) {\n return of(createAdministratorError('administrator.errors.duplicate'));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(createAdministratorError(undefined));\n }),\n ),\n ),\n );\n\nexport const getAdministratorByIdEpic: Epic = (actions$, _, { browserHistory }) =>\n actions$.pipe(\n ofType(getAdministratorById.type),\n switchMap(({ payload }) =>\n from(api.getAdministrator(payload)).pipe(\n switchMap(({ data }) => of(getAdministratorByIdSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n browserHistory.push('/administrators');\n store.dispatch(showError({ message: 'administrator.errors.noId' }));\n return of(getAdministratorByIdError());\n }),\n ),\n ),\n );\n\nexport const getAdministratorsPageableEpic: Epic = (action$) =>\n action$.pipe(\n ofType(getAdministratorsPageable.type),\n switchMap(({ payload }) =>\n from(api.getAllAdministrators(payload)).pipe(\n switchMap(({ data }) => {\n store.dispatch(setPaginationSearchSpinner(false));\n return of(getAdministratorsPageableSuccess(data));\n }),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n store.dispatch(setPaginationSearchSpinner(false));\n store.dispatch(showError({ message: 'administrator.errors.get' }));\n return of(getAdministratorsPageableError());\n }),\n ),\n ),\n );\n\nexport const editAdministratorEpic: Epic = (actions$, _, { browserHistory }) =>\n actions$.pipe(\n ofType(editAdministrator.type),\n switchMap(({ payload }) =>\n from(api.editAdministrator(payload.administratorId, payload.updateAdministrator)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'administrator.success.edit' }));\n browserHistory.push('/administrators');\n return of(editAdministratorSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'administrator.errors.edit' }));\n if (status === 409) {\n return of(createAdministratorError('administrator.errors.duplicate'));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(createAdministratorError(undefined));\n }),\n ),\n ),\n );\n\nexport const administratorEpics = combineEpics(\n createAdministratorEpic,\n getAdministratorsPageableEpic,\n getAdministratorByIdEpic,\n editAdministratorEpic,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n clearAdministrator,\n clearAdministratorErrors,\n createAdministratorError,\n getAdministratorByIdSuccess,\n getAdministratorsPageableSuccess,\n} from './administrator.actions';\nimport { IAdministratorState } from './administrator.interface';\n\nconst initState: IAdministratorState = {\n errors: {},\n administratorsPageable: undefined,\n administrator: undefined,\n};\n\nexport const administratorReducer = createReducer(initState, (builder) =>\n builder\n .addCase(createAdministratorError, (state, action) => {\n state.errors.email = action.payload;\n })\n .addCase(clearAdministratorErrors, (state) => {\n state.errors = {};\n })\n .addCase(getAdministratorsPageableSuccess, (state, action) => {\n state.administratorsPageable = action.payload;\n })\n .addCase(getAdministratorByIdSuccess, (state, action) => {\n state.administrator = action.payload;\n })\n .addCase(clearAdministrator, (state) => {\n state.administrator = undefined;\n }),\n);\n","import { combineEpics, Epic, ofType } from 'redux-observable';\nimport { from, of } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport store from 'store';\nimport { showError, showSuccessful } from 'store/notify/notify.actions';\nimport { setPaginationSearchSpinner } from 'store/table/table.actions';\nimport { sessionExpired } from 'store/user/user.actions';\nimport { api } from 'utils/axiosInstance';\nimport {\n createClient,\n createClientError,\n createClientSuccess,\n editClient,\n editClientSuccess,\n getAllClients,\n getAllClientsError,\n getAllClientsSuccess,\n getClientById,\n getClientByIdError,\n getClientByIdSuccess,\n getClientsPageable,\n getClientsPageableError,\n getClientsPageableSuccess,\n getXTMLanguageCodes,\n getXTMLanguageCodesError,\n getXTMLanguageCodesSuccess,\n} from './client.actions';\n\nconst getAllClientsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(getAllClients.type),\n switchMap(() =>\n from(api.getAllClients$GET$api_client()).pipe(\n switchMap(({ data }) => of(getAllClientsSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n store.dispatch(showError({ message: 'client.errors.get' }));\n return of(getAllClientsError());\n }),\n ),\n ),\n );\n\nconst createClientEpic: Epic = (action$, _, { browserHistory }) =>\n action$.pipe(\n ofType(createClient.type),\n switchMap(({ payload }) =>\n from(api.createClient(payload)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'client.success.create' }));\n browserHistory.push('/clients');\n return of(createClientSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'client.errors.create' }));\n if (status === 409) {\n return of(createClientError('client.errors.duplicate'));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(createClientError(undefined));\n }),\n ),\n ),\n );\n\nconst getClientsPageableEpic: Epic = (action$) =>\n action$.pipe(\n ofType(getClientsPageable.type),\n switchMap(({ payload }) =>\n from(api.getAllClients$GET$api_client_pageable(payload)).pipe(\n switchMap(({ data }) => {\n store.dispatch(setPaginationSearchSpinner(false));\n return of(getClientsPageableSuccess(data));\n }),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n store.dispatch(setPaginationSearchSpinner(false));\n store.dispatch(showError({ message: 'client.errors.get' }));\n return of(getClientsPageableError());\n }),\n ),\n ),\n );\n\nconst editClientEpic: Epic = (actions$, _, { browserHistory }) =>\n actions$.pipe(\n ofType(editClient.type),\n switchMap(({ payload }) =>\n from(api.editClient(payload.clientId, payload.updateClient)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'client.success.edit' }));\n browserHistory.push('/clients');\n return of(editClientSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'client.errors.edit' }));\n if (status === 409) {\n return of(createClientError('client.errors.duplicate'));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(createClientError(undefined));\n }),\n ),\n ),\n );\n\nconst getClientByIdEpic: Epic = (actions$, _, { browserHistory }) =>\n actions$.pipe(\n ofType(getClientById.type),\n switchMap(({ payload }) =>\n from(api.getClient(payload)).pipe(\n switchMap(({ data }) => of(getClientByIdSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n browserHistory.push('/clients');\n store.dispatch(showError({ message: 'client.errors.noId' }));\n return of(getClientByIdError());\n }),\n ),\n ),\n );\n\nconst getXTMLanguageCodesEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(getXTMLanguageCodes.type),\n switchMap(({ payload }) =>\n from(api.getXtmLanguagesCodes(payload)).pipe(\n switchMap(({ data }) => of(getXTMLanguageCodesSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(getXTMLanguageCodesError(), showError({ message: 'client.errors.languages.xtm' }));\n }),\n ),\n ),\n );\n\nexport const clientEpics = combineEpics(\n getClientsPageableEpic,\n getAllClientsEpic,\n createClientEpic,\n editClientEpic,\n getClientByIdEpic,\n getXTMLanguageCodesEpic,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n clearClient,\n clearClientErrors,\n createClientError,\n getAllClientsSuccess,\n getClientByIdSuccess,\n getClientsPageableSuccess,\n getXTMLanguageCodesSuccess,\n} from './client.actions';\nimport { IClientState } from './client.interface';\n\nconst initState: IClientState = {\n clients: [],\n errors: {},\n clientsPageable: undefined,\n client: undefined,\n xtmLanguageCodes: [],\n};\n\nexport const clientReducer = createReducer(initState, (builder) =>\n builder\n .addCase(getAllClientsSuccess, (state, action) => {\n state.clients = action.payload;\n })\n .addCase(createClientError, (state, action) => {\n state.errors.clientName = action.payload;\n })\n .addCase(getClientsPageableSuccess, (state, action) => {\n state.clientsPageable = action.payload;\n })\n .addCase(clearClient, (state) => {\n state.client = undefined;\n })\n .addCase(getClientByIdSuccess, (state, action) => {\n state.client = action.payload;\n })\n .addCase(clearClientErrors, (state) => {\n state.errors = {};\n })\n .addCase(getXTMLanguageCodesSuccess, (state, { payload }) => {\n state.xtmLanguageCodes = payload;\n }),\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport { closeAlert, showError, showSuccessful } from './notify.actions';\nimport { INotifyState } from './notify.interface';\n\nconst initState: INotifyState = {\n notifications: [],\n};\n\nexport const notifyReducer = createReducer(initState, (builder) =>\n builder\n .addCase(showError, (state, action) => {\n state.notifications = [\n ...state.notifications,\n {\n key: new Date().getTime() + Math.floor(Math.random() * 1000),\n message: action.payload.message,\n options: {\n ...(action.payload.options as object),\n variant: 'error',\n },\n },\n ];\n })\n .addCase(showSuccessful, (state, action) => {\n state.notifications = [\n ...state.notifications,\n {\n key: new Date().getTime() + Math.floor(Math.random() * 1000),\n message: action.payload.message,\n options: {\n ...(action.payload.options as object),\n variant: 'success',\n },\n },\n ];\n })\n .addCase(closeAlert, (state, action) => {\n state.notifications = [...state.notifications.filter((notify) => notify.key !== action.payload.key)];\n }),\n);\n","export const SpinnerActionTypes = {\n setFetchSpinner: 'SPINNER_SET_LOADER',\n setTemplateSpinner: 'SPINNER_SET_TEMPLATE_LOADER',\n setCustomerSpinner: 'SPINNER_SET_CUSTOMER_LOADER',\n setConnectDataSpinner: 'SPINNER_SET_CONNECT_DATA_LOADER',\n setConnectToXtmSpinner: 'SPINNER_SET_CONNECT_TO_XTM',\n setConnectToCMSSpinner: 'SPINNER_SET_CONNECT_TO_CMS',\n setDefaultUserLanguagesSpinner: 'SPINNER_SET_DEFAULT_USER_LANGUAGES',\n};\n","import { createAction } from '@reduxjs/toolkit';\nimport { SpinnerActionTypes } from './spinner.actions.types';\n\nexport const setFetchSpinner = createAction(SpinnerActionTypes.setFetchSpinner);\n\nexport const setTemplateSpinner = createAction(SpinnerActionTypes.setTemplateSpinner);\n\nexport const setCustomerSpinner = createAction(SpinnerActionTypes.setCustomerSpinner);\n\nexport const setConnectDataSpinner = createAction(SpinnerActionTypes.setConnectDataSpinner);\n\nexport const setConnectToXtmSpinner = createAction(SpinnerActionTypes.setConnectToXtmSpinner);\n\nexport const setConnectToCMSSpinner = createAction(SpinnerActionTypes.setConnectToCMSSpinner);\n\nexport const setDefaultUserLanguageSpinner = createAction(SpinnerActionTypes.setDefaultUserLanguagesSpinner);\n","import { combineEpics, Epic, ofType } from 'redux-observable';\nimport { of } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\nimport {\n createAdministrator,\n createAdministratorError,\n createAdministratorSuccess,\n getAdministratorById,\n getAdministratorByIdError,\n getAdministratorByIdSuccess,\n getAdministratorsPageable,\n getAdministratorsPageableError,\n getAdministratorsPageableSuccess,\n} from 'store/administrator/administrator.actions';\nimport {\n createClient,\n createClientError,\n createClientSuccess,\n editClient,\n editClientSuccess,\n getClientById,\n getClientByIdError,\n getClientByIdSuccess,\n getClientsPageable,\n getClientsPageableError,\n getClientsPageableSuccess,\n} from 'store/client/client.actions';\nimport {\n changePassword,\n changePasswordError,\n changePasswordSuccess,\n changeUserPassword,\n changeUserPasswordError,\n changeUserPasswordSuccess,\n createUser,\n createUserError,\n createUserSuccess,\n editUser,\n editUserSuccess,\n getDefaultUserLanguages,\n getDefaultUserLanguagesError,\n getDefaultUserLanguagesSuccess,\n getUserById,\n getUserByIdError,\n getUserByIdSuccess,\n loginUser,\n loginUserError,\n loginUserSuccess,\n resetPassword,\n resetPasswordError,\n resetPasswordSuccess,\n resetUserPassword,\n resetUserPasswordError,\n resetUserPasswordSuccess,\n usersPageable,\n usersPageableError,\n usersPageableSuccess,\n xtmConnect,\n xtmConnectError,\n xtmConnectSuccess,\n xtmConnectToCMS,\n xtmConnectToCMSError,\n xtmConnectToCMSSuccess,\n xtmConnectUser,\n xtmConnectUserError,\n xtmConnectUserSuccess,\n xtmGetConnectData,\n xtmGetConnectDataError,\n xtmGetConnectDataSuccess,\n xtmGetCustomers,\n xtmGetCustomersById,\n xtmGetCustomersByIdError,\n xtmGetCustomersByIdSuccess,\n xtmGetCustomersError,\n xtmGetCustomersSuccess,\n xtmGetTemplates,\n xtmGetTemplatesById,\n xtmGetTemplatesByIdError,\n xtmGetTemplatesByIdSuccess,\n xtmGetTemplatesError,\n xtmGetTemplatesSuccess,\n} from 'store/user/user.actions';\nimport {\n setConnectDataSpinner,\n setConnectToCMSSpinner,\n setConnectToXtmSpinner,\n setCustomerSpinner,\n setDefaultUserLanguageSpinner,\n setFetchSpinner,\n setTemplateSpinner,\n} from './spinner.actions';\n\nconst fetchSpinnerEpic: Epic = (action$) =>\n action$.pipe(\n ofType(\n createUser.type,\n createUserSuccess.type,\n createUserError.type,\n usersPageable.type,\n usersPageableSuccess.type,\n usersPageableError.type,\n editUser.type,\n editUserSuccess.type,\n getUserById.type,\n getUserByIdSuccess.type,\n getUserByIdError.type,\n createClient.type,\n createClientSuccess.type,\n createClientError.type,\n getClientsPageable.type,\n getClientsPageableError.type,\n getClientsPageableSuccess.type,\n editClient.type,\n editClientSuccess.type,\n getClientById.type,\n getClientByIdError.type,\n getClientByIdSuccess.type,\n createAdministrator.type,\n createAdministratorSuccess.type,\n createAdministratorError.type,\n getAdministratorsPageable.type,\n getAdministratorsPageableSuccess.type,\n getAdministratorsPageableError.type,\n getAdministratorById.type,\n getAdministratorByIdSuccess.type,\n getAdministratorByIdError.type,\n loginUser.type,\n loginUserError.type,\n loginUserSuccess.type,\n resetPassword.type,\n resetPasswordError.type,\n resetPasswordSuccess.type,\n changePassword.type,\n changePasswordError.type,\n changePasswordSuccess.type,\n changeUserPassword.type,\n changeUserPasswordError.type,\n changeUserPasswordSuccess.type,\n resetUserPassword.type,\n resetUserPasswordError.type,\n resetUserPasswordSuccess.type,\n ),\n debounceTime(500),\n switchMap(({ type }) => {\n if ((type as string).endsWith('SUCCESS') || (type as string).endsWith('ERROR')) {\n return of(setFetchSpinner(false));\n }\n return of(setFetchSpinner(true));\n }),\n );\n\nconst templateSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(\n xtmGetTemplates.type,\n xtmGetTemplatesSuccess.type,\n xtmGetTemplatesError.type,\n xtmGetTemplatesById.type,\n xtmGetTemplatesByIdError.type,\n xtmGetTemplatesByIdSuccess.type,\n ),\n debounceTime(500),\n switchMap(({ type }) => {\n if ((type as string).endsWith('SUCCESS') || (type as string).endsWith('ERROR')) {\n return of(setTemplateSpinner(false));\n }\n return of(setTemplateSpinner(true));\n }),\n );\n\nconst customerSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(\n xtmGetCustomers.type,\n xtmGetCustomersSuccess.type,\n xtmGetCustomersError.type,\n xtmGetCustomersById.type,\n xtmGetCustomersByIdError.type,\n xtmGetCustomersByIdSuccess.type,\n ),\n debounceTime(500),\n switchMap(({ type }) => {\n if ((type as string).endsWith('SUCCESS') || (type as string).endsWith('ERROR')) {\n return of(setCustomerSpinner(false));\n }\n return of(setCustomerSpinner(true));\n }),\n );\n\nconst connectDataSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmGetConnectData.type, xtmGetConnectDataSuccess.type, xtmGetConnectDataError.type),\n debounceTime(500),\n switchMap(({ type }) => {\n if ((type as string).endsWith('SUCCESS') || (type as string).endsWith('ERROR')) {\n return of(setConnectDataSpinner(false));\n }\n return of(setConnectDataSpinner(true));\n }),\n );\n\nconst connectToXtmSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(\n xtmConnect.type,\n xtmConnectError.type,\n xtmConnectSuccess.type,\n xtmConnectUser.type,\n xtmConnectUserError.type,\n xtmConnectUserSuccess.type,\n ),\n debounceTime(500),\n switchMap(({ type }) => {\n if ((type as string).endsWith('SUCCESS') || (type as string).endsWith('ERROR')) {\n return of(setConnectToXtmSpinner(false));\n }\n return of(setConnectToXtmSpinner(true));\n }),\n );\n\nconst connectToCMSSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmConnectToCMSError.type, xtmConnectToCMSSuccess.type, xtmConnectToCMS.type),\n debounceTime(500),\n switchMap(({ type }) => {\n if ((type as string).endsWith('SUCCESS') || (type as string).endsWith('ERROR')) {\n return of(setConnectToCMSSpinner(false));\n }\n return of(setConnectToCMSSpinner(true));\n }),\n );\n\nconst defaultUserLanguagesSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(getDefaultUserLanguages.type, getDefaultUserLanguagesSuccess.type, getDefaultUserLanguagesError.type),\n debounceTime(500),\n switchMap(({ type }) => {\n if ((type as string).endsWith('SUCCESS') || (type as string).endsWith('ERROR')) {\n return of(setDefaultUserLanguageSpinner(false));\n }\n return of(setDefaultUserLanguageSpinner(true));\n }),\n );\n\nexport const spinnerEpics = combineEpics(\n fetchSpinnerEpic,\n templateSpinnerEpic,\n connectDataSpinnerEpic,\n connectToXtmSpinnerEpic,\n customerSpinnerEpic,\n connectToCMSSpinnerEpic,\n defaultUserLanguagesSpinnerEpic,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n setConnectDataSpinner,\n setConnectToCMSSpinner,\n setConnectToXtmSpinner,\n setCustomerSpinner,\n setDefaultUserLanguageSpinner,\n setFetchSpinner,\n setTemplateSpinner,\n} from './spinner.actions';\nimport { ISpinnerState } from './spinner.interface';\n\nconst initState: ISpinnerState = {\n fetchSpinner: false,\n templateSpinner: false,\n customerSpinner: false,\n connectDataSpinner: false,\n connectToXtmSpinner: false,\n connectToCMSSpinner: false,\n defaultUserLanguagesSpinner: false,\n};\n\nexport const spinnerReducer = createReducer(initState, (builder) =>\n builder\n .addCase(setFetchSpinner, (state, action) => {\n state.fetchSpinner = action.payload;\n })\n .addCase(setTemplateSpinner, (state, action) => {\n state.templateSpinner = action.payload;\n })\n .addCase(setCustomerSpinner, (state, action) => {\n state.customerSpinner = action.payload;\n })\n .addCase(setConnectDataSpinner, (state, action) => {\n state.connectDataSpinner = action.payload;\n })\n .addCase(setConnectToXtmSpinner, (state, action) => {\n state.connectToXtmSpinner = action.payload;\n })\n .addCase(setConnectToCMSSpinner, (state, action) => {\n state.connectToCMSSpinner = action.payload;\n })\n .addCase(setDefaultUserLanguageSpinner, (state, action) => {\n state.defaultUserLanguagesSpinner = action.payload;\n }),\n);\n","import { combineEpics, Epic, ofType } from 'redux-observable';\nimport { EMPTY } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport store from 'store';\nimport { setPaginationAction, setPaginationOptions, setPaginationSearch } from './table.actions';\n\nconst getRowsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(setPaginationOptions.type, setPaginationSearch.type, setPaginationAction.type),\n switchMap((action) => {\n const {\n dispatchAction,\n paginationOptions: { page, size, order, orderBy, search },\n } = store.getState().table;\n if (dispatchAction) {\n if (action.type !== setPaginationSearch.type) {\n store.dispatch(\n dispatchAction({\n page,\n size,\n search,\n sort: `${orderBy},${order}`,\n }),\n );\n } else {\n store.dispatch(\n setPaginationOptions({\n page: 0,\n size,\n search,\n orderBy,\n order,\n }),\n );\n }\n }\n return EMPTY;\n }),\n );\n\nexport const tableEpics = combineEpics(getRowsEpic);\n","import { createReducer } from '@reduxjs/toolkit';\nimport { OrderDirection } from 'enums/filter';\nimport {\n clearPaginationOptions,\n setPaginationAction,\n setPaginationOptions,\n setPaginationOptionsNoEmit,\n setPaginationSearch,\n setPaginationSearchSpinner,\n} from './table.actions';\nimport { ITableState } from './table.interface';\n\nconst initState: ITableState = {\n paginationOptions: {\n page: 0,\n size: 10,\n order: OrderDirection.ASC,\n orderBy: '',\n search: '',\n },\n dispatchAction: undefined,\n searchSpinner: false,\n};\n\nexport const tableReducer = createReducer(initState, (builder) =>\n builder\n .addCase(setPaginationOptions, (state, action) => {\n state.paginationOptions = {\n ...state.paginationOptions,\n ...action.payload,\n };\n })\n .addCase(setPaginationOptionsNoEmit, (state, action) => {\n state.paginationOptions = {\n ...state.paginationOptions,\n ...action.payload,\n };\n })\n .addCase(setPaginationSearch, (state, action) => {\n state.paginationOptions = {\n ...state.paginationOptions,\n search: action.payload,\n };\n state.searchSpinner = true;\n })\n .addCase(setPaginationAction, (state, action) => {\n state.dispatchAction = action.payload;\n })\n .addCase(clearPaginationOptions, (state) => {\n state.paginationOptions = initState.paginationOptions;\n })\n .addCase(setPaginationSearchSpinner, (state, action) => {\n state.searchSpinner = action.payload;\n }),\n);\n","import { combineEpics, Epic, ofType } from 'redux-observable';\nimport { from, of, timer } from 'rxjs';\nimport { catchError, delayWhen, pluck, switchMap, tap } from 'rxjs/operators';\nimport store from 'store';\nimport { showError, showSuccessful } from 'store/notify/notify.actions';\nimport { api, clearToken } from 'utils/axiosInstance';\nimport { AuthenticationResult } from 'utils/restApplicationClient';\nimport i18n from '../../utils/initTranslation';\nimport { setPaginationSearchSpinner } from '../table/table.actions';\nimport {\n changePassword,\n changePasswordError,\n changePasswordSuccess,\n changeUserPassword,\n createUser,\n createUserError,\n createUserSuccess,\n editUser,\n editUserSuccess,\n getDefaultUserLanguages,\n getDefaultUserLanguagesError,\n getDefaultUserLanguagesSuccess,\n getUserById,\n getUserByIdError,\n getUserByIdSuccess,\n loginUser,\n loginUserError,\n loginUserSuccess,\n logoutUser,\n logoutUserSuccess,\n refreshTokenSuccess,\n resetPassword,\n resetPasswordError,\n resetPasswordSuccess,\n resetUserPassword,\n resetUserPasswordError,\n resetUserPasswordSuccess,\n sessionExpired,\n showSessionExpired,\n usersPageable,\n usersPageableError,\n usersPageableSuccess,\n verifyPassToken,\n verifyPassTokenError,\n verifyPassTokenSuccess,\n verifyToken,\n verifyTokenError,\n xtmConnect,\n xtmConnectError,\n xtmConnectSuccess,\n // xtmConnectToCMS,\n // xtmConnectToCMSError,\n // xtmConnectToCMSSuccess,\n xtmConnectUser,\n xtmConnectUserError,\n xtmConnectUserSuccess,\n xtmGetConnectData,\n xtmGetConnectDataError,\n xtmGetConnectDataSuccess,\n xtmGetCustomers,\n xtmGetCustomersById,\n xtmGetCustomersByIdError,\n xtmGetCustomersByIdSuccess,\n xtmGetCustomersError,\n xtmGetCustomersSuccess,\n xtmGetTemplates,\n xtmGetTemplatesById,\n xtmGetTemplatesByIdError,\n xtmGetTemplatesByIdSuccess,\n xtmGetTemplatesError,\n xtmGetTemplatesSuccess,\n} from './user.actions';\n\nexport const loginEpic: Epic = (action$) =>\n action$.pipe(\n ofType(loginUser.type),\n switchMap(({ payload }) =>\n from(api.authenticateAdmin(payload)).pipe(\n switchMap(({ data }) => of(loginUserSuccess(data))),\n catchError(() => {\n return of(loginUserError({ login: 'auth.errors.login' }));\n }),\n ),\n ),\n );\n\nexport const logoutEpic: Epic = (action$, _, { browserHistory }) =>\n action$.pipe(\n ofType(logoutUser.type, verifyTokenError.type),\n tap(() => clearToken()),\n switchMap(() => {\n if (\n browserHistory.location.pathname !== '/changePassword' &&\n !/\\/reset-password\\/.*/.test(browserHistory.location.pathname)\n ) {\n browserHistory.push('/login');\n }\n return of(logoutUserSuccess());\n }),\n );\n\nexport const refreshTokenEpic: Epic = (action$) =>\n action$.pipe(\n ofType(loginUserSuccess.type, refreshTokenSuccess.type),\n pluck('payload'),\n delayWhen(({ ttl = 890 }: AuthenticationResult) => timer((ttl - 10) * 1000)),\n switchMap(() =>\n from(api.refreshToken()).pipe(\n switchMap(({ data }) => {\n return of(refreshTokenSuccess(data));\n }),\n catchError(() => {\n return of(logoutUser());\n }),\n ),\n ),\n );\n\nexport const resetPasswordEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(resetPassword.type),\n switchMap(({ payload: { email } }) =>\n from(api.sendResetPasswordEmailForAdmin({ email, language: i18n.language })).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'auth.success.resetPasswordSent' }));\n return of(resetPasswordSuccess());\n }),\n catchError(() => {\n return of(resetPasswordError());\n }),\n ),\n ),\n );\n\nexport const resetUserPasswordEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(resetUserPassword.type),\n switchMap(({ payload: { email } }) =>\n from(api.sendResetPasswordEmail({ email, language: i18n.language })).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'auth.success.resetPasswordSent' }));\n return of(resetUserPasswordSuccess());\n }),\n catchError(() => {\n return of(resetUserPasswordError());\n }),\n ),\n ),\n );\n\nexport const verifyTokenEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(verifyToken.type),\n switchMap(() =>\n from(api.refreshToken()).pipe(\n switchMap(({ data }) => {\n return of(refreshTokenSuccess(data));\n }),\n catchError(() => {\n return of(logoutUser());\n }),\n ),\n ),\n );\n\nexport const changePassEpic: Epic = (action$, state$, { browserHistory }) =>\n action$.pipe(\n ofType(changePassword.type),\n switchMap(({ payload }) =>\n from(api.changePassword(payload)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'auth.success.changePassword' }));\n browserHistory.push('/login');\n return of(changePasswordSuccess());\n }),\n catchError(() => {\n store.dispatch(showError({ message: 'auth.errors.login' }));\n return of(changePasswordError());\n }),\n ),\n ),\n );\n\nexport const changeUserPassEpic: Epic = (action$) =>\n action$.pipe(\n ofType(changeUserPassword.type),\n switchMap(({ payload }) =>\n from(api.changePassword(payload)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'auth.success.changePassword' }));\n window.location.href = 'https://app.contentful.com/';\n return of(changePasswordSuccess());\n }),\n catchError(() => {\n store.dispatch(showError({ message: 'auth.errors.login' }));\n return of(changePasswordError());\n }),\n ),\n ),\n );\n\nexport const verifyResetPasswordTokenEpic: Epic = (actions$, state$, { browserHistory }) =>\n actions$.pipe(\n ofType(verifyPassToken.type),\n switchMap(({ payload: token }) =>\n from(api.verifyResetPasswordToken({ token })).pipe(\n switchMap(() => of(verifyPassTokenSuccess())),\n catchError(() => {\n browserHistory.push('/login');\n return of(verifyPassTokenError());\n }),\n ),\n ),\n );\n\nexport const addUserEpic: Epic = (action$, state$, { browserHistory }) =>\n action$.pipe(\n ofType(createUser.type),\n switchMap(({ payload }) =>\n from(api.createUser(payload)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: i18n.t('users.success.create') }));\n browserHistory.push('/users');\n return of(createUserSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'users.errors.create' }));\n if (status === 409) {\n return of(createUserError({ email: 'users.errors.duplicate' }));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(createUserError());\n }),\n ),\n ),\n );\n\nexport const getUsersPageableEpic: Epic = (action$) =>\n action$.pipe(\n ofType(usersPageable.type),\n switchMap(({ payload }) =>\n from(api.getAllUsers(payload)).pipe(\n switchMap(({ data }) => {\n store.dispatch(setPaginationSearchSpinner(false));\n return of(usersPageableSuccess(data));\n }),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n store.dispatch(setPaginationSearchSpinner(false));\n store.dispatch(showError({ message: 'users.errors.getAll' }));\n return of(usersPageableError());\n }),\n ),\n ),\n );\n\nexport const editUserEpic: Epic = (actions$, state$, { browserHistory }) =>\n actions$.pipe(\n ofType(editUser.type),\n switchMap((res) => {\n return from(api.editUser(res.payload.userId, res.payload.updateUser)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'users.success.edit' }));\n browserHistory.push('/users');\n return of(editUserSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'users.errors.edit' }));\n if (status === 409) {\n return of(createUserError({ email: 'users.errors.duplicate' }));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(createUserError());\n }),\n );\n }),\n );\n\nexport const getUserEpic: Epic = (actions$, state$, { browserHistory }) =>\n actions$.pipe(\n ofType(getUserById.type),\n switchMap(({ payload }) => from(api.getUser(payload)).pipe(switchMap(({ data }) => of(getUserByIdSuccess(data))))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n browserHistory.push('/users');\n store.dispatch(showError({ message: 'users.errors.noId' }));\n return of(getUserByIdError());\n }),\n );\n\nexport const connectXtmEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmConnect.type),\n switchMap(({ payload }) =>\n from(api.connectToXtm(payload)).pipe(\n switchMap(({ data }) => of(xtmConnectSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(xtmConnectError());\n }),\n ),\n ),\n );\n\nexport const connectXtmUserEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmConnectUser.type),\n switchMap(({ payload }) =>\n from(api.reconnectToXtm(payload.userId, payload.xtmParameters)).pipe(\n switchMap(({ data }) => {\n return of(xtmConnectUserSuccess(data));\n }),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n return of(xtmConnectUserError());\n }),\n ),\n ),\n );\n\nexport const getCustomersEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmGetCustomers.type, xtmConnectSuccess.type, xtmConnectUserSuccess.type),\n switchMap(({ payload }) =>\n from(\n api.getXTMCustomers$GET$api_xtm_customers({\n xtmAuthId: payload.xtmAuthorizationId,\n }),\n ).pipe(\n switchMap(({ data }) => of(xtmGetCustomersSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(xtmGetCustomersError());\n }),\n ),\n ),\n );\n\nexport const getTemplatesEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmGetTemplates.type),\n switchMap(({ payload }) =>\n from(api.getXTMTemplates(payload)).pipe(\n switchMap(({ data }) => of(xtmGetTemplatesSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(xtmGetTemplatesError());\n }),\n ),\n ),\n );\n\nexport const getCustomersByIdEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmGetCustomersById.type),\n switchMap(({ payload }) =>\n from(api.getXTMCustomersForExistingUser(payload)).pipe(\n switchMap(({ data }) => of(xtmGetCustomersByIdSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(xtmGetCustomersByIdError());\n }),\n ),\n ),\n );\n\nexport const getTemplatesByIdEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmGetTemplatesById.type),\n switchMap(({ payload }) =>\n from(api.getXTMTemplatesForExistingUser$GET$api_xtm_templates_userId(payload.userId, payload.queryParams)).pipe(\n switchMap(({ data }) => of(xtmGetTemplatesByIdSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(xtmGetTemplatesByIdError());\n }),\n ),\n ),\n );\n\nexport const getConnectDataEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmGetConnectData.type),\n switchMap(({ payload }) =>\n from(api.getXTMConnectionParameters(payload)).pipe(\n switchMap(({ data }) => of(xtmGetConnectDataSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(xtmGetConnectDataError());\n }),\n ),\n ),\n );\n\nexport const showSessionExpiredEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(sessionExpired.type),\n switchMap(({ payload }) => {\n if (payload) {\n return of(showSessionExpired());\n }\n return of(showSessionExpired());\n }),\n );\n\nconst getDefaultUserLanguagesList: Epic = (actions$) =>\n actions$.pipe(\n ofType(getDefaultUserLanguages.type),\n switchMap(() =>\n from(api.getHubspotLanguages()).pipe(\n switchMap(({ data }) => of(getDefaultUserLanguagesSuccess(data))),\n catchError(() => {\n return of(getDefaultUserLanguagesError(), showError({ message: 'user.errors.languages.hubspot' }));\n }),\n ),\n ),\n );\n\nexport const userEpics = combineEpics(\n loginEpic,\n logoutEpic,\n resetPasswordEpic,\n refreshTokenEpic,\n verifyTokenEpic,\n verifyResetPasswordTokenEpic,\n changePassEpic,\n getUsersPageableEpic,\n addUserEpic,\n getUserEpic,\n editUserEpic,\n connectXtmEpic,\n getCustomersEpic,\n getTemplatesEpic,\n getCustomersByIdEpic,\n getTemplatesByIdEpic,\n getConnectDataEpic,\n showSessionExpiredEpic,\n connectXtmUserEpic,\n resetUserPasswordEpic,\n changeUserPassEpic,\n getDefaultUserLanguagesList,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n clearDefaultUserLanguages,\n clearUser,\n clearUserErrors,\n clearXtmTemplates,\n createUserError,\n getAllUsersSuccess,\n getDefaultUserLanguagesSuccess,\n getUserByIdSuccess,\n hideSessionExpired,\n loginUserError,\n loginUserSuccess,\n logoutUserSuccess,\n refreshTokenSuccess,\n showSessionExpired,\n usersPageableSuccess,\n verifyPassTokenError,\n verifyPassTokenSuccess,\n verifyTokenError,\n verifyTokenSuccess,\n xtmConnectError,\n xtmConnectSuccess,\n xtmConnectToCMSError,\n xtmConnectToCMSSuccess,\n xtmConnectUserError,\n xtmConnectUserSuccess,\n xtmGetConnectDataSuccess,\n xtmGetCustomersByIdSuccess,\n xtmGetCustomersSuccess,\n xtmGetTemplatesByIdSuccess,\n xtmGetTemplatesSuccess,\n} from './user.actions';\nimport { IUserState } from './user.interface';\n\nconst initState: IUserState = {\n users: [],\n errors: {},\n auth: false,\n data: undefined,\n verifyFinished: false,\n verifyPassFinished: true,\n usersPageable: undefined,\n user: undefined,\n xtmAuthorizationId: undefined,\n customers: undefined,\n templates: undefined,\n connectData: undefined,\n xtmCMSconnected: undefined,\n defaultUserLanguages: [],\n sessionExpired: false,\n};\nexport const userReducer = createReducer(initState, (builder) =>\n builder\n .addCase(loginUserSuccess, (state, action) => {\n state.auth = true;\n state.data = action.payload;\n })\n .addCase(loginUserError, (state, action) => {\n if (action.payload) {\n state.errors = action.payload;\n }\n })\n .addCase(verifyTokenSuccess, (state) => {\n state.auth = true;\n state.verifyFinished = true;\n })\n .addCase(verifyTokenError, (state) => {\n state.verifyFinished = true;\n state.auth = false;\n })\n .addCase(refreshTokenSuccess, (state, action) => {\n state.verifyFinished = true;\n state.auth = true;\n state.data = action.payload;\n })\n .addCase(logoutUserSuccess, (state) => {\n state.verifyFinished = true;\n state.auth = false;\n state.data = undefined;\n })\n .addCase(verifyPassTokenSuccess, (state) => {\n state.verifyPassFinished = true;\n })\n .addCase(verifyPassTokenError, (state) => {\n state.verifyPassFinished = true;\n })\n .addCase(getAllUsersSuccess, (state, action) => {\n state.users = action.payload;\n })\n .addCase(createUserError, (state, action) => {\n if (action.payload) {\n state.errors = action.payload;\n }\n })\n .addCase(usersPageableSuccess, (state, action) => {\n state.usersPageable = action.payload;\n })\n .addCase(getUserByIdSuccess, (state, action) => {\n state.user = action.payload;\n })\n .addCase(clearUserErrors, (state) => {\n state.errors = {};\n })\n .addCase(clearUser, (state) => {\n state.user = undefined;\n state.xtmAuthorizationId = undefined;\n state.customers = undefined;\n state.templates = undefined;\n state.connectData = undefined;\n state.xtmCMSconnected = undefined;\n })\n .addCase(xtmConnectError, (state) => {\n state.errors.xtmConnect = 'users.errors.connect';\n state.xtmAuthorizationId = undefined;\n })\n .addCase(xtmConnectUserError, (state) => {\n state.errors.xtmConnect = 'users.errors.connect';\n state.xtmAuthorizationId = undefined;\n })\n .addCase(xtmConnectSuccess, (state, { payload: { xtmAuthorizationId } }) => {\n state.xtmAuthorizationId = xtmAuthorizationId;\n })\n .addCase(xtmConnectUserSuccess, (state, { payload: { xtmAuthorizationId } }) => {\n state.xtmAuthorizationId = xtmAuthorizationId;\n })\n .addCase(xtmGetCustomersSuccess, (state, action) => {\n state.customers = action.payload;\n })\n .addCase(xtmGetCustomersByIdSuccess, (state, action) => {\n state.customers = action.payload;\n })\n .addCase(xtmGetTemplatesSuccess, (state, action) => {\n state.templates = action.payload;\n })\n .addCase(xtmGetTemplatesByIdSuccess, (state, action) => {\n state.templates = action.payload;\n })\n .addCase(xtmGetConnectDataSuccess, (state, action) => {\n state.connectData = action.payload;\n })\n .addCase(xtmConnectToCMSSuccess, (state, action) => {\n state.xtmCMSconnected = action.payload;\n })\n .addCase(clearXtmTemplates, (state) => {\n state.templates = undefined;\n })\n .addCase(xtmConnectToCMSError, (state) => {\n state.errors.cmsConnect = 'users.errors.connect';\n state.xtmCMSconnected = undefined;\n })\n .addCase(getDefaultUserLanguagesSuccess, (state, action) => {\n state.defaultUserLanguages = action.payload;\n })\n .addCase(showSessionExpired, (state) => {\n state.sessionExpired = true;\n })\n .addCase(hideSessionExpired, (state) => {\n state.sessionExpired = false;\n })\n .addCase(clearDefaultUserLanguages, (state) => {\n state.defaultUserLanguages = [];\n }),\n);\n","import { configureStore } from '@reduxjs/toolkit';\nimport { combineReducers, Reducer } from 'redux';\nimport { combineEpics, createEpicMiddleware } from 'redux-observable';\nimport { api } from 'utils/axiosInstance';\nimport browserHistory from 'utils/browserHistory';\nimport { administratorEpics } from './administrator/administrator.epics';\nimport { administratorReducer } from './administrator/administrator.reducer';\nimport { clientEpics } from './client/client.epics';\nimport { clientReducer } from './client/client.reducer';\nimport { notifyReducer } from './notify/notify.reducer';\nimport { spinnerEpics } from './spinner/spinner.epics';\nimport { spinnerReducer } from './spinner/spinner.reducer';\nimport { tableEpics } from './table/table.epics';\nimport { tableReducer } from './table/table.reducer';\nimport { logoutUserSuccess } from './user/user.actions';\nimport { userEpics } from './user/user.epics';\nimport { userReducer } from './user/user.reducer';\n\nconst appReducer = combineReducers({\n user: userReducer,\n notify: notifyReducer,\n client: clientReducer,\n table: tableReducer,\n administrator: administratorReducer,\n spinner: spinnerReducer,\n});\n\nconst rootReducer: Reducer = (state, action) => {\n if (action.type === logoutUserSuccess().type) {\n state = undefined;\n }\n\n return appReducer(state, action);\n};\n\nconst epicMiddleware = createEpicMiddleware({\n dependencies: { browserHistory, api },\n});\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware: [epicMiddleware],\n devTools: process.env.NODE_ENV !== 'production',\n});\n\nepicMiddleware.run(combineEpics(userEpics, clientEpics, tableEpics, administratorEpics, spinnerEpics));\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nif (process.env.NODE_ENV !== 'production' && module.hot) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n module.hot.accept('./', () => store.replaceReducer(rootReducer));\n}\n\nexport type AppState = ReturnType;\nexport type AppDispatch = ReturnType;\nexport default store;\n","/** @jsx jsx */\nimport { Global, jsx } from '@emotion/core';\nimport { ThemeProvider } from '@material-ui/core';\nimport * as Sentry from '@sentry/browser';\nimport { mainStyles } from 'main.style';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { theme } from 'theme';\nimport { checkVersion } from 'utils/checkVersion';\nimport { getEnvironment } from 'utils/handlers/envHandler';\nimport { initTranslation } from 'utils/initTranslation';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport store from './store';\n\nSentry.init({\n dsn: getEnvironment('REACT_APP_SENTRY_DSN'),\n environment: process.env.NODE_ENV,\n});\n\nasync function render(): Promise {\n await checkVersion();\n\n initTranslation();\n\n ReactDOM.render(\n \n \n \n \n \n \n \n ,\n document.getElementById('root'),\n );\n}\n\ndocument.addEventListener('DOMContentLoaded', render);\n","/**\n * Return string value either from .env file or window._env_ if defined\n *\n * @param key - Env variable key\n *\n */\nexport const getEnvironment = (key: string): string | undefined => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const env = (window as any)._env_;\n return env ? env[key] : process.env[key];\n};\n\n/**\n * Return all evnironmental variables either from .env file or window._env_ if defined\n */\nexport const getAllEnvironment = (): { [key: string]: string } => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (window as any)._env_ || process.env;\n};\n"],"sourceRoot":""}