{"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","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","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","selectStyle","FormControl","selectProps","native","placeholder","row","index","AdministratorActionTypes","createAdministratorError","createAdministratorSuccess","clearAdministratorErrors","getAdministratorsPageable","getAdministratorsPageableSuccess","getAdministratorsPageableError","getAdministratorById","getAdministratorByIdSuccess","getAdministratorByIdError","clearAdministrator","editAdministrator","editAdministratorSuccess","getAdministratorErrorsSelector","getAdministratorsPageableSelector","administratorsPageable","administrators","getAdministratorSelector","ClientActionTypes","getAllClients","getAllClientsError","getAllClientsSuccess","createClientSuccess","createClientError","getClientsPageable","getClientsPageableSuccess","getClientsPageableError","editClient","editClientSuccess","getClientById","getClientByIdSuccess","getClientByIdError","clearClient","clearClientErrors","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","Tooltip","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","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","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","valueCanBeDeleted","unusedIndex","indexOf","mappedSettings","handleAvailableTypesChange","handleEntryLevelChange","handleNormallyChange","handleRecreatedChange","SettingsViewContainer","CustomMappingContainer","CustomMappingLegend","FullWidth","DangerButton","LeftSide","ErrorText","mapOptions","settingsMap","aditionalFilter","find","SettingsFormContainer","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.cc1456c9.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 2023-02-23 15:58:49.\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 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 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 nonHumanTranslationCustomFieldName: string;\n contentfulXtmLanguagesMap: { [index: string]: string };\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 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}\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 totalPages: number;\n totalElements: 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 TagDTO extends Serializable {\n id: string;\n name: string;\n}\n\nexport interface XTMProjectDTO extends Serializable {\n id: number;\n name: string;\n status: string;\n activityEnum: ActivityEnum;\n}\n\nexport interface XTMProjectEntriesVerifyDTO extends Serializable {\n entryId: string;\n entryName: string;\n projectId: number;\n}\n\nexport interface XTMCustomerDTO extends Serializable {\n xtmCustomerId: number;\n name: string;\n}\n\nexport interface 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 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 offset: number;\n sort: Sort;\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}\n\nexport interface Slice extends Streamable {\n size: number;\n content: T[];\n number: number;\n sort: Sort;\n numberOfElements: number;\n pageable: Pageable;\n first: boolean;\n last: boolean;\n}\n\nexport interface 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 ascending: boolean;\n descending: boolean;\n}\n\nexport interface Iterable {\n}\n\nexport interface Supplier {\n}\n\nexport interface Stream extends BaseStream> {\n}\n\nexport interface BaseStream extends AutoCloseable {\n parallel: boolean;\n}\n\nexport interface AutoCloseable {\n}\n\nexport interface RestApplication {\n\n /**\n * HTTP GET /\n * Java method: cloud.xtm.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 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 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 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 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 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 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 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 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 RequestType = \"CHANGED\" | \"PUBLISHED\" | \"DRAFT\" | \"ARCHIVED\";\n\nexport type JobOperation = \"SEND\" | \"CANCEL\" | \"DELETE\" | \"IMPORT\";\n\nexport type ActivityEnum = \"ACTIVE\" | \"ARCHIVED\" | \"AUTO_ARCHIVED\" | \"DELETED\" | \"INACTIVE\";\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: 300px;\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\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 */\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 */\nimport { css, jsx } from '@emotion/core';\nimport { FormControl, SelectProps } from '@material-ui/core';\nimport { ChangeEvent, Component } from 'react';\nimport { FieldInputProps } from 'react-final-form';\nimport { withTranslation, WithTranslation } from 'react-i18next';\nimport {\n customInputStyles,\n SelectDiv,\n StyledSelect,\n} from './CustomInput.style';\n\ninterface IProps {\n label: string;\n error: string;\n touched?: boolean;\n inputProps: FieldInputProps;\n testId?: string;\n rows: Array<{ value: string; name: string }>;\n width?: string;\n selectProps?: SelectProps;\n onChange?: (\n event: ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>,\n ) => void;\n}\n\nexport class CustomSelect extends Component {\n render(): JSX.Element {\n const { t, error, touched, testId, inputProps, rows, width, onChange } =\n this.props;\n\n const selectStyle = css`\n width: ${width ? width : 'auto'};\n margin-top: 8px;\n margin-bottom: 4px;\n background-color: white;\n `;\n\n return (\n
\n \n {t(this.props.label)}\n \n \n {!this.props.inputProps.value && (\n \n )}\n {rows.map((row, index) => {\n return (\n \n );\n })}\n \n \n \n\n {error && touched && (\n \n {t(error)}\n \n )}\n
\n );\n }\n}\n\nexport default withTranslation()(CustomSelect);\n","export const AdministratorActionTypes = {\n CreateAdministrator: 'ADMINISTRATOR_CREATE_ADMINISTRATOR',\n CreateAdministratorError: 'ADMINISTRATOR_CREATE_ADMINISTRATOR_ERROR',\n CreateAdministratorSuccess: 'ADMINISTRATOR_CREATE_ADMINISTRATOR_SUCCESS',\n ClearAdministratorErrors: 'ADMINISTRATOR_CLEAR_ERRORS',\n GetAdministatorsPageable: 'ADMINISTRATOR_GET_ADMINISTRATORS_PAGEABLE',\n GetAdministratorsPageableSuccess:\n 'ADMINISTRATOR_GET_ADMINISTRATORS_PAGEABLE_SUCCESS',\n GetAdministratorsPageableError:\n 'ADMINISTRATOR_GET_ADMINISTRATORS_PAGEABLE_ERROR',\n GetAdministratorById: 'ADMINISTRATOR_GET_ADMINISTRATOR_BY_ID',\n GetAdministratorByIdSuccess: 'ADMINISTRATOR_GET_ADMINISTRATOR_BY_ID_SUCCESS',\n GetAdministratorByIdError: 'ADMINISTRATOR_GET_ADMINISTRATOR_BY_ID_ERROR',\n ClearAdministrator: 'ADMINISTRATOR_CLEAR_ADMINISTRATOR',\n EditAdministrator: 'ADMINISTRATOR_EDIT_ADMINISTRATOR',\n EditAdministratorSuccess: 'ADMINISTRATOR_EDIT_ADMINISTRATOR_SUCCESS',\n EditAdministratorError: 'ADMINISTRATOR_EDIT_ADMINISTRATOR_ERROR',\n};\n","import { createAction } from '@reduxjs/toolkit';\nimport { IEditAdministrator, IPaginationOptions } from 'types/api';\nimport { AdministratorDTO, Page } from 'utils/restApplicationClient';\nimport { CreateAdministratorDTO } from 'utils/restApplicationClientTypeOverrides';\nimport { AdministratorActionTypes } from './administrator.actions.types';\n\nexport const createAdministrator = createAction(\n AdministratorActionTypes.CreateAdministrator,\n);\nexport const createAdministratorError = createAction(\n AdministratorActionTypes.CreateAdministratorError,\n);\nexport const createAdministratorSuccess = createAction(\n AdministratorActionTypes.CreateAdministratorSuccess,\n);\n\nexport const clearAdministratorErrors = createAction(\n AdministratorActionTypes.ClearAdministratorErrors,\n);\n\nexport const getAdministratorsPageable = createAction(\n AdministratorActionTypes.GetAdministatorsPageable,\n);\nexport const getAdministratorsPageableSuccess = createAction<\n Page\n>(AdministratorActionTypes.GetAdministratorsPageableSuccess);\nexport const getAdministratorsPageableError = createAction(\n AdministratorActionTypes.GetAdministratorsPageableError,\n);\n\nexport const getAdministratorById = createAction(\n AdministratorActionTypes.GetAdministratorById,\n);\nexport const getAdministratorByIdSuccess = createAction(\n AdministratorActionTypes.GetAdministratorByIdSuccess,\n);\nexport const getAdministratorByIdError = createAction(\n AdministratorActionTypes.GetAdministratorByIdError,\n);\n\nexport const clearAdministrator = createAction(\n AdministratorActionTypes.ClearAdministrator,\n);\n\nexport const editAdministrator = createAction(\n AdministratorActionTypes.EditAdministrator,\n);\n\nexport const editAdministratorSuccess = createAction(\n AdministratorActionTypes.EditAdministratorSuccess,\n);\n\nexport const editAdministratorError = createAction(\n AdministratorActionTypes.EditAdministratorError,\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { AdministratorDTO, Page } from 'utils/restApplicationClient';\n\nexport const administratorErrorsSelector = (\n state: AppState,\n): { [key: string]: string | undefined } => state.administrator.errors;\n\nexport const administratorsPageableSelector = (\n state: AppState,\n): Page | undefined =>\n state.administrator.administratorsPageable;\n\nexport const administratorSelector = (\n state: AppState,\n): AdministratorDTO | undefined => state.administrator.administrator;\n\nexport const getAdministratorErrorsSelector = createSelector(\n administratorErrorsSelector,\n (errors) => errors,\n);\n\nexport const getAdministratorsPageableSelector = createSelector(\n administratorsPageableSelector,\n (administrators) => administrators,\n);\n\nexport const getAdministratorSelector = createSelector(\n administratorSelector,\n (administrator) => administrator,\n);\n","export const ClientActionTypes = {\n GetClientsPageable: 'CLIENT_GET_CLIENTS_PAGEABLE',\n GetClientsPageableSuccess: 'CLIENT_GET_CLIENTS_PAGEABLE_SUCCESS',\n GetClientsPageableError: 'CLIENT_GET_CLIENTS_PAGEABLE_ERROR',\n GetAllClients: 'CLIENT_GET_ALL_CLIENTS',\n GetAllClientsSuccess: 'CLIENT_GET_ALL_CLIENTS_SUCCESS',\n GetAllClientsError: 'CLIENT_GET_ALL_CLIENTS_ERROR',\n CreateClient: 'CLIENT_CREATE_CLIENT',\n CreateClientSuccess: 'CLIENT_CREATE_CLIENT_SUCCESS',\n CreateClientError: 'CLIENT_CREATE_CLIENT_ERROR',\n EditClient: 'CLIENT_EDIT_CLIENT',\n EditClientSuccess: 'CLIENT_EDIT_CLIENT_SUCCESS',\n EditClientError: 'CLIENT_EDIT_CLIENT_ERROR',\n GetClientById: 'CLIENT_GET_CLIENT_BY_ID',\n GetClientByIdSuccess: 'CLIENT_GET_CLIENT_BY_ID_SUCCESS',\n GetClientByIdError: 'CLIENT_GET_CLIENT_BY_ID_ERROR',\n ClearClient: 'CLIENT_CLEAR_CLIENT',\n ClearClientErrors: 'CLIENT_CLEAR_ERRORS',\n 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 // 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 \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// 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 { OrganizationSettingsDTO } from 'utils/restApplicationClient';\nimport { SettingsFormFields } from './SettingsFormContainer';\n\nconst useSettingsForm = (\n form: FormApi,\n settings: OrganizationSettingsDTO | undefined,\n clientId?: string,\n): {\n handleAvailableTypesChange: () => void;\n handleEntryLevelChange: () => void;\n handleNormallyChange: () => void;\n handleRecreatedChange: () => 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 }: 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 environmentId,\n spaceId,\n clientId,\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 return {\n handleAvailableTypesChange,\n handleEntryLevelChange,\n handleNormallyChange,\n handleRecreatedChange,\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 } 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 { OrganizationSettingsDTO } from 'utils/restApplicationClient';\nimport useSettingsForm from './SettingsFormHook';\nimport {\n CustomMappingContainer,\n CustomMappingLegend,\n} from './SettingsViewContainer.style';\n\nexport type SettingsFormFields = {\n allowedContentTypesIds: IAutocompleteField[];\n entryLevelLocalizationContentTypesIds: IAutocompleteField[];\n normalTranslationContentTypesIds: IAutocompleteField[];\n recreatedContentTypesIds: IAutocompleteField[];\n};\n\ninterface IProps {\n organizationSettingsList?: OrganizationSettingsDTO;\n enabledEntryLevelLocalization?: boolean;\n disable?: boolean;\n clientId?: string;\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 } = 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 } = 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 };\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 />\n
\n ) : null}\n \n );\n};\n\nexport default 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 }\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":""}