{"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/Form/Input/CustomCheckboxGroup.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","serviceWorker.ts","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"],"names":["mainStyles","css","theme","createMuiTheme","overrides","MuiTablePagination","toolbar","background","MuiButton","root","textTransform","fontWeight","MuiTableCell","head","MuiTableRow","backgroundColor","MuiTableContainer","width","MuiTab","fontSize","MuiAppBar","display","flexDirection","alignItems","padding","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","color","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","CustomCheckboxGroupLabel","span","ErrorDiv","FieldDiv","CheckboxFieldDiv","CheckboxDiv","CustomCheckboxGroupTypography","CustomCheckboxGroupDivRow","CustomCheckboxGroupDiv","CustomInputError","CustomCheckboxGroupTextField","TextField","SelectDiv","StyledTextField","StyledSelect","Select","CustomField","touched","type","inputProps","disableAutoComplete","shouldErrorDisplay","margin","autoComplete","FormTitle","StyledTypography","align","getFetchSpinnerSelector","spinner","fetchSpinner","fetchSelector","getTemplateSpinnerSelector","templateSpinner","templateSelector","getCustomerSpinnerSelector","customerSpinner","getconnectDataSpinnerSelector","connectDataSpinner","getConnectToXtmSpinnerSelector","connectToXtmSpinner","getDefaultLanguagesSpinnerSelector","connectToCMSSpinner","defaultUserLanguagesSpinner","EMAIL_REGEX","PASSWORD_REGEX","PREFIX_REGEX","isObjectEqual","objectA","objectB","objectAProperties","Object","getOwnPropertyNames","objectBProperties","reduce","previousValue","currentValue","required","value","email","test","password","importMethodsValidator","values","automaticImport","importPerJobs","importAllJobs","isAllowedPrefix","composeValidators","validators","fetchValidator","fetchValidatorObject","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","contentDTO","jobId","projectId","jobIds","translateRequest","userId","updateUser","xtmConnectRequest","xtmTemplateId","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","height","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","getClientsPageableSelector","clientsPageable","clients","getAllClientsSelector","getClientErrorsSelector","getClientSelector","AddAdministratorContainer","id","clientName","initialValue","parseClientSelect","status","CustomCheckboxGroup","handleinputChange","event","Number","names","checked","valueInput","initialInputValue","_input","endText","addClientContainerStyles","heading","btnContainer","useRouteMatch","useState","setSubmitValues","automaticImportInput","rest","createClientParameters","importInterval","submitFailed","stateErrors","toString","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","Accordion","AccordionSummary","expandIcon","Boolean","AccordionDetails","fullWidth","tableToolbarStyles","endAdornmentIcon","endAdornmentSpinner","ConnectedFields","handleCustomerChange","getTemplates","getTemplatesById","getState","interfaceLanguage","xtmAuthId","change","selectSpinner","getCustomers","getCustomersById","xtmProperties","shouldUpdate","clearTemplates","previousCustomers","previous","current","customer","languageCode","mapCustomersToRows","IconComponent","mapTemplatesToRows","xtmProjectNamePrefix","userSpecification","defaultTranslationSourceLanguage","mapUsersLanguages","forceDefaultCustomerSettings","OrderDirection","checkRoles","routeRoles","userRoles","AddUserContainer","getImportMethodValue","isClientAdmin","editParameters","handleClientChange","find","currentUser","shouldConnectedFieldsRender","ADMIN_CLIENT","importAll","importOne","importIntervalValue","firstName","lastName","defaultValue","generateAndUploadScreenshots","TableActionTypes","setPaginationOptions","clearPaginationOptions","setPaginationSearch","setPaginationAction","setPaginationSearchSpinner","getPaginationOptionsSelector","paginationOptions","getPaginationSearchSpinnerSelector","searchSpinner","parseDateBulk","contentParsed","content","element","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","icon","TableEmpty","CustomTable","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","direction","TableBody","colSpan","hover","header","Tooltip","IconButton","TableFooter","mapStateToProps","mapDispatchToProps","CustomTableContainer","iconButtonLabelStyle","Text","IconButtonLabel","buttonLabelKey","onAdd","TableToolbar","searchValue","debounceFn","throttleFn","onInputChange","persist","throttle","debounce","setSearch","callbackFunc","limit","wait","setTimeout","timeout","clearTimeout","InputProps","endAdornment","TestTable","AdministratorsContainer","history","push","ClientsContainer","getUsersPageableSelector","UserTable","UsersContainer","mainRoutes","ADMIN_XTM","navbar","routeTextKey","AddClientContainer","navbarStyles","routeValues","filter","Navbar","pagesToRender","setTabValue","startsWith","handleTabChange","pages","Tabs","textColor","Tab","MainLayoutComponent","handleOpenLink","open","Box","renderRoute","isAuth","createBrowserHistory","NotificationActionTypes","showError","showSuccessful","closeAlert","displayed","withSnackbar","notifications","store","notify","useSnackbar","enqueueSnackbar","closeSnackbar","message","onClose","reason","myKey","onExited","_event","dp","notistackRef","React","createRef","onClickDismiss","App","ref","action","browserHistory","hostname","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","clientReducer","notifyReducer","getTime","Math","floor","random","SpinnerActionTypes","setFetchSpinner","setTemplateSpinner","setCustomerSpinner","setConnectDataSpinner","setConnectToXtmSpinner","setConnectToCMSSpinner","setDefaultUserLanguageSpinner","spinnerEpics","debounceTime","endsWith","spinnerReducer","tableEpics","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","getAvailableSourceLanguages","userReducer","cmsConnect","appReducer","combineReducers","epicMiddleware","createEpicMiddleware","dependencies","configureStore","reducer","middleware","devTools","run","ReactDOM","StrictMode","ThemeProvider","styles","document","getElementById","Sentry","dsn","environment","addEventListener","navigator","serviceWorker","ready","registration","unregister","catch"],"mappings":"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","file":"static/js/main.a12c2edf.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 MuiTablePagination: {\n toolbar: {\n background: 'white',\n },\n },\n MuiButton: {\n root: {\n textTransform: 'none',\n fontWeight: 400,\n },\n },\n MuiTableCell: {\n head: {\n fontWeight: 'bold',\n background: 'white',\n },\n },\n MuiTableRow: {\n root: {\n backgroundColor: 'white',\n '&.MuiTableRow-hover:hover': {\n backgroundColor: '#ccedfa',\n },\n },\n //TODO remove table styles ?\n // root: {\n // '&:nth-of-type(odd)': {\n // backgroundColor: '#eff3f7',\n // },\n // },\n },\n MuiTableContainer: {\n root: {\n width: 'auto',\n },\n },\n MuiTab: {\n root: {\n textTransform: 'none',\n fontSize: '20px',\n },\n },\n MuiAppBar: {\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n padding: '24px',\n boxShadow: 'none',\n justifyContent: 'space-between',\n },\n },\n MuiTextField: {\n root: {\n background: 'white',\n },\n },\n MuiSelect: {\n root: {\n background: 'white',\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: 26px;\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 LanguageDTO,\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, IGetLanguages, IUsersPageable } from './user.interface';\n\nexport const verifyPassToken = createAction(\n UserActionTypes.verifyPassToken,\n);\nexport const verifyPassTokenSuccess = createAction(\n UserActionTypes.verifyPassTokenSuccess,\n);\nexport const verifyPassTokenError = createAction(\n UserActionTypes.verifyPassTokenError,\n);\nexport const changePassword = createAction(\n UserActionTypes.ChangePassword,\n);\nexport const changePasswordSuccess = createAction(\n UserActionTypes.ChangePasswordSuccess,\n);\nexport const changePasswordError = createAction(\n UserActionTypes.ChangePasswordError,\n);\nexport const changeUserPassword = createAction(\n UserActionTypes.ChangeUserPassword,\n);\nexport const changeUserPasswordSuccess = createAction(\n UserActionTypes.ChangeUserPasswordSuccess,\n);\nexport const changeUserPasswordError = createAction(\n UserActionTypes.ChangeUserPasswordError,\n);\nexport const loginUser = createAction(\n UserActionTypes.Login,\n);\nexport const loginUserSuccess = createAction(\n UserActionTypes.LoginSuccess,\n);\nexport const loginUserError = createAction<\n { [key: string]: string | undefined } | undefined\n>(UserActionTypes.LoginError);\n\nexport const logoutUser = createAction(UserActionTypes.Logout);\nexport const logoutUserSuccess = createAction(UserActionTypes.LogoutSuccess);\nexport const logoutUserError = createAction(UserActionTypes.LogoutError);\n\nexport const resetPassword = createAction(\n UserActionTypes.ResetPassword,\n);\nexport const resetPasswordSuccess = createAction(\n UserActionTypes.ResetPasswordSuccess,\n);\nexport const resetPasswordError = createAction(\n UserActionTypes.ResetPasswordError,\n);\n\nexport const resetUserPassword = createAction(\n UserActionTypes.ResetUserPassword,\n);\nexport const resetUserPasswordSuccess = createAction(\n UserActionTypes.ResetUserPasswordSuccess,\n);\nexport const resetUserPasswordError = createAction(\n UserActionTypes.ResetUserPasswordError,\n);\n\nexport const verifyToken = createAction(UserActionTypes.VerifyToken);\nexport const verifyTokenSuccess = createAction<{ ttl: number }>(\n UserActionTypes.VerifyTokenSuccess,\n);\nexport const verifyTokenError = createAction(UserActionTypes.VerifyTokenError);\nexport const refreshTokenSuccess = createAction(\n UserActionTypes.RefreshTokenSuccess,\n);\n\nexport const getAllUsers = createAction(UserActionTypes.GetAllUsers);\nexport const getAllUsersError = createAction(UserActionTypes.GetAllUsersError);\nexport const getAllUsersSuccess = createAction(\n UserActionTypes.GetAllUsersSuccess,\n);\nexport const createUser = createAction(\n UserActionTypes.CreateUser,\n);\nexport const createUserSuccess = createAction(\n UserActionTypes.CreateUserSuccess,\n);\nexport const createUserError = createAction<\n { [key: string]: string | undefined } | undefined\n>(UserActionTypes.CreateUserError);\n\nexport const usersPageable = createAction(\n UserActionTypes.UsersPageable,\n);\nexport const usersPageableSuccess = createAction>(\n UserActionTypes.UsersPageableSuccess,\n);\nexport const usersPageableError = createAction(\n UserActionTypes.UsersPageableError,\n);\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(\n UserActionTypes.GetUserByIdSuccess,\n);\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(\n UserActionTypes.xtmConnect,\n);\n\nexport const xtmConnectError = createAction(UserActionTypes.xtmConnectError);\n\nexport const xtmConnectSuccess = createAction(\n UserActionTypes.xtmConnectSuccess,\n);\n\nexport const xtmConnectUser = createAction<{\n userId: string;\n xtmParameters: XTMConnectRequest;\n}>(UserActionTypes.xtmConnectUser);\n\nexport const xtmConnectUserError = createAction(\n UserActionTypes.xtmConnectUserError,\n);\n\nexport const xtmConnectUserSuccess = createAction(\n UserActionTypes.xtmConnectUserSuccess,\n);\n\nexport const xtmGetCustomers = createAction(\n UserActionTypes.xtmGetCustomers,\n);\n\nexport const xtmGetCustomersError = createAction(\n UserActionTypes.xtmGetCustomersError,\n);\n\nexport const xtmGetCustomersSuccess = createAction(\n UserActionTypes.xtmGetCustomersSuccess,\n);\n\nexport const xtmGetTemplates = createAction<{\n xtmAuthId: string;\n xtmCustomerId: string;\n}>(UserActionTypes.xtmGetTemplates);\n\nexport const xtmGetTemplatesError = createAction(\n UserActionTypes.xtmGetTemplatesError,\n);\n\nexport const xtmGetTemplatesSuccess = createAction(\n UserActionTypes.xtmGetTemplatesSuccess,\n);\n\nexport const xtmGetCustomersById = createAction(\n UserActionTypes.xtmGetCustomersById,\n);\n\nexport const xtmGetCustomersByIdError = createAction(\n UserActionTypes.xtmGetCustomersByIdError,\n);\n\nexport const xtmGetCustomersByIdSuccess = createAction(\n UserActionTypes.xtmGetCustomersByIdSuccess,\n);\n\nexport const xtmGetTemplatesById = createAction<{\n userId: string;\n queryParams: { xtmCustomerId: string };\n}>(UserActionTypes.xtmGetTemplatesById);\n\nexport const xtmGetTemplatesByIdError = createAction(\n UserActionTypes.xtmGetTemplatesByIdError,\n);\n\nexport const xtmGetTemplatesByIdSuccess = createAction(\n UserActionTypes.xtmGetTemplatesByIdSucess,\n);\n\nexport const xtmGetConnectData = createAction(\n UserActionTypes.xtmGetConnectData,\n);\n\nexport const xtmGetConnectDataError = createAction(\n UserActionTypes.xtmGetConnectDataError,\n);\n\nexport const xtmGetConnectDataSuccess =\n createAction(\n UserActionTypes.xtmGetConnectDataSuccess,\n );\n\nexport const xtmConnectToCMS = createAction(\n UserActionTypes.xtmConnectToCMS,\n);\n\nexport const xtmConnectToCMSError = createAction(\n UserActionTypes.xtmConnectToCMSError,\n);\n\nexport const xtmConnectToCMSSuccess = createAction(\n UserActionTypes.xtmConnectToCMSSuccess,\n);\n\nexport const getDefaultUserLanguages = createAction(\n UserActionTypes.getDefaultUserLanguage,\n);\nexport const getDefaultUserLanguagesSuccess = createAction(\n UserActionTypes.getDefaultUserLanguageSuccess,\n);\nexport const getDefaultUserLanguagesError = createAction(\n UserActionTypes.getDefaultUserLanguageError,\n);\nexport const clearDefaultUserLanguages = createAction(\n UserActionTypes.clearDefaultUserLanguage,\n);\n\nexport const clearXtmTemplates = createAction(UserActionTypes.clearTemplates);\n\nexport const sessionExpired = createAction(\n UserActionTypes.sessionExpired,\n);\n\nexport const showSessionExpired = createAction(\n UserActionTypes.showSessionExpired,\n);\n\nexport const hideSessionExpired = createAction(\n UserActionTypes.hideSessionExpired,\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport {\n AuthenticationResult,\n RefreshTokenResult,\n UserDTO,\n XTMCustomerDTO,\n XTMTemplateDTO,\n} from 'utils/restApplicationClient';\nimport { XTMConnectionParametersDTO } from 'utils/restApplicationClientTypeOverrides';\nimport { LanguageDTO } from '../../../../xtm-figma-app/src/utils/restApplicationClient';\n\nconst authSelector = (state: AppState): boolean => state.user.auth;\n\nconst verifyFinishSelector = (state: AppState): boolean =>\n state.user.verifyFinished;\n\nconst userDataSelector = (\n state: AppState,\n): AuthenticationResult & RefreshTokenResult => {\n return state.user.data;\n};\n\nconst userErrorsSelector = (state: AppState): { [key: string]: string } =>\n state.user.errors;\n\nconst userSelector = (state: AppState): UserDTO | undefined => state.user.user;\n\nconst xtmAuthorizationIdSelector = ({\n user: { xtmAuthorizationId },\n}: AppState): string | undefined => xtmAuthorizationId;\n\nconst xtmCustomersSelector = ({\n user: { customers },\n}: AppState): XTMCustomerDTO[] | undefined => customers;\n\nconst xtmTemplatesSelector = ({\n user: { templates },\n}: AppState): XTMTemplateDTO[] | undefined => templates;\n\nconst xtmConnectDataSelector = ({\n user: { connectData },\n}: AppState): XTMConnectionParametersDTO | undefined => connectData;\n\nconst cmsConnectedSelector = ({\n user: { xtmCMSconnected },\n}: AppState): boolean | undefined => xtmCMSconnected;\n\nconst sessionExpiredSelector = ({\n user: { sessionExpired },\n}: AppState): boolean => sessionExpired;\n\nexport const getAuthSelector = createSelector(authSelector, (auth) => auth);\n\nexport const getVerifyFinishSelector = createSelector(\n verifyFinishSelector,\n (finished) => finished,\n);\n\nexport const getUserDataSelector = createSelector(\n userDataSelector,\n (roles) => roles,\n);\n\nexport const getUserErrorsSelector = createSelector(\n userErrorsSelector,\n (errors) => errors,\n);\n\nexport const getUserSelector = createSelector(userSelector, (user) => user);\n\nexport const getXtmAuthorizationIdSelector = createSelector(\n xtmAuthorizationIdSelector,\n (authorizationId) => authorizationId,\n);\n\nexport const getXtmCustomersSelector = createSelector(\n xtmCustomersSelector,\n (customers) => customers,\n);\n\nexport const getXtmTemplatesSelector = createSelector(\n xtmTemplatesSelector,\n (templates) =>\n Array.isArray(templates) && templates.length === 0 ? undefined : templates,\n);\n\nexport const getXtmConnectDataSelector = createSelector(\n xtmConnectDataSelector,\n (connectData) => connectData,\n);\n\nexport const getCMSConnectedSelector = createSelector(\n cmsConnectedSelector,\n (cmsConnected) => cmsConnected,\n);\nexport const allDefaultUserLanguages = (state: AppState): LanguageDTO[] =>\n state.user.defaultUserLanguages;\nexport const getDefaultUserLanguagesSelector = createSelector(\n allDefaultUserLanguages,\n (languages) => languages,\n);\n\nexport const getSessionExpiredSeletor = createSelector(\n sessionExpiredSelector,\n (sessionExpired) => sessionExpired,\n);\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 {\n ModalDropdown,\n ModalLogoBar,\n ModalTextDiv,\n ModalWindow,\n} 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 \n {t('auth.sessionExpired.text1')}\n \n \n {t('auth.sessionExpired.text2')}\n \n \n \n {t('auth.login')}\n \n \n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n sessionExpired: getSessionExpiredSeletor(state),\n});\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n setSessionExpired: (payload: boolean): AppDispatch =>\n dispatch(sessionExpired(payload)),\n logout: (): AppDispatch => dispatch(logoutUser()),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(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')}{' '}\n {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 &\n 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\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 } from '@material-ui/core';\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","/** @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 } =\n 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 = ({\n spinner: { fetchSpinner },\n}: AppState): boolean => fetchSpinner;\n\nconst templateSpinnerSelector = ({\n spinner: { templateSpinner },\n}: AppState): boolean => templateSpinner;\n\nconst customerSpinnerSelector = ({\n spinner: { customerSpinner },\n}: AppState): boolean => customerSpinner;\n\nconst connectDataSpinnerSelector = ({\n spinner: { connectDataSpinner },\n}: AppState): boolean => connectDataSpinner;\n\nconst connectToXtmSpinnerSelector = ({\n spinner: { connectToXtmSpinner },\n}: AppState): boolean => connectToXtmSpinner;\n\nconst connectToCMSSpinnerSelector = ({\n spinner: { connectToCMSSpinner },\n}: AppState): boolean => connectToCMSSpinner;\n\nconst defaultUserLanguagesSelector = ({\n spinner: { defaultUserLanguagesSpinner },\n}: AppState): boolean => defaultUserLanguagesSpinner;\n\nexport const getFetchSpinnerSelector = createSelector(\n fetchSpinnerSelector,\n (fetchSelector) => fetchSelector,\n);\n\nexport const getTemplateSpinnerSelector = createSelector(\n templateSpinnerSelector,\n (templateSelector) => templateSelector,\n);\n\nexport const getCustomerSpinnerSelector = createSelector(\n customerSpinnerSelector,\n (customerSpinner) => customerSpinner,\n);\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 =\n /^[\\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 =\n /^((?=.*[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 =>\n 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(\n objectA: Record,\n objectB: Record,\n): 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) =>\n objectA[currentValue] === objectB[currentValue] && previousValue,\n true,\n );\n}\n","import { ValidationErrors } from 'final-form';\nimport {\n EMAIL_REGEX,\n ISNUMBER,\n LENGTH_REGEX,\n PASSWORD_REGEX,\n PREFIX_REGEX,\n WHITESPACE_REGEX,\n} 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 Either null when validation is successful or translated error message\n */\nconst required = (value: string): string | null => {\n if (value && typeof value === 'string') {\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 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 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 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 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 at least one checkbox is checked\n *\n * @returns Either undefined when validation is successful or translated error message\n */\nconst importMethodsValidator = (values: {\n automaticImport: boolean;\n importPerJobs: boolean;\n importAllJobs: boolean;\n}): ValidationErrors | undefined => {\n if (\n !values.automaticImport &&\n !values.importPerJobs &&\n !values.importAllJobs\n ) {\n return { error: 'validator.importMethods' };\n }\n return undefined;\n};\n\n/**\n * Returns whether value is not a number\n *\n * @returns 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 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 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 reduced validator from given validator array\n *\n * @param validators - An array of validators\n *\n * @returns A reduced validator function\n */\nconst composeValidators =\n (\n validators: ((value: string) => boolean | string | null)[],\n ): ((value: string) => boolean | string | null) =>\n (value: string) => {\n return validators.reduce(\n (error: boolean | string | null, validator) => error || validator(value),\n null,\n );\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 Wheter given value is the same as the one that threw an error\n */\nconst fetchValidator =\n (error: string | undefined, previousValue: string | undefined) =>\n (value: string): 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 Wheter given value is the same as the one that threw an error\n */\nconst fetchValidatorObject =\n (error: string | undefined, 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 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 importMethodsValidator,\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 {\n customInputStyles,\n ErrorDiv,\n} 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 {\n composeValidators,\n email,\n fetchValidatorObject,\n required,\n} 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 \n {t(this.props.errors['login'])}\n \n \n \n {fetchSpinner ? (\n \n ) : (\n t('auth.login')\n )}\n \n \n )}\n />\n \n
\n );\n }\n}\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n login: (payload: AuthenticationRequest): AppDispatch =>\n 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(\n mapStateToProps,\n mapDispatchToProps,\n)(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 &\n IDispatchProps &\n IStateProps &\n 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 \n {t('auth.password.resetInfo')}\n \n (\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {fetchSpinner ? (\n \n ) : (\n t('common.send')\n )}\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 = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n resetPassword: (payload: IRemindPasswordPayload): AppDispatch =>\n dispatch(resetPassword(payload)),\n resetUserPassword: (payload: IRemindPasswordPayload): AppDispatch =>\n dispatch(resetUserPassword(payload)),\n});\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps,\n )(withTranslation()(ResetPasswordContainer)),\n);\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 {\n changePassword,\n changeUserPassword,\n} from '../../store/user/user.actions';\nimport {\n comparePass,\n composeValidators,\n password,\n required,\n} 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) =>\n getFetchSpinnerSelector(state),\n );\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 ? (\n \n ) : (\n t('auth.password.change')\n )}\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 (\n \n {finished && }\n \n );\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 }\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-07 09:09:31.\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 xtmProjectNamePrefix: string;\n status: boolean;\n generateAndUploadScreenshots: boolean;\n forceDefaultCustomerSettings: boolean;\n defaultTranslationSourceLanguage: string;\n automaticImport: boolean;\n importPerJobs: boolean;\n importAllJobs: boolean;\n importInterval: number;\n}\n\nexport interface TranslationContent extends Serializable {\n id: string;\n content: string;\n layerName: string;\n image: string;\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 CreateClientDTO extends Serializable {\n clientName: string;\n status: boolean;\n automaticImport: boolean;\n importPerJobs: boolean;\n importAllJobs: boolean;\n importInterval: number;\n}\n\nexport interface UpdateClientDTO extends Serializable {\n clientName: string;\n status: boolean;\n automaticImport: boolean;\n importPerJobs: boolean;\n importAllJobs: boolean;\n importInterval: number;\n}\n\nexport interface ClientDTO extends BaseDTO, Serializable {\n clientName: string;\n status: boolean;\n automaticImport: boolean;\n importPerJobs: boolean;\n importAllJobs: boolean;\n importInterval: number;\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 figmaProjectId: string;\n}\n\nexport interface XTMProjectVerifyDTO extends Serializable {\n customerId: number;\n templateId: number;\n sourceLanguage: string;\n targetLanguages: string[];\n}\n\nexport interface XTMProjectEntryVerifyDTO extends Serializable {\n entries: XTMProjectEntriesVerifyDTO[];\n haveProjects: boolean;\n}\n\nexport interface LanguagesDataDTO extends Serializable {\n defaultSourceLanguage: LanguageDTO;\n availableSourceLanguages: LanguageDTO[];\n defaultTargetLanguages: LanguageDTO[];\n availableTargetLanguages: LanguageDTO[];\n}\n\nexport interface ContentDTO extends Serializable {\n figmaProjectId: string;\n frontendIds: string[];\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 automaticImport: boolean;\n importPerJobs: boolean;\n importAllJobs: boolean;\n importInterval: number;\n generateAndUploadScreenshots: boolean;\n forceDefaultCustomerSettings: boolean;\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 ConfigurationDTO extends BaseDTO, Serializable {\n key: string;\n value: 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 LanguageDTO extends Serializable {\n languageCode: string;\n name: string;\n}\n\nexport interface XTMTemplateDTO extends Serializable {\n xtmTemplateId: number;\n name: string;\n}\n\nexport interface FigmaContentDTO extends BaseDTO {\n frontendId: string;\n content: string;\n jobs: FigmaContentJob[];\n entryStatus: EntryStatus;\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 filename: string;\n}\n\nexport interface TranslationDTO extends Serializable {\n figmaPageId: string;\n frontendId: string;\n content: string;\n translation: string;\n targetLanguage: string;\n jobId: 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 xtmProjectNamePrefix: string;\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 FigmaContentJob extends Serializable {\n targetLanguage: string;\n status: XTMJobStatus;\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.figma.backend.common.app.api.RootController.getRoot\n */\n getRoot(options?: O): RestResponse;\n\n /**\n * HTTP GET /api\n * Java method: cloud.xtm.figma.backend.common.app.api.RootController.getApiRoot\n */\n getApiRoot(options?: O): RestResponse;\n\n /**\n * HTTP POST /api/administrators\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.backend.clients.app.api.ClientController.createClient\n */\n createClient(createClient: CreateClientDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/client\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.backend.clients.app.api.ClientController.editClient\n */\n editClient(clientId: string, updateClient: UpdateClientDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/client/{clientId}\n * Java method: cloud.xtm.figma.backend.clients.app.api.ClientController.getClient\n */\n getClient(clientId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/configurations\n * Java method: cloud.xtm.figma.backend.configuration.app.api.ConfigurationController.getAllConfiguration\n */\n getAllConfiguration(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/content/customers\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.backend.integration.xtm.content.api.XTMAddContentController.getXTMTemplatesForExistingUser\n */\n getXTMTemplatesForExistingUser$GET$api_content_templates_xtmCustomerId(xtmCustomerId: number, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/contents/check-statuses\n * Java method: cloud.xtm.figma.backend.jobs.app.api.ContentController.checkStatusesForContents\n */\n checkStatusesForContents(contentDTO: ContentDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/jobs\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.findAllPaged\n */\n findAllPaged(queryParams: { figmaProjectId: string; 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.figma.backend.jobs.app.api.JobsController.performOperation\n */\n performOperation(request: MassOperationRequest, options?: O): RestResponse;\n\n /**\n * HTTP PUT /api/jobs/cancel-for-target-language\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.cancelForTargetLanguage\n */\n cancelForTargetLanguage(queryParams: { targetLanguage: string; projectId: string; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/jobs/filter\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.filter\n */\n filter(queryParams?: { status?: XTMJobStatus; createdDateFrom?: Date; createdDateTo?: Date; dueDateFrom?: Date; dueDateTo?: Date; progressFrom?: number; progressTo?: number; sourceLanguage?: string; targetLanguage?: string; workflowStep?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP GET /api/jobs/{jobId}/operation-applicable-for\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.findJobsIdsByOperationType\n */\n findJobsIdsByOperationType(jobId: string, queryParams: { jobOperation: JobOperation; }, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/jobs/{jobId}/validate\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.validate\n */\n validate(jobId: string, queryParams: { errorMessageCode: string; }, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/notifications/admin/send-reset-password-email\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.backend.notification.app.api.NotificationController.verifyResetPasswordToken\n */\n verifyResetPasswordToken(verifyToken: VerifyTokenDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/parametrization/admin-panel-connector-url\n * Java method: cloud.xtm.figma.backend.parametrization.app.api.AdminPanelParametrizationController.getAdminPanelConnectorUrl\n */\n getAdminPanelConnectorUrl(options?: O): RestResponse;\n\n /**\n * HTTP PUT /api/projects/{projectId}\n * Java method: cloud.xtm.figma.backend.jobs.app.api.ProjectsController.addTargetLanguages\n */\n addTargetLanguages(projectId: string, queryParams: { newTargetLanguages: string[]; }, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/translations/import\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.importTranslationsForJobs\n */\n importTranslationsForJobs(jobIds: string[], options?: O): RestResponse;\n\n /**\n * HTTP GET /api/translations/importAll\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.importAllTranslations\n */\n importAllTranslations(queryParams: { figmaProjectId: string; }, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/translations/mark-as-imported\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.markAsImported\n */\n markAsImported(jobIds: string[], options?: O): RestResponse;\n\n /**\n * HTTP POST /api/translations/translate\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.translate\n */\n translate(translateRequest: TranslateRequestDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/translations/upload-image\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.uploadImage\n */\n uploadImage(queryParams: { projectId: number; layerName: string; id: string; }, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/users\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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/connect\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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.figma.backend.integration.xtm.customers.app.api.XTMCustomersController.getXTMCustomersForExistingUser\n */\n getXTMCustomersForExistingUser(userId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/languages/customers/{xtmCustomerId}/source-languages\n * Java method: cloud.xtm.figma.backend.integration.xtm.languages.app.api.LanguageController.getAvailableSourceLanguages\n */\n getAvailableSourceLanguages(xtmCustomerId: number, queryParams: { xtmAuthId: string; interfaceLanguage: string; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/languages/customers/{xtmCustomerId}/templates/{xtmTemplateId}/default-and-available-languages\n * Java method: cloud.xtm.figma.backend.integration.xtm.languages.app.api.LanguageController.obtainLanguagesDataDTO\n */\n obtainLanguagesDataDTO(xtmCustomerId: number, xtmTemplateId: number, queryParams?: { sourceLanguageCode?: string; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/templates\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.backend.clients.app.api.ClientController.createClient\n */\n createClient(createClient: CreateClientDTO, 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.figma.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.figma.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.figma.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.figma.backend.clients.app.api.ClientController.editClient\n */\n editClient(clientId: string, updateClient: UpdateClientDTO, 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.figma.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/configurations\n * Java method: cloud.xtm.figma.backend.configuration.app.api.ConfigurationController.getAllConfiguration\n */\n getAllConfiguration(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/configurations`, options: options });\n }\n\n /**\n * HTTP GET /api/content/customers\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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 POST /api/contents/check-statuses\n * Java method: cloud.xtm.figma.backend.jobs.app.api.ContentController.checkStatusesForContents\n */\n checkStatusesForContents(contentDTO: ContentDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/contents/check-statuses`, data: contentDTO, options: options });\n }\n\n /**\n * HTTP GET /api/jobs\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.findAllPaged\n */\n findAllPaged(queryParams: { figmaProjectId: string; 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.figma.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 PUT /api/jobs/cancel-for-target-language\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.cancelForTargetLanguage\n */\n cancelForTargetLanguage(queryParams: { targetLanguage: string; projectId: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"PUT\", url: uriEncoding`api/jobs/cancel-for-target-language`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/jobs/filter\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.filter\n */\n filter(queryParams?: { status?: XTMJobStatus; createdDateFrom?: Date; createdDateTo?: Date; dueDateFrom?: Date; dueDateTo?: Date; progressFrom?: number; progressTo?: number; sourceLanguage?: string; targetLanguage?: string; workflowStep?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/jobs/filter`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/jobs/{jobId}/operation-applicable-for\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.findJobsIdsByOperationType\n */\n findJobsIdsByOperationType(jobId: string, queryParams: { jobOperation: JobOperation; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/jobs/${jobId}/operation-applicable-for`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/jobs/{jobId}/validate\n * Java method: cloud.xtm.figma.backend.jobs.app.api.JobsController.validate\n */\n validate(jobId: string, queryParams: { errorMessageCode: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/jobs/${jobId}/validate`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/notifications/admin/send-reset-password-email\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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 GET /api/parametrization/admin-panel-connector-url\n * Java method: cloud.xtm.figma.backend.parametrization.app.api.AdminPanelParametrizationController.getAdminPanelConnectorUrl\n */\n getAdminPanelConnectorUrl(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/parametrization/admin-panel-connector-url`, options: options });\n }\n\n /**\n * HTTP PUT /api/projects/{projectId}\n * Java method: cloud.xtm.figma.backend.jobs.app.api.ProjectsController.addTargetLanguages\n */\n addTargetLanguages(projectId: string, queryParams: { newTargetLanguages: string[]; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"PUT\", url: uriEncoding`api/projects/${projectId}`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/translations/import\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.importTranslationsForJobs\n */\n importTranslationsForJobs(jobIds: string[], options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/translations/import`, data: jobIds, options: options });\n }\n\n /**\n * HTTP GET /api/translations/importAll\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.importAllTranslations\n */\n importAllTranslations(queryParams: { figmaProjectId: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/translations/importAll`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/translations/mark-as-imported\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.markAsImported\n */\n markAsImported(jobIds: string[], options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/translations/mark-as-imported`, data: jobIds, options: options });\n }\n\n /**\n * HTTP POST /api/translations/translate\n * Java method: cloud.xtm.figma.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/translations/upload-image\n * Java method: cloud.xtm.figma.backend.translation.app.api.XTMTranslationController.uploadImage\n */\n uploadImage(queryParams: { projectId: number; layerName: string; id: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/translations/upload-image`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP POST /api/users\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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.figma.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/connect\n * Java method: cloud.xtm.figma.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.figma.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.figma.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.figma.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.figma.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/customers/{xtmCustomerId}/source-languages\n * Java method: cloud.xtm.figma.backend.integration.xtm.languages.app.api.LanguageController.getAvailableSourceLanguages\n */\n getAvailableSourceLanguages(xtmCustomerId: number, queryParams: { xtmAuthId: string; interfaceLanguage: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/languages/customers/${xtmCustomerId}/source-languages`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/languages/customers/{xtmCustomerId}/templates/{xtmTemplateId}/default-and-available-languages\n * Java method: cloud.xtm.figma.backend.integration.xtm.languages.app.api.LanguageController.obtainLanguagesDataDTO\n */\n obtainLanguagesDataDTO(xtmCustomerId: number, xtmTemplateId: number, queryParams?: { sourceLanguageCode?: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/xtm/languages/customers/${xtmCustomerId}/templates/${xtmTemplateId}/default-and-available-languages`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/templates\n * Java method: cloud.xtm.figma.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.figma.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 XTMJobStatus = \"NEW\" | \"SENT\" | \"IN_PROGRESS\" | \"FINISHED\" | \"CANCELLED\";\n\nexport type JobOperation = \"DELETE\";\n\nexport type ActivityEnum = \"ACTIVE\" | \"ARCHIVED\" | \"AUTO_ARCHIVED\" | \"DELETED\" | \"INACTIVE\";\n\nexport type EntryStatus = \"NO\" | \"INPROGRESS\" | \"TRANSLATED\";\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 {\n AuthenticationResult,\n AxiosRestApplicationClient,\n} 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 = (\n response: AxiosResponse,\n): AxiosResponse => {\n if (\n response.config.url === 'api/auth/admin' ||\n response.config.url === 'api/auth/refreshToken'\n ) {\n const { accessToken, refreshToken, ttl } =\n 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 WithTranslation & IProps & IStateProps\n> {\n render(): JSX.Element {\n const { t, submitting, backTo, fetchSpinner } = this.props;\n return (\n \n \n \n \n \n {fetchSpinner ? (\n \n ) : (\n t('common.save')\n )}\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 }\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 {\n customInputStyles,\n FieldDiv,\n StyledTextField,\n} 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 } =\n 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 {\n customInputStyles,\n SelectDiv,\n StyledSelect,\n} 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 } =\n this.props;\n\n const selectStyle = css`\n width: ${width ? width : 'auto'};\n margin-top: 8px;\n margin-bottom: 4px;\n background-color: white;\n `;\n\n return (\n
\n \n {t(this.props.label)}\n \n \n {!this.props.inputProps.value && (\n \n )}\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:\n 'ADMINISTRATOR_GET_ADMINISTRATORS_PAGEABLE_SUCCESS',\n GetAdministratorsPageableError:\n '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(\n AdministratorActionTypes.CreateAdministrator,\n);\nexport const createAdministratorError = createAction(\n AdministratorActionTypes.CreateAdministratorError,\n);\nexport const createAdministratorSuccess = createAction(\n AdministratorActionTypes.CreateAdministratorSuccess,\n);\n\nexport const clearAdministratorErrors = createAction(\n AdministratorActionTypes.ClearAdministratorErrors,\n);\n\nexport const getAdministratorsPageable = createAction(\n AdministratorActionTypes.GetAdministatorsPageable,\n);\nexport const getAdministratorsPageableSuccess = createAction<\n Page\n>(AdministratorActionTypes.GetAdministratorsPageableSuccess);\nexport const getAdministratorsPageableError = createAction(\n AdministratorActionTypes.GetAdministratorsPageableError,\n);\n\nexport const getAdministratorById = createAction(\n AdministratorActionTypes.GetAdministratorById,\n);\nexport const getAdministratorByIdSuccess = createAction(\n AdministratorActionTypes.GetAdministratorByIdSuccess,\n);\nexport const getAdministratorByIdError = createAction(\n AdministratorActionTypes.GetAdministratorByIdError,\n);\n\nexport const clearAdministrator = createAction(\n AdministratorActionTypes.ClearAdministrator,\n);\n\nexport const editAdministrator = createAction(\n AdministratorActionTypes.EditAdministrator,\n);\n\nexport const editAdministratorSuccess = createAction(\n AdministratorActionTypes.EditAdministratorSuccess,\n);\n\nexport const editAdministratorError = createAction(\n AdministratorActionTypes.EditAdministratorError,\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { AdministratorDTO, Page } from 'utils/restApplicationClient';\n\nexport const administratorErrorsSelector = (\n state: AppState,\n): { [key: string]: string | undefined } => state.administrator.errors;\n\nexport const administratorsPageableSelector = (\n state: AppState,\n): Page | undefined =>\n state.administrator.administratorsPageable;\n\nexport const administratorSelector = (\n state: AppState,\n): AdministratorDTO | undefined => state.administrator.administrator;\n\nexport const getAdministratorErrorsSelector = createSelector(\n administratorErrorsSelector,\n (errors) => errors,\n);\n\nexport const getAdministratorsPageableSelector = createSelector(\n administratorsPageableSelector,\n (administrators) => administrators,\n);\n\nexport const getAdministratorSelector = createSelector(\n administratorSelector,\n (administrator) => administrator,\n);\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};\n","import { createAction } from '@reduxjs/toolkit';\nimport { IEditClient, IPaginationOptions } from 'types/api';\nimport { ClientDTO, CreateClientDTO, Page } from 'utils/restApplicationClient';\nimport { ClientActionTypes } from './client.actions.types';\n\nexport const getAllClients = createAction(ClientActionTypes.GetAllClients);\n\nexport const getAllClientsError = createAction(\n ClientActionTypes.GetAllClientsError,\n);\nexport const getAllClientsSuccess = createAction(\n ClientActionTypes.GetAllClientsSuccess,\n);\nexport const createClient = createAction(\n ClientActionTypes.CreateClient,\n);\nexport const createClientSuccess = createAction(\n ClientActionTypes.CreateClientSuccess,\n);\nexport const createClientError = createAction(\n ClientActionTypes.CreateClientError,\n);\n\nexport const getClientsPageable = createAction(\n ClientActionTypes.GetClientsPageable,\n);\nexport const getClientsPageableSuccess = createAction>(\n ClientActionTypes.GetClientsPageableSuccess,\n);\nexport const getClientsPageableError = createAction(\n ClientActionTypes.GetClientsPageableError,\n);\nexport const editClient = createAction(\n ClientActionTypes.EditClient,\n);\nexport const editClientSuccess = createAction(\n ClientActionTypes.EditClientSuccess,\n);\nexport const editClientError = createAction(ClientActionTypes.EditClientError);\n\nexport const getClientById = createAction(\n ClientActionTypes.GetClientById,\n);\nexport const getClientByIdSuccess = createAction(\n ClientActionTypes.GetClientByIdSuccess,\n);\nexport const getClientByIdError = createAction(\n ClientActionTypes.GetClientByIdError,\n);\n\nexport const clearClient = createAction(ClientActionTypes.ClearClient);\n\nexport const clearClientErrors = createAction(\n ClientActionTypes.ClearClientErrors,\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { ClientDTO, Page } from 'utils/restApplicationClient';\n\nexport const clientsPageableSelector = (\n state: AppState,\n): Page | undefined => state.client.clientsPageable;\n\nexport const allClientsSelector = (state: AppState): ClientDTO[] =>\n state.client.clients;\n\nexport const errorsSelector = (\n state: AppState,\n): { [key: string]: string | undefined } => state.client.errors;\n\nexport const clientSelector = (state: AppState): ClientDTO | undefined =>\n state.client.client;\n\nexport const getClientsPageableSelector = createSelector(\n clientsPageableSelector,\n (clients) => clients,\n);\n\nexport const getAllClientsSelector = createSelector(\n allClientsSelector,\n (clients) => clients,\n);\n\nexport const getClientErrorsSelector = createSelector(\n errorsSelector,\n (errors) => errors,\n);\n\nexport const getClientSelector = createSelector(\n clientSelector,\n (updateClient) => updateClient,\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 {\n getAdministratorErrorsSelector,\n getAdministratorSelector,\n} 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 {\n CreateAdministratorDTO,\n UpdateAdministratorDTO,\n} 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 &\n RouteComponentProps &\n IDispatchProps &\n IStateProps &\n 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 = (\n values: CreateAdministratorDTO & UpdateAdministratorDTO,\n ): 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 \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 }): JSX.Element => (\n \n )}\n \n {administrator && (\n \n )}\n \n \n )}\n />\n
\n );\n }\n}\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n createAdministrator: (payload: CreateAdministratorDTO): AppDispatch =>\n dispatch(createAdministrator(payload)),\n getAllClients: (): AppDispatch => dispatch(getAllClients()),\n clearAdministratorErrors: (): AppDispatch =>\n dispatch(clearAdministratorErrors()),\n getAdministratorById: (payload: string): AppDispatch =>\n dispatch(getAdministratorById(payload)),\n clearAdministrator: (): AppDispatch => dispatch(clearAdministrator()),\n editAdministrator: (payload: IEditAdministrator): AppDispatch =>\n 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(\n mapStateToProps,\n mapDispatchToProps,\n)(withRouter(withTranslation()(AddAdministratorContainer)));\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Checkbox } from '@material-ui/core';\nimport { Component, FormEvent, Fragment, InputHTMLAttributes } from 'react';\nimport { Field, FieldInputProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport {\n CheckboxFieldDiv,\n CustomCheckboxGroupDiv,\n CustomCheckboxGroupDivRow,\n CustomCheckboxGroupLabel,\n CustomCheckboxGroupTextField,\n CustomCheckboxGroupTypography,\n} from './CustomInput.style';\n\ninterface IProps {\n label: string;\n rows: Array<{\n label: string;\n valueInput?: boolean;\n endText?: string;\n initialInputValue?: string;\n initialValue?: boolean;\n }>;\n names: Array;\n testId?: string;\n}\n\ntype PropType = IProps & WithTranslation;\n\nexport class CustomCheckboxGroup extends Component {\n handleinputChange =\n (input: FieldInputProps) =>\n (event: FormEvent): void => {\n const value = Number((event.target as HTMLInputElement).value);\n if (value <= 9999 && value >= 1) {\n input.onChange(event);\n }\n };\n\n render(): JSX.Element {\n const { t, label, rows, testId, names } = this.props;\n return (\n \n {t(label)}\n \n {rows.map((value, index) => {\n return (\n \n \n {({ input }): JSX.Element => (\n \n \n }\n color={'secondary'}\n />\n {\n input.onChange(!input.checked);\n }}\n >\n {t(value.label)}\n \n {value.valueInput && (\n \n \n {({ input: _input }): JSX.Element => (\n \n )}\n \n {value.endText && (\n {\n input.onChange(!input.checked);\n }}\n >\n {t(value.endText)}\n \n )}\n \n )}\n \n )}\n \n \n );\n })}\n \n \n );\n }\n}\n\nexport default withTranslation()(CustomCheckboxGroup);\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 CustomCheckboxGroup from 'components/Form/Input/CustomCheckboxGroup';\nimport CustomFieldRow from 'components/Form/Input/CustomFieldRow';\nimport { CustomInputError } from 'components/Form/Input/CustomInput.style';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport { createForm } from 'final-form';\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} from 'store/client/client.actions';\nimport {\n getClientErrorsSelector,\n getClientSelector,\n} from 'store/client/client.selectors';\nimport { IEditClient } from 'types/api';\nimport {\n composeValidators,\n fetchValidator,\n importMethodsValidator,\n required,\n} from 'utils/customValidators';\nimport { ClientDTO, CreateClientDTO } from 'utils/restApplicationClient';\nimport { addClientContainerStyles } from './addClientContainer.style';\n\ninterface IStateProps {\n errors: { [key: string]: string | undefined };\n client: ClientDTO | undefined;\n}\n\ninterface IDispatchProps {\n createClient: (payload: CreateClientDTO) => AppDispatch;\n editClient: (payload: IEditClient) => AppDispatch;\n getClientById: (payload: string) => AppDispatch;\n clearClient: () => AppDispatch;\n clearClientErrors: () => AppDispatch;\n}\n\ninterface IForm extends Omit {\n automaticImportInput: string;\n}\n\n// eslint-disable-next-line max-lines-per-function\nexport const AddClientForm = (\n props: IStateProps & IDispatchProps,\n): 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 [submitValues, setSubmitValues] = useState<{\n clientName?: string;\n status?: boolean;\n }>({\n clientName: undefined,\n status: undefined,\n });\n\n const { client } = props;\n\n const onSubmit = (values: IForm): void => {\n props.clearClientErrors();\n setSubmitValues(values);\n const { automaticImportInput, ...rest } = values;\n const createClientParameters: CreateClientDTO = {\n ...rest,\n importInterval: Number(automaticImportInput),\n };\n if (clientId) {\n editClient({ clientId, updateClient: createClientParameters });\n } else {\n createClient(createClientParameters);\n }\n };\n\n useEffect(() => {\n if (clientId) {\n props.getClientById(clientId);\n }\n return (): void => {\n props.clearClient();\n props.clearClientErrors();\n };\n }, []);\n\n const form = createForm({\n onSubmit,\n validate: importMethodsValidator,\n });\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 \n {stateErrors && submitFailed && (\n {t(stateErrors.error)}\n )}\n {client && (\n \n )}\n \n \n )}\n />\n
\n );\n};\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n createClient: (payload: CreateClientDTO): AppDispatch =>\n dispatch(createClient(payload)),\n editClient: (payload: IEditClient): AppDispatch =>\n dispatch(editClient(payload)),\n getClientById: (payload: string): AppDispatch =>\n dispatch(getClientById(payload)),\n clearClient: (): AppDispatch => dispatch(clearClient()),\n clearClientErrors: (): AppDispatch => dispatch(clearClientErrors()),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n errors: getClientErrorsSelector(state),\n client: getClientSelector(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 );\n }\n if (connected) {\n return (\n \n );\n }\n return (\n \n );\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 {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Button,\n CircularProgress,\n} 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 {\n getconnectDataSpinnerSelector,\n getConnectToXtmSpinnerSelector,\n} from 'store/spinner/spinner.selectors';\nimport {\n clearUserErrors,\n xtmConnect,\n xtmConnectUser,\n xtmGetConnectData,\n} from 'store/user/user.actions';\nimport {\n getUserErrorsSelector,\n getUserSelector,\n getXtmAuthorizationIdSelector,\n getXtmConnectDataSelector,\n} from 'store/user/user.selectors';\nimport {\n composeValidators,\n fetchValidatorObject,\n required,\n} from 'utils/customValidators';\nimport { UserDTO } from 'utils/restApplicationClient';\nimport {\n XTMConnectionParametersDTO,\n XTMConnectRequest,\n} 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: {\n userId: string;\n xtmParameters: XTMConnectRequest;\n }) => 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 (\n previousProps.connectData === undefined &&\n connectData &&\n userId &&\n type === UserRouteParameterEnum.edit\n ) {\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 {\n t,\n errors,\n connectData,\n connectDataSpinner,\n connectToXtmSpinner,\n meta,\n } = this.props;\n return (\n \n \n {t('users.xtm.connect')}\n \n \n }\n >\n \n \n {this.state.connected\n ? t('users.connected')\n : 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 = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n xtmConnect: (payload: XTMConnectRequest): AppDispatch =>\n dispatch(xtmConnect(payload)),\n clearUserErrors: (): AppDispatch => dispatch(clearUserErrors()),\n getConnectData: (payload: string): AppDispatch =>\n dispatch(xtmGetConnectData(payload)),\n xtmConnectUser: (payload: {\n userId: string;\n xtmParameters: XTMConnectRequest;\n }): AppDispatch => dispatch(xtmConnectUser(payload)),\n});\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps,\n )(withTranslation()(XtmConnectAccordion)),\n);\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: white;\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 {\n getCustomerSpinnerSelector,\n getDefaultLanguagesSpinnerSelector,\n getTemplateSpinnerSelector,\n} from 'store/spinner/spinner.selectors';\nimport {\n clearDefaultUserLanguages,\n clearXtmTemplates,\n getDefaultUserLanguages,\n xtmGetCustomers,\n xtmGetCustomersById,\n xtmGetTemplates,\n xtmGetTemplatesById,\n} from 'store/user/user.actions';\nimport { IGetLanguages } from 'store/user/user.interface';\nimport {\n getDefaultUserLanguagesSelector,\n getXtmCustomersSelector,\n getXtmTemplatesSelector,\n} from 'store/user/user.selectors';\nimport {\n composeValidators,\n isAllowedPrefix,\n required,\n} from 'utils/customValidators';\nimport { isObjectEqual } from 'utils/objectEquality';\nimport {\n LanguageDTO,\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 CustomFieldRow from '../Input/CustomFieldRow';\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: {\n xtmAuthId: string;\n xtmCustomerId: string;\n }) => AppDispatch;\n getCustomersById: (payload: string) => AppDispatch;\n getTemplatesById: (payload: {\n userId: string;\n queryParams: { xtmCustomerId: string };\n }) => AppDispatch;\n clearTemplates: () => AppDispatch;\n getDefaultUserLanguages: (payload: IGetLanguages) => AppDispatch;\n clearDefaultUserLanguages: () => AppDispatch;\n}\n\ninterface IStateProps {\n customers?: XTMCustomerDTO[];\n templates?: XTMTemplateDTO[];\n customerSpinner: boolean;\n templateSpinner: boolean;\n languages: LanguageDTO[];\n defaultUserLanguagesSpinner: boolean;\n}\n\ntype PropType = IProps & IDispatchProps & IStateProps;\n\nexport class ConnectedFields extends Component {\n componentDidMount(): void {\n const {\n authorizationId,\n getCustomers,\n getCustomersById,\n user,\n getTemplatesById,\n } = this.props;\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, getDefaultUserLanguages, form, user } = this.props;\n const { interfaceLanguage, xtmAuthorizationId: xtmAuthId } =\n form.getState().values;\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 this.props.clearDefaultUserLanguages();\n }\n\n if (\n previousProps.authorizationId !== authorizationId &&\n authorizationId &&\n user\n ) {\n getDefaultUserLanguages({\n xtmCustomerId: user.xtmProperties.xtmCustomerId.toString(),\n queryParams: {\n interfaceLanguage,\n xtmAuthId,\n },\n });\n }\n }\n\n shouldUpdate(\n previousCustomers: XTMCustomerDTO[],\n customers: XTMCustomerDTO[],\n ): boolean {\n if (previousCustomers.length !== customers.length) {\n return true;\n }\n return !customers.reduce(\n (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 },\n true,\n );\n }\n\n mapCustomersToRows(\n customers?: XTMCustomerDTO[],\n ): 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(\n templates?: XTMTemplateDTO[],\n ): 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(\n languages: LanguageDTO[],\n ): Array<{ value: string; name: string }> {\n if (!languages) {\n return [];\n }\n return languages.map((languages) => ({\n value: languages.languageCode,\n name: languages.name,\n }));\n }\n\n handleCustomerChange = (\n event: ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>,\n ): void => {\n const {\n authorizationId,\n getTemplates,\n getDefaultUserLanguages,\n getTemplatesById,\n user,\n form,\n } = this.props;\n const { interfaceLanguage, xtmAuthorizationId: xtmAuthId } =\n form.getState().values;\n const xtmCustomerId = event.target.value as string;\n\n form.change('defaultTranslationSourceLanguage', undefined);\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 getDefaultUserLanguages({\n xtmCustomerId,\n queryParams: {\n interfaceLanguage,\n xtmAuthId,\n },\n });\n };\n\n selectSpinner = (): JSX.Element => {\n return (\n \n );\n };\n\n render(): JSX.Element {\n const {\n native,\n customers,\n templates,\n customerSpinner,\n templateSpinner,\n user,\n languages,\n defaultUserLanguagesSpinner,\n } = 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, meta }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n {user && (\n \n )}\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 languages: getDefaultUserLanguagesSelector(state),\n defaultUserLanguagesSpinner: getDefaultLanguagesSpinnerSelector(state),\n});\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n getCustomers: (payload: XTMConnectDTO): AppDispatch =>\n dispatch(xtmGetCustomers(payload)),\n getTemplates: (payload: {\n xtmAuthId: string;\n xtmCustomerId: string;\n }): AppDispatch => dispatch(xtmGetTemplates(payload)),\n getCustomersById: (payload: string): AppDispatch =>\n dispatch(xtmGetCustomersById(payload)),\n getTemplatesById: (payload: {\n userId: string;\n queryParams: { xtmCustomerId: string };\n }): AppDispatch => dispatch(xtmGetTemplatesById(payload)),\n clearTemplates: (): AppDispatch => dispatch(clearXtmTemplates()),\n getDefaultUserLanguages: (payload: IGetLanguages): AppDispatch =>\n dispatch(getDefaultUserLanguages(payload)),\n clearDefaultUserLanguages: (): AppDispatch =>\n dispatch(clearDefaultUserLanguages()),\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 = (\n routeRoles: Roles[] = [],\n userRoles: Roles[] = [],\n): boolean => {\n return routeRoles.reduce(\n (previous: boolean, current: Roles) =>\n userRoles.includes(current) || previous,\n false,\n );\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 CustomCheckboxGroup from 'components/Form/Input/CustomCheckboxGroup';\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 clearDefaultUserLanguages,\n clearUser,\n clearUserErrors,\n createUser,\n editUser,\n getUserById,\n} from 'store/user/user.actions';\nimport { IEditUser } from 'store/user/user.interface';\nimport {\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 importMethodsValidator,\n optionalValidator,\n password,\n required,\n} from 'utils/customValidators';\nimport {\n AuthenticationResult,\n ClientDTO,\n UserDTO,\n} from 'utils/restApplicationClient';\nimport {\n CreateUserDTO,\n UpdateUserDTO,\n} from 'utils/restApplicationClientTypeOverrides';\n\ninterface IStateProps {\n errors: { [key: string]: string };\n clients: ClientDTO[];\n user?: UserDTO;\n authorizationId?: string;\n currentUser: AuthenticationResult;\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 clearDefaultUserLanguages: () => 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\n extends Omit<\n CreateUserDTO,\n 'overrideTextLayersWithTranslations, importInterval'\n > {\n language: string;\n automaticImportInput: string;\n}\n\nexport class AddUserContainer extends Component<\n WithTranslation &\n RouteComponentProps &\n IProps &\n IStateProps &\n IDispatchProps,\n IState\n> {\n componentDidMount(): void {\n const {\n getAllClients,\n getUserById,\n match: {\n params: { id: userId },\n },\n } = this.props;\n clearUserErrors();\n clearUser();\n getAllClients();\n if (userId) {\n getUserById(userId);\n }\n }\n\n componentWillUnmount(): void {\n const { clearUser, clearUserErrors, clearDefaultUserLanguages } =\n this.props;\n clearUserErrors();\n clearUser();\n clearDefaultUserLanguages();\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 getImportMethodValue = (\n key:\n | 'importAllJobs'\n | 'importInterval'\n | 'importPerJobs'\n | 'automaticImport',\n isClientAdmin?: boolean,\n ): boolean | number | undefined => {\n const {\n user,\n clients,\n match: {\n params: { id },\n },\n } = this.props;\n if (id) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return user ? (user.userSpecification as any)[key] : undefined;\n }\n if (isClientAdmin) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return clients[0] ? (clients[0] as any)[key] : undefined;\n }\n return undefined;\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 const {\n automaticImportInput,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ...rest\n } = values;\n const parameters: CreateUserDTO = {\n ...rest,\n importInterval: Number(automaticImportInput),\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { xtmAuthorizationId, ...editParameters } = parameters;\n if (userId && type === UserRouteParameterEnum.edit) {\n this.props.editUser({\n userId,\n updateUser: editParameters,\n });\n } else {\n this.props.createUser(parameters);\n }\n };\n\n handleClientChange = (\n event: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>,\n ): void => {\n const client = this.props.clients.find(\n (client) => client.id === event.target.value,\n );\n this.form.change('importAllJobs', client?.importAllJobs);\n this.form.change('automaticImportInput', client?.importInterval.toString());\n this.form.change('importPerJobs', client?.importPerJobs);\n this.form.change('automaticImport', client?.automaticImport);\n };\n\n form: FormApi = createForm({\n onSubmit: this.onSubmit,\n validate: importMethodsValidator,\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 clients,\n } = this.props;\n\n const shouldConnectedFieldsRender =\n user &&\n user.xtmProperties &&\n user.xtmProperties.xtmCustomerId &&\n user.xtmProperties.xtmTemplateId;\n\n const isClientAdmin = checkRoles(\n [Roles.ADMIN_CLIENT],\n currentUser.roles as Roles[],\n );\n\n const importAll = this.getImportMethodValue('importAllJobs', isClientAdmin);\n const importOne = this.getImportMethodValue('importPerJobs', isClientAdmin);\n const importInterval = this.getImportMethodValue(\n 'automaticImport',\n isClientAdmin,\n );\n const importIntervalValue = this.getImportMethodValue(\n 'importInterval',\n isClientAdmin,\n );\n return (\n \n \n (\n
\n \n {({ input, meta }): JSX.Element => (\n \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 \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n \n {stateErrors && submitFailed && (\n {t(stateErrors.error)}\n )}\n \n {(inputProps): JSX.Element => (\n \n )}\n \n {(authorizationId || shouldConnectedFieldsRender) && (\n \n )}\n \n \n )}\n />\n
\n );\n }\n}\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n getAllClients: (): AppDispatch => dispatch(getAllClients()),\n createUser: (payload: CreateUserDTO): AppDispatch =>\n 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 clearDefaultUserLanguages: (): AppDispatch =>\n dispatch(clearDefaultUserLanguages()),\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});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(withTranslation()(AddUserContainer));\n","export const TableActionTypes = {\n setPaginationOptions: 'TABLE_SET_PAGINATION_OPTIONS',\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\ntype TableConstantsTypes = typeof TableActionTypes;\n\nexport const setPaginationOptions = createAction<\n ITablePaginationOptions,\n TableConstantsTypes['setPaginationOptions']\n>(TableActionTypes.setPaginationOptions);\n\nexport const clearPaginationOptions = createAction(\n TableActionTypes.clearPaginationOptions,\n);\n\nexport const setPaginationSearch = createAction<\n string,\n TableConstantsTypes['setPaginationSearch']\n>(TableActionTypes.setPaginationSearch);\n\nexport const setPaginationAction = createAction<\n ActionCreatorWithPayload | undefined,\n TableConstantsTypes['setPaginationAction']\n>(TableActionTypes.setPaginationAction);\n\nexport const setPaginationSearchSpinner = createAction<\n boolean,\n TableConstantsTypes['setPaginationSearchSpinner']\n>(TableActionTypes.setPaginationSearchSpinner);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { ITablePaginationOptions } from './table.interface';\n\nconst paginationOptionsSelector = (state: AppState): ITablePaginationOptions =>\n state.table.paginationOptions;\n\nconst searchSpinnerSelector = (state: AppState): boolean =>\n 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(\n content: Content,\n): 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 Content extends IDateFields,\n Payload extends IResponsePayload,\n>(payload: Payload): 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 {\n IconButtonTypeMap,\n SelectProps,\n TablePagination,\n} 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: (\n event: MouseEvent | null,\n page: number,\n ) => void;\n onChangeRowsPerPage: (\n event: ChangeEvent,\n ) => void;\n page: number;\n rowsPerPage: number;\n count?: number;\n nativeSelect?: boolean;\n}\n\nclass Pagination extends PureComponent {\n getPaginationLabelDisplayedRows({\n to,\n from,\n count,\n }: {\n to: number;\n from: number;\n count: number;\n }): JSX.Element {\n return ;\n }\n render(): JSX.Element {\n const { count, t, onChangePage, onChangeRowsPerPage, page, rowsPerPage } =\n 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\n | Partial, 'button'>>\n | 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: white !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 \n {t('table.tableEmpty')}\n \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 {\n ChangeEvent,\n ClassAttributes,\n Component,\n ComponentType,\n Fragment,\n MouseEvent,\n} from 'react';\nimport {\n withTranslation,\n WithTranslation,\n WithTranslationProps,\n} from 'react-i18next';\nimport { connect, ConnectedComponent } from 'react-redux';\nimport { AppDispatch, AppState } from 'store';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport {\n clearPaginationOptions,\n setPaginationAction,\n setPaginationOptions,\n} 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: (\n payload: ActionCreatorWithPayload | undefined,\n ) => 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 = (\n event: MouseEvent | null,\n page: number,\n ): void => {\n this.props.setPaginationOptions({ page });\n };\n onChangeRowsPerPage = ({\n target: { value },\n }: 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 );\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(\n pageable &&\n pageable.content &&\n pageable.content.length &&\n !fetchSpinner,\n ) && (\n \n {headers.map((headCell, index) => (\n \n \n {t(headCell.label)}\n \n \n ))}\n \n {displayActionsLabel ? t('common.actions') : ''}\n \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 \n {this.parseColumn(row, header.id as keyof T)}\n \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 >\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 = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n setPaginationOptions: (payload: ITablePaginationOptions): AppDispatch =>\n dispatch(setPaginationOptions(payload)),\n setPaginationAction: (\n payload: ActionCreatorWithPayload | undefined,\n ): AppDispatch => dispatch(setPaginationAction(payload)),\n clearPaginationOptions: (): AppDispatch => dispatch(clearPaginationOptions()),\n});\nexport default function CustomTableContainer<\n T extends IExtend,\n>(): 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 )(\n withTranslation()(\n CustomTable as new (props: IProps & WithTranslation) => CustomTable,\n ),\n );\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 {t(buttonLabelKey)}\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 {\n setPaginationSearch,\n setPaginationSearchSpinner,\n} 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 IProps & IStateProps & IDispatchProps\n> {\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 = (\n event: ChangeEvent,\n ): 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 = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n setSearch: (payload: string): void => dispatch(setPaginationSearch(payload)),\n setPaginationSearchSpinner: (payload: boolean): void =>\n 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 } from 'store';\nimport { getAdministratorsPageable } from 'store/administrator/administrator.actions';\nimport { getAdministratorsPageableSelector } from 'store/administrator/administrator.selectors';\nimport { AdministratorDTO, Page } from 'utils/restApplicationClient';\n\ninterface IStateProps {\n administratorsPageable?: Page;\n fetchSpinnerOverride?: boolean;\n}\n\nconst TestTable = CustomTableContainer();\nexport class AdministratorsContainer extends Component<\n RouteComponentProps & IStateProps\n> {\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.modificationDate', 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 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\nexport default connect(mapStateToProps)(withRouter(AdministratorsContainer));\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';\nimport { AppState } from 'store';\nimport { getClientsPageable } from 'store/client/client.actions';\nimport { getClientsPageableSelector } from 'store/client/client.selectors';\nimport { ClientDTO, Page } from 'utils/restApplicationClient';\n\ninterface IStateProps {\n clientsPageable?: Page;\n fetchSpinnerOverride?: boolean;\n}\n\nconst TestTable = CustomTableContainer();\n\nexport class ClientsContainer extends Component<\n IStateProps & RouteComponentProps\n> {\n headers = [\n { label: 'common.id', id: 'id' },\n { label: 'common.clientName', id: 'clientName' },\n { label: 'common.availability', id: 'status' },\n { label: 'common.creationDate', id: 'createdAt' },\n { label: 'common.modificationDate', 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 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\nexport default connect(mapStateToProps)(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 =>\n 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(\n usersPageableSelector,\n (users) => users,\n);\n\nexport const getAllUsersSelector = createSelector(\n allUsersSelector,\n (users) => users,\n);\n\nexport const getUserSelector = createSelector(\n userSelector,\n (updateUser) => updateUser,\n);\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 } from 'store';\nimport { usersPageable } from 'store/user/user.actions';\nimport { Page, UserDTO } from 'utils/restApplicationClient';\nimport { getUsersPageableSelector } from '../../store/user/users.selectors';\n\ninterface IStateProps {\n users?: Page;\n}\n\nconst UserTable = CustomTableContainer();\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(\n `user/${UserRouteParameterEnum.duplicate}/${row.id}`,\n );\n };\n\n onAdd = (): void => {\n this.props.history.push('user/add');\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\nexport default connect(mapStateToProps)(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: white;\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 {\n AuthenticationResult,\n RefreshTokenResult,\n} 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 (\n element.navbar &&\n element.routeTextKey &&\n checkRoles(element.roles, this.props.data?.roles as Roles[])\n );\n });\n }\n\n setTabValue = (): string | boolean => {\n const value = this.pagesToRender.find((element) =>\n this.props.location.pathname.startsWith(element.pathname),\n );\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 {\n getAuthSelector,\n getUserDataSelector\n} from 'store/user/user.selectors';\nimport { IRoute } from 'types/route';\nimport { checkRoles } from 'utils/checkRoles';\nimport {\n AuthenticationResult,\n RefreshTokenResult\n} 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 IDispatchProps & IStateProps\n> {\n logout = (): void => {\n this.props.logout();\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(\n roles,\n (this.props.data?.roles as Roles[]) || roles,\n );\n return isAllowed ? : ;\n }\n\n handleOpenLink = (url: string) => (): void => {\n window.open(url, '_blank');\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}\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): 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(\n mapStateToProps,\n mapDispatchToProps,\n)(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 {\n ICloseAlertPayload,\n IShowErrorPayload,\n NotificationActionTypes,\n} from './notify.actions.types';\n\ntype ErrorAction = typeof NotificationActionTypes;\n\nexport const showError = createAction<\n IShowErrorPayload,\n ErrorAction['showError']\n>(NotificationActionTypes.showError);\nexport const showSuccessful = createAction<\n IShowErrorPayload,\n ErrorAction['showSuccessful']\n>(NotificationActionTypes.showSuccessful);\nexport const closeAlert = createAction<\n ICloseAlertPayload,\n ErrorAction['closeAlert']\n>(NotificationActionTypes.closeAlert);\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(\n (store) => store.notify.notifications,\n );\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 {\n getAuthSelector,\n getVerifyFinishSelector,\n} 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 )}\n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\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 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(\n showSuccessful({ message: 'administrator.success.create' }),\n );\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(\n createAdministratorError('administrator.errors.duplicate'),\n );\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 = (\n actions$,\n _,\n { browserHistory },\n) =>\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(\n api.editAdministrator(\n payload.administratorId,\n payload.updateAdministrator,\n ),\n ).pipe(\n switchMap(() => {\n store.dispatch(\n showSuccessful({ message: 'administrator.success.edit' }),\n );\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(\n createAdministratorError('administrator.errors.duplicate'),\n );\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} from './client.actions';\n\nexport const 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\nexport const 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\nexport const 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\nexport const 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\nexport const 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\nexport const clientEpics = combineEpics(\n getClientsPageableEpic,\n getAllClientsEpic,\n createClientEpic,\n editClientEpic,\n getClientByIdEpic,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n clearClient,\n clearClientErrors,\n createClientError,\n getAllClientsSuccess,\n getClientByIdSuccess,\n getClientsPageableSuccess,\n} from './client.actions';\nimport { IClientState } from './client.interface';\n\nconst initState: IClientState = {\n clients: [],\n errors: {},\n clientsPageable: undefined,\n client: undefined,\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);\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 = [\n ...state.notifications.filter(\n (notify) => notify.key !== action.payload.key,\n ),\n ];\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(\n SpinnerActionTypes.setFetchSpinner,\n);\n\nexport const setTemplateSpinner = createAction(\n SpinnerActionTypes.setTemplateSpinner,\n);\n\nexport const setCustomerSpinner = createAction(\n SpinnerActionTypes.setCustomerSpinner,\n);\n\nexport const setConnectDataSpinner = createAction(\n SpinnerActionTypes.setConnectDataSpinner,\n);\n\nexport const setConnectToXtmSpinner = createAction(\n SpinnerActionTypes.setConnectToXtmSpinner,\n);\n\nexport const setConnectToCMSSpinner = createAction(\n SpinnerActionTypes.setConnectToCMSSpinner,\n);\n\nexport const setDefaultUserLanguageSpinner = createAction(\n SpinnerActionTypes.setDefaultUserLanguagesSpinner,\n);\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 (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\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 (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\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 (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\n return of(setCustomerSpinner(false));\n }\n return of(setCustomerSpinner(true));\n }),\n );\n\nconst connectDataSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(\n xtmGetConnectData.type,\n xtmGetConnectDataSuccess.type,\n xtmGetConnectDataError.type,\n ),\n debounceTime(500),\n switchMap(({ type }) => {\n if (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\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 (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\n return of(setConnectToXtmSpinner(false));\n }\n return of(setConnectToXtmSpinner(true));\n }),\n );\n\nconst connectToCMSSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(\n xtmConnectToCMSError.type,\n xtmConnectToCMSSuccess.type,\n xtmConnectToCMS.type,\n ),\n debounceTime(500),\n switchMap(({ type }) => {\n if (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\n return of(setConnectToCMSSpinner(false));\n }\n return of(setConnectToCMSSpinner(true));\n }),\n );\n\nconst defaultUserLanguagesSpinnerEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(\n getDefaultUserLanguages.type,\n getDefaultUserLanguagesSuccess.type,\n getDefaultUserLanguagesError.type,\n ),\n debounceTime(500),\n switchMap(({ type }) => {\n if (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\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 {\n setPaginationAction,\n setPaginationOptions,\n setPaginationSearch,\n} from './table.actions';\n\nconst getRowsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(\n setPaginationOptions.type,\n setPaginationSearch.type,\n setPaginationAction.type,\n ),\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 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(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) =>\n timer((ttl - 10) * 1000),\n ),\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(\n api.sendResetPasswordEmailForAdmin({ email, language: i18n.language }),\n ).pipe(\n switchMap(() => {\n store.dispatch(\n showSuccessful({ message: 'auth.success.resetPasswordSent' }),\n );\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(\n showSuccessful({ message: 'auth.success.resetPasswordSent' }),\n );\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(\n showSuccessful({ message: 'auth.success.changePassword' }),\n );\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(\n showSuccessful({ message: 'auth.success.changePassword' }),\n );\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 = (\n actions$,\n state$,\n { browserHistory },\n) =>\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(\n showSuccessful({ message: i18n.t('users.success.create') }),\n );\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(\n api.editUser(res.payload.userId, res.payload.updateUser),\n ).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 }) =>\n from(api.getUser(payload)).pipe(\n switchMap(({ data }) => of(getUserByIdSuccess(data))),\n ),\n ),\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(\n xtmGetCustomers.type,\n xtmConnectSuccess.type,\n xtmConnectUserSuccess.type,\n ),\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(\n api.getXTMTemplatesForExistingUser$GET$api_xtm_templates_userId(\n payload.userId,\n payload.queryParams,\n ),\n ).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(({ payload }) =>\n from(\n api.getAvailableSourceLanguages(payload.xtmCustomerId, {\n ...payload.queryParams,\n }),\n ).pipe(\n switchMap(({ data }) => of(getDefaultUserLanguagesSuccess(data))),\n catchError(() => {\n return of(getDefaultUserLanguagesError());\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\n // getDefaultUserLanguages,\n // getDefaultUserLanguagesError,\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: undefined,\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(\n xtmConnectSuccess,\n (state, { payload: { xtmAuthorizationId } }) => {\n state.xtmAuthorizationId = xtmAuthorizationId;\n },\n )\n .addCase(\n xtmConnectUserSuccess,\n (state, { payload: { xtmAuthorizationId } }) => {\n state.xtmAuthorizationId = xtmAuthorizationId;\n },\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 = undefined;\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(\n combineEpics(\n userEpics,\n clientEpics,\n tableEpics,\n administratorEpics,\n spinnerEpics,\n ),\n);\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 { initTranslation } from 'utils/initTranslation';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport store from './store';\n\nSentry.init({\n dsn: process.env.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// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}