{"version":3,"sources":["main.style.ts","theme.ts","utils/restApplicationClient.ts","utils/axiosInstance.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","utils/versionDigits.ts","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","enums/userRouteParameter.ts","containers/ResetPassword/ResetPasswordContainer.tsx","components/ChangePasswordForm/ChangePasswordForm.tsx","layouts/login/routes.ts","containers/ChangePasswordContainer/ChangePasswordContainer.tsx","layouts/login/index.tsx","utils/envHandler.ts","components/LoginHeader/Buttons/Help.tsx","components/LoginHeader/Buttons/Logout.tsx","components/LoginHeader/Buttons/ReleaseNotes.tsx","components/Form/ButtonContainer/ButtonContainer.tsx","components/Form/CilentData/EditData.tsx","components/Form/Input/CustomCheckbox.tsx","components/Form/Input/CustomFieldRow.tsx","components/Form/Input/CustomSelect.tsx","store/administrator/administrator.actions.types.ts","store/administrator/administrator.actions.ts","store/administrator/administrator.selectors.ts","store/client/client.actions.types.ts","store/client/client.actions.ts","store/client/client.selectors.ts","containers/AddAdministrator/AddAdministratorContainer.tsx","components/CustomTooltip/CustomTooltip.tsx","components/CustomTooltip/CustomTooltip.styled.tsx","components/Form/Input/CustomAutocomplete.tsx","components/LanguageMapping/LanguageMappingContainer.styled.tsx","components/LanguageMapping/LanguageMappingContainer.tsx","containers/AddClientContainer/addClientContainer.style.ts","containers/AddClientContainer/AddClientContainer.tsx","components/Form/Accordion/Accordion.style.ts","enums/roles.ts","components/Form/Accordion/AccordionIcon.tsx","components/Form/Accordion/XtmConnectAccordion/XtmConnectAccordion.tsx","components/TableToolbar/TableToolbar.style.ts","components/Form/ConnectedFields/ConnectedFields.tsx","utils/checkRoles.ts","enums/filter.ts","containers/AddUser/AddUserContainer.tsx","store/table/table.actions.types.ts","store/table/table.actions.ts","store/table/table.selectors.ts","utils/parseDate.ts","components/Table/CustomTable.style.ts","components/Table/PaginationTransLabel.tsx","components/Table/Pagination.tsx","components/Table/TableEmpty/TableEmpty.style.ts","components/Table/TableEmpty/TableEmpty.tsx","components/Table/CustomTable.tsx","store/settings/settings.actions.types.ts","components/IconButtonLabel/IconButtonLabel.style.ts","components/IconButtonLabel/IconButtonLabel.tsx","components/TableToolbar/TableToolbar.tsx","containers/Administrators/AdministratorsContainer.tsx","containers/Clients/ClientsContainer.tsx","store/notify/notify.actions.types.ts","store/notify/notify.actions.ts","store/settings/settings.actions.ts","store/settings/settings.selectors.ts","containers/Settings/SettingsContainer.style.tsx","containers/Settings/SettingsContainer.tsx","utils/hooks/TypedSelector.tsx","containers/SettingsClientList/SettingsClientListContainer.tsx","components/DrawerPanel/DrawerPanel.styled.tsx","components/DrawerPanel/DrawerPanel.tsx","components/Form/Input/DraggableSelect/DraggableSelect.styled.ts","components/Form/Input/DraggableSelect/DraggableSelect.tsx","containers/SettingsView/SettingsFormHook.tsx","containers/SettingsView/SettingsViewContainer.style.ts","containers/SettingsView/SettingsFormContainer.tsx","containers/SettingsView/SettingsViewContainer.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","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/settings/settings.epics.ts","store/settings/settings.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","MuiButton","root","textTransform","fontWeight","MuiTablePagination","toolbar","background","MuiTableCell","head","MuiTableRow","backgroundColor","MuiTableContainer","width","MuiTab","fontSize","MuiAppBar","display","flexDirection","alignItems","padding","boxShadow","justifyContent","MuiTextField","MuiSelect","palette","primary","main","contrastText","secondary","RestApplicationClient","httpClient","options","this","request","method","url","uriEncoding","createAdministrator","data","queryParams","administratorId","updateAdministrator","authRequest","createClient","clientId","updateClient","xtmProject","projectId","activeProjectSearch","xtmCustomerId","translateRequest","spaceId","environmentId","entryId","contentfulConnection","entryRequestDTO","jobId","resetPassword","changePassword","verifyToken","saveOrganizationSettingsDTO","settingsAuthorizationDTO","settingsId","createUser","userId","updateUser","xtmConnectRequest","template","result","i","encodeURIComponent","length","AxiosHttpClient","axios","requestConfig","config","params","target","source","undefined","key","hasOwnProperty","assign","copyFn","then","axiosResponse","originalData","AxiosRestApplicationClient","baseURL","axiosInstance","create","defaults","Axios","interceptors","use","headers","accessToken","localStorage","getItem","refreshToken","includes","Authorization","response","ttl","setItem","String","api","initializeApi","window","_env_","REACT_APP_BACKEND_URL","clearCaches","a","location","reload","caches","keys","forEach","delete","console","error","checkVersion","currentVersion","process","fetch","json","metaVersion","version","resources","en","translation","common","client","table","administrator","validator","auth","users","settings","errormessage","i18n","i18next","initTranslation","LanguageDetector","initReactI18next","init","lng","fallbackLng","interpolation","escapeValue","appStyle","loginHeaderStyle","title","img","logoContainer","HeaderButton","styled","Button","HeaderLogoutButton","UserActionTypes","verifyPassToken","createAction","verifyPassTokenSuccess","verifyPassTokenError","changePasswordSuccess","changePasswordError","changeUserPassword","changeUserPasswordSuccess","changeUserPasswordError","loginUser","loginUserSuccess","loginUserError","logoutUser","logoutUserSuccess","resetPasswordSuccess","resetPasswordError","resetUserPassword","resetUserPasswordSuccess","resetUserPasswordError","verifyTokenSuccess","verifyTokenError","refreshTokenSuccess","getAllUsersSuccess","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","clearXtmTemplates","sessionExpired","showSessionExpired","hideSessionExpired","getAuthSelector","createSelector","state","user","getVerifyFinishSelector","verifyFinished","finished","getUserDataSelector","roles","getUserErrorsSelector","errors","getUserSelector","getXtmAuthorizationIdSelector","xtmAuthorizationId","authorizationId","getXtmCustomersSelector","customers","getXtmTemplatesSelector","templates","Array","isArray","getXtmConnectDataSelector","connectData","getSessionExpiredSeletor","xtmCMSconnected","cmsConnected","ModalDropdown","div","ModalWindow","ModalLogoBar","ModalTextDiv","SessionExpiredModal","handleClick","props","setSessionExpired","logout","t","visibility","src","Typography","variant","color","onClick","Component","connect","dispatch","payload","withTranslation","versionDigits","digits","regexp","splitVersionArray","split","splicedVersionArray","splice","splicedVersion","join","LoginHeader","AppBar","position","children","PureComponent","CustomLink","StyledDiv","wide","testId","text","linkProps","data-testid","FormDiv","center","customInputStyles","label","outlineError","textError","textErrorNoMargin","checkbox","formControl","labelDiv","ErrorDiv","FieldDiv","CheckboxDiv","SelectDiv","StyledTextField","TextField","StyledSelect","Select","InputDiv","column","CustomEndAdornment","CustomDraggableContainer","CustomAutocompleteTypography","AutocompleteTextField","draggable","AutocompleteChipDefaultSpan","span","CustomTypography","CustomField","touched","type","inputProps","disableAutoComplete","disabled","shouldErrorDisplay","margin","autoComplete","FormTitle","StyledTypography","align","getFetchSpinnerSelector","spinner","fetchSpinner","fetchSelector","getTemplateSpinnerSelector","templateSpinner","templateSelector","getCustomerSpinnerSelector","customerSpinner","getconnectDataSpinnerSelector","connectDataSpinner","getConnectToXtmSpinnerSelector","connectToXtmSpinner","getSettingsSpinnerSelector","connectToCMSSpinner","settingsSpinner","EMAIL_REGEX","PASSWORD_REGEX","ISNUMBER","PREFIX_REGEX","isObjectEqual","objectA","objectB","objectAProperties","Object","getOwnPropertyNames","objectBProperties","reduce","previousValue","currentValue","required","value","email","test","password","isNumber","isMaxLength","min","max","RegExp","isAllowedPrefix","composeValidators","validators","fetchValidator","fetchValidatorObject","values","map","requiredAutocomplete","optionalValidator","resetPasswordRouteParameterEnum","loginContainerStyles","button","form","LoginContainer","unsubscribe","submitValues","onSubmit","setState","login","createForm","subscribe","validate","subscription","pristine","submitting","render","handleSubmit","name","input","meta","CircularProgress","size","to","UserRouteParameterEnum","resetPasswordContainerStyles","ResetPasswordContainer","apiUrl","match","admin","applicationURL","trim","Box","height","withRouter","ChangePasswordForm","useDispatch","useTranslation","useLocation","URLSearchParams","search","get","useSelector","newPassword","token","resetPasswordToken","confirmPassword","comparePass","loginRoutes","pathname","component","exact","parameters","useEffect","verifyPassFinished","LoginLayoutComponent","route","path","getAllEnvironment","Manual","REACT_APP_HELP_URL","disableTouchRipple","viewBox","fill","xmlns","d","Logout","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","tooltip","tooltipText","selectStyle","Tooltip","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","getAllLanguages","getAllLanguagesSuccess","getAllLanguagesError","clientStateSelector","getClientsPageableSelector","clientsPageable","getAllClientsSelector","clients","getClientErrorsSelector","getClientSelector","getXTMLanguagesSelector","xtmLanguages","getContentfulLanguagesSelector","contentfulLanguages","AddAdministratorContainer","id","clientName","initialValue","status","parseClientSelect","Name","isOverflown","element","checkIfOverflown","offsetHeight","scrollHeight","offsetWidth","scrollWidth","typographyProps","maxLines","textColor","NameTypographyWidth","lines","CustomTooltipTypography","ref","CustomAutocomplete","handleChange","event","onDragEnd","destination","filteredData","removed","renderTags","getTagProps","tag","Chip","deleteIcon","icon","renderCustomTags","droppableId","direction","provided","innerRef","draggableId","draggableProps","dragHandleProps","renderAdornment","endAdornment","multi","noOptionsText","allowDragAndDrop","Autocomplete","fullWidth","multiple","getOptionLabel","option","getOptionSelected","renderInput","Boolean","InputProps","renderOption","CustomTooltip","marginTop","React","CustomLanguageMappingFieldContainer","CustomLanguageMappingContainer","fieldset","CustomLanguageMappingLegend","legend","CustomLanguageMappingButton","IconButton","CustomLanguageMappingRemoveButton","LanguageMappingContainer","handleAddLanguageMapping","fields","push","xtmLanguage","contentfulLanguage","setFilteredLanguages","handleRemoveLanguageMapping","remove","onContentfulLanguageChange","update","filteredLanguages","languageMappingFields","getFieldState","setTimeout","chosenContentfulLanguages","language","filter","languageMappingField","getContentfulLanguageValue","addClientContainerStyles","heading","btnContainer","useRouteMatch","useState","mappingInitialValue","setMappingInitialValue","setSubmitValues","getXTMLanguages","entries","contentfulXtmLanguagesMap","contentfulLanguageCode","xtmLangaugeCode","mapLanguages","languageArray","code","mappedLanguages","mapLanguagesToObject","mutators","arrayMutators","enabledEntryLevelLocalization","enabledTags","enabledOldHyperLinks","REACT_APP_IS_NON_HUMAN_TAGGING_ENABLED","nonHumanTranslationCustomFieldName","Roles","accordionStyles","summary","details","accordionError","accordionErrorText","accordionLabel","AccordionDiv","AccordionIcon","connected","renderIcon","XtmConnectAccordion","isNewPassword","xtmPassword","edit","xtmParameters","userUuidToCopyPassword","duplicate","xtmUrl","xtmCompanyName","username","getConnectData","previousProps","xtmUsername","Accordion","AccordionSummary","expandIcon","AccordionDetails","tableToolbarStyles","endAdornmentIcon","endAdornmentSpinner","ConnectedFields","handleCustomerChange","getTemplates","getTemplatesById","xtmAuthId","selectSpinner","getCustomers","xtmProperties","toString","shouldUpdate","change","clearTemplates","previousCustomers","previous","current","customer","xtmTemplateId","mapCustomersToRows","IconComponent","mapTemplatesToRows","xtmProjectNamePrefix","removeXTMFilesAfterDays","removeCancelledJobsAfterDays","getCustomersById","OrderDirection","checkRoles","routeRoles","userRoles","AddUserContainer","currentUser","isClientAdmin","ADMIN_CLIENT","defaultValue","includeEmailToProjectName","TableActionTypes","setPaginationOptions","clearPaginationOptions","setPaginationSearch","setPaginationAction","setPaginationSearchSpinner","getPaginationOptionsSelector","paginationOptions","getPaginationSearchSpinnerSelector","searchSpinner","parseDateBulk","contentParsed","content","createdAtParsed","modifiedAtParsed","parseDate","customTableStyle","container","iconContainer","spinnerCell","PaginationTransLabel","from","count","Fragment","Trans","i18nKey","Pagination","onChangePage","onChangeRowsPerPage","page","rowsPerPage","TablePagination","SelectProps","nativeSelect","labelDisplayedRows","getPaginationLabelDisplayedRows","rowsPerPageOptions","labelRowsPerPage","nextIconButtonProps","backIconButtonProps","nextIconButtonText","backIconButtonText","tableEmptyStyles","TableEmpty","CustomTable","Number","onChangeOrder","property","orderBy","order","isAsc","ASC","DESC","paginationProps","pageable","totalElements","parseColumn","renderEmpty","fetchSpinnerOverride","paginationAction","onEdit","onDuplicate","TableContainer","Paper","Table","stickyHeader","TableHead","TableRow","orderId","isSelected","TableCell","sortDirection","TableSortLabel","active","TableBody","colSpan","header","TableFooter","mapStateToProps","mapDispatchToProps","CustomTableContainer","SettingsActionTypes","iconButtonLabelStyle","Text","IconButtonLabel","buttonLabelKey","onAdd","TableToolbar","searchValue","debounceFn","throttleFn","onInputChange","persist","throttle","debounce","setSearch","callbackFunc","limit","wait","timeout","clearTimeout","TestTable","AdministratorsContainer","history","ClientsContainer","NotificationActionTypes","showError","showSuccessful","closeAlert","fetchSettings","fetchSettingsSuccess","fetchSettingsError","getSettings","getSettingsSuccess","getSettingsError","getAllSettings","getAllSettingsSuccess","getAllSettingsError","initializeContentful","InitializeContentful","initializeContentfulSuccess","InitializeContentfulSuccess","initializeContentfulError","InitializeContentfulError","initializationCheck","InitializationCheck","initializationCheckSuccess","InitializationCheckSuccess","addSpace","InitializationCheckError","setClientId","setClientID","deleteOrganizationSettings","deleteOrganizationSettingsSuccess","deleteOrganizationSettingsError","updateSettings","updateSettingsError","updateSettingsSuccess","setCurrentOrganizationSettings","changeCredentials","changeCredentialsSuccess","changeCredentialsError","selectSelf","getSettingsSelector","SettingsDTO","getAllSettingsSelector","allSettings","setAddSpaceSelector","addSettings","setClientIdSelector","isInitializedSelector","successes","success","getSettingsErrorsSelector","getCurrentOrganizationSettingsSelector","selectedOrganizationSettings","CentredContainer","CustomConnectionCard","Card","CustomTitleCard","Tittle","SettingsContainer","connectionSpaceId","cmaToken","ADMIN_XTM","selectedSettings","onChangingCredentials","canAddSpace","goBack","isInitialized","setAddSpace","formError","CardContent","showErrors","useTypedSelector","ClientTable","SettingsClientList","useHistory","isAdmin","CustomDrawer","Drawer","CustomDrawerContainer","ErrorTreeItem","TreeItem","ErrorListItemText","ListItemText","CenterDrawer","Label","node","className","CustomTreeItem","uniqueId","nodeId","elements","DrawerPanel","anchor","group","bottomElements","topElements","List","Divider","ListItem","ListItemIcon","Icon","TreeView","defaultCollapseIcon","defaultExpandIcon","DraggableSelectChip","DraggableSelectEllipsisContainer","DraggableSelectEllipsis","DraggableSelectArrowContainer","DraggableSelectIconButton","DraggableSelectOptionCheckbox","DraggableSelectInputContainer","DraggableSelectInput","InputBase","DraggableSelectChipContainer","DraggableSelectDataContainer","opened","hovered","DraggableSelectSpinnerContainer","DraggableSelectDefaultChip","DraggableSelectActionButton","DraggableSelectButtonContainer","DraggableSelectAutocompletePaper","DraggableSelectPopper","Popper","DraggableSelectSelectClasses","autocomplete","DraggableSelect","inputContainerRef","createRef","arrowRef","draggableContextRef","chipElements","draggableContextWidth","onHandleChange","anchorEl","canOpen","isDragged","currentTarget","handleClose","handleOnClose","preventDefault","nativeEvent","onChipDelete","handleChipDelete","handleOnChipDelete","record","onSelectAll","handleSelectAll","onClearAll","handleClearAll","customOnChange","handleDragEnd","onDragStart","checkIfOverflowed","some","handleInputMouseEvent","isHovered","checkChipContainerHeight","chipParentHeight","parentElement","chipTotalHeight","isOpened","draggableElement","arrowElement","querySelectorAll","inputValue","popperElement","popperWidth","onMouseEnter","onMouseLeave","isDragDisabled","onDelete","transform","open","placement","PaperComponent","onClose","disablePortal","disableCloseOnSelect","autoFocus","selected","checked","useSettingsForm","mapAutocomplete","updateOrganizationSettings","field","getState","allowedContentTypesIds","entryLevelLocalizationContentTypesIds","normalTranslationContentTypesIds","recreatedContentTypesIds","allowUserChangeEntryGrouping","defaultEntryGroupingType","handleMultipleReferences","referenceFetchLevel","valueCanBeDeleted","unusedIndex","indexOf","mappedSettings","handleAvailableTypesChange","handleEntryLevelChange","handleNormallyChange","handleRecreatedChange","handleAllowUserChangeEntryGrouping","handleDefaultEntryGroupingType","handleHandleMultipleReferences","handleReferenceFetchLevel","SettingsViewContainer","CustomMappingContainer","CustomMappingLegend","FullWidth","DangerButton","LeftSide","ErrorText","defaultReferenceFetchLevel","HandleMultipleReferencesMap","mapOptions","settingsMap","aditionalFilter","find","disable","currentOrganizationSettings","useMemo","useCallback","availableContentTypes","contentTypeId","contentTypeName","entryLevelContentMap","recreatedContentMap","normalContentMap","initialValues","initialize","DisableCheckWrap","SettingViewContainer","fetchSettingsSelector","navigate","settingsIndex","setSettingsIndex","organizationIndex","setOrganizationIndex","displayDialog","setDisplayDialog","bottomButtons","spaceName","apiKeyError","organizationSettingsDTOList","enableEntryLevelLocalization","startIcon","Dialog","DialogContent","DialogTitle","DialogContentText","DialogActions","getUsersPageableSelector","UserTable","UsersContainer","mainRoutes","navbar","routeTextKey","AddClientContainer","navbarStyles","routeValues","Navbar","pagesToRender","setTabValue","startsWith","handleTabChange","pages","Tabs","Tab","MainLayoutComponent","handleOpenLink","renderRoute","isAuth","createBrowserHistory","displayed","withSnackbar","notifications","store","notify","useSnackbar","enqueueSnackbar","closeSnackbar","message","reason","myKey","onExited","_event","dp","notistackRef","onClickDismiss","App","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","getAllContentfulAndXtmLanguages","clientReducer","allContentfulLanguages","allXtmLanguages","notifyReducer","getTime","Math","floor","random","settingsEpics","initializeNewSettings","errorCode","isSettingsInitialized$GET$api_settings_isinitizalized","go","pluck","saveSettings","updateSettingsCredentials","configReducer","initialization","deletion","spaceIndex","findIndex","environmentIndex","organizationSettings","SpinnerActionTypes","setFetchSpinner","setSettingsSpinner","setTemplateSpinner","setCustomerSpinner","setConnectDataSpinner","setConnectToXtmSpinner","setConnectToCMSSpinner","spinnerEpics","debounceTime","endsWith","spinnerReducer","tableEpics","dispatchAction","sort","EMPTY","tableReducer","userEpics","authenticateAdmin","tap","removeItem","sendResetPasswordEmailForAdmin","delayWhen","timer","state$","verifyResetPasswordToken","getAllUsers","getUser","res","connectToXtm","getXTMCustomers$GET$api_xtm_customers","getXTMTemplates","getXTMCustomersForExistingUser","getXTMTemplatesForExistingUser$GET$api_xtm_templates_userId","getXTMConnectionParameters","verifyConnection","reconnectToXtm","sendResetPasswordEmail","href","userReducer","cmsConnect","appReducer","combineReducers","epicMiddleware","createEpicMiddleware","dependencies","configureStore","reducer","middleware","devTools","run","ReactDOM","StrictMode","ThemeProvider","styles","document","getElementById","Sentry","dsn","REACT_APP_SENTRY_DSN","environment","addEventListener","navigator","serviceWorker","ready","registration","unregister","catch"],"mappings":"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","file":"static/js/main.82484e1a.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 MuiButton: {\n root: {\n textTransform: 'none',\n fontWeight: 'bold',\n },\n },\n MuiTablePagination: {\n toolbar: {\n background: 'white',\n },\n },\n MuiTableCell: {\n head: {\n fontWeight: 'bold',\n background: 'white',\n },\n },\n MuiTableRow: {\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 },\n secondary: {\n main: '#0096eb',\n },\n },\n});\n","/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n// Generated using typescript-generator version 2.24.612 on 2025-02-21 05:23:34.\n\nimport { TranslateRequestDTO, AuthenticationRequest, ChangePasswordDTO, CreateAdministratorDTO, UpdateAdministratorDTO, CreateUserDTO, UpdateUserDTO, XTMConnectionParametersDTO, XTMConnectRequest, GetTemplatesDTO, GetCustomersDTO, EntryRequestDTO } from \"./restApplicationClientTypeOverrides\";\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 enabledTags: boolean;\n enabledEntryLevelLocalization: boolean;\n enabledOldHyperLinks: boolean;\n nonHumanTranslationCustomFieldName: string;\n contentfulXtmLanguagesMap: { [index: string]: string };\n}\n\nexport interface UpdateClientDTO extends Serializable {\n clientName: string;\n status: boolean;\n enabledTags: boolean;\n enabledEntryLevelLocalization: boolean;\n enabledOldHyperLinks: boolean;\n nonHumanTranslationCustomFieldName: string;\n contentfulXtmLanguagesMap: { [index: string]: string };\n}\n\nexport interface ClientDTO extends BaseDTO, Serializable {\n clientName: string;\n status: boolean;\n enabledTags: boolean;\n enabledEntryLevelLocalization: boolean;\n enabledOldHyperLinks: boolean;\n nonHumanTranslationCustomFieldName: string;\n contentfulXtmLanguagesMap: { [index: string]: string };\n}\n\nexport interface EntriesRequestDTO extends Serializable {\n entriesIds: string[];\n}\n\nexport interface ClientPreferencesDTO extends Serializable {\n entryLevelLocalization: boolean;\n}\n\nexport interface EntriesDTO extends Serializable {\n total: number;\n entries: EntryDTO[];\n}\n\nexport interface ContentfulConnectionDTO extends Serializable {\n accessToken: string;\n}\n\nexport interface XTMConnectDTO extends Serializable {\n xtmAuthorizationId: string;\n}\n\nexport interface XTMProjectDTO extends Serializable {\n id: number;\n name: string;\n status: string;\n description: string;\n dueDate: string;\n entryGroupingType: EntryGroupingType;\n activityEnum: ActivityEnum;\n}\n\nexport interface ActiveProjectSearchDTO extends Serializable {\n sourceLanguage: string;\n targetLanguages: string[];\n customerId: number;\n}\n\nexport interface XTMProjectVerifyDTO extends Serializable {\n customerId: number;\n templateId: number;\n spaceId: string;\n environmentId: string;\n entryIds: string[];\n sourceLanguage: string;\n targetLanguages: string[];\n}\n\nexport interface XTMProjectEntryVerifyDTO extends Serializable {\n entries: XTMProjectEntriesVerifyDTO[];\n haveProjects: boolean;\n}\n\nexport interface AllLanguagesDTO extends Serializable {\n allContentfulLanguages: string[];\n allXtmLanguages: 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 SettingsAuthorizationDTO extends Serializable {\n clientId: string;\n connectionSpaceId: string;\n cmaToken: string[];\n}\n\nexport interface SaveOrganizationSettingsDTO extends Serializable {\n clientId: string;\n spaceId: string;\n environmentId: string;\n allowedContentTypesIds: string[];\n recreatedContentTypesIds: string[];\n entryLevelLocalizationContentTypesIds: string[];\n normalTranslationContentTypesIds: string[];\n defaultEntryGroupingType: EntryGroupingType;\n allowUserChangeEntryGrouping: boolean;\n handleMultipleReferences: HandleMultipleReferencesType;\n referenceFetchLevel: ReferenceFetchLevel;\n}\n\nexport interface UserSettingsDTO extends Serializable {\n allowUserChangeEntryGrouping: boolean;\n defaultEntryGroupingType: EntryGroupingType;\n xtmProjectNamePrefix: string;\n}\n\nexport interface UserDTO extends BaseDTO, Serializable {\n email: string;\n status: boolean;\n clientName: string;\n client: ClientDTO;\n xtmProperties: UserXTMPropertiesDTO;\n}\n\nexport interface BaseDTO extends Serializable {\n id: string;\n createdAt: Date;\n modifiedAt: Date;\n}\n\nexport interface Serializable {\n}\n\nexport interface Page extends Slice {\n totalElements: number;\n totalPages: number;\n}\n\nexport interface EntryDTO extends Serializable {\n id: string;\n fields: { [index: string]: { [index: string]: any } };\n contentType: string;\n tags: string[];\n updatedAt: string;\n createdAt: string;\n publishedAt: string;\n archivedVersion: number;\n updatedBy: string;\n}\n\nexport interface ReferenceDTO extends Serializable {\n id: string;\n name: string;\n contentType: string;\n entryType: string;\n status: EntryStatus;\n alreadyReferenced: boolean;\n hasMoreReferences: boolean;\n isEnabled: boolean;\n references: ReferenceDTO[];\n}\n\nexport interface TagDTO extends Serializable {\n id: string;\n name: string;\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 XTMTemplateDTO extends Serializable {\n xtmTemplateId: number;\n name: string;\n}\n\nexport interface XTMJobDTO extends BaseDTO {\n projectName: string;\n sourceLanguage: string;\n targetLanguages: string[];\n errorMessage: string;\n errorMessagesDetails: string[];\n status: XTMJobStatus;\n workflowStep: string;\n jobProgress: number;\n dueDate: Date;\n entryId: string;\n projectId: number;\n customerId: number;\n templateId: number;\n filename: string;\n}\n\nexport interface NotificationDTO extends Serializable {\n notificationType: NotificationType;\n jsonObject: string;\n sourceLanguage: string;\n targetLanguages: string[];\n entryId: string;\n}\n\nexport interface SettingsDTO extends Serializable {\n settingsId: string;\n spaceId: string;\n spaceName: string;\n enabledEntryLevelLocalization: boolean;\n apiKeyError: boolean;\n spaceDeletedInContentful: boolean;\n organizationSettingsDTOList: OrganizationSettingsDTO[];\n}\n\nexport interface PageableSettingsDTO extends Serializable {\n id: string;\n clientName: string;\n createdAt: Date;\n modifiedAt: Date;\n settingsInitialized: boolean;\n}\n\nexport interface UserOverviewDTO extends BaseDTO, Serializable {\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 includeEmailToProjectName: boolean;\n removeXTMFilesAfterDays: number;\n removeCancelledJobsAfterDays: number;\n}\n\nexport interface Sort extends Streamable, Serializable {\n sorted: boolean;\n unsorted: boolean;\n}\n\nexport interface Pageable {\n sort: Sort;\n offset: number;\n paged: boolean;\n unpaged: boolean;\n pageNumber: number;\n pageSize: number;\n}\n\nexport interface OrganizationSettingsDTO extends Serializable {\n organizationSettingsId: string;\n spaceId: string;\n environmentId: string;\n allowedContentTypesIds: string[];\n recreatedContentTypesIds: string[];\n entryLevelLocalizationContentTypesIds: string[];\n normalTranslationContentTypesIds: string[];\n availableContentTypes: ContentTypeDTO[];\n defaultEntryGroupingType: EntryGroupingType;\n allowUserChangeEntryGrouping: boolean;\n handleMultipleReferences: HandleMultipleReferencesType;\n referenceFetchLevel: ReferenceFetchLevel;\n}\n\nexport interface Slice extends Streamable {\n number: number;\n sort: Sort;\n size: number;\n content: T[];\n pageable: Pageable;\n numberOfElements: number;\n first: boolean;\n last: boolean;\n}\n\nexport interface ContentTypeDTO extends Serializable {\n contentTypeId: string;\n contentTypeName: string;\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 descending: boolean;\n ascending: 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.contentful.backend.common.app.api.RootController.getRoot\n */\n getRoot(options?: O): RestResponse;\n\n /**\n * HTTP GET /api\n * Java method: cloud.xtm.contentful.backend.common.app.api.RootController.getApiRoot\n */\n getApiRoot(options?: O): RestResponse;\n\n /**\n * HTTP POST /api/administrators\n * Java method: cloud.xtm.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.backend.clients.app.api.ClientController.getClient\n */\n getClient(clientId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/content/customers\n * Java method: cloud.xtm.contentful.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.contentful.backend.integration.xtm.content.api.XTMAddContentController.verify\n */\n verify(xtmProject: XTMProjectVerifyDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/content/project/active/{projectId}\n * Java method: cloud.xtm.contentful.backend.integration.xtm.content.api.XTMAddContentController.getActiveXTMProjectDetails\n */\n getActiveXTMProjectDetails(projectId: number, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/content/projects/active\n * Java method: cloud.xtm.contentful.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.contentful.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/contentful/add-to-queue\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.addToQueue\n */\n addToQueue(translateRequest: TranslateRequestDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/contentful/compare/space/{spaceId}/environments/{environmentId}/entries/{entryId}\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.compareContent\n */\n compareContent(spaceId: string, environmentId: string, entryId: string, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/contentful/connection/verify\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.verifyConnection\n */\n verifyConnection(contentfulConnection: ContentfulConnectionDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/contentful/entries/search\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getEntries\n */\n getEntries(entryRequestDTO: EntryRequestDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/contentful/space/{spaceId}/environments/{environmentId}/client-preferences\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getClientPreferences\n */\n getClientPreferences(spaceId: string, environmentId: string, request: EntriesRequestDTO, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/contentful/space/{spaceId}/environments/{environmentId}/references\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getReferences\n */\n getReferences(spaceId: string, environmentId: string, request: EntriesRequestDTO, queryParams?: { locale?: string; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/contentful/space/{spaceId}/environments/{environmentId}/tags\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getTags\n */\n getTags(spaceId: string, environmentId: string, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/contentful/translate\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.translate\n */\n translate(translateRequest: TranslateRequestDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/jobs\n * Java method: cloud.xtm.contentful.backend.jobs.app.api.JobsController.findAllPaged\n */\n findAllPaged(queryParams: { spaceId: string; environmentId: string; forceRefresh?: boolean; projectName?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP POST /api/jobs\n * Java method: cloud.xtm.contentful.backend.jobs.app.api.JobsController.performOperation\n */\n performOperation(request: MassOperationRequest, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/jobs/{jobId}/operation-applicable-for\n * Java method: cloud.xtm.contentful.backend.jobs.app.api.JobsController.findJobsIdsByOperationType\n */\n findJobsIdsByOperationType(jobId: string, queryParams: { jobOperation: JobOperation; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/jobs/{jobId}/project-related-jobs\n * Java method: cloud.xtm.contentful.backend.jobs.app.api.JobsController.findJobsWithinSameProject\n */\n findJobsWithinSameProject(jobId: string, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/jobs/{jobId}/validate\n * Java method: cloud.xtm.contentful.backend.jobs.app.api.JobsController.validate\n */\n validate(jobId: string, queryParams: { errorMessageCode: string; }, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/languages\n * Java method: cloud.xtm.contentful.backend.integration.xtm.languages.api.LanguagesController.getAllContentfulAndXtmLanguages\n */\n getAllContentfulAndXtmLanguages(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/notifications\n * Java method: cloud.xtm.contentful.backend.notification.app.api.NotificationController.getAllNotifications\n */\n getAllNotifications(options?: O): RestResponse;\n\n /**\n * HTTP POST /api/notifications/admin/send-reset-password-email\n * Java method: cloud.xtm.contentful.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.contentful.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.contentful.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.contentful.backend.notification.app.api.NotificationController.verifyResetPasswordToken\n */\n verifyResetPasswordToken(verifyToken: VerifyTokenDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.fetchSettings\n */\n fetchSettings(options?: O): RestResponse;\n\n /**\n * HTTP POST /api/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.saveSettings\n */\n saveSettings(saveOrganizationSettingsDTO: SaveOrganizationSettingsDTO, options?: O): RestResponse;\n\n /**\n * HTTP PUT /api/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.updateSettingsCredentials\n */\n updateSettingsCredentials(settingsAuthorizationDTO: SettingsAuthorizationDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/settings/allowed-content-types/space/{spaceId}/environment/{environmentId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.allowedContentTypes\n */\n allowedContentTypes(spaceId: string, environmentId: string, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/settings/initialize\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.initializeNewSettings\n */\n initializeNewSettings(settingsAuthorizationDTO: SettingsAuthorizationDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/settings/is-initizalized\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.isSettingsInitialized\n */\n isSettingsInitialized$GET$api_settings_isinitizalized(options?: O): RestResponse;\n\n /**\n * HTTP GET /api/settings/is-initizalized/{clientId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.isSettingsInitialized\n */\n isSettingsInitialized$GET$api_settings_isinitizalized_clientId(clientId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/settings/pageable\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.getAllSettings\n */\n getAllSettings(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse>;\n\n /**\n * HTTP DELETE /api/settings/{settingsId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.deleteOrganizationSettings\n */\n deleteOrganizationSettings(settingsId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/settings/{settingsId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.getSettings\n */\n getSettings(settingsId: string, options?: O): RestResponse;\n\n /**\n * HTTP POST /api/user\n * Java method: cloud.xtm.contentful.backend.users.app.api.UserController.createUser\n */\n createUser(createUser: CreateUserDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/user/pageable\n * Java method: cloud.xtm.contentful.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 GET /api/user/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.UserSettingsController.getUserSettings\n */\n getUserSettings(queryParams?: { spaceId?: string; environmentId?: string; }, options?: O): RestResponse;\n\n /**\n * HTTP DELETE /api/user/{userId}\n * Java method: cloud.xtm.contentful.backend.users.app.api.UserController.deleteUser\n */\n deleteUser(userId: string, options?: O): RestResponse;\n\n /**\n * HTTP PUT /api/user/{userId}\n * Java method: cloud.xtm.contentful.backend.users.app.api.UserController.editUser\n */\n editUser(userId: string, updateUser: UpdateUserDTO, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/user/{userId}\n * Java method: cloud.xtm.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.backend.integration.xtm.customers.app.api.XTMCustomersController.getXTMCustomersForExistingUser\n */\n getXTMCustomersForExistingUser(userId: string, options?: O): RestResponse;\n\n /**\n * HTTP GET /api/xtm/templates\n * Java method: cloud.xtm.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.backend.clients.app.api.ClientController.getClient\n */\n getClient(clientId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/client/${clientId}`, options: options });\n }\n\n /**\n * HTTP GET /api/content/customers\n * Java method: cloud.xtm.contentful.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.contentful.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 GET /api/content/project/active/{projectId}\n * Java method: cloud.xtm.contentful.backend.integration.xtm.content.api.XTMAddContentController.getActiveXTMProjectDetails\n */\n getActiveXTMProjectDetails(projectId: number, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/content/project/active/${projectId}`, options: options });\n }\n\n /**\n * HTTP POST /api/content/projects/active\n * Java method: cloud.xtm.contentful.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.contentful.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/contentful/add-to-queue\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.addToQueue\n */\n addToQueue(translateRequest: TranslateRequestDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/contentful/add-to-queue`, data: translateRequest, options: options });\n }\n\n /**\n * HTTP GET /api/contentful/compare/space/{spaceId}/environments/{environmentId}/entries/{entryId}\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.compareContent\n */\n compareContent(spaceId: string, environmentId: string, entryId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/contentful/compare/space/${spaceId}/environments/${environmentId}/entries/${entryId}`, options: options });\n }\n\n /**\n * HTTP POST /api/contentful/connection/verify\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.verifyConnection\n */\n verifyConnection(contentfulConnection: ContentfulConnectionDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/contentful/connection/verify`, data: contentfulConnection, options: options });\n }\n\n /**\n * HTTP POST /api/contentful/entries/search\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getEntries\n */\n getEntries(entryRequestDTO: EntryRequestDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/contentful/entries/search`, data: entryRequestDTO, options: options });\n }\n\n /**\n * HTTP POST /api/contentful/space/{spaceId}/environments/{environmentId}/client-preferences\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getClientPreferences\n */\n getClientPreferences(spaceId: string, environmentId: string, request: EntriesRequestDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/contentful/space/${spaceId}/environments/${environmentId}/client-preferences`, data: request, options: options });\n }\n\n /**\n * HTTP POST /api/contentful/space/{spaceId}/environments/{environmentId}/references\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getReferences\n */\n getReferences(spaceId: string, environmentId: string, request: EntriesRequestDTO, queryParams?: { locale?: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/contentful/space/${spaceId}/environments/${environmentId}/references`, queryParams: queryParams, data: request, options: options });\n }\n\n /**\n * HTTP GET /api/contentful/space/{spaceId}/environments/{environmentId}/tags\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.getTags\n */\n getTags(spaceId: string, environmentId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/contentful/space/${spaceId}/environments/${environmentId}/tags`, options: options });\n }\n\n /**\n * HTTP POST /api/contentful/translate\n * Java method: cloud.xtm.contentful.backend.contentful.app.api.ContentfulController.translate\n */\n translate(translateRequest: TranslateRequestDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/contentful/translate`, data: translateRequest, options: options });\n }\n\n /**\n * HTTP GET /api/jobs\n * Java method: cloud.xtm.contentful.backend.jobs.app.api.JobsController.findAllPaged\n */\n findAllPaged(queryParams: { spaceId: string; environmentId: string; forceRefresh?: boolean; projectName?: 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.contentful.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 GET /api/jobs/{jobId}/operation-applicable-for\n * Java method: cloud.xtm.contentful.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 GET /api/jobs/{jobId}/project-related-jobs\n * Java method: cloud.xtm.contentful.backend.jobs.app.api.JobsController.findJobsWithinSameProject\n */\n findJobsWithinSameProject(jobId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/jobs/${jobId}/project-related-jobs`, options: options });\n }\n\n /**\n * HTTP POST /api/jobs/{jobId}/validate\n * Java method: cloud.xtm.contentful.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 GET /api/languages\n * Java method: cloud.xtm.contentful.backend.integration.xtm.languages.api.LanguagesController.getAllContentfulAndXtmLanguages\n */\n getAllContentfulAndXtmLanguages(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/languages`, options: options });\n }\n\n /**\n * HTTP GET /api/notifications\n * Java method: cloud.xtm.contentful.backend.notification.app.api.NotificationController.getAllNotifications\n */\n getAllNotifications(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/notifications`, options: options });\n }\n\n /**\n * HTTP POST /api/notifications/admin/send-reset-password-email\n * Java method: cloud.xtm.contentful.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.contentful.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.contentful.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.contentful.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/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.fetchSettings\n */\n fetchSettings(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/settings`, options: options });\n }\n\n /**\n * HTTP POST /api/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.saveSettings\n */\n saveSettings(saveOrganizationSettingsDTO: SaveOrganizationSettingsDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/settings`, data: saveOrganizationSettingsDTO, options: options });\n }\n\n /**\n * HTTP PUT /api/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.updateSettingsCredentials\n */\n updateSettingsCredentials(settingsAuthorizationDTO: SettingsAuthorizationDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"PUT\", url: uriEncoding`api/settings`, data: settingsAuthorizationDTO, options: options });\n }\n\n /**\n * HTTP GET /api/settings/allowed-content-types/space/{spaceId}/environment/{environmentId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.allowedContentTypes\n */\n allowedContentTypes(spaceId: string, environmentId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/settings/allowed-content-types/space/${spaceId}/environment/${environmentId}`, options: options });\n }\n\n /**\n * HTTP POST /api/settings/initialize\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.initializeNewSettings\n */\n initializeNewSettings(settingsAuthorizationDTO: SettingsAuthorizationDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/settings/initialize`, data: settingsAuthorizationDTO, options: options });\n }\n\n /**\n * HTTP GET /api/settings/is-initizalized\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.isSettingsInitialized\n */\n isSettingsInitialized$GET$api_settings_isinitizalized(options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/settings/is-initizalized`, options: options });\n }\n\n /**\n * HTTP GET /api/settings/is-initizalized/{clientId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.isSettingsInitialized\n */\n isSettingsInitialized$GET$api_settings_isinitizalized_clientId(clientId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/settings/is-initizalized/${clientId}`, options: options });\n }\n\n /**\n * HTTP GET /api/settings/pageable\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.getAllSettings\n */\n getAllSettings(queryParams?: { search?: string; page?: number; size?: number; sort?: string; }, options?: O): RestResponse> {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/settings/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP DELETE /api/settings/{settingsId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.deleteOrganizationSettings\n */\n deleteOrganizationSettings(settingsId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"DELETE\", url: uriEncoding`api/settings/${settingsId}`, options: options });\n }\n\n /**\n * HTTP GET /api/settings/{settingsId}\n * Java method: cloud.xtm.contentful.backend.settings.app.api.SettingsController.getSettings\n */\n getSettings(settingsId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/settings/${settingsId}`, options: options });\n }\n\n /**\n * HTTP POST /api/user\n * Java method: cloud.xtm.contentful.backend.users.app.api.UserController.createUser\n */\n createUser(createUser: CreateUserDTO, options?: O): RestResponse {\n return this.httpClient.request({ method: \"POST\", url: uriEncoding`api/user`, data: createUser, options: options });\n }\n\n /**\n * HTTP GET /api/user/pageable\n * Java method: cloud.xtm.contentful.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/user/pageable`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP GET /api/user/settings\n * Java method: cloud.xtm.contentful.backend.settings.app.api.UserSettingsController.getUserSettings\n */\n getUserSettings(queryParams?: { spaceId?: string; environmentId?: string; }, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/user/settings`, queryParams: queryParams, options: options });\n }\n\n /**\n * HTTP DELETE /api/user/{userId}\n * Java method: cloud.xtm.contentful.backend.users.app.api.UserController.deleteUser\n */\n deleteUser(userId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"DELETE\", url: uriEncoding`api/user/${userId}`, options: options });\n }\n\n /**\n * HTTP PUT /api/user/{userId}\n * Java method: cloud.xtm.contentful.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/user/${userId}`, data: updateUser, options: options });\n }\n\n /**\n * HTTP GET /api/user/{userId}\n * Java method: cloud.xtm.contentful.backend.users.app.api.UserController.getUser\n */\n getUser(userId: string, options?: O): RestResponse {\n return this.httpClient.request({ method: \"GET\", url: uriEncoding`api/user/${userId}`, options: options });\n }\n\n /**\n * HTTP GET /api/xtm/callbacks/jobs/{clientId}\n * Java method: cloud.xtm.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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.contentful.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/templates\n * Java method: cloud.xtm.contentful.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.contentful.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 EntryStatus = \"CHANGED\" | \"PUBLISHED\" | \"DRAFT\" | \"ARCHIVED\";\n\nexport type JobOperation = \"SEND\" | \"CANCEL\" | \"DELETE\" | \"IMPORT\";\n\nexport type EntryGroupingType = \"ALL_IN_ONE_FILE\" | \"ENTRY_GROUPING\" | \"SEPARATELY\";\n\nexport type ActivityEnum = \"ACTIVE\" | \"ARCHIVED\" | \"AUTO_ARCHIVED\" | \"DELETED\" | \"INACTIVE\";\n\nexport type HandleMultipleReferencesType = \"DO_NOT_REPEAT\" | \"REPEAT\";\n\nexport type ReferenceFetchLevel = \"LEVEL_0\" | \"LEVEL_1\" | \"LEVEL_2\" | \"LEVEL_3\" | \"LEVEL_4\" | \"LEVEL_5\" | \"LEVEL_6\" | \"LEVEL_7\" | \"LEVEL_8\" | \"LEVEL_9\" | \"LEVEL_10\";\n\nexport type XTMJobStatus = \"SENDING\" | \"NEW\" | \"SENT\" | \"IN_PROGRESS\" | \"FINISHED\" | \"CANCELLED\" | \"FETCHED\";\n\nexport type NotificationType = \"ASYNCHRONOUS_TRANSLATION_ERROR\" | \"ASYNCHRONOUS_TRANSLATION_SUCCESS\";\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\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\nlet api: AxiosRestApplicationClient;\n\n// eslint-disable-next-line require-jsdoc\nconst initializeApi = (): void => {\n api = new AxiosRestApplicationClient(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any)._env_?.REACT_APP_BACKEND_URL || '/',\n axiosInstance,\n );\n};\n\nexport { api, initializeApi };\nexport default axiosInstance;\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 errormessage from './errormessage.json';\nimport settings from './settings.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 settings,\n errormessage,\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 sessionExpired: 'USER_SESSION_EXPIRED',\n showSessionExpired: 'USER_SHOW_SESSION_EXPIRED',\n hideSessionExpired: 'USER_HIDE_SESSION_EXPIRED',\n};\n\nexport interface IRemindPasswordPayload {\n apiUrl?: string;\n email: string;\n}\n","import { createAction } from '@reduxjs/toolkit';\nimport {\n AuthenticationResult,\n Page,\n RefreshTokenResult,\n UserDTO,\n UserOverviewDTO,\n XTMConnectDTO,\n XTMCustomerDTO,\n XTMTemplateDTO,\n} from 'utils/restApplicationClient';\nimport {\n AuthenticationRequest,\n ChangePasswordDTO,\n CreateUserDTO,\n XTMConnectionParametersDTO,\n XTMConnectRequest,\n} from 'utils/restApplicationClientTypeOverrides';\nimport { IRemindPasswordPayload, UserActionTypes } from './user.actions.types';\nimport { IEditUser, IUsersPageable } from './user.interface';\n\nexport const verifyPassToken = createAction(\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 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';\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);\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","/**\n * Removed excess digits from application version\n *\n * @param version - Current application version\n * @param digits - How many parts of semantic versioning should be displayed\n * @returns Version spliced to digits amount\n */\nexport const versionDigits = (\n version?: string,\n digits = 3,\n): string | undefined => {\n if (!version) {\n return version;\n }\n\n const regexp = /\\.|-/;\n const splitVersionArray = version.split(regexp);\n const splicedVersionArray = splitVersionArray.splice(0, digits);\n const splicedVersion = splicedVersionArray.join('.');\n\n return splicedVersion;\n};\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 { versionDigits } from 'utils/versionDigits';\nimport loginHeaderStyle from './LoginHeader.styled';\n\ninterface IProps {\n children?: ReactNode;\n}\n\nclass LoginHeader extends PureComponent {\n render(): JSX.Element {\n const { t } = this.props;\n return (\n \n
\n \n \n {t('common.title')}{' '}\n {t('common.version', {\n version: versionDigits(process.env.REACT_APP_VERSION),\n })}\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 {\n Select,\n TextField,\n Typography,\n TypographyProps,\n} from '@material-ui/core';\nimport { DetailedHTMLProps, HTMLAttributes } from 'react';\n\ninterface FieldDivProps\n extends DetailedHTMLProps, HTMLDivElement> {\n column?: boolean;\n}\n\ninterface CustomAutocompleteTypographyProps extends TypographyProps {\n column?: boolean | string;\n component?: string;\n}\n\ninterface StyledAutocompleteTextFieldProps {\n draggable?: boolean;\n}\n\nexport const customInputStyles = {\n root: css`\n display: flex;\n flex-direction: column;\n margin: 4px auto;\n width: 100%;\n `,\n label: css`\n font-weight: bold;\n color: #333;\n text-align: start;\n max-width: 290px;\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\n formControl: css`\n display: flex !important;\n flex-direction: row !important;\n align-items: center !important;\n `,\n\n labelDiv: css`\n display: flex;\n flex-direction: row;\n align-content: center;\n align-items: center;\n gap: 8px;\n `,\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 CheckboxDiv = styled.div`\n display: flex;\n width: 409px;\n & svg {\n font-size: 28px;\n }\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`;\n\nexport const InputDiv = styled.div(\n ({ column }: FieldDivProps) => `\n display: flex;\n flex-direction: ${column ? 'column' : 'row'};\n justify-content: space-between;\n align-items: ${column ? 'stretch' : 'baseline'};\n margin: 4px auto;\n width: 100%;\n text-align: start;\n\n .MuiAutocomplete-inputRoot {\n padding-top: 3.8px !important;\n padding-bottom: 3.8px !important;\n }\n`,\n);\n\nexport const CustomEndAdornment = styled.div`\n position: absolute;\n right: 12px;\n`;\n\nexport const CustomDraggableContainer = styled.div`\n display: flex;\n overflow: auto;\n margin-top: 5px;\n padding: 5px 0;\n border-top: 1px solid rgba(0, 0, 0, 0.23);\n width: 100%;\n\n &::-webkit-scrollbar-track {\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n border-radius: 10px;\n background-color: #f5f5f5;\n }\n\n &::-webkit-scrollbar {\n height: 8px;\n background-color: #f5f5f5;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 10px;\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.15);\n background-color: #dde0e6;\n }\n`;\n\nexport const CustomAutocompleteTypography = styled(Typography)(\n ({ column }: CustomAutocompleteTypographyProps) => `\n align-self: ${column ? 'start' : 'center'};\n`,\n);\n\nexport const AutocompleteTextField = styled(TextField)(\n ({ draggable }: StyledAutocompleteTextFieldProps) => `\n .MuiAutocomplete-popupIndicator {\n margin-right: -4px;\n }\n\n ${\n draggable\n ? `\n .MuiInputBase-root {\n display:flex;\n align-items: flex-start;\n flex-direction: column-reverse;\n padding: 6px !important;\n cursor: auto;\n\n .MuiInputBase-input {\n width: calc(100% - 58px);\n }\n\n .MuiAutocomplete-endAdornment {\n top:5px;\n }\n }`\n : ''\n };\n`,\n);\n\nexport const AutocompleteChipDefaultSpan = styled.span`\n color: rgba(0, 0, 0, 0.35);\n padding-left: 5px;\n`;\nexport const CustomTypography = styled(Typography)`\n margin: 6px 0 !important;\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 disabled?: boolean;\n}\n\nexport class CustomField extends Component {\n render(): JSX.Element {\n const {\n t,\n error,\n touched,\n type,\n testId,\n inputProps,\n disableAutoComplete,\n disabled,\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 settingsSpinnerSelector = ({\n spinner: { settingsSpinner },\n}: AppState): boolean => settingsSpinner;\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 getSettingsSpinnerSelector = createSelector(\n settingsSpinnerSelector,\n (settingsSpinner) => settingsSpinner,\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 { IAutocompleteField } from 'types/shared';\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 {string | null} 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 {string | null} Either null when validation is successful or translated error message\n */\nconst email = (value: string): string | null => {\n // eslint-disable-next-line no-console\n if (EMAIL_REGEX.test(value)) {\n return null;\n }\n return 'validator.email';\n};\n/**\n * Returns whether given field is a valid password\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst password = (value: string): string | null => {\n if (PASSWORD_REGEX.test(value)) {\n return null;\n }\n return 'validator.password';\n};\n/**\n * Returns whether given field contains whitespaces\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst noWhitespace = (value: string): string | null => {\n if (!WHITESPACE_REGEX.test(value)) {\n return null;\n }\n return 'validator.whitespace';\n};\n/**\n * Returns whether field does not match\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst comparePass = (values: {\n newPassword: string;\n confirmPassword: string;\n}): ValidationErrors | Promise | undefined => {\n if (values.newPassword !== values.confirmPassword) {\n return {\n confirmPassword: 'validator.confirmPassword',\n };\n }\n return undefined;\n};\n\n/**\n * Returns whether value is not a number\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst isNumber = (value: string): string | null => {\n if (ISNUMBER.test(value)) {\n return null;\n }\n return 'validator.removeXTMFiles';\n};\n\n/**\n * Returns whether value length is composed of between 1 and 9\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst isMaxLength = (value: string): string | null => {\n if (LENGTH_REGEX(1, 9).test(value)) {\n return null;\n }\n return 'validator.maxLength';\n};\n\n/**\n * Returns whether value does not contain any special characters\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst isAllowedPrefix = (value: string): string | null => {\n if (!PREFIX_REGEX.test(value)) {\n return null;\n }\n return 'validator.XTMProjectPrefix';\n};\n\n/**\n * Returns reduced validator from given validator array\n *\n * @param validators - An array of validators\n *\n * @returns {(value: string) => string | null} A reduced validator function\n */\nconst composeValidators =\n (\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 {string | null} 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 {string | null} 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 {string | null} Whether store field is set to true\n */\nfunction booleanValidator(error: boolean) {\n return function () {\n return error ? error : null;\n };\n}\n\n/**\n * Returns whether given field has a value\n *\n * @param value - Form string value to test against\n *\n * @returns {string | null} Either null when validation is successful or translated error message\n */\nconst requiredAutocomplete = (\n value: IAutocompleteField | Array | null,\n): string | null => {\n if (Array.isArray(value) && value.length > 0) {\n return null;\n } else if (!Array.isArray(value) && value?.value) {\n return null;\n }\n return 'validator.required';\n};\n\n/**\n * Returns whether a field is not empty and validator\n *\n * @param value - field value\n * @param validator - optional validator\n */\nfunction optionalValidator(value: string, validator: Function): null | string {\n if (value === undefined) {\n return null;\n }\n\n return validator(value);\n}\n\nexport {\n required,\n email,\n composeValidators,\n password,\n noWhitespace,\n fetchValidator,\n comparePass,\n booleanValidator,\n fetchValidatorObject,\n isNumber,\n isAllowedPrefix,\n optionalValidator,\n isMaxLength,\n requiredAutocomplete,\n};\n","import { css } from '@emotion/core';\n\nexport const loginContainerStyles = {\n root: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: center;\n `,\n button: css`\n margin-top: 20px !important;\n width: 75%;\n `,\n form: css`\n margin: 16px;\n `,\n};\n","export enum resetPasswordRouteParameterEnum {\n admin = 'admin',\n user = 'user',\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Button, CircularProgress } from '@material-ui/core';\nimport CustomLink from 'components/CustomLink/CustomLink';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport CustomField from 'components/Form/Input/CustomField';\nimport {\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 password,\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\nexport class LoginContainer extends Component<\n IDispatchProps & WithTranslation & IStateProps\n> {\n unsubscribe: Unsubscribe;\n constructor(props: IDispatchProps & WithTranslation & IStateProps) {\n super(props);\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 form: FormApi>>;\n state = {\n submitValues: {\n email: '',\n password: '',\n },\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","export enum UserRouteParameterEnum {\n edit = 'edit',\n duplicate = 'duplicate',\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Box, 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, Fragment } 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 apiUrl?: string;\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 = ({ email, apiUrl }: IFormValues): void => {\n const {\n match: {\n params: { type },\n },\n } = this.props;\n\n if (type === resetPasswordRouteParameterEnum.admin) {\n this.props.resetPassword({ email });\n } else if (type === resetPasswordRouteParameterEnum.user) {\n const applicationURL = /^https?:\\/\\//.test(apiUrl?.trim() || '')\n ? apiUrl?.trim()\n : `https://${apiUrl?.trim()}`;\n\n this.props.resetUserPassword({ email, apiUrl: applicationURL });\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 {type === resetPasswordRouteParameterEnum.user && (\n \n \n {({ input, meta }): JSX.Element => (\n \n )}\n \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.reset')\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","/**\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 { 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","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 */\n// eslint-disable @typescript-eslint/no-explicit-any\n\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 />\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 */\n// eslint-disable @typescript-eslint/no-explicit-any\n\nimport { css, jsx } from '@emotion/core';\nimport { FormControl, SelectProps, Tooltip } from '@material-ui/core';\nimport { 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';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\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 // eslint-disable-next-line\n onChange?: (event: any) => void;\n tooltip?: boolean;\n tooltipText?: string;\n}\n\nexport class CustomSelect extends Component {\n render(): JSX.Element {\n const {\n t,\n error,\n touched,\n testId,\n inputProps,\n rows,\n width,\n onChange,\n tooltip,\n tooltipText,\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
\n {' '}\n {t(this.props.label)}\n {tooltip && tooltipText ? (\n \n \n \n ) : null}\n
\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 GetXTMLanguages: 'CLIENT_GET_XTM_LANGUAGES',\n GetXTMLanguagesSuccess: 'CLIENT_GET_XTM_LANGUAGES_SUCCESS',\n GetXTMLanguagesError: 'CLIENT_GET_XTM_LANGUAGES_ERROR',\n GetContentfulLanguages: 'CLIENT_GET_CONTENTFUL_LANGUAGES',\n GetContentfulLanguagesSuccess: 'CLIENT_GET_CONTENTFUL_LANGUAGES_SUCCESS',\n GetContentfulLanguagesError: 'CLIENT_GET_CONTENTFUL_LANGUAGES_ERROR',\n};\n","import { createAction } from '@reduxjs/toolkit';\nimport { IEditClient, IPaginationOptions } from 'types/api';\nimport {\n AllLanguagesDTO,\n ClientDTO,\n CreateClientDTO,\n Page,\n} from 'utils/restApplicationClient';\nimport { ClientActionTypes } from './client.actions.types';\n\nexport const getAllClients = createAction(ClientActionTypes.GetAllClients);\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\nexport const getAllLanguages = createAction(ClientActionTypes.GetXTMLanguages);\n\nexport const getAllLanguagesSuccess = createAction(\n ClientActionTypes.GetXTMLanguagesSuccess,\n);\n\nexport const getAllLanguagesError = createAction(\n ClientActionTypes.GetXTMLanguagesError,\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { IClientState } from './client.interface';\n\nexport const clientStateSelector = (state: AppState): IClientState =>\n state.client;\n\nexport const getClientsPageableSelector = createSelector(\n clientStateSelector,\n ({ clientsPageable }) => clientsPageable,\n);\n\nexport const getAllClientsSelector = createSelector(\n clientStateSelector,\n ({ clients }) => clients,\n);\n\nexport const getClientErrorsSelector = createSelector(\n clientStateSelector,\n ({ errors }) => errors,\n);\n\nexport const getClientSelector = createSelector(\n clientStateSelector,\n ({ client }) => client,\n);\n\nexport const getXTMLanguagesSelector = createSelector(\n clientStateSelector,\n ({ xtmLanguages }) => xtmLanguages,\n);\n\nexport const getContentfulLanguagesSelector = createSelector(\n clientStateSelector,\n ({ contentfulLanguages }) => contentfulLanguages,\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 }): JSX.Element => (\n \n )}\n \n \n {({ input, meta }): 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","import { Tooltip, TypographyProps } from '@material-ui/core';\nimport React, { Component, Fragment } from 'react';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport { CustomTooltipTypography } from './CustomTooltip.styled';\n\ninterface IProps {\n text: string;\n width: number;\n maxLines: number;\n typographyProps?: TypographyProps;\n textColor?: string;\n}\n\ninterface IState {\n isOverflown: boolean;\n}\n\ntype PropType = IProps & WithTranslation;\n\nclass Name extends Component {\n state = {\n isOverflown: false,\n };\n\n componentDidMount(): void {\n this.checkIfOverflown();\n }\n\n componentDidUpdate(): void {\n this.checkIfOverflown();\n }\n\n checkIfOverflown(): void {\n const { element } = this;\n\n if (element) {\n const isOverflown =\n element.offsetHeight < element.scrollHeight ||\n element.offsetWidth < element.scrollWidth;\n\n if (this.state.isOverflown !== isOverflown) {\n this.setState({ isOverflown });\n }\n }\n }\n\n element: HTMLSpanElement | null = null;\n\n render(): JSX.Element {\n const { isOverflown } = this.state;\n const { text, width, t, typographyProps, maxLines, textColor } = this.props;\n const NameTypographyWidth = CustomTooltipTypography(\n `${width}px`,\n maxLines,\n textColor,\n );\n\n return (\n \n {isOverflown ? (\n {t(text)}}>\n {\n this.element = element;\n }}\n >\n {t(text)}\n \n \n ) : (\n {\n this.element = element;\n }}\n >\n {t(text)}\n \n )}\n \n );\n }\n}\n\nexport default withTranslation()(Name);\n","import styled, { StyledComponent } from '@emotion/styled';\nimport {\n Typography,\n TypographyProps,\n TypographyStyle,\n} from '@material-ui/core';\n\nexport const CustomTooltipTypography = (\n width: string,\n lines: number,\n textColor?: string,\n): StyledComponent => styled(\n Typography,\n)`\n text-overflow: ellipsis !important;\n overflow: hidden !important;\n max-width: ${width} !important;\n display: -webkit-box;\n -webkit-line-clamp: ${lines};\n -webkit-box-orient: vertical;\n overflow: hidden;\n overflow-wrap: break-word;\n color: ${textColor ? `${textColor} !important` : `inherit !important`};\n`;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport {\n Box,\n Chip,\n CircularProgress,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport { Autocomplete, AutocompleteGetTagProps } from '@material-ui/lab';\nimport CustomTooltip from 'components/CustomTooltip/CustomTooltip';\nimport React, { ComponentType, Fragment, ReactNode } from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n OnDragEndResponder,\n} from 'react-beautiful-dnd';\nimport { FieldRenderProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { IAutocompleteField } from 'types/shared';\nimport {\n AutocompleteChipDefaultSpan,\n AutocompleteTextField,\n CustomAutocompleteTypography,\n CustomDraggableContainer,\n CustomEndAdornment,\n InputDiv,\n} from './CustomInput.style';\n\ninterface IProps\n extends FieldRenderProps> {\n options: Array;\n onChange?: (\n event: React.ChangeEvent<{}>,\n value: IAutocompleteField | Array | null,\n ) => void;\n multi?: boolean;\n label: string;\n noOptionsText?: string;\n error?: string;\n spinner?: boolean;\n disabled?: boolean;\n column?: boolean;\n allowDragAndDrop?: boolean;\n placeholder?: string;\n}\n\ntype PropType = IProps & WithTranslation;\n\nexport class CustomAutocomplete extends React.Component {\n handleChange = (\n event: React.ChangeEvent<{}>,\n value: IAutocompleteField | Array | null,\n ): void => {\n const { onChange, input } = this.props;\n\n if (onChange) {\n onChange(event, value);\n }\n input.onChange(value);\n };\n\n onDragEnd: OnDragEndResponder = ({ destination, source }) => {\n const { input } = this.props;\n\n if (!destination) {\n return;\n }\n\n const filteredData = input.value as IAutocompleteField[];\n const [removed] = filteredData.splice(source.index, 1);\n\n filteredData.splice(destination.index, 0, removed);\n input.onChange(filteredData);\n };\n\n renderTags = (\n value: {\n label: string;\n value: string;\n }[],\n getTagProps: AutocompleteGetTagProps,\n ): JSX.Element => {\n return (\n \n {value.map((tag, index) => (\n }\n icon={}\n label={tag.label}\n />\n ))}\n \n );\n };\n\n renderCustomTags = (\n value: {\n label: string;\n value: string;\n }[],\n getTagProps: AutocompleteGetTagProps,\n ): JSX.Element => {\n const { t } = this.props;\n\n return (\n \n \n {(provided): JSX.Element => (\n \n {value.map((tag, index) => (\n \n {(provided): JSX.Element => (\n }\n icon={}\n label={\n
\n {tag.label}\n {index === 0 ? (\n {`(${t(\n 'common.default',\n )})`}\n ) : (\n ''\n )}\n
\n }\n />\n )}\n \n ))}\n
\n )}\n
\n
\n );\n };\n\n renderAdornment = (endAdornment: ReactNode): JSX.Element => {\n const { spinner, error, t } = this.props;\n\n if (spinner) {\n return (\n \n \n \n );\n }\n return (\n \n {error && (\n {t(error)}}>\n \n \n )}\n {endAdornment}\n \n );\n };\n\n render(): JSX.Element {\n const {\n options,\n multi,\n input,\n label,\n t,\n meta: { error, touched },\n spinner,\n disabled,\n noOptionsText,\n column,\n allowDragAndDrop,\n placeholder,\n } = this.props;\n\n return (\n \n {/* column as boolean throws type exception for some reason */}\n \n \n {t(label)}\n \n \n \n \n option.label ? option.label : ''\n }\n onChange={this.handleChange}\n getOptionSelected={(option, value): boolean =>\n value.label === option.label || !multi\n }\n value={input.value ? input.value : []}\n renderInput={(parameters): JSX.Element => (\n \n \n \n )}\n renderTags={\n allowDragAndDrop ? this.renderCustomTags : this.renderTags\n }\n renderOption={(option): JSX.Element => (\n \n )}\n size=\"small\"\n />\n {error && touched && (\n \n {t(error)}\n \n )}\n \n \n );\n }\n}\n\nexport default withTranslation()(CustomAutocomplete) as ComponentType<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n FieldRenderProps\n>;\n","import styled from '@emotion/styled';\nimport { IconButton } from '@material-ui/core';\n\nexport const CustomLanguageMappingFieldContainer = styled.div`\n margin: 12px 12px 8px 0;\n width: 100%;\n`;\n\nexport const CustomLanguageMappingContainer = styled.fieldset`\n margin: 20px -16px;\n display: flex;\n flex-direction: column;\n padding: 16px 13px 16px 15px;\n border: 1px solid #6f8294;\n`;\n\nexport const CustomLanguageMappingLegend = styled.legend`\n text-align: initial;\n font-weight: 700;\n font-size: 14px;\n color: #333;\n padding: 0 4px;\n margin-left: -5px;\n`;\n\nexport const CustomLanguageMappingButton = styled(IconButton)`\n align-self: flex-start;\n padding: 0 !important;\n color: #38af49 !important;\n`;\n\nexport const CustomLanguageMappingRemoveButton = styled(IconButton)`\n margin: 36px -8px 0 -8px !important;\n`;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Box } from '@material-ui/core';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport CustomAutocomplete from 'components/Form/Input/CustomAutocomplete';\nimport { IClientForm } from 'containers/AddClientContainer/AddClientContainer';\nimport { FormApi } from 'final-form';\nimport { Component } from 'react';\nimport { Field } from 'react-final-form';\nimport { FieldArray, FieldArrayRenderProps } from 'react-final-form-arrays';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport { IAutocompleteField, ILanguageMappingField } from 'types/shared';\nimport { requiredAutocomplete } from 'utils/customValidators';\nimport {\n CustomLanguageMappingButton,\n CustomLanguageMappingContainer,\n CustomLanguageMappingFieldContainer,\n CustomLanguageMappingLegend,\n CustomLanguageMappingRemoveButton,\n} from './LanguageMappingContainer.styled';\n\ninterface IState {\n filteredLanguages: IAutocompleteField[][];\n}\n\ninterface IProps {\n form: FormApi;\n contentfulLanguages: IAutocompleteField[];\n xtmLanguages: IAutocompleteField[];\n initialValue?: Array;\n}\n\ntype PropType = IProps & WithTranslation;\n\nexport class LanguageMappingContainer extends Component {\n constructor(props: PropType) {\n super(props);\n\n this.state = {\n filteredLanguages: [],\n };\n }\n\n componentDidUpdate(): void {\n const { form, contentfulLanguages } = this.props;\n const { filteredLanguages } = this.state;\n\n const languageMappingFields = form.getFieldState(\n 'contentfulXtmLanguagesMap',\n )?.value;\n\n if (\n languageMappingFields?.length &&\n contentfulLanguages &&\n !filteredLanguages?.length\n ) {\n this.setFilteredLanguages();\n }\n }\n\n setFilteredLanguages(): void {\n const { form, contentfulLanguages } = this.props;\n\n setTimeout(() => {\n const languageMappingFields = form.getFieldState(\n 'contentfulXtmLanguagesMap',\n )?.value;\n\n let filteredLanguages: IAutocompleteField[][] = [];\n\n const chosenContentfulLanguages: string[] =\n languageMappingFields?.map(\n ({ contentfulLanguage }) => contentfulLanguage?.value,\n ) || [];\n\n filteredLanguages =\n languageMappingFields?.map((language, index) =>\n contentfulLanguages.filter(\n ({ value }) =>\n !chosenContentfulLanguages.includes(value) ||\n languageMappingFields[index].contentfulLanguage?.value === value,\n ),\n ) || [];\n\n this.setState({\n filteredLanguages,\n });\n }, 1);\n }\n\n getContentfulLanguageValue(index: number): string | undefined {\n const { form } = this.props;\n const languageMappingField = form.getFieldState(\n 'contentfulXtmLanguagesMap',\n )?.value;\n\n return (\n languageMappingField &&\n languageMappingField[index].contentfulLanguage?.value\n );\n }\n\n handleAddLanguageMapping =\n (\n fields: FieldArrayRenderProps<\n ILanguageMappingField,\n HTMLElement\n >['fields'],\n ) =>\n (): void => {\n fields.push({\n xtmLanguage: { label: '', value: '' },\n contentfulLanguage: { label: '', value: '' },\n });\n this.setFilteredLanguages();\n };\n\n handleRemoveLanguageMapping =\n (\n fields: FieldArrayRenderProps<\n ILanguageMappingField,\n HTMLElement\n >['fields'],\n index: number,\n ) =>\n (): void => {\n fields.remove(index);\n this.setFilteredLanguages();\n };\n\n onContentfulLanguageChange =\n (\n index: number,\n fields: FieldArrayRenderProps<\n ILanguageMappingField,\n HTMLElement\n >['fields'],\n ) =>\n (\n event: React.ChangeEvent<{}>,\n value: IAutocompleteField | Array | null,\n ): void => {\n if (!value) {\n fields.update(index, {\n contentfulLanguage: { label: '', value: '' },\n xtmLanguage: { label: '', value: '' },\n });\n }\n\n this.setFilteredLanguages();\n };\n\n render(): JSX.Element {\n const { filteredLanguages } = this.state;\n const { t, contentfulLanguages, xtmLanguages, initialValue } = this.props;\n\n return (\n \n {({ fields }): JSX.Element => (\n \n \n {t('client.languageMapping')}\n \n {fields.map(\n (name, index: number): JSX.Element => (\n \n \n \n \n\n \n \n \n\n \n \n \n \n ),\n )}\n {contentfulLanguages?.length !== fields?.length && (\n \n \n \n )}\n \n )}\n \n );\n }\n}\n\nexport default withTranslation()(LanguageMappingContainer);\n","import { css } from '@emotion/core';\nimport styled from '@emotion/styled';\n\nexport const Title = styled.div`\n margin: 16px 0;\n`;\n\nexport const addClientContainerStyles = {\n root: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: flex-start;\n `,\n heading: css`\n color: #0796eb;\n font-weight: 100;\n `,\n\n form: css`\n margin: 16px;\n `,\n btnContainer: css`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 40%;\n margin: 0 auto;\n margin-top: 20px !important;\n `,\n checkbox: css`\n display: flex;\n `,\n};\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Dispatch } from '@reduxjs/toolkit';\nimport ButtonContainer from 'components/Form/ButtonContainer/ButtonContainer';\nimport { EditData } from 'components/Form/CilentData/EditData';\nimport FormDiv from 'components/Form/Div/FormDiv';\nimport CustomCheckbox from 'components/Form/Input/CustomCheckbox';\nimport CustomFieldRow from 'components/Form/Input/CustomFieldRow';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport LanguageMappingContainer from 'components/LanguageMapping/LanguageMappingContainer';\nimport arrayMutators from 'final-form-arrays';\nimport { useEffect, useState } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { useRouteMatch } from 'react-router-dom';\nimport { AppDispatch, AppState } from 'store';\nimport {\n clearClient,\n clearClientErrors,\n createClient,\n editClient,\n getAllLanguages,\n getClientById,\n} from 'store/client/client.actions';\nimport {\n getClientErrorsSelector,\n getClientSelector,\n getContentfulLanguagesSelector,\n getXTMLanguagesSelector,\n} from 'store/client/client.selectors';\nimport { IEditClient } from 'types/api';\nimport { IAutocompleteField, ILanguageMappingField } from 'types/shared';\nimport {\n composeValidators,\n fetchValidator,\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 xtmLanguages: Array;\n contentfulLanguages: Array;\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 getAllLanguages: () => AppDispatch;\n}\n\nexport interface IClientForm\n extends Omit {\n contentfulXtmLanguagesMap: Array;\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 { client } = props;\n const { t } = useTranslation();\n const {\n errors,\n createClient,\n editClient,\n xtmLanguages,\n contentfulLanguages,\n } = props;\n const [mappingInitialValue, setMappingInitialValue] = useState<\n Array | undefined\n >(undefined);\n const [submitValues, setSubmitValues] = useState<{\n clientName?: string;\n status?: boolean;\n }>({\n clientName: undefined,\n status: undefined,\n });\n\n useEffect(() => {\n const { getAllLanguages: getXTMLanguages } = props;\n\n getXTMLanguages();\n\n if (clientId) {\n props.getClientById(clientId);\n }\n return (): void => {\n props.clearClient();\n props.clearClientErrors();\n };\n }, []);\n\n useEffect(() => {\n setMappingInitialValue(\n !client\n ? undefined\n : Object.entries(client.contentfulXtmLanguagesMap).map(\n ([contentfulLanguageCode, xtmLangaugeCode]) => ({\n contentfulLanguage: {\n label: contentfulLanguageCode,\n value: contentfulLanguageCode,\n },\n xtmLanguage: { label: xtmLangaugeCode, value: xtmLangaugeCode },\n }),\n ),\n );\n }, [client]);\n\n const mapLanguages = (\n languageArray: Array,\n ): Array> =>\n languageArray.map((code) => ({ value: code, label: code }));\n\n const mapLanguagesToObject = (\n contentfulXtmLanguagesMap: Array,\n ): { [index: string]: string } => {\n const mappedLanguages: { [index: string]: string } = {};\n\n // eslint-disable-next-line no-unused-expressions\n contentfulXtmLanguagesMap?.forEach(\n ({ contentfulLanguage, xtmLanguage }) => {\n mappedLanguages[contentfulLanguage.value] = xtmLanguage.value;\n },\n );\n\n return mappedLanguages;\n };\n\n const onSubmit = (values: IClientForm): void => {\n const contentfulXtmLanguagesMap = mapLanguagesToObject(\n values.contentfulXtmLanguagesMap,\n );\n props.clearClientErrors();\n setSubmitValues(values);\n if (clientId) {\n editClient({\n clientId,\n updateClient: { ...values, contentfulXtmLanguagesMap },\n });\n } else {\n createClient({ ...values, contentfulXtmLanguagesMap });\n }\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 {({ input }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n \n {({ input }): JSX.Element => (\n \n )}\n \n\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any)._env_?.REACT_APP_IS_NON_HUMAN_TAGGING_ENABLED ===\n 'true' && (\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n )\n }\n\n \n {client && (\n \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 getAllLanguages: (): AppDispatch => dispatch(getAllLanguages()),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n errors: getClientErrorsSelector(state),\n client: getClientSelector(state),\n contentfulLanguages: getContentfulLanguagesSelector(state),\n xtmLanguages: getXTMLanguagesSelector(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 }\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: 8px;\n width: auto;\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 return ;\n }\n\n render(): JSX.Element {\n return {this.renderIcon()};\n }\n}\n\nexport default AccordionIcon;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport {\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 xtmConnectUser({\n userId,\n xtmParameters: {\n userUuidToCopyPassword: userId,\n password: null,\n username: connectData.xtmUsername,\n ...connectData,\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 && type === UserRouteParameterEnum.edit) {\n this.props.xtmConnectUser({\n userId,\n xtmParameters: {\n ...values,\n password: isNewPassword ? values.password : null,\n userUuidToCopyPassword: isNewPassword ? null : userId,\n },\n });\n } else if (userId && type === UserRouteParameterEnum.duplicate) {\n this.props.xtmConnect({\n ...values,\n password: isNewPassword ? values.password : null,\n userUuidToCopyPassword: isNewPassword ? null : userId,\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 getTemplateSpinnerSelector,\n} from 'store/spinner/spinner.selectors';\nimport {\n clearXtmTemplates,\n xtmGetCustomers,\n xtmGetCustomersById,\n xtmGetTemplates,\n xtmGetTemplatesById,\n} from 'store/user/user.actions';\nimport {\n getXtmCustomersSelector,\n getXtmTemplatesSelector,\n} from 'store/user/user.selectors';\nimport {\n composeValidators,\n isAllowedPrefix,\n isMaxLength,\n isNumber,\n required,\n} from 'utils/customValidators';\nimport { isObjectEqual } from 'utils/objectEquality';\nimport {\n UserDTO,\n XTMConnectDTO,\n XTMCustomerDTO,\n XTMTemplateDTO,\n} from 'utils/restApplicationClient';\nimport { CreateUserDTO } from 'utils/restApplicationClientTypeOverrides';\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}\n\ninterface IStateProps {\n customers?: XTMCustomerDTO[];\n templates?: XTMTemplateDTO[];\n customerSpinner: boolean;\n templateSpinner: boolean;\n}\n\ntype PropType = IProps & IDispatchProps & IStateProps;\n\nexport class ConnectedFields extends Component {\n componentDidMount(): void {\n const { authorizationId, getCustomers, user, getTemplatesById } =\n this.props;\n if (user) {\n getTemplatesById({\n userId: user.id,\n queryParams: {\n xtmCustomerId: user.xtmProperties.xtmCustomerId.toString(),\n },\n });\n } else if (authorizationId) {\n getCustomers({ xtmAuthorizationId: authorizationId });\n }\n }\n\n componentDidUpdate(previousProps: PropType): void {\n const { authorizationId } = this.props;\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.clearTemplates();\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 return { value: customer.xtmCustomerId.toString(), 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 return { value: template.xtmTemplateId.toString(), name: template.name };\n });\n }\n\n handleCustomerChange = (\n event: ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>,\n ): void => {\n const { authorizationId, getTemplates, getTemplatesById, user } =\n this.props;\n if (user && user.id) {\n getTemplatesById({\n userId: user.id,\n queryParams: { xtmCustomerId: event.target.value as string },\n });\n } else if (authorizationId) {\n getTemplates({\n xtmAuthId: authorizationId,\n xtmCustomerId: event.target.value as string,\n });\n }\n };\n\n selectSpinner = (): JSX.Element => {\n return (\n \n );\n };\n\n render(): JSX.Element {\n const {\n native,\n customers,\n templates,\n customerSpinner,\n templateSpinner,\n user,\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, meta }): JSX.Element => (\n \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});\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});\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 CustomFieldRow from 'components/Form/Input/CustomFieldRow';\nimport CustomSelect from 'components/Form/Input/CustomSelect';\nimport FormTitle from 'components/Form/Title/FormTitle';\nimport { Roles } from 'enums/roles';\nimport { UserRouteParameterEnum } from 'enums/userRouteParameter';\nimport { createForm, FormApi } from 'final-form';\nimport React, { Component } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps } from 'react-router-dom';\nimport { AppDispatch, AppState } from 'store';\nimport { getAllClients } from 'store/client/client.actions';\nimport { getAllClientsSelector } from 'store/client/client.selectors';\nimport {\n clearUser,\n clearUserErrors,\n createUser,\n editUser,\n 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 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}\n\ninterface IState {\n submitValues?: UpdateUserDTO | CreateUserDTO;\n}\n\ninterface IProps {\n native?: boolean;\n}\n\ninterface IMatchParams {\n id?: string;\n type?: UserRouteParameterEnum;\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 } = this.props;\n clearUserErrors();\n clearUser();\n }\n\n parseClientSelect(rows: ClientDTO[]): Array<{ value: string; name: string }> {\n return rows.map((client) => ({\n value: client.id,\n name: client.clientName,\n }));\n }\n\n onSubmit = (values: CreateUserDTO): void => {\n const {\n match: {\n params: { id: userId, type },\n },\n } = this.props;\n this.props.clearUserErrors();\n this.setState({ submitValues: values });\n if (userId && type === UserRouteParameterEnum.edit) {\n this.props.editUser({\n userId,\n updateUser: values,\n });\n } else {\n this.props.createUser(values);\n }\n };\n\n form: FormApi = createForm({\n onSubmit: this.onSubmit,\n });\n\n render(): JSX.Element {\n const {\n match: {\n params: { id: userId, type },\n },\n native,\n errors,\n user,\n authorizationId,\n currentUser,\n } = this.props;\n\n const isClientAdmin = checkRoles(\n [Roles.ADMIN_CLIENT],\n currentUser.roles as Roles[],\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 }): JSX.Element => (\n \n )}\n \n\n \n {(inputProps): JSX.Element => (\n \n )}\n \n {((!type && authorizationId) ||\n (type && user && authorizationId)) && (\n \n )}\n \n {({ input }): JSX.Element => (\n \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});\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 `,\n button: css`\n padding: 4px !important;\n `,\n container: css`\n max-height: 500px;\n `,\n iconContainer: css`\n display: flex;\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; orderId?: 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}\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 } = 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(({ id, label, orderId }, index) => {\n const isSelected = Boolean(orderId)\n ? orderBy === orderId\n : orderBy === id;\n\n return (\n \n \n {t(label)}\n \n \n );\n })}\n {t('common.actions')}\n \n )}\n \n \n {(pageable && pageable.content && !pageable.content.length) ||\n !pageable ||\n (fetchSpinner && !fetchSpinnerOverride) ? (\n \n \n {this.renderEmpty()}\n \n \n ) : (\n pageable &&\n pageable.content &&\n pageable.content.length &&\n parseDateBulk>(pageable).content.map((row, index) => (\n \n {headers.map((header) => (\n \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 > &\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 >\n> {\n return connect(\n mapStateToProps,\n mapDispatchToProps,\n )(\n withTranslation()(\n CustomTable as new (props: IProps & WithTranslation) => CustomTable,\n ),\n );\n}\n","export enum SettingsActionTypes {\n fetchSettings = '[SETTINGS] FETCH SETTINGS',\n fetchSettingsSuccess = '[SETTINGS] FETCH SETTINGS SUCCESS',\n fetchSettingsError = '[SETTINGS] FETCH SETTINGS ERROR',\n getSettings = '[SETTINGS] GET SETTINGS',\n getSettingsSuccess = '[SETTINGS] GET SETTINGS SUCCESS',\n getSettingsError = '[SETTINGS] GET SETTINGS ERROR',\n getAllSettings = '[SETTINGS] GET ALL SETTINGS',\n getAllSettingsSuccess = '[SETTINGS] GET ALL SETTINGS SUCCESS',\n getAllSettingsError = '[SETTINGS] GET ALL SETTINGS ERROR',\n InitializeContentful = '[SETTINGS] INITIALIZE CONNECTION TO CONTENTFUL',\n InitializeContentfulSuccess = '[SETTINGS] INITIALIZE CONNECTION TO CONTENTFUL SUCCESS',\n InitializeContentfulError = '[SETTINGS] INITIALIZE CONNECTION TO CONTENTFUL ERROR',\n InitializationCheck = '[SETTINGS] INITIALIZATION SETTINGS CHECK',\n InitializationCheckSuccess = '[SETTINGS] INITIALIZATION SETTINGS CHECK SUCCESS',\n InitializationCheckError = '[SETTINGS] INITIALIZATION SETTINGS CHECK ERROR',\n addSpace = '[SETTINGS] ADD SPACE',\n setClientID = '[SETTINGS] SET CLIENT ID',\n deleteOrganizationSettings = '[SETTINGS] DELETE ORGANIZATION SETTINGS',\n deleteOrganizationSettingsSuccess = '[SETTINGS] DELETE ORGANIZATION SETTINGS SUCCESS',\n deleteOrganizationSettingsError = '[SETTINGS] DELETE ORGANIZATION SETTINGS ERROR',\n updateSettings = '[SETTINGS] UPDATE SETTINGS',\n updateSettingsError = '[SETTINGS] UPDATE SETTINGS ERROR',\n updateSettingsSuccess = '[SETTINGS] UPDATE SETTINGS SUCCESS',\n setCurrentOrganizationSettings = '[SETTINGS] SET CURRENT ORGANIZATION SETTINGS',\n changeCredentials = `[SETTINGS] CHANGE CREDENTIALS`,\n changeCredentialsSuccess = `[SETTINGS] CHANGE CREDENTIALS SUCCESS`,\n changeCredentialsError = `[SETTINGS] CHANGE CREDENTIALS ERROR`,\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 font-weight: normal !important;\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 {buttonLabelKey && onAdd ? (\n \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.administratorName', 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.client', id: 'clientName' },\n { label: 'common.status', 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 { 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","import { createAction } from '@reduxjs/toolkit';\nimport {\n OrganizationSettingsDTO,\n Page,\n PageableSettingsDTO,\n SettingsDTO,\n} from 'utils/restApplicationClient';\nimport { SettingsActionTypes } from './settings.actions.types';\nimport {\n ISettingsPageable,\n SaveOrganizationSettings,\n SettingsAuthorization,\n} from './settings.interface';\n\nexport const fetchSettings = createAction(SettingsActionTypes.fetchSettings);\n\nexport const fetchSettingsSuccess = createAction(\n SettingsActionTypes.fetchSettingsSuccess,\n);\n\nexport const fetchSettingsError = createAction(\n SettingsActionTypes.fetchSettingsError,\n);\n\nexport const getSettings = createAction(\n SettingsActionTypes.getSettings,\n);\n\nexport const getSettingsSuccess = createAction(\n SettingsActionTypes.getSettingsSuccess,\n);\n\nexport const getSettingsError = createAction(\n SettingsActionTypes.getSettingsError,\n);\n\nexport const getAllSettings = createAction(\n SettingsActionTypes.getAllSettings,\n);\n\nexport const getAllSettingsSuccess = createAction>(\n SettingsActionTypes.getAllSettingsSuccess,\n);\n\nexport const getAllSettingsError = createAction(\n SettingsActionTypes.getAllSettingsError,\n);\n\nexport const initializeContentful = createAction(\n SettingsActionTypes.InitializeContentful,\n);\n\nexport const initializeContentfulSuccess = createAction(\n SettingsActionTypes.InitializeContentfulSuccess,\n);\n\nexport const initializeContentfulError = createAction(\n SettingsActionTypes.InitializeContentfulError,\n);\n\nexport const initializationCheck = createAction(\n SettingsActionTypes.InitializationCheck,\n);\n\nexport const initializationCheckSuccess = createAction(\n SettingsActionTypes.InitializationCheckSuccess,\n);\n\nexport const initializationCheckError = createAction(\n SettingsActionTypes.InitializationCheckError,\n);\n\nexport const addSpace = createAction(SettingsActionTypes.addSpace);\n\nexport const setClientId = createAction(\n SettingsActionTypes.setClientID,\n);\n\nexport const deleteOrganizationSettings = createAction(\n SettingsActionTypes.deleteOrganizationSettings,\n);\n\nexport const deleteOrganizationSettingsSuccess = createAction<\n string | undefined\n>(SettingsActionTypes.deleteOrganizationSettingsSuccess);\n\nexport const deleteOrganizationSettingsError = createAction(\n SettingsActionTypes.deleteOrganizationSettingsError,\n);\n\nexport const updateSettings = createAction(\n SettingsActionTypes.updateSettings,\n);\n\nexport const updateSettingsError = createAction(\n SettingsActionTypes.updateSettingsError,\n);\n\nexport const updateSettingsSuccess = createAction(\n SettingsActionTypes.updateSettingsSuccess,\n);\n\nexport const setCurrentOrganizationSettings = createAction<\n OrganizationSettingsDTO | undefined\n>(SettingsActionTypes.setCurrentOrganizationSettings);\n\nexport const changeCredentials = createAction(\n SettingsActionTypes.changeCredentials,\n);\nexport const changeCredentialsSuccess = createAction(\n SettingsActionTypes.changeCredentialsSuccess,\n);\nexport const changeCredentialsError = createAction(\n SettingsActionTypes.changeCredentialsError,\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport {\n Page,\n PageableSettingsDTO,\n SettingsDTO,\n} from 'utils/restApplicationClient';\nimport { IConfigState } from './settings.interface';\n\nconst SettingsSelector = (state: AppState): SettingsDTO[] => {\n return state.settings.SettingsDTO;\n};\n\nconst AllSettingsSelector = (state: AppState): Page => {\n return state.settings.allSettings;\n};\n\nconst AddSpaceSelector = (state: AppState): boolean => {\n return state.settings.addSpace;\n};\n\nconst SuccessesSelector = (state: AppState): boolean => {\n return state.settings.successes;\n};\n\nconst InitializationCheckSelector = (state: AppState): boolean => {\n return state.settings.initializationCheck;\n};\n\nconst selectSelf = (state: AppState): IConfigState => {\n return state.settings;\n};\n\nexport const getSettingsSelector = createSelector(\n SettingsSelector,\n (SettingsDTO) => SettingsDTO,\n);\n\nexport const getAllSettingsSelector = createSelector(\n AllSettingsSelector,\n (allSettings) => allSettings,\n);\n\nexport const setAddSpaceSelector = createSelector(\n AddSpaceSelector,\n (addSettings) => addSettings,\n);\nexport const setClientIdSelector = createSelector(\n selectSelf,\n (state) => state.clientId,\n);\n\nexport const getSuccessesSelector = createSelector(\n SuccessesSelector,\n (success) => success,\n);\n\nexport const isInitializedSelector = createSelector(\n InitializationCheckSelector,\n (initializationCheck) => initializationCheck,\n);\n\nexport const getSettingsErrorsSelector = (\n state: AppState,\n): { [key: string]: string | undefined } => state.settings.errors;\n\n// eslint-disable-next-line id-length\nexport const getCurrentOrganizationSettingsSelector = createSelector(\n selectSelf,\n (state) => state.selectedOrganizationSettings,\n);\n","import styled from '@emotion/styled';\nimport { Box, Card } from '@material-ui/core';\n\nexport const CustomSettingsContainer = styled(Box)`\n display: flex;\n justify-content: space-between;\n height: 100%;\n`;\n\nexport const RightElement = styled.div`\n display: flex;\n justify-content: center;\n width: 100%;\n`;\n\nexport const CentredContainer = styled.div`\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const CustomConnectionCard = styled(Card)`\n min-width: 500px;\n`;\nexport const CustomTitleCard = styled.div`\n background-color: #eff3f7;\n padding: 16px;\n display: flex;\n width: 100%;\n justify-content: center;\n`;\n\nexport const Tittle = styled.div`\n width: 90%;\n`;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport {\n Button,\n CardContent,\n CircularProgress,\n IconButton,\n} from '@material-ui/core';\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\nimport CustomField from 'components/Form/Input/CustomField';\nimport {\n customInputStyles,\n ErrorDiv,\n} from 'components/Form/Input/CustomInput.style';\nimport { Roles } from 'enums/roles';\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 { RouteComponentProps, withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\nimport { AppDispatch, AppState } from 'store';\nimport { showError } from 'store/notify/notify.actions';\nimport { IShowErrorPayload } from 'store/notify/notify.actions.types';\nimport {\n addSpace,\n changeCredentials,\n initializationCheck,\n initializeContentful,\n} from 'store/settings/settings.actions';\nimport { SettingsAuthorization } from 'store/settings/settings.interface';\nimport {\n getCurrentOrganizationSettingsSelector,\n getSettingsErrorsSelector,\n getSettingsSelector,\n isInitializedSelector,\n setAddSpaceSelector,\n setClientIdSelector,\n} from 'store/settings/settings.selectors';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport { clearUserErrors } from 'store/user/user.actions';\nimport { getUserDataSelector } from 'store/user/user.selectors';\nimport { checkRoles } from 'utils/checkRoles';\nimport {\n composeValidators,\n fetchValidatorObject,\n required,\n} from 'utils/customValidators';\nimport {\n AuthenticationResult,\n OrganizationSettingsDTO,\n SettingsDTO,\n} from 'utils/restApplicationClient';\nimport {\n CentredContainer,\n CustomConnectionCard,\n CustomTitleCard,\n Tittle,\n} from './SettingsContainer.style';\n\ninterface IDispatchProps {\n login: (payload: SettingsAuthorization) => AppDispatch;\n changeCredentials: (payload: SettingsAuthorization) => AppDispatch;\n initializationCheck: () => AppDispatch;\n clearUserErrors: () => AppDispatch;\n setAddSpace: () => AppDispatch;\n showErrors: (payload: IShowErrorPayload) => AppDispatch;\n}\n\ninterface IStateProps {\n errors: { [key: string]: string | undefined };\n currentUser: AuthenticationResult;\n fetchSpinner: boolean;\n settings: SettingsDTO[];\n canAddSpace: boolean;\n isInitialized: boolean;\n selectedSettings?: OrganizationSettingsDTO;\n clientId?: string;\n}\n\ninterface IFormValues extends Record {\n connectionSpaceId: string;\n cmaToken: string[];\n}\n\ninterface ISettingsProps {\n fetchSpinnerOverride?: boolean;\n spaceId?: string;\n initialValue?: string;\n}\n\ninterface IState {\n submitValues: IFormValues;\n}\n\ntype IProps = IDispatchProps &\n IStateProps &\n WithTranslation &\n RouteComponentProps &\n ISettingsProps;\n\nclass SettingsContainer extends Component {\n unsubscribe: Unsubscribe;\n constructor(props: IProps) {\n super(props);\n this.form = createForm({\n onSubmit: this.onSubmit,\n });\n this.unsubscribe = this.form.subscribe(\n () => {\n if (this.props.errors['initialization']) {\n this.props.clearUserErrors();\n }\n },\n { values: true },\n );\n\n this.state = {\n submitValues: {\n connectionSpaceId: '',\n cmaToken: [''],\n },\n };\n }\n form: FormApi>>;\n\n onSubmit = ({ connectionSpaceId, cmaToken }: IFormValues): void => {\n const { currentUser, location, login, changeCredentials, clientId } =\n this.props;\n const isClientAdmin = checkRoles(\n [Roles.ADMIN_XTM],\n currentUser.roles as Roles[],\n );\n\n this.setState(\n {\n submitValues: {\n connectionSpaceId,\n cmaToken,\n },\n },\n () => {\n if (location.pathname === '/settings/connect' && !isClientAdmin) {\n login({\n connectionSpaceId,\n cmaToken,\n });\n } else if (isClientAdmin) {\n login({\n clientId,\n connectionSpaceId,\n cmaToken,\n });\n } else {\n changeCredentials({\n connectionSpaceId,\n cmaToken,\n });\n }\n },\n );\n };\n\n componentDidMount(): void {\n const { currentUser, canAddSpace, history, clientId } = this.props;\n const isClientAdmin = checkRoles(\n [Roles.ADMIN_XTM],\n currentUser.roles as Roles[],\n );\n\n if (!isClientAdmin && !canAddSpace) {\n this.props.initializationCheck();\n }\n\n if (!clientId && isClientAdmin) {\n history.goBack();\n }\n }\n componentDidUpdate(): void {\n const { history, isInitialized } = this.props;\n if (isInitialized) {\n history.push(`/settings/connect/successful`);\n }\n\n // if (errors) {\n // errors.map((data) => {\n // showError(data);\n // });\n // }\n }\n\n componentWillUnmount(): void {\n this.props.setAddSpace();\n this.unsubscribe();\n }\n\n initialValue = (): string | undefined => {\n const { location, selectedSettings } = this.props;\n if (location.pathname === '/settings/reconnect') {\n return selectedSettings?.spaceId;\n }\n return undefined;\n };\n\n onChangingCredentials = (): boolean => {\n const { location } = this.props;\n if (location.pathname === '/settings/reconnect') {\n return true;\n }\n return false;\n };\n\n renderEmpty = (): JSX.Element => {\n const { fetchSpinner } = this.props;\n if (fetchSpinner) {\n return ;\n }\n return
;\n };\n render(): JSX.Element {\n const {\n t,\n fetchSpinner,\n errors,\n selectedSettings,\n canAddSpace,\n history,\n settings,\n } = this.props;\n\n const formError = errors['initialization'];\n\n // TODO\n const onBack = (): void => {\n if (settings.length === 0) {\n history.push(`/settings`);\n } else {\n history.goBack();\n }\n };\n return (\n \n \n \n {canAddSpace && (\n onBack()}>\n \n \n )}\n {t('auth.settings.tittle')}\n \n \n {fetchSpinner ? (\n this.renderEmpty()\n ) : (\n (\n
\n {selectedSettings ? (\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n ) : (\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n )}\n\n \n {({ input, meta }): JSX.Element => (\n \n )}\n \n \n \n {formError ? t(formError) : null}\n \n \n \n {t('auth.settings.connect')}\n \n \n )}\n />\n )}\n
\n
\n
\n );\n }\n}\n\nconst mapDispatchToProps = (\n dispatch: Dispatch,\n): IDispatchProps => ({\n login: (payload: SettingsAuthorization): AppDispatch =>\n dispatch(initializeContentful(payload)),\n changeCredentials: (payload: SettingsAuthorization): AppDispatch =>\n dispatch(changeCredentials(payload)),\n clearUserErrors: (): AppDispatch => dispatch(clearUserErrors()),\n initializationCheck: (): AppDispatch => dispatch(initializationCheck()),\n setAddSpace: (): AppDispatch => dispatch(addSpace(false)),\n showErrors: (payload: IShowErrorPayload): AppDispatch =>\n dispatch(showError(payload)),\n});\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n errors: getSettingsErrorsSelector(state),\n fetchSpinner: getFetchSpinnerSelector(state),\n settings: getSettingsSelector(state),\n currentUser: getUserDataSelector(state),\n canAddSpace: setAddSpaceSelector(state),\n isInitialized: isInitializedSelector(state),\n selectedSettings: getCurrentOrganizationSettingsSelector(state),\n clientId: setClientIdSelector(state),\n});\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps,\n )(withTranslation()(SettingsContainer)),\n);\n","import { TypedUseSelectorHook, useSelector } from 'react-redux';\nimport { AppState } from 'store';\n\nexport const useTypedSelector: TypedUseSelectorHook = useSelector;\n","import CustomTableContainer from 'components/Table/CustomTable';\nimport TableToolbar from 'components/TableToolbar/TableToolbar';\nimport { Roles } from 'enums/roles';\nimport React, { useEffect } from 'react';\nimport { useHistory } from 'react-router';\nimport { getAllSettings } from 'store/settings/settings.actions';\nimport { getAllSettingsSelector } from 'store/settings/settings.selectors';\nimport { getUserDataSelector } from 'store/user/user.selectors';\nimport { checkRoles } from 'utils/checkRoles';\nimport { useTypedSelector } from 'utils/hooks/TypedSelector';\nimport { PageableSettingsDTO } from 'utils/restApplicationClient';\n\nconst ClientTable = CustomTableContainer();\n\nconst SettingsClientList = (): JSX.Element => {\n const headers = [\n { label: 'common.clientName', id: 'clientName', orderId: 'client_name' },\n {\n label: 'common.settingsInitialized',\n id: 'settingsInitialized',\n orderId: 'is_initialized',\n },\n { label: 'common.creationDate', id: 'createdAt', orderId: 'created_at' },\n {\n label: 'common.modificationDate',\n id: 'modifiedAt',\n orderId: 'modified_at',\n },\n ];\n\n const clients = useTypedSelector(getAllSettingsSelector);\n const history = useHistory();\n const currentUser = useTypedSelector(getUserDataSelector);\n const isAdmin = checkRoles([Roles.ADMIN_XTM], currentUser.roles as Roles[]);\n\n const onEdit = (row: PageableSettingsDTO): void => {\n history.push(`/settings/connect/${row.id}`);\n };\n\n useEffect(() => {\n if (!isAdmin) {\n history.push(`/settings/connect`);\n }\n }, []);\n return isAdmin ? (\n <>\n \n \n \n ) : (\n <>\n );\n};\n\nexport default SettingsClientList;\n","import styled from '@emotion/styled';\nimport { Drawer, ListItemText } from '@material-ui/core';\nimport { TreeItem } from '@material-ui/lab';\n\nexport const CustomDrawer = styled(Drawer)`\n & .MuiDrawer-docked {\n height: 100%;\n position: relative;\n }\n & .MuiList-padding {\n padding-top: initial;\n padding-bottom: initial;\n }\n & .MuiDrawer-paper {\n top: initial;\n position: initial;\n min-width: 300px;\n height: 100%;\n }\n & .MuiToolbar-regular {\n min-height: initial;\n }\n & .MuiTreeItem-root {\n padding: 8px 16px 8px 16px;\n }\n & .MuiTreeItem-iconContainer {\n justify-content: flex-start;\n margin-right: -4px;\n }\n & .MuiTreeItem-label {\n text-align: start;\n justify-content: space-between;\n padding-left: initial;\n }\n & .MuiTreeItem-iconContainer svg {\n font-size: 1.5rem;\n color: rgba(0, 0, 0, 0.54);\n }\n & .group-title {\n text-align: left;\n padding-left: 16px;\n padding-right: 16px;\n font-weight: bold;\n }\n & .box-label {\n padding-left: 31px;\n }\n & .MuiTreeItem-content {\n flex-direction: row-reverse;\n .MuiSvgIcon-root {\n opacity: 0.54;\n }\n }\n & .Mui-selected {\n background-color: initial;\n border: 5px;\n border-color: initial;\n }\n`;\n\nexport const CustomDrawerContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 100%;\n`;\n\nexport const ErrorTreeItem = styled(TreeItem)`\n color: #ff6347;\n`;\n\nexport const ErrorListItemText = styled(ListItemText)`\n color: #ff6347;\n`;\n\nexport const CenterDrawer = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n`;\n","import {\n Box,\n CircularProgress,\n Divider,\n Icon,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport { TreeItem, TreeView } from '@material-ui/lab';\nimport { uniqueId } from 'lodash-es';\nimport React, { FC } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from 'store';\nimport { getFetchSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport {\n CenterDrawer,\n CustomDrawer,\n CustomDrawerContainer,\n ErrorListItemText,\n ErrorTreeItem,\n} from './DrawerPanel.styled';\nimport {\n DrawerElementInterface,\n DrawerInterface,\n IStateProps,\n} from './DrawerPanel.type';\n\nconst Label: FC<{ node: DrawerElementInterface }> = ({\n node: { label, icon },\n}) => (\n \n {icon}\n {label}\n \n);\n\nconst CustomTreeItem: FC<{ node: DrawerElementInterface }> = ({ node }) => {\n const id = uniqueId();\n return node.error ? (\n }\n onClick={node.onClick}\n >\n {Array.isArray(node.elements)\n ? node.elements.map((element, index) => (\n \n ))\n : null}\n \n ) : (\n }\n onClick={node.onClick}\n >\n {Array.isArray(node.elements)\n ? node.elements.map((element, index) => (\n \n ))\n : null}\n \n );\n};\n\nclass DrawerPanel extends React.Component {\n renderEmpty = (): JSX.Element => {\n const { fetchSpinner } = this.props;\n if (fetchSpinner) {\n return (\n \n \n \n );\n } else {\n return <>;\n }\n };\n\n render(): JSX.Element {\n const { anchor, group, bottomElements, topElements } = this.props;\n return (\n \n \n
\n {topElements?.map((element, id) => (\n <>\n \n \n \n {element.icon ? (\n \n {element.icon}\n \n ) : null}\n \n \n \n \n \n ))}\n {this.renderEmpty()}\n {group && group?.length > 0\n ? group?.map((group, id) => (\n
\n \n

{group.title}

\n {group.elements?.map((element, index) =>\n element.elements ? (\n }\n defaultExpandIcon={}\n onClick={element.onClick}\n >\n \n \n ) : element.error ? (\n \n {element.icon ? (\n \n {element.icon}\n \n ) : null}\n \n \n ) : (\n \n {element.icon ? (\n \n {element.icon}\n \n ) : null}\n \n \n ),\n )}\n
\n
\n ))\n : group?.map((group) => (\n \n {group.elements?.map((element, id) => (\n \n {element.icon ? (\n \n {element.icon}\n \n ) : null}\n \n \n ))}\n \n ))}\n
\n {bottomElements?.map((element, id) => (\n <>\n \n \n \n {element.icon ? (\n \n {element.icon}\n \n ) : null}\n \n \n \n \n ))}\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateProps => ({\n fetchSpinner: getFetchSpinnerSelector(state),\n});\n\nexport default connect(mapStateToProps)(DrawerPanel);\n","import { css } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport {\n Box,\n Checkbox,\n Chip,\n IconButton,\n InputBase,\n Link,\n Paper,\n Popper,\n Typography,\n} from '@material-ui/core';\n\nexport interface IDisabledProps {\n disabled?: number;\n spinner?: number;\n}\nexport interface IPaperProps {\n width: number;\n}\n\nexport interface IInputProps {\n error: number;\n opened: number;\n hovered: number;\n height?: number;\n width?: number;\n}\n\nexport const DraggableSelectChip = styled(Chip)`\n margin: 8px 2px;\n`;\n\nexport const DraggableSelectEllipsisContainer = styled(Box)`\n align-items: flex-start;\n opacity: ${({ disabled }: IDisabledProps) => (disabled ? `0.5` : '1')};\n display: ${({ spinner }: IDisabledProps) => (spinner ? `none` : 'flex')};\n`;\n\nexport const DraggableSelectEllipsis = styled.span`\n margin-top: 3px !important;\n`;\n\nexport const DraggableSelectArrowContainer = styled(Box)`\n align-items: flex-start;\n opacity: ${({ disabled }: IDisabledProps) => (disabled ? `0.5` : '1')};\n display: ${({ spinner }: IDisabledProps) => (spinner ? `none` : 'flex')};\n`;\n\nexport const DraggableSelectButtonTypography = styled(Typography)`\n display: flex;\n justify-content: space-between;\n background: #e0e0e0;\n margin: 3px;\n border-radius: 20px;\n min-width: 50px;\n padding: 0 5px;\n`;\n\nexport const DraggableSelectIconButton = styled(IconButton)`\n padding: 0 !important;\n color: #fff;\n margin-top: 3px !important;\n`;\n\nexport const DraggableSelectOptionCheckbox = styled(Checkbox)`\n padding: 0 !important;\n`;\n\nexport const DraggableSelectInputContainer = styled(Box)`\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-height: 32px;\n`;\n\nexport const DraggableSelectInput = styled(InputBase)`\n width: 90%;\n margin: 10px;\n border: 1px solid rgba(0, 0, 0, 0.23);\n background: #fff;\n .MuiInputBase-input {\n padding: 5px;\n min-height: 30px;\n }\n`;\n\nexport const DraggableSelectChipContainer = styled(Box)`\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n`;\n\nexport const DraggableSelectDataContainer = styled(Box)`\n border: 1px solid rgba(0, 0, 0, 0.23) !important;\n border-color: ${({ error }: IInputProps) =>\n error ? `#f44336` : 'rgba(0, 0, 0, 0.23)'} !important;\n display: flex;\n margin: 5px 0;\n border-radius: ${({ opened }: IInputProps) =>\n opened ? `4px 4px 0 0` : '4px'} !important;\n background: #fff;\n padding: 0 6px;\n justify-content: space-between !important;\n min-height: 32px;\n max-height: 32px;\n box-sizing: border-box;\n overflow: ${({ hovered, opened }: IInputProps) =>\n hovered || opened ? `auto` : 'hidden'};\n max-height: ${({ hovered, height }: IInputProps) =>\n hovered ? `${height}px` : '32px'};\n overflow: hidden;\n width: ${({ width }: IInputProps) => (width ? `${width}px` : '100%')};\n transition: ${({ opened }: IInputProps) =>\n opened ? `unset` : 'max-height 0.2s ease'};\n\n &:hover {\n cursor: pointer;\n border-color: ${({ error }: IInputProps) =>\n error ? `#f44336` : '#536171'} !important;\n }\n\n .MuiChip-root {\n margin: 4px 2px !important;\n }\n\n .MuiChip-deleteIconSmall {\n width: 22px;\n height: 22px;\n color: white;\n }\n`;\n\nexport const DraggableSelectSpinnerContainer = styled(Box)`\n align-items: center;\n margin-right: 5px;\n display: ${({ spinner }: IDisabledProps) => (spinner ? `flex` : 'none')};\n`;\n\nexport const DraggableSelectDefaultChip = styled.span`\n color: rgba(0, 0, 0, 0.35);\n padding-left: 5px;\n`;\n\nexport const DraggableSelectActionButton = styled(Link)`\n color: #00a4e4 !important;\n\n &:hover {\n opacity: 0.8;\n cursor: pointer;\n }\n`;\n\nexport const DraggableSelectButtonContainer = styled.div`\n display: flex;\n justify-content: space-between;\n padding: 0 10px;\n`;\n\nexport const DraggableSelectAutocompletePaper = styled(Paper)`\n margin-left: -1px !important;\n margin-top: 0 !important;\n width: ${({ width }: IPaperProps) => (width ? `${width}px` : 'initial')};\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: unset !important;\n box-shadow: unset !important;\n\n .MuiAutocomplete-listbox {\n max-height: 25vh !important;\n }\n`;\n\nexport const DraggableSelectPopper = styled(Popper)`\n width: ${({ width }: IPaperProps) => (width ? `${width}px` : 'initial')};\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-top: 0;\n`;\n\nexport const DraggableSelectSelectClasses = {\n autocomplete: css`\n position: relative;\n background-color: #fff;\n box-sizing: border-box;\n `,\n};\n","/* eslint-disable no-unused-expressions */\n/** @jsx jsx */\nimport { jsx } from '@emotion/core';\nimport { Box, BoxProps, CircularProgress, Typography } from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport CloseIcon from '@material-ui/icons/Close';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { Autocomplete } from '@material-ui/lab';\nimport React, {\n ChangeEvent,\n Component,\n ComponentType,\n createRef,\n Fragment,\n MouseEventHandler,\n} from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n OnDragEndResponder,\n OnDragStartResponder,\n} from 'react-beautiful-dnd';\nimport { FieldRenderProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport { IAutocompleteField } from 'types/shared';\nimport {\n CustomAutocompleteTypography,\n CustomTypography,\n InputDiv,\n} from '../CustomInput.style';\nimport {\n DraggableSelectActionButton,\n DraggableSelectArrowContainer,\n DraggableSelectAutocompletePaper,\n DraggableSelectButtonContainer,\n DraggableSelectChip,\n DraggableSelectChipContainer,\n DraggableSelectDataContainer,\n DraggableSelectDefaultChip,\n DraggableSelectEllipsis,\n DraggableSelectEllipsisContainer,\n DraggableSelectIconButton,\n DraggableSelectInput,\n DraggableSelectInputContainer,\n DraggableSelectOptionCheckbox,\n DraggableSelectPopper,\n DraggableSelectSelectClasses,\n DraggableSelectSpinnerContainer,\n} from './DraggableSelect.styled';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface IProps extends FieldRenderProps {\n options: Array;\n onChange?: (value: Array | null) => void;\n onHandleChange?: (\n selectedCustomers: Array | null,\n value: Array | null,\n ) => void;\n handleChipDelete?: (index: number) => void;\n handleSelectAll?: (\n selectedCustomers: Array,\n options: Array,\n ) => void;\n handleClearAll?: (selectedCustomers: Array) => void;\n handleDragEnd?: (destination: number, source: number) => void;\n column?: boolean;\n label: string;\n noOptionsText?: string;\n error?: string;\n spinner?: boolean;\n disabled?: boolean;\n placeholder?: string;\n allowDragAndDrop?: boolean;\n width?: number;\n handleOnClose?: (\n elements: Array | null | undefined,\n ) => void;\n handleOnChipDelete?: (\n elements: Array | null | undefined,\n ) => void;\n}\n\ninterface IState {\n canOpen: boolean;\n id?: string;\n isDragged: boolean;\n isHovered: boolean;\n isOpened: boolean;\n chipTotalHeight: number;\n anchorEl?: EventTarget & HTMLDivElement;\n elements: Array | null;\n}\n\ntype PropType = IProps & WithTranslation;\n\nexport class DraggableSelect extends Component {\n private inputContainerRef =\n createRef<\n Component, Record>\n >();\n private arrowRef =\n createRef<\n Component, Record>\n >();\n private draggableContextRef =\n createRef<\n Component, Record>\n >();\n\n private chipElements: HTMLElement[] = [];\n private draggableContextWidth = 0;\n\n constructor(props: PropType) {\n super(props);\n this.state = {\n canOpen: true,\n isDragged: false,\n isHovered: false,\n isOpened: false,\n chipTotalHeight: 32,\n elements: null,\n };\n }\n\n componentDidUpdate(): void {\n const draggableElement = this.draggableContextRef\n ?.current as unknown as HTMLElement;\n const arrowElement = this.arrowRef?.current as unknown as HTMLElement;\n // eslint-disable-next-line unicorn/prefer-spread\n const chipElements: HTMLElement[] = Array.from(\n draggableElement?.querySelectorAll('.MuiChip-root') || [],\n );\n const draggableContextWidth =\n draggableElement?.offsetWidth - arrowElement?.offsetWidth;\n\n if (\n this.chipElements?.length !== chipElements.length ||\n draggableContextWidth !== this.draggableContextWidth\n ) {\n this.chipElements = chipElements;\n this.draggableContextWidth = draggableContextWidth;\n }\n\n this.checkChipContainerHeight();\n }\n\n handleChange = (\n event: React.ChangeEvent<{}>,\n value: Array | null,\n ): void => {\n const { onChange, input, onHandleChange, disabled, spinner } = this.props;\n\n if (!disabled && !spinner) {\n onChange?.(value);\n onHandleChange?.(input.value, value);\n\n this.setState({ elements: value });\n input.onChange(value);\n }\n };\n\n handleClick: MouseEventHandler = (event): void => {\n const { disabled } = this.props;\n const { anchorEl, canOpen, isDragged } = this.state;\n\n if (canOpen && !isDragged && !disabled) {\n this.setState({\n anchorEl: anchorEl ? undefined : event.currentTarget,\n canOpen: false,\n });\n }\n };\n\n handleClose = (event?: ChangeEvent<{}>): void => {\n const { handleOnClose } = this.props;\n const { elements } = this.state;\n event?.preventDefault();\n handleOnClose?.(elements);\n if (event?.nativeEvent.type === 'blur') {\n this.setState({ anchorEl: undefined });\n setTimeout(() => {\n this.setState({ canOpen: true });\n }, 100);\n }\n };\n\n onChipDelete = (value: string) => (): void => {\n const { input, onChange, handleChipDelete, handleOnChipDelete } =\n this.props;\n\n const data = (input.value as IAutocompleteField[])?.filter(\n (record, index) => {\n if (record.value !== value) {\n return true;\n }\n handleChipDelete?.(index);\n return false;\n },\n );\n\n this.setState({ elements: data });\n input.onChange(data);\n onChange?.(data);\n handleOnChipDelete?.(data);\n };\n\n onSelectAll = (): void => {\n const {\n input,\n options,\n onChange,\n handleSelectAll,\n disabled,\n spinner,\n handleOnClose,\n } = this.props;\n if (!disabled && !spinner) {\n handleSelectAll?.(input.value, options);\n handleOnClose?.(options);\n input.onChange(options);\n onChange?.(options);\n }\n };\n\n onClearAll = (): void => {\n const {\n input,\n onChange,\n handleClearAll,\n disabled,\n spinner,\n handleOnClose,\n } = this.props;\n\n if (!disabled && !spinner) {\n handleClearAll?.(input.value);\n input.onChange([]);\n onChange?.(null);\n handleOnClose?.([]);\n }\n };\n\n onDragEnd: OnDragEndResponder = ({ destination, source }) => {\n const {\n input: { value, onChange },\n onChange: customOnChange,\n handleDragEnd,\n } = this.props;\n\n if (!destination) {\n return;\n }\n\n const filteredData = value as IAutocompleteField[];\n const [removed] = filteredData.splice(source.index, 1);\n\n handleDragEnd?.(destination.index, source.index);\n\n filteredData.splice(destination.index, 0, removed);\n onChange(filteredData);\n customOnChange?.(filteredData);\n this.setState({ isDragged: false });\n };\n\n onDragStart: OnDragStartResponder = (): void => {\n this.setState({ isDragged: true });\n };\n\n checkIfOverflowed = (): boolean => {\n let width = 0;\n\n return this.chipElements?.some((node) => {\n width += node.offsetWidth;\n return width > this.draggableContextWidth;\n });\n };\n\n handleInputMouseEvent = (value: boolean) => (): void => {\n this.setState({ isHovered: value });\n };\n\n checkChipContainerHeight = (): void => {\n const chipParentHeight = this.chipElements[0]?.parentElement?.offsetHeight;\n let count = 1;\n let width = 0;\n this.chipElements?.forEach((node) => {\n width += node.offsetWidth;\n\n if (width > this.draggableContextWidth) {\n count += 1;\n width = 0;\n }\n });\n const chipTotalHeight = count * (chipParentHeight ?? 0);\n\n if (this.state.chipTotalHeight !== chipTotalHeight) {\n this.setState({ chipTotalHeight });\n }\n };\n\n render(): JSX.Element {\n const {\n options,\n column,\n input,\n label,\n t,\n meta,\n spinner,\n disabled,\n noOptionsText,\n width,\n allowDragAndDrop,\n placeholder,\n error,\n } = this.props;\n const { anchorEl, isHovered, chipTotalHeight } = this.state;\n const inputValue = input.value as IAutocompleteField[];\n const popperElement = this.inputContainerRef\n .current as unknown as HTMLElement;\n const popperWidth = popperElement?.offsetWidth ?? 0;\n return (\n \n \n \n {t(label)}\n \n \n \n \n \n \n \n {inputValue &&\n inputValue?.map(({ label, value }, index) => (\n \n {(provided): JSX.Element => (\n
\n {provided.placeholder}\n\n \n {(provided): JSX.Element => (\n }\n label={\n
\n {label}\n {index === 0 && allowDragAndDrop && (\n {`(${t(\n 'common.default',\n )})`}\n )}\n
\n }\n size=\"small\"\n onDelete={this.onChipDelete(value)}\n />\n )}\n \n
\n )}\n \n ))}\n \n
\n\n \n \n \n\n {this.checkIfOverflowed() && !isHovered && !anchorEl && (\n \n ...\n \n )}\n\n \n \n \n \n \n \n \n (\n \n )}\n onClose={this.handleClose}\n multiple\n options={options}\n disablePortal\n disableCloseOnSelect={true}\n noOptionsText={!options.length ? noOptionsText : undefined}\n getOptionLabel={(option): string =>\n option.label ? option.label : ''\n }\n onChange={this.handleChange}\n getOptionSelected={(option, value): boolean =>\n value.label === option.label\n }\n value={input.value ? input.value : []}\n autoComplete={true}\n open\n renderInput={(parameters): JSX.Element => (\n \n \n }\n placeholder={\n placeholder\n ? placeholder\n : t('common.searchPlaceholder')\n }\n autoFocus\n >\n \n \n \n Select all\n \n \n Clear\n \n \n \n )}\n renderOption={({ label }, { selected }): JSX.Element => (\n \n \n \n {label}\n \n \n )}\n size=\"small\"\n />\n \n
\n\n {(error || (meta.error && meta.touched)) && (\n \n {t(error || meta.error)}\n \n )}\n
\n
\n );\n }\n}\n\nexport default withTranslation()(DraggableSelect) as ComponentType<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n FieldRenderProps\n>;\n","/* eslint-disable id-length */\nimport { FormApi } from 'final-form';\nimport { useDispatch } from 'react-redux';\nimport { updateSettings } from 'store/settings/settings.actions';\nimport { SaveOrganizationSettings } from 'store/settings/settings.interface';\nimport { IAutocompleteField } from 'types/shared';\nimport {\n EntryGroupingType,\n HandleMultipleReferencesType,\n OrganizationSettingsDTO, ReferenceFetchLevel,\n} from 'utils/restApplicationClient';\nimport { SettingsFormFields } from './SettingsFormContainer';\n\nconst useSettingsForm = (\n form: FormApi,\n settings: OrganizationSettingsDTO | undefined,\n clientId?: string,\n): {\n handleAvailableTypesChange: (values?: IAutocompleteField[]) => void;\n handleAllowUserChangeEntryGrouping: (value: boolean) => void;\n handleHandleMultipleReferences: (value: HandleMultipleReferencesType) => void;\n handleEntryLevelChange: (values?: IAutocompleteField[]) => void;\n handleNormallyChange: (values?: IAutocompleteField[]) => void;\n handleRecreatedChange: (values?: IAutocompleteField[]) => void;\n handleDefaultEntryGroupingType: (value: EntryGroupingType) => void;\n handleReferenceFetchLevel: (value: ReferenceFetchLevel) => void;\n} => {\n const dispatch = useDispatch();\n\n const mapAutocomplete = (\n values: IAutocompleteField[] = [],\n key: keyof IAutocompleteField,\n ): string[] => values?.map((value) => value[key]) || [];\n\n const updateOrganizationSettings = (\n field: T,\n value: SettingsFormFields[T],\n ): void => {\n const {\n allowedContentTypesIds,\n entryLevelLocalizationContentTypesIds,\n normalTranslationContentTypesIds,\n recreatedContentTypesIds,\n allowUserChangeEntryGrouping,\n defaultEntryGroupingType,\n handleMultipleReferences,\n referenceFetchLevel,\n }: SettingsFormFields = {\n ...form.getState().values,\n [field]: value,\n };\n\n if (!settings || value == null) {\n return;\n }\n\n const { environmentId, spaceId } = settings;\n\n const valueCanBeDeleted = (field: IAutocompleteField[]): void => {\n field.forEach((data) => {\n const fieldCheck = allowedContentTypesIds.some(\n (element) => element.value === data.value,\n );\n if (!fieldCheck) {\n const unusedIndex = field\n .map((data) => data.value)\n .indexOf(data.value);\n field.splice(unusedIndex, 1);\n }\n });\n };\n\n valueCanBeDeleted(entryLevelLocalizationContentTypesIds);\n valueCanBeDeleted(normalTranslationContentTypesIds);\n valueCanBeDeleted(recreatedContentTypesIds);\n\n const mappedSettings: SaveOrganizationSettings = {\n allowedContentTypesIds: mapAutocomplete(allowedContentTypesIds, 'value'),\n entryLevelLocalizationContentTypesIds: mapAutocomplete(\n entryLevelLocalizationContentTypesIds,\n 'value',\n ),\n normalTranslationContentTypesIds: mapAutocomplete(\n normalTranslationContentTypesIds,\n 'value',\n ),\n recreatedContentTypesIds: mapAutocomplete(\n recreatedContentTypesIds,\n 'value',\n ),\n allowUserChangeEntryGrouping,\n defaultEntryGroupingType,\n handleMultipleReferences,\n environmentId,\n spaceId,\n clientId,\n referenceFetchLevel,\n };\n\n dispatch(updateSettings(mappedSettings));\n };\n\n const handleAvailableTypesChange = (\n values: IAutocompleteField[] = [],\n ): void => {\n updateOrganizationSettings('allowedContentTypesIds', values);\n };\n\n const handleEntryLevelChange = (values: IAutocompleteField[] = []): void => {\n updateOrganizationSettings('entryLevelLocalizationContentTypesIds', values);\n };\n\n const handleNormallyChange = (values: IAutocompleteField[] = []): void => {\n updateOrganizationSettings('normalTranslationContentTypesIds', values);\n };\n\n const handleRecreatedChange = (values: IAutocompleteField[] = []): void => {\n updateOrganizationSettings('recreatedContentTypesIds', values);\n };\n\n const handleDefaultEntryGroupingType = (\n value: EntryGroupingType = 'SEPARATELY',\n ): void => {\n updateOrganizationSettings('defaultEntryGroupingType', value);\n };\n\n const handleAllowUserChangeEntryGrouping = (value = false): void => {\n updateOrganizationSettings('allowUserChangeEntryGrouping', value);\n };\n\n const handleHandleMultipleReferences = (\n value: HandleMultipleReferencesType = 'DO_NOT_REPEAT',\n ): void => {\n updateOrganizationSettings('handleMultipleReferences', value);\n };\n\n const handleReferenceFetchLevel = (\n value: ReferenceFetchLevel = 'LEVEL_10',\n ): void => {\n updateOrganizationSettings('referenceFetchLevel', value);\n };\n\n return {\n handleAvailableTypesChange,\n handleEntryLevelChange,\n handleNormallyChange,\n handleRecreatedChange,\n handleAllowUserChangeEntryGrouping,\n handleDefaultEntryGroupingType,\n handleHandleMultipleReferences,\n handleReferenceFetchLevel,\n };\n};\n\nexport default useSettingsForm;\n","import styled from '@emotion/styled';\nimport { Button } from '@material-ui/core';\n\nexport const SettingsViewContainer = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n`;\nexport const SettingsContainer = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n padding: 24px;\n`;\nexport const CenterDiv = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n`;\n\nexport const CustomMappingFieldContainer = styled.div`\n display: flex;\n justify-content: space-between;\n margin: 12px 12px 8px 0;\n width: 100%;\n`;\n\nexport const CustomMappingContainer = styled.fieldset`\n margin: 20px -16px;\n display: flex;\n flex-direction: column;\n padding: 16px 13px 16px 15px;\n border: 1px solid #6f8294;\n width: 100%;\n`;\n\nexport const CustomMappingLegend = styled.legend`\n text-align: initial;\n font-weight: 700;\n font-size: 14px;\n color: #333;\n padding: 0 4px;\n margin-left: -5px;\n`;\n\nexport const FullWidth = styled.div`\n width: 100%;\n padding-left: 24px;\n`;\n\nexport const ButtonsRight = styled.div`\n display: flex;\n flex-direction: row-reverse;\n justify-content: space-between;\n padding: 0px 20px;\n`;\n\nexport const DangerButton = styled(Button)`\n color: rgb(220, 0, 78) !important;\n border: 1px solid rgba(220, 0, 78, 0.23) !important;\n`;\n\nexport const LeftSide = styled.div`\n width: 100%;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n flex-direction: column;\n`;\n\nexport const ButtonView = styled.div`\n width: 100%;\n display: flex;\n justify-content: flex-start;\n padding: 16px;\n`;\n\nexport const ErrorText = styled.span`\n color: #ff6347;\n`;\n","/* eslint-disable id-length */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport styled from '@emotion/styled';\nimport DraggableSelect from 'components/Form/Input/DraggableSelect/DraggableSelect';\nimport { createForm } from 'final-form';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { useTranslation, withTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { getCurrentOrganizationSettingsSelector } from 'store/settings/settings.selectors';\nimport { getSettingsSpinnerSelector } from 'store/spinner/spinner.selectors';\nimport { IAutocompleteField } from 'types/shared';\nimport { useTypedSelector } from 'utils/hooks/TypedSelector';\nimport {\n EntryGroupingType,\n HandleMultipleReferencesType,\n OrganizationSettingsDTO,\n ReferenceFetchLevel,\n} from 'utils/restApplicationClient';\nimport useSettingsForm from './SettingsFormHook';\nimport {\n CustomMappingContainer,\n CustomMappingLegend,\n} from './SettingsViewContainer.style';\nimport CustomSelect from '../../components/Form/Input/CustomSelect';\nimport CustomCheckbox from '../../components/Form/Input/CustomCheckbox';\n\nexport type SettingsFormFields = {\n allowedContentTypesIds: IAutocompleteField[];\n entryLevelLocalizationContentTypesIds: IAutocompleteField[];\n normalTranslationContentTypesIds: IAutocompleteField[];\n recreatedContentTypesIds: IAutocompleteField[];\n defaultEntryGroupingType: EntryGroupingType;\n allowUserChangeEntryGrouping: boolean;\n handleMultipleReferences: HandleMultipleReferencesType;\n referenceFetchLevel: ReferenceFetchLevel;\n};\n\ninterface IProps {\n organizationSettingsList?: OrganizationSettingsDTO;\n enabledEntryLevelLocalization?: boolean;\n disable?: boolean;\n clientId?: string;\n}\n\nconst defaultEntryGroupingType: Array<{ value: string; name: string }> = [\n { value: 'SEPARATELY', name: 'Do not merge files' },\n { value: 'ENTRY_GROUPING', name: 'Merge files separately by entry' },\n { value: 'ALL_IN_ONE_FILE', name: 'Merge all files in one file' },\n];\n\nconst defaultReferenceFetchLevel: Array<{ value: string; name: string }> = [\n { value: 'LEVEL_0', name: '0' },\n { value: 'LEVEL_1', name: '1' },\n { value: 'LEVEL_2', name: '2' },\n { value: 'LEVEL_3', name: '3' },\n { value: 'LEVEL_4', name: '4' },\n { value: 'LEVEL_5', name: '5' },\n { value: 'LEVEL_6', name: '6' },\n { value: 'LEVEL_7', name: '7' },\n { value: 'LEVEL_8', name: '8' },\n { value: 'LEVEL_9', name: '9' },\n { value: 'LEVEL_10', name: '10' },\n];\n\nconst HandleMultipleReferencesMap: Array<{ value: string; name: string }> = [\n {\n value: 'REPEAT',\n name: 'Insert duplicate each time reference is repeated',\n },\n {\n value: 'DO_NOT_REPEAT',\n name: 'Only insert repeated reference on first occurrence',\n },\n];\n\nconst mapOptions = (\n value: string[],\n settingsMap: IAutocompleteField[],\n filter?: string[],\n aditionalFilter?: string[],\n): IAutocompleteField[] => {\n return (\n value\n .map(\n (data) =>\n settingsMap.find(({ value }) => value === data) || {\n label: '',\n value: '',\n },\n )\n .filter(({ value }) => filter?.includes(value) !== true)\n .filter(({ value }) => aditionalFilter?.includes(value) !== true) || []\n );\n};\n\nconst SettingsFormContainer = ({\n enabledEntryLevelLocalization,\n disable,\n clientId,\n}: IProps): JSX.Element => {\n const { t } = useTranslation();\n const settingsSpinner = useSelector(getSettingsSpinnerSelector);\n const currentOrganizationSettings = useTypedSelector(\n getCurrentOrganizationSettingsSelector,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const onSubmit = (values: SettingsFormFields): void => {};\n\n const form = useMemo(\n () =>\n createForm({\n onSubmit,\n }),\n [],\n );\n\n const {\n handleAvailableTypesChange,\n handleEntryLevelChange,\n handleNormallyChange,\n handleRecreatedChange,\n handleAllowUserChangeEntryGrouping,\n handleDefaultEntryGroupingType,\n handleHandleMultipleReferences,\n handleReferenceFetchLevel,\n } = useSettingsForm(form, currentOrganizationSettings, clientId);\n\n const settingsMap = useCallback(\n () =>\n currentOrganizationSettings?.availableContentTypes.map(\n ({ contentTypeId: value, contentTypeName: label }) => ({\n label,\n value,\n }),\n ) || [],\n [currentOrganizationSettings?.availableContentTypes],\n );\n\n const allowedSettingsMap = useMemo(() => {\n return currentOrganizationSettings\n ? mapOptions(\n currentOrganizationSettings.allowedContentTypesIds,\n settingsMap(),\n )\n : [];\n }, [currentOrganizationSettings]);\n\n const entryLevelContentMap = useMemo(() => {\n return currentOrganizationSettings?.entryLevelLocalizationContentTypesIds\n ? mapOptions(\n currentOrganizationSettings?.allowedContentTypesIds,\n settingsMap(),\n currentOrganizationSettings.normalTranslationContentTypesIds,\n currentOrganizationSettings.recreatedContentTypesIds,\n )\n : [];\n }, [currentOrganizationSettings]);\n\n const recreatedContentMap = useMemo(() => {\n return currentOrganizationSettings?.recreatedContentTypesIds\n ? mapOptions(\n currentOrganizationSettings?.allowedContentTypesIds,\n settingsMap(),\n currentOrganizationSettings.normalTranslationContentTypesIds,\n currentOrganizationSettings.entryLevelLocalizationContentTypesIds,\n )\n : [];\n }, [currentOrganizationSettings]);\n\n const normalContentMap = useMemo(() => {\n return currentOrganizationSettings?.recreatedContentTypesIds\n ? mapOptions(\n currentOrganizationSettings?.allowedContentTypesIds,\n settingsMap(),\n currentOrganizationSettings.recreatedContentTypesIds,\n currentOrganizationSettings.entryLevelLocalizationContentTypesIds,\n )\n : [];\n }, [currentOrganizationSettings]);\n\n const initialValues: SettingsFormFields | undefined = useMemo(() => {\n if (!currentOrganizationSettings) {\n return undefined;\n }\n const {\n allowedContentTypesIds,\n recreatedContentTypesIds,\n entryLevelLocalizationContentTypesIds,\n normalTranslationContentTypesIds,\n defaultEntryGroupingType,\n allowUserChangeEntryGrouping,\n handleMultipleReferences,\n referenceFetchLevel,\n } = currentOrganizationSettings;\n\n return {\n allowedContentTypesIds: mapOptions(allowedContentTypesIds, settingsMap()),\n recreatedContentTypesIds: mapOptions(\n recreatedContentTypesIds,\n settingsMap(),\n ),\n entryLevelLocalizationContentTypesIds: mapOptions(\n entryLevelLocalizationContentTypesIds,\n settingsMap(),\n ),\n normalTranslationContentTypesIds: mapOptions(\n normalTranslationContentTypesIds,\n settingsMap(),\n ),\n defaultEntryGroupingType,\n allowUserChangeEntryGrouping,\n handleMultipleReferences,\n referenceFetchLevel,\n };\n }, [currentOrganizationSettings]);\n\n useEffect(() => {\n if (!initialValues) {\n return;\n }\n form.initialize(initialValues);\n }, [initialValues]);\n\n const DisableCheckWrap = styled.div`\n div > * {\n opacity: ${disable ? `0.5` : `1`};\n }\n `;\n\n return (\n <>\n {!!currentOrganizationSettings ? (\n \n (\n
\n \n \n {t('settings.contentModels')}\n \n \n \n {enabledEntryLevelLocalization ? (\n \n \n {t('settings.entryLevelSettingsTitle')}\n \n \n \n \n \n ) : undefined}\n \n \n {t('settings.fileMerging.tittle')}\n \n \n {({ input }): JSX.Element => (\n \n handleDefaultEntryGroupingType(event.target.value)\n }\n rows={defaultEntryGroupingType}\n />\n )}\n \n\n \n {({ input }): JSX.Element => (\n \n handleAllowUserChangeEntryGrouping(\n event.target.checked,\n ),\n }}\n testId=\"checkboxInput\"\n />\n )}\n \n\n \n {({ input }): JSX.Element => (\n \n handleHandleMultipleReferences(event.target.value)\n }\n error={''}\n rows={HandleMultipleReferencesMap}\n tooltip={true}\n tooltipText={t(\n 'settings.fileMerging.handleMultipleReferencesTooltip',\n )}\n />\n )}\n \n \n \n \n {t('settings.manageReferences.title')}\n \n \n {({ input }): JSX.Element => (\n \n handleReferenceFetchLevel(event.target.value)\n }\n rows={defaultReferenceFetchLevel}\n />\n )}\n \n \n
\n )}\n />\n
\n ) : null}\n \n );\n};\n\nexport default withTranslation()(SettingsFormContainer);\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@material-ui/core';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\nimport CallSplitIcon from '@material-ui/icons/CallSplit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport FolderOpenIcon from '@material-ui/icons/FolderOpen';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport DrawerPanel from 'components/DrawerPanel/DrawerPanel';\nimport { DrawerUpRow } from 'components/DrawerPanel/DrawerPanel.type';\nimport { Roles } from 'enums/roles';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { useHistory, useRouteMatch } from 'react-router';\nimport { Dispatch } from 'redux';\nimport { AppDispatch } from 'store';\nimport {\n addSpace,\n deleteOrganizationSettings,\n fetchSettings,\n getSettings,\n setClientId,\n setCurrentOrganizationSettings,\n} from 'store/settings/settings.actions';\nimport { getSettingsSelector as fetchSettingsSelector } from 'store/settings/settings.selectors';\nimport { getUserDataSelector } from 'store/user/user.selectors';\nimport { checkRoles } from 'utils/checkRoles';\nimport { useTypedSelector } from 'utils/hooks/TypedSelector';\nimport { SettingsDTO } from 'utils/restApplicationClient';\nimport SettingsFormContainer from './SettingsFormContainer';\nimport {\n DangerButton,\n ErrorText,\n FullWidth,\n LeftSide,\n SettingsViewContainer,\n} from './SettingsViewContainer.style';\n\nconst SettingViewContainer = (): JSX.Element => {\n const { t } = useTranslation();\n const settings = useTypedSelector(fetchSettingsSelector);\n const currentUser = useTypedSelector(getUserDataSelector);\n const dispatch = useDispatch>();\n const isAdmin = checkRoles([Roles.ADMIN_XTM], currentUser.roles as Roles[]);\n const navigate = useHistory();\n const [settingsIndex, setSettingsIndex] = useState();\n const [organizationIndex, setOrganizationIndex] = useState<\n number | undefined\n >();\n\n const [displayDialog, setDisplayDialog] = useState(false);\n\n const {\n params: { clientId },\n } = useRouteMatch<{ clientId: string }>();\n\n const bottomButtons = [\n {\n label: t('common.addSpace'),\n icon: ,\n onClick: (): void => {\n dispatch(addSpace(true));\n if (isAdmin) dispatch(setClientId(clientId));\n navigate.push('/settings/connect');\n },\n },\n ];\n\n const options = (): DrawerUpRow[] => {\n if (isAdmin) {\n return [\n {\n label: t('settings.backToSettings'),\n icon: ,\n onClick: (): void => {\n navigate.push('/settings');\n },\n },\n ];\n } else {\n return [\n {\n label: t('common.organizationSettings'),\n icon: ,\n },\n ];\n }\n };\n\n const group = useMemo(() => {\n return settings.map((data: SettingsDTO, index: number) => {\n return {\n elements: [\n {\n label: data.spaceName,\n icon: ,\n onClick: (): void => {\n setSettingsIndex(index);\n },\n error: data.apiKeyError,\n elements: data.organizationSettingsDTOList.map((data, index) => {\n return {\n label: data.environmentId,\n icon: ,\n onClick: (): void => {\n dispatch(setCurrentOrganizationSettings(data));\n setOrganizationIndex(index);\n },\n };\n }),\n },\n ],\n };\n });\n }, [settings]);\n\n const enableEntryLevelLocalization = settings.map(\n (data) => data.enabledEntryLevelLocalization,\n );\n\n useEffect(() => {\n if (isAdmin) {\n dispatch(getSettings(clientId));\n } else {\n dispatch(fetchSettings());\n }\n }, [isAdmin]);\n\n const deleteSpace = (index: number): void => {\n setDisplayDialog(false);\n dispatch(deleteOrganizationSettings(settings[index].settingsId));\n navigate.push('/settings/connect');\n };\n\n const handleDisplay = (): void => {\n setDisplayDialog(true);\n };\n\n const handleClose = (): void => {\n setDisplayDialog(false);\n };\n\n const handleCredentials = (): void => {\n dispatch(addSpace(true));\n navigate.push('/settings/reconnect');\n };\n\n return (\n \n \n\n {settingsIndex !== undefined && organizationIndex !== undefined && (\n \n \n \n {settings[settingsIndex].apiKeyError ? (\n {t(`settings.errors.apiError`)}\n ) : undefined}\n }\n onClick={(): void => handleCredentials()}\n >\n {t('settings.buttons.changeCredentials')}\n \n }\n onClick={(): void => handleDisplay()}\n >\n {t('settings.buttons.deleteSpace')}\n \n \n \n )}\n handleClose()}>\n \n {t('settings.deleteTitle')}\n \n {' '}\n {t('settings.deleteConfirmation')}{' '}\n \n \n \n \n {settingsIndex !== undefined && (\n deleteSpace(settingsIndex)}\n >\n {t('common.delete')}\n \n )}\n \n \n \n );\n};\nexport default SettingViewContainer;\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 SettingsContainer from 'containers/Settings/SettingsContainer';\nimport SettingsClientList from 'containers/SettingsClientList/SettingsClientListContainer';\nimport SettingViewContainer from 'containers/SettingsView/SettingsViewContainer';\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 pathname: '/settings/connect',\n component: SettingsContainer,\n exact: true,\n roles: [Roles.ADMIN_CLIENT, Roles.ADMIN_XTM],\n routeTextKey: 'common.settings',\n },\n {\n pathname: '/settings/reconnect',\n component: SettingsContainer,\n exact: true,\n roles: [Roles.ADMIN_CLIENT, Roles.ADMIN_XTM],\n routeTextKey: 'common.settings',\n },\n {\n pathname: '/settings/connect/:clientId',\n component: SettingViewContainer,\n exact: true,\n roles: [Roles.ADMIN_CLIENT, Roles.ADMIN_XTM],\n routeTextKey: 'common.settings',\n },\n {\n pathname: '/settings',\n component: SettingsClientList,\n exact: true,\n roles: [Roles.ADMIN_XTM, Roles.ADMIN_CLIENT],\n navbar: true,\n routeTextKey: 'common.settings',\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 { Manual } from 'components/LoginHeader/Buttons/Help';\nimport { Logout } from 'components/LoginHeader/Buttons/Logout';\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","// @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\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\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\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 getAllLanguages,\n getAllLanguagesError,\n getAllLanguagesSuccess,\n getClientById,\n getClientByIdError,\n getClientByIdSuccess,\n getClientsPageable,\n getClientsPageableError,\n getClientsPageableSuccess,\n} from './client.actions';\n\nconst getAllClientsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(getAllClients.type),\n switchMap(() =>\n from(api.getAllClients$GET$api_client()).pipe(\n switchMap(({ data }) => of(getAllClientsSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n store.dispatch(showError({ message: 'client.errors.get' }));\n return of(getAllClientsError());\n }),\n ),\n ),\n );\n\nconst createClientEpic: Epic = (action$, _, { browserHistory }) =>\n action$.pipe(\n ofType(createClient.type),\n switchMap(({ payload }) =>\n from(api.createClient(payload)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'client.success.create' }));\n browserHistory.push('/clients');\n return of(createClientSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'client.errors.create' }));\n if (status === 409) {\n return of(createClientError('client.errors.duplicate'));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(createClientError(undefined));\n }),\n ),\n ),\n );\n\nconst getClientsPageableEpic: Epic = (action$) =>\n action$.pipe(\n ofType(getClientsPageable.type),\n switchMap(({ payload }) =>\n from(api.getAllClients$GET$api_client_pageable(payload)).pipe(\n switchMap(({ data }) => {\n store.dispatch(setPaginationSearchSpinner(false));\n return of(getClientsPageableSuccess(data));\n }),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n store.dispatch(setPaginationSearchSpinner(false));\n store.dispatch(showError({ message: 'client.errors.get' }));\n return of(getClientsPageableError());\n }),\n ),\n ),\n );\n\nconst editClientEpic: Epic = (actions$, _, { browserHistory }) =>\n actions$.pipe(\n ofType(editClient.type),\n switchMap(({ payload }) =>\n from(api.editClient(payload.clientId, payload.updateClient)).pipe(\n switchMap(() => {\n store.dispatch(showSuccessful({ message: 'client.success.edit' }));\n browserHistory.push('/clients');\n return of(editClientSuccess());\n }),\n catchError(({ response: { status } }) => {\n store.dispatch(showError({ message: 'client.errors.edit' }));\n if (status === 409) {\n return of(createClientError('client.errors.duplicate'));\n } else if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(createClientError(undefined));\n }),\n ),\n ),\n );\n\nconst getClientByIdEpic: Epic = (actions$, _, { browserHistory }) =>\n actions$.pipe(\n ofType(getClientById.type),\n switchMap(({ payload }) =>\n from(api.getClient(payload)).pipe(\n switchMap(({ data }) => of(getClientByIdSuccess(data))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n browserHistory.push('/clients');\n store.dispatch(showError({ message: 'client.errors.noId' }));\n return of(getClientByIdError());\n }),\n ),\n ),\n );\n\nconst getAllLanguagesEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(getAllLanguages.type),\n switchMap(() =>\n from(api.getAllContentfulAndXtmLanguages()).pipe(\n switchMap(({ data }) => of(getAllLanguagesSuccess(data))),\n catchError(() => {\n return of(\n getAllLanguagesError(),\n showError({ message: 'client.errors.languages.xtm' }),\n );\n }),\n ),\n ),\n );\n\nexport const clientEpics = combineEpics(\n getClientsPageableEpic,\n getAllClientsEpic,\n createClientEpic,\n editClientEpic,\n getClientByIdEpic,\n getAllLanguagesEpic,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n clearClient,\n clearClientErrors,\n createClientError,\n getAllClientsSuccess,\n getAllLanguagesSuccess,\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 contentfulLanguages: [],\n xtmLanguages: [],\n};\n\nexport const clientReducer = createReducer(initState, (builder) =>\n builder\n .addCase(getAllClientsSuccess, (state, action) => {\n state.clients = action.payload;\n })\n .addCase(createClientError, (state, action) => {\n state.errors.clientName = action.payload;\n })\n .addCase(getClientsPageableSuccess, (state, action) => {\n state.clientsPageable = action.payload;\n })\n .addCase(clearClient, (state) => {\n state.client = undefined;\n })\n .addCase(getClientByIdSuccess, (state, action) => {\n state.client = action.payload;\n })\n .addCase(clearClientErrors, (state) => {\n state.errors = {};\n })\n .addCase(\n getAllLanguagesSuccess,\n (state, { payload: { allContentfulLanguages, allXtmLanguages } }) => {\n state.contentfulLanguages = allContentfulLanguages;\n state.xtmLanguages = allXtmLanguages;\n },\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","import { PayloadAction } from '@reduxjs/toolkit';\nimport { combineEpics, Epic, ofType } from 'redux-observable';\nimport { from, of } from 'rxjs';\nimport { catchError, pluck, switchMap } from 'rxjs/operators';\nimport store from 'store';\nimport { showError, showSuccessful } from 'store/notify/notify.actions';\nimport { setPaginationSearchSpinner } from 'store/table/table.actions';\nimport { api } from 'utils/axiosInstance';\nimport browserHistory from 'utils/browserHistory';\nimport { SaveOrganizationSettingsDTO } from 'utils/restApplicationClient';\nimport {\n addSpace,\n changeCredentials,\n changeCredentialsError,\n changeCredentialsSuccess,\n deleteOrganizationSettings,\n deleteOrganizationSettingsError,\n deleteOrganizationSettingsSuccess,\n fetchSettings,\n fetchSettingsError,\n fetchSettingsSuccess,\n getAllSettings,\n getAllSettingsError,\n getAllSettingsSuccess,\n getSettings,\n getSettingsError,\n getSettingsSuccess,\n initializationCheck,\n initializationCheckSuccess,\n initializeContentful,\n initializeContentfulError,\n initializeContentfulSuccess,\n setClientId,\n updateSettings,\n updateSettingsError,\n updateSettingsSuccess,\n} from './settings.actions';\n\nconst initializeContentfulSettingsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(initializeContentful),\n switchMap(({ payload }) =>\n from(api.initializeNewSettings(payload)).pipe(\n switchMap(({ data, data: [{ settingsId }] }) => {\n store.dispatch(\n showSuccessful({ message: 'settings.success.initialize' }),\n );\n browserHistory.push(`/settings/connect/${settingsId}`);\n return of(initializeContentfulSuccess(data));\n }),\n catchError(\n ({\n response: {\n data: { errorCode: message },\n },\n }) => {\n return of(initializeContentfulError(message));\n },\n ),\n ),\n ),\n );\nconst changeCredentialsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(changeCredentials),\n switchMap(({ payload }) =>\n from(api.updateSettingsCredentials(payload)).pipe(\n switchMap(() => {\n store.dispatch(\n showSuccessful({ message: 'settings.success.changeCredentials' }),\n );\n browserHistory.push(`/settings/connect/success`);\n return of(changeCredentialsSuccess());\n }),\n catchError(() => {\n store.dispatch(\n showError({ message: 'settings.errors.changeCredentials' }),\n );\n return of(changeCredentialsError(undefined));\n }),\n ),\n ),\n );\n\nconst initializationCheckEpic: Epic = (action$) =>\n action$.pipe(\n ofType(initializationCheck),\n switchMap(() =>\n from(api.isSettingsInitialized$GET$api_settings_isinitizalized()).pipe(\n switchMap(({ data }) => {\n return of(initializationCheckSuccess(data));\n }),\n catchError(() => {\n store.dispatch(showError({ message: 'settings.errors.initialize' }));\n return of(initializeContentfulError(undefined));\n }),\n ),\n ),\n );\n\nconst deleteOrganizationSettingsEpic: Epic = (action$, _, { browserHistory }) =>\n action$.pipe(\n ofType(deleteOrganizationSettings),\n switchMap(({ payload }) =>\n from(api.deleteOrganizationSettings(payload)).pipe(\n switchMap(() => {\n store.dispatch(\n showSuccessful({ message: 'settings.success.delete' }),\n );\n browserHistory.go(0);\n return of(\n deleteOrganizationSettingsSuccess('settings.successes.deletion'),\n );\n }),\n catchError(() => {\n store.dispatch(showError({ message: 'settings.errors.cantDelete' }));\n return of(deleteOrganizationSettingsError(undefined));\n }),\n ),\n ),\n );\n\nconst fetchSettingsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(fetchSettings),\n switchMap(() =>\n from(api.fetchSettings()).pipe(\n switchMap(({ data }) => of(fetchSettingsSuccess(data))),\n catchError(() => of(fetchSettingsError())),\n ),\n ),\n );\nexport const getAllSettingsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(getAllSettings.type),\n switchMap(({ payload }) =>\n from(api.getAllSettings(payload)).pipe(\n switchMap(({ data }) => {\n store.dispatch(setPaginationSearchSpinner(false));\n return of(getAllSettingsSuccess(data));\n }),\n catchError(() => {\n store.dispatch(setPaginationSearchSpinner(false));\n return of(getAllSettingsError());\n }),\n ),\n ),\n );\n\nconst getSettingsEpic: Epic = (action$, _, { browserHistory }) =>\n action$.pipe(\n ofType(getSettings.type),\n switchMap(({ payload }) =>\n from(api.getSettings(payload)).pipe(\n switchMap(({ data }) => {\n if (data.length === 0) {\n browserHistory.push(`/settings/connect`);\n return of(\n addSpace(true),\n setClientId(payload),\n getSettingsSuccess(data),\n );\n }\n return of(getSettingsSuccess(data));\n }),\n catchError(() => of(getSettingsError())),\n ),\n ),\n );\n\nconst updateSettingsEpic: Epic = (action$) =>\n action$.pipe(\n ofType(updateSettings.type),\n pluck, 'payload'>('payload'),\n switchMap((payload) =>\n from(api.saveSettings(payload)).pipe(\n switchMap(() => {\n return of(\n updateSettingsSuccess(),\n showSuccessful({ message: 'settings.success.updateSettings' }),\n );\n }),\n catchError(() =>\n of(\n updateSettingsError(),\n showError({ message: 'settings.errors.updateSettings' }),\n ),\n ),\n ),\n ),\n );\n\nexport const settingsEpics = combineEpics(\n initializeContentfulSettingsEpic,\n initializationCheckEpic,\n deleteOrganizationSettingsEpic,\n fetchSettingsEpic,\n getAllSettingsEpic,\n getSettingsEpic,\n updateSettingsEpic,\n changeCredentialsEpic,\n);\n","/* eslint-disable id-length */\nimport { createReducer } from '@reduxjs/toolkit';\nimport {\n addSpace,\n deleteOrganizationSettings,\n deleteOrganizationSettingsError,\n deleteOrganizationSettingsSuccess,\n fetchSettings,\n fetchSettingsSuccess,\n getAllSettingsSuccess,\n getSettings,\n getSettingsSuccess,\n initializationCheck,\n initializationCheckSuccess,\n initializeContentfulError,\n initializeContentfulSuccess,\n setClientId,\n setCurrentOrganizationSettings,\n updateSettings,\n} from './settings.actions';\nimport { IConfigState } from './settings.interface';\n\nconst initState: IConfigState = {\n successes: {},\n errors: {},\n initializationCheck: false,\n SettingsDTO: [],\n allSettings: undefined,\n addSpace: false,\n clientId: undefined,\n};\n\nexport const configReducer = createReducer(initState, (builder) =>\n builder\n .addCase(initializeContentfulSuccess, (state, action) => {\n state.SettingsDTO = action.payload;\n })\n .addCase(initializeContentfulError, (state, action) => {\n if (action.payload) {\n state.errors.initialization = action.payload;\n }\n })\n .addCase(initializationCheck, (state) => {\n state.initializationCheck = false;\n })\n .addCase(initializationCheckSuccess, (state, action) => {\n state.initializationCheck = action.payload;\n })\n .addCase(deleteOrganizationSettings, (state) => {\n state.successes = {};\n })\n .addCase(deleteOrganizationSettingsSuccess, (state, action) => {\n if (action.payload) {\n state.successes.deletion = action.payload;\n }\n })\n .addCase(deleteOrganizationSettingsError, (state, action) => {\n if (action.payload) {\n state.errors.deletion = action.payload;\n }\n })\n .addCase(fetchSettingsSuccess, (state, action) => {\n state.SettingsDTO = action.payload;\n })\n .addCase(fetchSettings, (state) => {\n state.SettingsDTO = [];\n })\n .addCase(getAllSettingsSuccess, (state, action) => {\n state.allSettings = action.payload;\n })\n .addCase(getSettings, (state) => {\n state.SettingsDTO = [];\n })\n .addCase(getSettingsSuccess, (state, action) => {\n state.SettingsDTO = action.payload;\n })\n .addCase(addSpace, (state, action) => {\n state.addSpace = action.payload;\n })\n .addCase(setClientId, (state, action) => {\n state.clientId = action.payload;\n })\n .addCase(setCurrentOrganizationSettings, (state, action) => {\n state.selectedOrganizationSettings = action.payload;\n })\n .addCase(updateSettings, (state, action) => {\n if (state.selectedOrganizationSettings) {\n state.selectedOrganizationSettings.allowedContentTypesIds =\n action.payload.allowedContentTypesIds;\n state.selectedOrganizationSettings.entryLevelLocalizationContentTypesIds =\n action.payload.entryLevelLocalizationContentTypesIds;\n state.selectedOrganizationSettings.normalTranslationContentTypesIds =\n action.payload.normalTranslationContentTypesIds;\n state.selectedOrganizationSettings.recreatedContentTypesIds =\n action.payload.recreatedContentTypesIds;\n state.selectedOrganizationSettings.defaultEntryGroupingType =\n action.payload.defaultEntryGroupingType;\n state.selectedOrganizationSettings.allowUserChangeEntryGrouping =\n action.payload.allowUserChangeEntryGrouping;\n state.selectedOrganizationSettings.handleMultipleReferences =\n action.payload.handleMultipleReferences;\n state.selectedOrganizationSettings.referenceFetchLevel =\n action.payload.referenceFetchLevel;\n }\n const spaceIndex = state.SettingsDTO.findIndex(\n (settings) => settings.spaceId == action.payload.spaceId,\n );\n const updatedSettings = [...state.SettingsDTO];\n const environmentIndex = updatedSettings[\n spaceIndex\n ].organizationSettingsDTOList.findIndex(\n (organizationSettings) =>\n organizationSettings.environmentId == action.payload.environmentId,\n );\n state.SettingsDTO[spaceIndex].organizationSettingsDTOList[\n environmentIndex\n ].allowedContentTypesIds = action.payload.allowedContentTypesIds;\n state.SettingsDTO[spaceIndex].organizationSettingsDTOList[\n environmentIndex\n ].entryLevelLocalizationContentTypesIds =\n action.payload.entryLevelLocalizationContentTypesIds;\n state.SettingsDTO[spaceIndex].organizationSettingsDTOList[\n environmentIndex\n ].normalTranslationContentTypesIds =\n action.payload.normalTranslationContentTypesIds;\n state.SettingsDTO[spaceIndex].organizationSettingsDTOList[\n environmentIndex\n ].recreatedContentTypesIds = action.payload.recreatedContentTypesIds;\n }),\n);\n","export const SpinnerActionTypes = {\n setFetchSpinner: 'SPINNER_SET_LOADER',\n setSettingsSpinner: 'SPINNER_SET_SETTINGS_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};\n","import { createAction } from '@reduxjs/toolkit';\nimport { SpinnerActionTypes } from './spinner.actions.types';\n\nexport const setFetchSpinner = createAction(\n SpinnerActionTypes.setFetchSpinner,\n);\n\nexport const setSettingsSpinner = createAction(\n SpinnerActionTypes.setSettingsSpinner,\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","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 deleteOrganizationSettings,\n deleteOrganizationSettingsError,\n deleteOrganizationSettingsSuccess,\n fetchSettings,\n fetchSettingsError,\n fetchSettingsSuccess,\n getSettings,\n getSettingsError,\n getSettingsSuccess,\n initializeContentful,\n initializeContentfulError,\n initializeContentfulSuccess,\n updateSettings,\n updateSettingsError,\n updateSettingsSuccess,\n} from 'store/settings/settings.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 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 setFetchSpinner,\n setSettingsSpinner,\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 fetchSettings.type,\n fetchSettingsSuccess.type,\n fetchSettingsError.type,\n deleteOrganizationSettings.type,\n deleteOrganizationSettingsSuccess.type,\n deleteOrganizationSettingsError.type,\n initializeContentful.type,\n initializeContentfulSuccess.type,\n initializeContentfulError.type,\n fetchSettings.type,\n fetchSettingsSuccess.type,\n fetchSettingsError.type,\n getSettings.type,\n getSettingsSuccess.type,\n getSettingsError.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 setSettingsSpinnerEpic: Epic = (action$) =>\n action$.pipe(\n ofType(\n updateSettings.type,\n updateSettingsError.type,\n updateSettingsSuccess.type,\n ),\n debounceTime(200),\n switchMap(({ type }) => {\n if (\n (type as string).endsWith('SUCCESS') ||\n (type as string).endsWith('ERROR')\n ) {\n return of(setSettingsSpinner(false));\n }\n return of(setSettingsSpinner(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\nexport const spinnerEpics = combineEpics(\n fetchSpinnerEpic,\n templateSpinnerEpic,\n connectDataSpinnerEpic,\n connectToXtmSpinnerEpic,\n customerSpinnerEpic,\n connectToCMSSpinnerEpic,\n setSettingsSpinnerEpic,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n setConnectDataSpinner,\n setConnectToCMSSpinner,\n setConnectToXtmSpinner,\n setCustomerSpinner,\n setFetchSpinner,\n setSettingsSpinner,\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 settingsSpinner: 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(setSettingsSpinner, (state, action) => {\n state.settingsSpinner = 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 getUserById,\n getUserByIdError,\n getUserByIdSuccess,\n hideSessionExpired,\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: { apiUrl, email } }) =>\n from(\n api.sendResetPasswordEmail(\n { email, language: i18n.language },\n { baseURL: apiUrl },\n ),\n ).pipe(\n switchMap(() => {\n store.dispatch(\n showSuccessful({ message: 'auth.success.resetPasswordSent' }),\n );\n return of(resetUserPasswordSuccess());\n }),\n catchError(() => {\n store.dispatch(showError({ message: 'users.errors.resetPassword' }));\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\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\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\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\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\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\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 connectToCMSEpic: Epic = (actions$) =>\n actions$.pipe(\n ofType(xtmConnectToCMS.type),\n switchMap(({ payload }) =>\n from(api.verifyConnection({ accessToken: payload })).pipe(\n switchMap(() => of(xtmConnectToCMSSuccess(payload))),\n catchError(({ response: { status } }) => {\n if (status === 403) {\n return of(sessionExpired(true));\n }\n\n return of(xtmConnectToCMSError());\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(hideSessionExpired());\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 connectToCMSEpic,\n connectXtmUserEpic,\n resetUserPasswordEpic,\n changeUserPassEpic,\n showSessionExpiredEpic,\n);\n","import { createReducer } from '@reduxjs/toolkit';\nimport {\n clearUser,\n clearUserErrors,\n clearXtmTemplates,\n createUserError,\n getAllUsersSuccess,\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 sessionExpired: false,\n};\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(showSessionExpired, (state) => {\n state.sessionExpired = true;\n })\n .addCase(hideSessionExpired, (state) => {\n state.sessionExpired = false;\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 { settingsEpics } from './settings/settings.epics';\nimport { configReducer } from './settings/settings.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 settings: configReducer,\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 settingsEpics,\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 { initializeApi } from 'utils/axiosInstance';\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dsn: (window as any)._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 initializeApi();\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":""}