@eui/core 21.0.0-next.5 → 21.0.0-next.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +703 -0
  2. package/docs/changelog.html +978 -0
  3. package/docs/classes/ActivatedRouteAction.html +6 -0
  4. package/docs/classes/AddApiQueueItemAction.html +6 -0
  5. package/docs/classes/AddAppLoadedConfigModulesAction.html +6 -0
  6. package/docs/classes/ApiQueueServiceMock.html +5 -1
  7. package/docs/classes/CssUtils.html +113 -1
  8. package/docs/classes/EmptyApiQueueAction.html +6 -0
  9. package/docs/classes/I18nResourceImpl.html +11 -2
  10. package/docs/classes/InitStoreAction.html +6 -0
  11. package/docs/classes/RemoveApiQueueItemAction.html +6 -0
  12. package/docs/classes/UpdateAppConnectionAction.html +6 -0
  13. package/docs/classes/UpdateAppStatusAction.html +6 -0
  14. package/docs/classes/UpdateAppVersionAction.html +6 -0
  15. package/docs/classes/UpdateCurrentModuleAction.html +6 -0
  16. package/docs/classes/UpdateI18nStateAction.html +6 -0
  17. package/docs/classes/UpdateLocaleStateAction.html +6 -0
  18. package/docs/classes/UpdateNotificationsListAction.html +6 -0
  19. package/docs/classes/UpdateUserDashboardAction.html +17 -1
  20. package/docs/classes/UpdateUserDetailsAction.html +6 -0
  21. package/docs/classes/UpdateUserPreferencesAction.html +6 -0
  22. package/docs/classes/UpdateUserRightsAction.html +6 -0
  23. package/docs/classes/UpdateUserStateAction.html +6 -0
  24. package/docs/injectables/ApiQueueService.html +10 -2
  25. package/docs/injectables/EuiAppShellService.html +2 -15
  26. package/docs/injectables/EuiGrowlService.html +38 -12
  27. package/docs/injectables/I18nLoader.html +1 -1
  28. package/docs/injectables/I18nService.html +2 -2
  29. package/docs/injectables/LocaleService.html +2 -2
  30. package/docs/injectables/LogService.html +2 -1
  31. package/docs/injectables/StoreService.html +3 -71
  32. package/docs/injectables/StoreServiceMock.html +0 -37
  33. package/docs/injectables/UserService.html +2 -2
  34. package/docs/injectables/UserServiceMock.html +5 -4
  35. package/docs/interfaces/LoadedResources.html +2 -2
  36. package/docs/js/libs/bootstrap-native.js +1 -1
  37. package/docs/js/libs/vis-network.min.js +78 -0
  38. package/docs/js/menu-wc.js +10 -0
  39. package/docs/js/menu-wc_es5.js +1 -1
  40. package/docs/js/search/search_index.js +2 -2
  41. package/docs/miscellaneous/functions.html +19 -4
  42. package/docs/miscellaneous/typealiases.html +1 -1
  43. package/docs/miscellaneous/variables.html +405 -110
  44. package/docs/properties.html +1 -1
  45. package/fesm2022/eui-core.mjs +116 -156
  46. package/fesm2022/eui-core.mjs.map +1 -1
  47. package/package.json +2 -2
  48. package/types/eui-core.d.ts +17 -27
  49. package/types/eui-core.d.ts.map +1 -1
  50. package/docs/js/libs/vis.min.js +0 -47
@@ -1 +1 @@
1
- {"version":3,"file":"eui-core.mjs","sources":["../../src/lib/services/config/defaults.ts","../../src/lib/services/config/tokens.ts","../../src/lib/services/store/actions/app.actions.ts","../../src/lib/services/store/actions/i18n.actions.ts","../../src/lib/services/store/actions/user.actions.ts","../../src/lib/services/store/actions/notifications.actions.ts","../../src/lib/services/store/actions/locale.actions.ts","../../src/lib/services/store/reducers/app.reducers.ts","../../src/lib/services/store/reducers/user.reducers.ts","../../src/lib/services/store/reducers/notifications.reducers.ts","../../src/lib/services/store/reducers/i18n.reducers.ts","../../src/lib/services/store/reducers/locale.reducers.ts","../../src/lib/services/store/reducers/core.reducers.ts","../../src/lib/services/store/reducers/meta.reducers.ts","../../src/lib/services/log/log.service.ts","../../src/lib/services/log/log.service.mock.ts","../../src/lib/services/app/factories/log.ts","../../src/lib/services/log/log.module.ts","../../src/lib/services/store/store.service.ts","../../src/lib/services/store/store.service.mock.ts","../../src/lib/services/app/eui-startup.ts","../../src/lib/eui-core.module.ts","../../src/lib/services/app/eui-pre-init-app.ts","../../src/lib/services/app/eui-init-app.ts","../../src/lib/services/errors/eui.error.ts","../../src/lib/services/errors/global-error-handler.ts","../../src/lib/services/errors/http-error-handler.interceptor.ts","../../src/lib/services/growl/eui-growl.service.ts","../../src/lib/services/errors/http-error-handler-callback-functions.ts","../../src/lib/services/queue/api-queue.service.ts","../../src/lib/services/queue/api-queue.service.mock.ts","../../src/lib/services/i18n/i18n.resource.ts","../../src/lib/services/i18n/i18n.loader.ts","../../src/lib/services/i18n/i18n.service.ts","../../src/lib/services/i18n/index.ts","../../src/lib/helpers/date-helpers.ts","../../src/lib/helpers/dom-helpers.ts","../../src/lib/helpers/event-helpers.ts","../../src/lib/helpers/form-helpers.ts","../../src/lib/helpers/format-helpers.ts","../../src/lib/helpers/http-helpers.ts","../../src/lib/helpers/utils.ts","../../src/lib/helpers/css-utils.ts","../../src/lib/helpers/injector.ts","../../src/lib/services/permission/permission.service.ts","../../src/lib/services/dynamic-menu/dynamic-menu.service.ts","../../src/lib/services/dynamic-component/dynamic-component.service.ts","../../src/lib/services/eui-app-shell.service.ts","../../src/lib/services/eui-timezone.service.ts","../../src/lib/services/eui-theme.service.ts","../../src/lib/services/storage/storage.service.ts","../../src/lib/services/storage/storage.service.mock.ts","../../src/lib/services/storage/async-storage.service.ts","../../src/lib/services/storage/async-storage.service.mock.ts","../../src/lib/services/storage/local-storage.service.ts","../../src/lib/services/storage/session-storage.service.ts","../../src/lib/services/storage/local-forage.service.ts","../../src/lib/services/locale/locale.service.ts","../../src/lib/services/locale/locale.service.mock.ts","../../src/lib/services/loader/eui-loader.model.ts","../../src/lib/services/loader/eui-loader.service.ts","../../src/lib/services/user/user.service.ts","../../src/lib/services/user/user.service.mock.ts","../../src/lib/interceptors/add-lang-param.interceptor.ts","../../src/lib/interceptors/cache-prevention.interceptor.ts","../../src/lib/interceptors/cors-security.interceptor.ts","../../src/lib/interceptors/csrf-prevention.interceptor.ts","../../src/lib/interceptors/eu-login-session-timeout-handling.interceptor.ts","../../src/lib/interceptors/ux-request-error-model.interceptor.ts","../../src/index.ts","../../src/eui-core.ts"],"sourcesContent":["import {\n EuiConfig,\n EuiAppConfig,\n EuiEnvConfig,\n GlobalConfig,\n LogLevel,\n LogConfig,\n ConsoleAppender,\n HttpErrorHandlerConfig,\n I18nLoaderConfig,\n I18nServiceConfig,\n LocaleServiceConfig,\n} from '@eui/base';\n\n/** default log configuration */\nexport const DEFAULT_LOG_CONFIG: LogConfig = {\n baseLoggerName: 'root',\n logLevel: LogLevel.ERROR,\n logAppenders: {\n type: ConsoleAppender,\n prefixFormat: '[{level}]',\n },\n};\n\nexport const DEFAULT_I18N_SERVICE_CONFIG: I18nServiceConfig = {\n languages: ['en'],\n defaultLanguage: 'en',\n};\n\nexport const DEFAULT_I18N_LOADER_CONFIG: I18nLoaderConfig = {};\n\nexport const DEFAULT_LOCALE_SERVICE_CONFIG: LocaleServiceConfig = {\n bindWithTranslate: false,\n};\n\nexport const DEFAULT_HTTP_ERROR_HANDLER_CONFIG: HttpErrorHandlerConfig = {\n routes: [],\n};\n\nexport const DEFAULT_GLOBAL_CONFIG: GlobalConfig = {\n showConnectionStatus: {\n messageBox: {\n lifespan: 0,\n },\n enabled: true,\n },\n i18n: {\n i18nService: {\n ...DEFAULT_I18N_SERVICE_CONFIG,\n },\n i18nLoader: {\n ...DEFAULT_I18N_LOADER_CONFIG,\n },\n },\n locale: {\n ...DEFAULT_LOCALE_SERVICE_CONFIG,\n },\n user: {\n defaultUserPreferences: {\n locale: {\n ...DEFAULT_LOCALE_SERVICE_CONFIG,\n },\n },\n },\n};\nexport const DEFAULT_EUI_APP_CONFIG: EuiAppConfig = {\n global: {\n ...DEFAULT_GLOBAL_CONFIG,\n },\n};\n\nexport const DEFAULT_EUI_ENV_CONFIG: EuiEnvConfig = {\n envAppHandlersConfig: {},\n};\n\nexport const DEFAULT_EUI_CONFIG: EuiConfig = {\n appConfig: {\n ...DEFAULT_EUI_APP_CONFIG,\n },\n environment: {\n ...DEFAULT_EUI_ENV_CONFIG,\n },\n};\n","import {\n EuiAppConfig,\n EuiAppHandlersConfig,\n EuiAppJsonConfig,\n EuiConfig,\n LogConfig,\n ModuleConfig,\n GlobalConfig,\n HttpErrorHandlerConfig,\n ConnectionStatus,\n} from '@eui/base';\nimport { deepmerge } from 'deepmerge-ts';\n// import * as extendProxy from 'extend';\n\n// const extend = (<{default: unknown}>extendProxy).default || extendProxy;\n\nimport { InjectionToken } from '@angular/core';\nimport { DEFAULT_EUI_CONFIG } from './defaults';\n\nexport const EUI_CONFIG_TOKEN = new InjectionToken<EuiConfig>('EuiConfig');\nexport const MODULE_NAME_TOKEN = new InjectionToken<string>('moduleName');\nexport const MODULE_CONFIG_TOKEN = new InjectionToken<ModuleConfig>('moduleConfig');\nexport const CONFIG_TOKEN = new InjectionToken<EuiAppConfig>('finalConfigToken');\nexport const GLOBAL_CONFIG_TOKEN = new InjectionToken<GlobalConfig>('globalConfig');\nexport const BASE_NAME_TOKEN = new InjectionToken<string>('baseName');\nexport const ROOT_LOG_CONFIG_TOKEN = new InjectionToken<LogConfig>('logConfig');\nexport const SHOW_CONNECTION_STATUS_TOKEN = new InjectionToken<boolean>('SHOW_CONNECTION_STATUS');\n\nexport const HTTP_ERROR_HANDLER_CONFIG_TOKEN = new InjectionToken<HttpErrorHandlerConfig>('HTTP_ERROR_HANDLER_CONFIG');\n\nexport function getGlobalConfig(appConfig: EuiAppConfig): GlobalConfig {\n return Object.assign(DEFAULT_EUI_CONFIG.appConfig.global, appConfig && appConfig.global);\n}\n\nexport function getShowConnectionStatus(globalConfig: GlobalConfig): ConnectionStatus {\n return Object.assign({}, DEFAULT_EUI_CONFIG.appConfig.global.showConnectionStatus, globalConfig && globalConfig.showConnectionStatus);\n}\n\nexport function getModuleConfig(appConfig: EuiAppConfig, moduleName: string): ModuleConfig {\n return Object.assign({}, appConfig && appConfig.modules && appConfig.modules[moduleName]);\n}\n\nexport function getHttpErrorHandlingConfig(appConfig: EuiAppConfig): HttpErrorHandlerConfig {\n return Object.assign({}, appConfig && appConfig.httpErrorHandler);\n}\n\nexport function getRootLogConfig(appConfig: EuiAppConfig): LogConfig {\n return Object.assign({}, appConfig && appConfig.log);\n}\n\nexport function prepareEuiAppConfigToken(euiConfig: EuiConfig): EuiAppConfig {\n const environment = euiConfig && euiConfig.environment;\n const merge: Array<string> =\n environment.envDynamicConfig && environment.envDynamicConfig.merge && Array.isArray(environment.envDynamicConfig.merge)\n ? environment.envDynamicConfig.merge\n : [];\n const isDeepMerge: boolean =\n environment.envDynamicConfig && environment.envDynamicConfig.deepMerge ? environment.envDynamicConfig.deepMerge : false;\n const envAppJsonConfig: EuiAppJsonConfig = environment && environment.loadedEnvDynamicConfig;\n const initialAppConfig = euiConfig && euiConfig.appConfig;\n const envAppHandlersConfig: EuiAppHandlersConfig = environment && environment.envAppHandlersConfig;\n\n const envHandlersMergedAppConfig = mergeAppHandlerConfigToAppConfig(initialAppConfig, envAppHandlersConfig);\n const finalConfig = mergeAppJsonConfigToAppConfig(envHandlersMergedAppConfig, envAppJsonConfig, merge, isDeepMerge);\n return finalConfig;\n}\n\nexport function mergeAppHandlerConfigToAppConfig(euiAppConfig: EuiAppConfig, envAppHandler: EuiAppHandlersConfig): EuiAppConfig {\n return Object.assign({}, euiAppConfig, envAppHandler);\n}\n\nexport function mergeAppJsonConfigToAppConfig(\n euiAppConfig: EuiAppConfig,\n envAppJsonConfig: EuiAppJsonConfig,\n merge: Array<string>,\n isDeepMerge: boolean,\n): EuiAppConfig {\n const deepMerged = {};\n if (merge && merge.length > 0) {\n merge.forEach((key) => {\n if (\n envAppJsonConfig != null &&\n envAppJsonConfig[key] &&\n typeof envAppJsonConfig[key] === 'object' &&\n euiAppConfig != null &&\n euiAppConfig[key] &&\n typeof euiAppConfig[key] === 'object'\n ) {\n if (isDeepMerge) {\n deepMerged[key] = {};\n deepMerged[key] = deepmerge(euiAppConfig[key], envAppJsonConfig[key]);\n // extend(true, deepMerged[key], euiAppConfig[key], envAppJsonConfig[key]);\n } else {\n envAppJsonConfig[key] = {\n ...euiAppConfig[key],\n ...envAppJsonConfig[key],\n };\n }\n }\n });\n }\n return Object.assign({}, euiAppConfig, envAppJsonConfig, deepMerged);\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { Action } from '../ngrx_kit';\nimport { ModuleConfig, ApiQueueItem } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreAppActionTypes {\n INIT_STORE = '[App] Init store',\n UPDATE_APP_VERSION = '[App] Update version',\n UPDATE_APP_CONNECTION = '[App] Update connection',\n ADD_APP_LOADED_CONFIG_MODULES = '[App] Update app loaded config modules',\n UPDATE_APP_STATUS = '[App] Update status',\n UPDATE_CURRENT_MODULE = '[App] Update current module',\n ACTIVATED_ROUTE = '[App] Activated route',\n ADD_API_QUEUE_ITEM = '[App] Add API queue item',\n REMOVE_API_QUEUE_ITEM = '[App] Remove API queue item',\n EMPTY_API_QUEUE = '[App] empty API queue',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class InitStoreAction implements Action {\n type = CoreAppActionTypes.INIT_STORE;\n\n constructor(public payload: { version?: string }) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateAppVersionAction implements Action {\n type = CoreAppActionTypes.UPDATE_APP_VERSION;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateAppConnectionAction implements Action {\n type = CoreAppActionTypes.UPDATE_APP_CONNECTION;\n\n constructor(public payload: boolean) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class AddAppLoadedConfigModulesAction implements Action {\n type = CoreAppActionTypes.ADD_APP_LOADED_CONFIG_MODULES;\n\n constructor(public payload: { moduleName: string; moduleConfig: ModuleConfig }) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateAppStatusAction implements Action {\n type = CoreAppActionTypes.UPDATE_APP_STATUS;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateCurrentModuleAction implements Action {\n type = CoreAppActionTypes.UPDATE_CURRENT_MODULE;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class ActivatedRouteAction implements Action {\n type = CoreAppActionTypes.ACTIVATED_ROUTE;\n\n constructor(public payload: ActivatedRoute) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class AddApiQueueItemAction implements Action {\n type = CoreAppActionTypes.ADD_API_QUEUE_ITEM;\n\n constructor(public payload: { id: string; item: ApiQueueItem }) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class RemoveApiQueueItemAction implements Action {\n type = CoreAppActionTypes.REMOVE_API_QUEUE_ITEM;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class EmptyApiQueueAction implements Action {\n type = CoreAppActionTypes.EMPTY_API_QUEUE;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(public payload: any) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreAppActions =\n | InitStoreAction\n | UpdateAppVersionAction\n | UpdateAppConnectionAction\n | AddAppLoadedConfigModulesAction\n | UpdateAppStatusAction\n | UpdateCurrentModuleAction\n | ActivatedRouteAction\n | AddApiQueueItemAction\n | RemoveApiQueueItemAction;\n","import { Action } from '../ngrx_kit';\nimport { I18nState } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreI18nActionTypes {\n UPDATE_I18N_STATE = '[I18n] Update I18n State',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateI18nStateAction implements Action {\n type = CoreI18nActionTypes.UPDATE_I18N_STATE;\n constructor(public payload: I18nState) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreI18nActions = UpdateI18nStateAction;\n","import { Action } from '../ngrx_kit';\nimport { UserState, UserDetails, UserPreferences, EuiUserRight } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreUserActionTypes {\n UPDATE_USER_STATE = '[User] Update User state',\n UPDATE_USER_DETAILS = '[User] Update details',\n UPDATE_USER_PREFERENCES = '[User] Update preferences',\n UPDATE_USER_RIGHTS = '[User] Update rights',\n UPDATE_USER_DASHBOARD = '[User] Update dashboard',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserStateAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_STATE;\n\n constructor(public payload: UserState) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserDetailsAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_DETAILS;\n\n constructor(public payload: UserDetails) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserPreferencesAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_PREFERENCES;\n\n constructor(public payload: UserPreferences) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserRightsAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_RIGHTS;\n\n constructor(public payload: EuiUserRight[]) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserDashboardAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_DASHBOARD;\n\n constructor(public payload: unknown) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreUserActions = UpdateUserDetailsAction | UpdateUserPreferencesAction | UpdateUserRightsAction | UpdateUserDashboardAction;\n","import { Action } from '../ngrx_kit';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreNotificationsActionTypes {\n UPDATE_NOTIFICATIONS_LIST = '[Notif] Update list',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateNotificationsListAction implements Action {\n type = CoreNotificationsActionTypes.UPDATE_NOTIFICATIONS_LIST;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(public payload: any[]) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreNotificationsActions = UpdateNotificationsListAction;\n","import { Action } from '../ngrx_kit';\nimport { LocaleState } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreLocaleActionTypes {\n UPDATE_LOCALE_STATE = '[Locale] Update Locale State',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateLocaleStateAction implements Action {\n type = CoreLocaleActionTypes.UPDATE_LOCALE_STATE;\n constructor(public payload: LocaleState) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreLocaleActions = UpdateLocaleStateAction;\n","import { Action } from '../ngrx_kit';\nimport {\n CoreAppActionTypes,\n CoreAppActions,\n UpdateAppVersionAction,\n UpdateAppConnectionAction,\n AddAppLoadedConfigModulesAction,\n UpdateAppStatusAction,\n UpdateCurrentModuleAction,\n AddApiQueueItemAction,\n RemoveApiQueueItemAction,\n EmptyApiQueueAction,\n} from '../actions';\nimport { AppState, initialAppState } from '@eui/base';\n\nconst updateAppVersion = (state: AppState, action: UpdateAppVersionAction): AppState => ({ ...state, version: action.payload });\n\nconst updateAppConnection = (state: AppState, action: UpdateAppConnectionAction): AppState => ({ ...state, connected: action.payload });\n\nconst updateAppStatus = (state: AppState, action: UpdateAppStatusAction): AppState => ({ ...state, status: action.payload });\n\nconst updateCurrentModule = (state: AppState, action: UpdateCurrentModuleAction): AppState =>\n Object.assign({}, state, { currentModule: action.payload });\n\nconst addApiQueueItem = (state: AppState, action: AddApiQueueItemAction): AppState => {\n // apply the timestamp to the queue item\n const apiQueueItem = Object.assign({}, action.payload.item, { timestamp: new Date().getTime() });\n // update the queue\n const apiQueue = Object.assign({}, state.apiQueue, { [action.payload.id]: apiQueueItem });\n return Object.assign({}, state, { apiQueue });\n};\n\nconst removeApiQueueItem = (state: AppState, action: RemoveApiQueueItemAction): AppState => {\n // remove the specified id from the list of item ids and recreate the apiQueue from the remaining ids\n const apiQueue = Object.keys(state.apiQueue)\n .filter((id) => id !== action.payload)\n .reduce((queue, key) => {\n queue[key] = state.apiQueue[key];\n return queue;\n }, {});\n return Object.assign({}, state, { apiQueue });\n};\n\nconst emptyApiQueue = (state: AppState, action: EmptyApiQueueAction): AppState =>\n // remove all items in the Api Queue\n Object.assign({}, state, { apiQueue: {} });\nconst actionToReducerMap: { [key: string]: (state: AppState, action: CoreAppActions) => AppState } = {\n [CoreAppActionTypes.UPDATE_APP_VERSION]: updateAppVersion,\n [CoreAppActionTypes.UPDATE_APP_CONNECTION]: updateAppConnection,\n [CoreAppActionTypes.UPDATE_APP_STATUS]: updateAppStatus,\n [CoreAppActionTypes.UPDATE_CURRENT_MODULE]: updateCurrentModule,\n [CoreAppActionTypes.ADD_API_QUEUE_ITEM]: addApiQueueItem,\n [CoreAppActionTypes.REMOVE_API_QUEUE_ITEM]: removeApiQueueItem,\n [CoreAppActionTypes.EMPTY_API_QUEUE]: emptyApiQueue,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreAppReducers: (state: AppState, action: Action) => AppState = (state = initialAppState, action: CoreAppActions) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n // if the action type is not in the map, call the base reducers method\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport {\n CoreUserActionTypes,\n CoreUserActions,\n UpdateUserDashboardAction,\n UpdateUserStateAction,\n UpdateUserDetailsAction,\n UpdateUserPreferencesAction,\n UpdateUserRightsAction,\n} from '../actions';\nimport { UserState, initialUserState, UserPreferences } from '@eui/base';\n\nconst updateUser = (state: UserState, action: UpdateUserStateAction): UserState => {\n let fullName = action.payload.fullName;\n if (!fullName) {\n fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();\n }\n return Object.assign({}, state, action.payload, { fullName });\n};\n\nconst updateUserDetails = (state: UserState, action: UpdateUserDetailsAction): UserState => {\n let fullName = action.payload.fullName;\n if (!fullName) {\n fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();\n }\n // todo should be checked if state.details is really there\n const details = Object.assign({}, state['details'], action.payload, { fullName });\n return Object.assign({}, state, details);\n};\n\nconst updateUserPreferences = (state: UserState, action: UpdateUserPreferencesAction): UserState => {\n const preferences = Object.assign({}, state.preferences, action.payload);\n return Object.assign({}, state, { preferences });\n};\n\nconst updateUserRights = (state: UserState, action: UpdateUserRightsAction): UserState =>\n Object.assign({}, state, { rights: [...action.payload] });\n\nconst updateUserDashboard = (state: UserState, action: UpdateUserDashboardAction): UserState & { preferences: UserPreferences } => {\n // apply the dashboard to preferences\n const preferences = Object.assign({}, state.preferences, { dashboard: action.payload });\n // update the state\n return { ...state, preferences };\n};\n\nconst actionToReducerMap: { [key: string]: (state: UserState, action: CoreUserActions) => UserState } = {\n [CoreUserActionTypes.UPDATE_USER_DETAILS]: updateUserDetails,\n [CoreUserActionTypes.UPDATE_USER_PREFERENCES]: updateUserPreferences,\n [CoreUserActionTypes.UPDATE_USER_STATE]: updateUser,\n [CoreUserActionTypes.UPDATE_USER_RIGHTS]: updateUserRights,\n [CoreUserActionTypes.UPDATE_USER_DASHBOARD]: updateUserDashboard,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreUserReducers: (state: UserState, action: Action) => UserState = (state = initialUserState, action: CoreUserActions) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport { NotificationsState, initialNotificationsState } from '@eui/base';\nimport { CoreNotificationsActionTypes, CoreNotificationsActions, UpdateNotificationsListAction } from '../actions';\n\nconst updateNotificationsList = (state: NotificationsState, action: UpdateNotificationsListAction): NotificationsState =>\n Object.assign({}, state, { list: [...action.payload] });\n\nconst actionToReducerMap: { [key: string]: (state: NotificationsState, action: CoreNotificationsActions) => NotificationsState } = {\n [CoreNotificationsActionTypes.UPDATE_NOTIFICATIONS_LIST]: updateNotificationsList,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreNotificationsReducers: (state: NotificationsState, action: Action) => NotificationsState = (\n state = initialNotificationsState,\n action: CoreNotificationsActions,\n) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport { I18nState, initialI18nState } from '@eui/base';\nimport { CoreI18nActionTypes, CoreI18nActions, UpdateI18nStateAction } from '../actions';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst updateI18nState = (state: I18nState, action: UpdateI18nStateAction): {activeLang: string} => ({\n ...state,\n ...action.payload,\n});\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst actionToReducerMap: { [key: string]: (state: I18nState, action: CoreI18nActions) => I18nState } = {\n [CoreI18nActionTypes.UPDATE_I18N_STATE]: updateI18nState,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const corI18nReducers: (state: I18nState, action: Action) => I18nState = (state = initialI18nState, action: CoreI18nActions) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport { LocaleState, initialLocaleState } from '@eui/base';\nimport { CoreLocaleActionTypes, CoreLocaleActions, UpdateLocaleStateAction } from '../actions/locale.actions';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst updateLocaleState = (state: LocaleState, action: UpdateLocaleStateAction): LocaleState => ({\n ...state,\n ...action.payload,\n});\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst actionToReducerMap: { [key: string]: (state: LocaleState, action: CoreLocaleActions) => LocaleState } = {\n [CoreLocaleActionTypes.UPDATE_LOCALE_STATE]: updateLocaleState,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreLocaleReducers: (state: LocaleState, action: Action) => LocaleState = (\n state = initialLocaleState,\n action: CoreLocaleActions,\n) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { ActionReducerMap } from '../ngrx_kit';\nimport { CoreState } from '@eui/base';\nimport { coreAppReducers } from './app.reducers';\nimport { coreUserReducers } from './user.reducers';\nimport { coreNotificationsReducers } from './notifications.reducers';\nimport { corI18nReducers } from './i18n.reducers';\nimport { coreLocaleReducers } from './locale.reducers';\n\n/**\n * @deprecated it will be removed in the next major version\n */\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const coreReducers: ActionReducerMap<CoreState, any> = Object.assign(\n {},\n {\n app: coreAppReducers,\n user: coreUserReducers,\n notifications: coreNotificationsReducers,\n i18n: corI18nReducers,\n locale: coreLocaleReducers,\n },\n);\n","import { inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ActionReducer, Action } from '../ngrx_kit';\nimport { CoreAppActionTypes, InitStoreAction } from '../actions/app.actions';\nimport { AppState, CoreState } from '@eui/base';\n// import * as extendProxy from 'extend';\n\n// const extend = (<{ default: unknown }>extendProxy).default || extendProxy;\n\n/**\n * Utility meta-reducer to load the state from the local storage\n * @param platformId the platformId based on PLATFORM_ID token of Angular\n * @deprecated it will be removed in the next major version\n */\nexport function localStorageSync<S extends CoreState>(platformId: unknown): ((reducer: ActionReducer<S>) => (state: S, action: Action) => S);\n/**\n * Utility meta-reducer to load the state from the local storage\n * @param reducer the action reducer\n */\nexport function localStorageSync<S extends CoreState>(reducer: ActionReducer<S>): (state: S, action: Action) => S;\n// eslint-disable-next-line\nexport function localStorageSync<S extends CoreState>(reducer: ActionReducer<S>, platformId?: unknown): Function {\n if(platformId) {\n return <T extends CoreState>(reducer: ActionReducer<T>): (state: T, action: Action) => T => {\n return cb<T>(reducer, isPlatformBrowser(platformId) ? localStorage : null);\n }\n } else {\n const platformId = inject(PLATFORM_ID, { optional: true });\n return cb<S>(reducer, isPlatformBrowser(platformId) ? localStorage : null);\n }\n}\n\n/**\n * Utility meta-reducer to load the state from the session storage\n * @param platformId the platformId based on PLATFORM_ID token of Angular\n * @deprecated it will be removed in the next major version\n */\nexport function sessionStorageSync<S extends CoreState>(platformId: unknown): ((reducer: ActionReducer<S>) => (state: S, action: Action) => S);\n/**\n * Utility meta-reducer to load the state from the session storage\n * @param reducer the action reducer\n * @deprecated it will be removed in the next major version\n */\nexport function sessionStorageSync<S extends CoreState>(reducer: ActionReducer<S>): (state: S, action: Action) => S;\n// eslint-disable-next-line\nexport function sessionStorageSync<S extends CoreState>(reducer: ActionReducer<S>, platformId?: unknown): Function {\n if(platformId) {\n return <T extends CoreState>(reducer: ActionReducer<T>): (state: T, action: Action) => T => {\n return cb<T>(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);\n }\n } else {\n const platformId = inject(PLATFORM_ID, { optional: true });\n return cb<S>(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);\n }\n}\n\n// Keys that are allowed to be synced with NgRx state from BrowserStorage\nconst disallowedKeys = ['loadedConfigModules', 'connect', 'currentModule', 'status', 'apiQueue'];\n\n/**\n * filters the AppState by removing those keys from the state and return a new state Object\n * @param app the AppState\n * @deprecated it will be removed in the next major version\n */\nconst filterAppState = (app: AppState): AppState => {\n // in case app is undefined or null it should return empty object\n if (!app) {\n return {};\n }\n\n return (\n Object.keys(app)\n // select keys that are present in the allowed list\n .filter((key) => !disallowedKeys.includes(key))\n // build a new object with only the allowed properties\n .reduce((obj, key) => {\n obj[key] = app[key];\n return obj;\n }, {})\n );\n};\n\n/**\n *\n * @param storage Type of storage to load the state from\n * @deprecated it will be removed in the next major version\n */\nexport const loadState = <S extends CoreState>(storage: Storage | null = localStorage): S => {\n if (!storage) {\n return undefined;\n }\n\n try {\n // by default falls back to localStorage\n const serializedState = storage.getItem('state');\n\n if (serializedState === null) {\n return undefined;\n }\n\n // deserialize state\n let state: S = JSON.parse(serializedState);\n\n // filter AppState and replace\n state = { ...state, app: filterAppState(state?.app) };\n\n return state;\n } catch (err) {\n return undefined;\n }\n};\n\nconst cb =\n <S extends CoreState>(reducer: ActionReducer<S>, storage: Storage | null) =>\n (state: S, action: Action): S => {\n if (action.type === CoreAppActionTypes.INIT_STORE) {\n // This action must be dispatched from an app initializer\n // We load the state from a storage and compare the version and userId with the provided ones.\n // If they are the same, we merge the local state into the initial state.\n // If there is a mismatch, we don't merge the local state, but update only the initial state.\n\n if (storage) {\n // load the state from the localStorage\n const localState: S = loadState<S>(storage);\n\n // extract the details about user and app version from the action payload\n const payloadVersion = (action as InitStoreAction).payload?.version;\n\n if (localState) {\n // TODO: Why all these checks here? What is the purpose of this code?\n // extract the details about user and app version from the storage state\n const localVersion = localState?.app?.version;\n // const localUserId = localState.user && localState.user.userId;\n\n const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;\n // const isUserIdOK = (localUserId === payloadUserId);\n\n // update the entire state with deep merge of states, if the version and user are the same\n if (isVersionOK) {\n state = { ...state, ...localState };\n // state = extend(true, {}, state, localState);\n }\n }\n\n // update the app version, if defined\n if (payloadVersion) {\n state = { ...state, app: { ...state?.app, version: payloadVersion } };\n }\n }\n }\n\n return reducer(state, action);\n };\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { LogAppender, Logger, LogLevel } from '@eui/base';\n\nexport const BASE_LOGGER_NAME_TOKEN = new InjectionToken<string>('BASE_LOGGER_NAME');\nexport const LOG_LEVEL_TOKEN = new InjectionToken<LogLevel>('LOG_LEVEL');\nexport const LOG_APPENDERS_TOKEN = new InjectionToken<LogAppender[]>('LOG_APPENDERS');\n\n/**\n * Log service, responsible for getting or creating loggers. It itself acts as a base logger\n */\n@Injectable()\nexport class LogService extends Logger {\n protected override name: string;\n protected override level: LogLevel;\n protected override appenders: LogAppender[];\n\n /** the list of persistent loggers */\n protected loggers = {};\n\n constructor() {\n const name = inject(BASE_LOGGER_NAME_TOKEN);\n const level = inject<LogLevel>(LOG_LEVEL_TOKEN);\n const appenders = inject(LOG_APPENDERS_TOKEN);\n\n super(name, level, appenders);\n \n this.name = name;\n this.level = level;\n this.appenders = appenders;\n }\n\n /**\n * Gets a logger by name. If the logger does not exist, it is created\n *\n * @param loggerName logger name\n * @param persist optional parameter. Set it to true if you want to reuse the logger. By default, it is set to false\n * @returns the logger\n */\n getLogger(loggerName: string, persist = false): Logger {\n // create the logger, if necessary\n const logger = (persist && <Logger>this.loggers[loggerName]) || new Logger(loggerName, this.level, this.appenders);\n\n // if the logger is persistent, add it to the list of persistent loggers\n if (persist) {\n this.loggers[loggerName] = logger;\n }\n\n return logger;\n }\n}\n","import { LoggerMock } from '@eui/base';\n\nexport class LogServiceMock extends LoggerMock {\n getLogger(): LoggerMock {\n return new LoggerMock();\n }\n}\n","import { Injector } from '@angular/core';\nimport { LogAppender, LogConfig } from '@eui/base';\nimport { DEFAULT_LOG_CONFIG } from '../../config/defaults';\nimport { LogService, BASE_LOGGER_NAME_TOKEN, LOG_LEVEL_TOKEN, LOG_APPENDERS_TOKEN } from '../../log/log.service';\n\nconst LOG_INSTANCES = {};\n\n/**\n * Helper function to check if the log config is defined.\n * Does not check only for empty object, because the config can have other (non-log) parameters\n * @params config log configuration\n * @returns true/false\n */\nexport function isLogConfigDefined(config: LogConfig): boolean {\n return config && ('baseLoggerName' in config || 'logLevel' in config || 'logAppenders' in config);\n}\n\n/**\n * Helper function to provide a list of log appenders from a log configuration\n *\n * @params config log configuration\n * @returns an array of log appenders\n */\nexport function getLogAppendersConfig(config: LogConfig = DEFAULT_LOG_CONFIG, injector: Injector = null): LogAppender[] {\n config = Object.assign({}, DEFAULT_LOG_CONFIG, config);\n config.logAppenders = config.logAppenders || [];\n config.logAppenders = Array.isArray(config.logAppenders) ? config.logAppenders : [config.logAppenders];\n return config.logAppenders.map((logAppender) => {\n const appenderType = typeof logAppender === 'object' ? logAppender.type : logAppender;\n const appenderParams = typeof logAppender === 'object' ? logAppender : undefined;\n return new appenderType(appenderParams, injector);\n });\n}\n\n/**\n * Helper function to provide an instance of LogService from a configuration\n *\n * @params config log configuration\n * @returns an instance of log service\n */\nexport function logServiceFactory(config: LogConfig = DEFAULT_LOG_CONFIG, injector: Injector = null): LogService {\n // add the default values to config\n config = Object.assign({}, DEFAULT_LOG_CONFIG, config);\n // extract parameters from config\n const logLevel = config.logLevel;\n const logAppenders = getLogAppendersConfig(config, injector);\n\n // Create a child injector with the necessary providers\n const childInjector = Injector.create({\n providers: [\n { provide: BASE_LOGGER_NAME_TOKEN, useValue: config.baseLoggerName },\n { provide: LOG_LEVEL_TOKEN, useValue: logLevel },\n { provide: LOG_APPENDERS_TOKEN, useValue: logAppenders },\n LogService,\n ],\n parent: injector,\n });\n\n // return an instance of LogService\n return childInjector.get(LogService);\n}\n\nexport function euiLogServiceFactory(\n injector: Injector,\n rootBaseLoggerName: string,\n rootConfig: LogConfig,\n childBaseLoggerName: string = null,\n childConfig: LogConfig = {},\n): LogService {\n // determine if the configuration is for non-root modules\n const forChild = isLogConfigDefined(childConfig);\n const baseLoggerName = forChild ? childBaseLoggerName : rootBaseLoggerName;\n // create the proper configuration\n const config = Object.assign({ baseLoggerName }, forChild ? Object.assign({}, rootConfig, childConfig) : rootConfig);\n\n // re-use the log service or create a new instance\n const logService = LOG_INSTANCES[baseLoggerName] || logServiceFactory(config, injector);\n LOG_INSTANCES[baseLoggerName] = logService;\n return logService;\n}\n","import { InjectionToken, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { LogConfig } from '@eui/base';\n\nimport { LogService } from './log.service';\nimport { DEFAULT_LOG_CONFIG } from '../config/defaults';\nimport { logServiceFactory } from '../app/factories/log';\n\nconst LOG_MODULE_CONFIG_TOKEN = new InjectionToken<LogConfig>('LOG_CONFIG');\n\n/**\n * Log Module\n */\n@NgModule()\nexport class LogModule {\n /** method called in your root module to provide the LogService */\n static forRoot(config: LogConfig = DEFAULT_LOG_CONFIG): ModuleWithProviders<LogModule> {\n return {\n ngModule: LogModule,\n providers: [\n { provide: LOG_MODULE_CONFIG_TOKEN, useValue: config },\n { provide: LogService, useFactory: logServiceFactory, deps: [LOG_MODULE_CONFIG_TOKEN, Injector] },\n ],\n };\n }\n\n /** method called in your other (non root, lazy loaded) modules to import a different instance of LogService */\n static forChild(config: LogConfig = DEFAULT_LOG_CONFIG): ModuleWithProviders<LogModule> {\n return {\n ngModule: LogModule,\n providers: [\n { provide: LOG_MODULE_CONFIG_TOKEN, useValue: config },\n { provide: LogService, useFactory: logServiceFactory, deps: [LOG_MODULE_CONFIG_TOKEN, Injector] },\n ],\n };\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map } from 'rxjs/operators';\n\nimport { LogService } from '../log';\nimport { CoreState, DeepPartial, initialCoreState } from '@eui/base';\nimport { isEqual } from 'lodash-es';\nimport { loadState } from './reducers';\n\nexport enum BrowserStorageType {\n local,\n session,\n}\n\nexport type Handler<T> = (state: T[keyof T]) => Partial<T[keyof T]>\n\n// todo should stay here but all the store directory should be moved upper level\n@Injectable({\n providedIn: 'root',\n})\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class StoreService<T = any> {\n protected logService = inject(LogService, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n /**\n * autoSave handlers to call before saving in local Storage\n */\n protected _autoSaveHandlers: { [key: string]: Handler<T> } = {};\n /** storage instance e.g. localStorage, sessionStorage */\n private _storage: Storage;\n private state: BehaviorSubject<T>;\n private isHandlingAutoSave = false;\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this._storage = localStorage;\n }\n\n const initialState = {} as T;\n this.state = new BehaviorSubject<T>(initialState);\n\n // Subscribe to signal changes for auto-save\n this.state.asObservable()\n .pipe(\n filter(() => this.isHandlingAutoSave),\n debounceTime(1000),\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n )\n .subscribe((state) => {\n this.saveState(state as CoreState);\n });\n\n }\n\n init(version?: string, storageType?: BrowserStorageType): void {\n if (isPlatformBrowser(this.platformId)) {\n // This action must be dispatched from an app initializer\n // We load the state from a storage and compare the version and userId with the provided ones.\n // If they are the same, we merge the local state into the initial state.\n // If there is a mismatch, we don't merge the local state, but update only the initial state.\n\n this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;\n\n // load the state from the localStorage\n let localState: CoreState = loadState<T>(this._storage) as CoreState;\n localState = { ...localState, app: { ...localState?.app, version } };\n\n const mergedState = this.deepMerge(localState, { ...initialCoreState }) as T;\n this.updateState(mergedState);\n }\n }\n\n /**\n * Add an autoSave handler for a specific state slice\n * @param stateSlice\n * @param handler\n * @deprecated it will be removed in the next major version\n */\n addAutoSaveHandler(stateSlice: string, handler: Handler<T>): void {\n this._autoSaveHandlers[stateSlice] = handler;\n }\n\n handleAutoSave(): void {\n this.isHandlingAutoSave = true;\n }\n\n /**\n * Proxy to NGRX store.dispatch()\n * that allows to intercept if the store is present\n *\n * @deprecated it will be removed in the next version support of NGRX will cease\n */\n dispatch(action: unknown): void {\n console.warn('eUI does not PROXY to NGRX store.dispatch() anymore');\n }\n\n /**\n * This method is used to update the state of the service with a new state.\n *\n * @param state\n */\n updateState(state: DeepPartial<T>): void;\n /**\n * @deprecated it will be removed in next version. Use updateState(partialState: DeepPartial<T>) instead\n * @param slice\n * @param reducer\n */\n updateState(slice: DeepPartial<T>, reducer: (state: T, action: DeepPartial<T>) => T): void;\n updateState<K extends T>(state: DeepPartial<K>, reducer?: (state: T, action: DeepPartial<K>) => T): void {\n const currentState = this.state.getValue();\n let newState: T;\n\n if (reducer) {\n newState = reducer(currentState, { ...state });\n } else {\n newState = this.deepMerge<T>(currentState, { ...state });\n }\n this.state.next(newState);\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n select(key?: any): Observable<T[any]>;\n select<K>(keyOrMapFn?: ((state: T) => K) | string): Observable<Partial<K> | K> {\n const baseObservable: Observable<T | K> = this.state.asObservable();\n\n if (!keyOrMapFn) {\n return baseObservable as Observable<K>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return baseObservable.pipe(\n map(state => keyOrMapFn(state as T)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return baseObservable.pipe(\n map(state => {\n if (!keyOrMapFn) {\n return state;\n }\n\n const keys = keyOrMapFn.split('.');\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n /**\n * filters and save the state with the Browser storage\n * @param state type of CoreState\n */\n protected saveState(state: CoreState): void {\n let stateToSave: CoreState = {\n app: state.app,\n };\n\n if (state.user) {\n const { userId, preferences } = state.user;\n stateToSave.user = { userId, preferences };\n }\n\n Object.keys(this._autoSaveHandlers).forEach((sliceState: string) => {\n const handler = this._autoSaveHandlers[sliceState];\n stateToSave = Object.assign(stateToSave, { [sliceState]: handler(state[sliceState]) });\n });\n\n try {\n const serializedState = JSON.stringify(stateToSave);\n this._storage?.setItem('state', serializedState);\n } catch (err) {\n // Ignore write errors.\n }\n }\n\n /**\n * deep merge two objects\n * @param target the object that will be merged into\n * @param source the object that will be merged from\n */\n private deepMerge<T>(target: T, source: DeepPartial<T>): T {\n const output = Object.assign({}, target);\n if (this.isObject(target) && this.isObject(source)) {\n Object.keys(source).forEach(key => {\n if (this.isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n } else {\n output[key] = this.deepMerge(target[key], source[key]);\n }\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n }\n\n /**\n * checks if the given item is an object\n * @param item the item that will be checked\n */\n private isObject(item: unknown): item is object {\n return item && typeof item === 'object' && !Array.isArray(item);\n }\n\n}\n","import { Observable, of } from 'rxjs';\nimport { StoreService } from './store.service';\nimport { Injectable } from '@angular/core';\n\nexport const PLATFORM_BROWSER_ID = 'browser';\n\n@Injectable()\nexport class StoreServiceMock extends StoreService {\n constructor() {\n super();\n }\n\n override init(): void {/* empty */}\n\n override addAutoSaveHandler(): void {/* empty */}\n\n override handleAutoSave(): void {/* empty */}\n\n override dispatch(): void {/* empty */}\n\n override select(): Observable<object> {\n return of({});\n }\n}\n","import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { APP_INITIALIZER, Injector, Provider } from '@angular/core';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport {\n BASE_NAME_TOKEN,\n EUI_CONFIG_TOKEN,\n MODULE_CONFIG_TOKEN,\n MODULE_NAME_TOKEN,\n GLOBAL_CONFIG_TOKEN,\n CONFIG_TOKEN,\n HTTP_ERROR_HANDLER_CONFIG_TOKEN,\n SHOW_CONNECTION_STATUS_TOKEN,\n ROOT_LOG_CONFIG_TOKEN,\n prepareEuiAppConfigToken,\n getGlobalConfig,\n getShowConnectionStatus,\n getModuleConfig,\n getHttpErrorHandlingConfig,\n getRootLogConfig,\n} from '../config/tokens';\nimport { euiLogServiceFactory } from './factories/log';\nimport { euiInitApp } from './eui-init-app';\nimport { LogService } from '../log/log.service';\n\nexport function getCoreProviders(): Provider[] {\n return [\n // core config\n ...getDependencyProviders(),\n { provide: BASE_NAME_TOKEN, useValue: 'eui-core' },\n // app config\n { provide: CONFIG_TOKEN, useFactory: prepareEuiAppConfigToken, deps: [EUI_CONFIG_TOKEN] },\n // global config\n { provide: GLOBAL_CONFIG_TOKEN, useFactory: getGlobalConfig, deps: [CONFIG_TOKEN] },\n { provide: ROOT_LOG_CONFIG_TOKEN, useFactory: getRootLogConfig, deps: [CONFIG_TOKEN] },\n { provide: SHOW_CONNECTION_STATUS_TOKEN, useFactory: getShowConnectionStatus, deps: [GLOBAL_CONFIG_TOKEN] },\n { provide: LogService, useFactory: euiLogServiceFactory, deps: [Injector, BASE_NAME_TOKEN, ROOT_LOG_CONFIG_TOKEN] },\n { provide: HTTP_ERROR_HANDLER_CONFIG_TOKEN, useFactory: getHttpErrorHandlingConfig, deps: [CONFIG_TOKEN] },\n ];\n}\n\nexport function getDependencyProviders(): Provider[] {\n return [{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] }];\n}\n\nexport function getCoreChildProviders(moduleName: string): Provider[] {\n return [\n // module config\n { provide: MODULE_NAME_TOKEN, useValue: moduleName },\n { provide: MODULE_CONFIG_TOKEN, useFactory: getModuleConfig, deps: [CONFIG_TOKEN, MODULE_NAME_TOKEN] },\n // log config\n {\n provide: LogService,\n useFactory: euiLogServiceFactory,\n deps: [Injector, BASE_NAME_TOKEN, ROOT_LOG_CONFIG_TOKEN, MODULE_NAME_TOKEN, MODULE_CONFIG_TOKEN],\n },\n ];\n}\n","import { Injector, ModuleWithProviders, NgModule, Optional, SkipSelf, InjectionToken, inject } from '@angular/core';\n\nimport { MODULE_CONFIG_TOKEN, MODULE_NAME_TOKEN } from './services/config/tokens';\nimport { StoreService } from './services/store/index';\nimport { getCoreChildProviders, getCoreProviders } from './services/app/eui-startup';\nimport { CoreState } from '@eui/base';\n\nconst AddAppLoadedConfigModules = (state: CoreState, action: { moduleName, moduleConfig }): CoreState => ({\n ...state,\n app: {\n ...state.app,\n loadedConfigModules: {\n lastAddedModule: action.moduleName,\n modulesConfig: {\n ...state.app.loadedConfigModules.modulesConfig,\n [action.moduleName]: {\n ...action.moduleConfig,\n },\n },\n },\n },\n});\n\nexport const CORE_ROOT_GUARD = new InjectionToken<void>('Internal Theme ForRoot Guard');\n\n@NgModule()\nexport class CoreModule {\n /**\n * No more providing config from forRoot, you have to use EUI_CONFIG_TOKEN to pass config via providers.\n */\n static forRoot(): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: [\n {\n provide: EuiCoreRootGuardClass,\n useFactory: euiCoreRootGuardClass,\n deps: [],\n },\n {\n provide: CORE_ROOT_GUARD,\n useFactory: createEuiCoreRootGuard,\n deps: [[EuiCoreRootGuardClass, new Optional(), new SkipSelf()]],\n },\n ...getCoreProviders(),\n ],\n };\n }\n\n static forChild(moduleName: string): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: getCoreChildProviders(moduleName),\n };\n }\n\n constructor() {\n const parentModule = inject(CoreModule, { optional: true, skipSelf: true });\n const injector = inject(Injector);\n\n // if there is a parentModule, a new instance is created in a lazy loaded module\n if (parentModule) {\n // extract the i18n service and the i18n loader config\n // todo, this thing should be achieved by store, and localization service dependency should be removed\n const storeService = injector.get(StoreService);\n const moduleName = injector.get(MODULE_NAME_TOKEN);\n const moduleConfig = injector.get(MODULE_CONFIG_TOKEN);\n storeService.updateState({ moduleName, moduleConfig }, AddAppLoadedConfigModules);\n }\n }\n}\n\nconst createEuiCoreRootGuard = (core): string => {\n if (core) {\n throw new TypeError('CoreModule.forRoot() called twice. Feature modules should use ThemeModule.forChild() instead.');\n }\n return 'guarded';\n};\n\nexport class EuiCoreRootGuardClass {\n constructor() { /* empty */ }\n}\n\nconst euiCoreRootGuardClass = (): EuiCoreRootGuardClass => new EuiCoreRootGuardClass();\n\nexport { createEuiCoreRootGuard, euiCoreRootGuardClass };\n","import { EnvDynamicConfig, EuiAppJsonConfig, EuiEnvConfig, xhr } from '@eui/base';\n\n/**\n * Function to be used before the AppModule is bootstrapped. It is currently used to load dynamic configurations.\n * It needs to be added in your application main.ts file.\n * @param envConfig the current environment configuration\n * @returns the updated environment configuration, as a promise\n */\nexport async function preInitApp(envConfig: EuiEnvConfig): Promise<EuiEnvConfig> {\n const envDynamicConfig: EnvDynamicConfig = envConfig && envConfig.envDynamicConfig;\n if (envDynamicConfig) {\n // load the local configuration file, if defined\n envConfig.loadedEnvDynamicConfig = await loadEuiDynamicEnvironmentConfig(\n envDynamicConfig.uri,\n envDynamicConfig.configTimeout || 2000,\n );\n return envConfig;\n }\n return envConfig;\n}\n\n/**\n * Function to load asynchronously a dynamic configuration (from a local path or a web service)\n *\n * @param url the path to the configuration\n * @param timeout possible timeout\n * @returns EuiAppJsonConfig promise\n */\nexport async function loadEuiDynamicEnvironmentConfig(url: string, timeout?: number): Promise<EuiAppJsonConfig> {\n // if the url is specified\n if (url) {\n // fetch the config\n try {\n return await xhr<EuiAppJsonConfig>({\n url,\n timeout,\n });\n } catch (error) {\n // send a warning to the console\n console.warn('Dynamic configuration cannot be loaded from url', url, error);\n }\n }\n // the dynamic config is not loaded\n return null;\n}\n","import { LOCATION_INITIALIZED } from '@angular/common';\nimport { EnvironmentProviders, inject, Injector, provideAppInitializer } from '@angular/core';\nimport { EuiAppConfig } from '@eui/base';\nimport { CONFIG_TOKEN } from '../config/tokens';\nimport { BrowserStorageType, StoreService } from '../store';\n\nconst init = (): Promise<unknown> => {\n const locationInitialized = inject(LOCATION_INITIALIZED, { optional: true }) || Promise.resolve(null);\n const appConfig: EuiAppConfig = inject(CONFIG_TOKEN);\n const storeService = inject(StoreService);\n\n return new Promise<void>(resolve => {\n\n locationInitialized.then(() => {\n // necessary config parameters\n let appVersion: string;\n if (appConfig && appConfig.versions && appConfig.versions.app) {\n appVersion = appConfig.versions.app;\n } else {\n appVersion = '0.0.0';\n }\n let storageType: BrowserStorageType;\n if (appConfig && appConfig['saveStateStorage']) {\n storageType = appConfig['saveStateStorage'];\n } else {\n storageType = BrowserStorageType.local;\n }\n\n storeService.init(appVersion, storageType);\n storeService.handleAutoSave();\n resolve(null);\n });\n });\n};\n\n/**\n * Initializes the app with the necessary configurations. Use this in combination with `provideAppInitializer(euiInitApp_Env)`\n */\nexport function provideEuiInitializer(): EnvironmentProviders {\n return provideAppInitializer(init);\n}\n\n/**\n * Initializes the app with the necessary configurations\n * @param injector\n * @deprecated Use `provideEuiInitializer()` instead. Beware that this should be declared as Environment providers.\n */\nexport const euiInitApp = (injector: Injector) => (): Promise<null> =>\n new Promise((resolve) => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n\n locationInitialized.then(() => {\n const appConfig: EuiAppConfig = injector.get(CONFIG_TOKEN);\n // necessary config parameters\n let appVersion: string;\n if (appConfig && appConfig.versions && appConfig.versions.app) {\n appVersion = appConfig.versions.app;\n } else {\n appVersion = '0.0.0';\n }\n let storageType: BrowserStorageType;\n if (appConfig && appConfig['saveStateStorage']) {\n storageType = appConfig['saveStateStorage'];\n } else {\n storageType = BrowserStorageType.local;\n }\n\n const storeService = injector.get(StoreService);\n storeService.init(appVersion, storageType);\n storeService.handleAutoSave();\n resolve(null);\n });\n });\n","export const errorCodes = {\n ERR_GENERIC: 'ERR_GENERIC',\n};\n\nconst messages = {\n ERR_GENERIC: 'An error occured',\n};\n\n// Intermediate \"hacky\" subclass taken from\n// https://www.bennadel.com/blog/3226-experimenting-with-error-sub-classing-using-es5-and-typescript-2-1-5.htm\n\nexport class ErrorSubClass {\n public code?: string;\n public message: string;\n public stack: string;\n public name: string;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(code?: string, msg?: string, args?: any) {\n if (!msg && code && code in messages) {\n if (typeof messages[code] === 'function') {\n msg = messages[code](...args.messageParams);\n } else {\n msg = messages[code];\n }\n }\n\n this.name = 'ErrorSubClass';\n this.message = msg;\n this.code = code;\n this.stack = new Error(msg).stack;\n\n if (args) {\n Object.keys(args).forEach((k) => {\n if (k !== 'messageParams') {\n this[k] = args[k];\n }\n });\n }\n }\n}\n\n// This replaces the \"extends\" on the Class\n// ErrorSubClass.prototype = <any>Object.create(Error.prototype);\n\nexport class EuiError extends ErrorSubClass {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(code: string = errorCodes.ERR_GENERIC, msg?: string, args?: any) {\n super(code, msg, args);\n\n this.name = 'EuiError';\n }\n}\n","import { ErrorHandler, Injectable, inject } from '@angular/core';\n\nimport { LogService } from '../log';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalErrorHandler extends ErrorHandler {\n protected logService = inject(LogService);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override handleError(error: any): void {\n // log error\n this.logService.error(error.message || error.toString());\n\n // throw error;\n super.handleError(error);\n }\n}\n","import { Injectable, Injector, inject } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { HttpErrorHandlerConfig, HttpErrorRouteConfig } from '@eui/base';\nimport { HTTP_ERROR_HANDLER_CONFIG_TOKEN } from '../config/tokens';\nimport { DEFAULT_HTTP_ERROR_HANDLER_CONFIG } from '../config/defaults';\n\n@Injectable()\nexport class HttpErrorHandlerInterceptor implements HttpInterceptor {\n protected config = inject<HttpErrorHandlerConfig>(HTTP_ERROR_HANDLER_CONFIG_TOKEN) ?? DEFAULT_HTTP_ERROR_HANDLER_CONFIG;\n protected injector = inject(Injector);\n protected router = inject(Router);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req).pipe(\n tap({\n next: () => { /* empty */ },\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error: (error: any) => {\n // in case of http error\n if (error instanceof HttpErrorResponse) {\n const routeConfig = this.getRouteConfig(error);\n const rule = routeConfig && (routeConfig[error.status] || routeConfig.default);\n\n if (typeof rule === 'string') {\n // perform a redirect\n this.router.navigate([rule]);\n } else if (typeof rule === 'function') {\n // callback function\n rule.call(null, error, this.injector);\n }\n }\n },\n }),\n );\n }\n\n /**\n * Search in the configuration for the first matching route\n *\n * @param error http error response\n * @returns HttpErrorRouteConfig or null\n */\n protected getRouteConfig(error: HttpErrorResponse): HttpErrorRouteConfig | null {\n // filter the routes\n const routes = this.config.routes.filter((route) => {\n const regex = new RegExp('^' + route.path.split('*').join('.*') + '$');\n return regex.test(error.url) && (typeof route[error.status] !== 'undefined' || typeof route.default !== 'undefined');\n });\n // return the first matching route, if any\n return routes.length > 0 ? routes[0] : null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EuiGrowlMessage } from '@eui/base';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiGrowlService {\n growlMessages = [];\n isGrowlSticky = false;\n isCloseAllSticky = false;\n growlLife = 3000;\n growlPosition = 'bottom-right';\n growlCallback = null;\n ariaGrowlLive: 'off' | 'polite' | 'assertive' = 'polite';\n\n /**\n * displays a growl UxMessage item, isSticky\n */\n growl(msg: EuiGrowlMessage, isSticky?: boolean, isMultiple?: boolean, life?: number, position?: string, callback?: () => void, ariaLive?: 'off' | 'polite' | 'assertive'): void {\n if (msg.severity !== 'info' && msg.severity !== 'warning' && msg.severity !== 'success' && msg.severity !== 'danger') {\n throw new Error('EuiGrowlService.growl() ERROR : message severity must be either : success, warning, info, danger');\n } else {\n if (isMultiple === undefined || !isMultiple) {\n this.growlMessages = [];\n }\n this.growlMessages = this.growlMessages.concat(msg);\n msg.life = life || msg.life;\n msg.sticky = isSticky || msg.sticky;\n\n if (life === undefined || isNaN(life)) {\n if (msg.severity === 'danger') {\n isSticky = true;\n } else {\n this.growlLife = 3000;\n }\n } else {\n this.growlLife = life;\n }\n\n if (isSticky) {\n this.isGrowlSticky = isSticky;\n } else {\n this.isGrowlSticky = false;\n }\n\n if (position) {\n this.growlPosition = position;\n }\n\n if (callback) {\n this.growlCallback = callback;\n }\n if (ariaLive) {\n this.ariaGrowlLive = ariaLive;\n }\n }\n }\n\n clearGrowl(): void {\n this.growlMessages = [];\n }\n\n growlSuccess(msg: string, position?: string): void {\n this.growl({ severity: 'success', summary: 'SUCCESS', detail: msg }, false, false, undefined, position);\n }\n\n growlError(msg: string, position?: string): void {\n this.growl({ severity: 'danger', summary: 'ERROR', detail: msg }, false, false, undefined, position);\n }\n\n growlWarning(msg: string, position?: string): void {\n this.growl({ severity: 'warning', summary: 'WARNING', detail: msg }, false, false, undefined, position);\n }\n\n growlInfo(msg: string, position?: string): void {\n this.growl({ severity: 'info', summary: 'INFO', detail: msg }, false, false, undefined, position);\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injector } from '@angular/core';\nimport { LogService } from '../log';\nimport { EuiGrowlService } from '../growl/eui-growl.service';\n\nexport function AlertHttpErrorCallbackFn(error: HttpErrorResponse): void {\n alert(error.statusText);\n}\n\nexport function ConsoleHttpErrorCallbackFn(error: HttpErrorResponse): void {\n console.error('HttpError', error);\n}\n\nexport function LogHttpErrorCallbackFn(error: HttpErrorResponse, injector: Injector): void {\n const logService = injector.get(LogService);\n logService.error('HttpError', error);\n}\n\nexport function GrowlHttpErrorCallbackFn(error: HttpErrorResponse, injector: Injector): void {\n const asService = injector.get(EuiGrowlService);\n asService.growlError(error.statusText);\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of, forkJoin, from } from 'rxjs';\nimport { tap, switchMap, take, map, catchError, concatMap } from 'rxjs/operators';\nimport { ApiQueue, ApiQueueItem, Logger, AppState, CoreState } from '@eui/base';\n\nimport { LogService } from '../log';\nimport { StoreService } from '../store';\nimport { createSelector, Selector } from 'reselect';\n\n/**\n * Service class for managing and processing a queue of API requests.\n *\n * This service provides functionality to add, remove, process, and manage HTTP requests stored in a queue.\n * It enables sequential or bulk processing of requests, ensuring controlled execution and handling of API calls.\n * The service methods offer features like processing individual items, processing all items in the queue either\n * sequentially or all at once, and removing items from the queue. Each method is designed to handle specific aspects\n * of queue management and processing, with attention to details like order of execution and error handling.\n *\n * Usage of this service is ideal in scenarios where API requests need to be managed in a queue structure, allowing\n * for controlled execution and monitoring of these requests.\n *\n * @example\n * // Adding a new item to the queue\n * apiQueueService.addQueueItem({ id: 'item124', method: 'POST', uri: '/api/data', payload: {...} });\n *\n * // Processing a single item from the queue\n * apiQueueService.processQueueItem('item123').subscribe(result => {\n * console.log('Processed item 123 with result:', result);\n * });\n *\n * // Processing all items in the queue in sequential order\n * apiQueueService.processAllQueueItemsSequential(false).subscribe(results => {\n * console.log('Processed all items in descending order of their timestamp:', results);\n * });\n *\n * // Removing an item from the queue\n * apiQueueService.removeQueueItem('item123');\n *\n * // Processing all items in the queue and continuing on error\n * apiQueueService.processAllQueueItems(true).subscribe(results => {\n * console.log('Processed all items in the queue with continuation on errors:', results);\n * });\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiQueueService {\n protected store = inject(StoreService);\n protected http = inject(HttpClient);\n protected logService = inject(LogService, { optional: true });\n\n private readonly logger: Logger;\n private readonly getAppState: (state: CoreState) => AppState;\n private getApiQueue: Selector<AppState, ApiQueue>;\n private getApiQueueItem: (itemId: string) => Selector<AppState, ApiQueueItem>;\n\n constructor() {\n const logService = this.logService;\n\n if (logService) {\n this.logger = logService.getLogger('core.ApiQueueService');\n }\n this.getAppState = (state: CoreState): AppState => state.app;\n this.getApiQueue = createSelector(this.getAppState, (state: AppState) => state.apiQueue);\n this.getApiQueueItem = (itemId: string): Selector<AppState, ApiQueueItem> =>\n createSelector(this.getAppState, (state: AppState) => state.apiQueue[itemId]);\n }\n\n /**\n * Adds an item to the queue by dispatching an action to the store.\n * This function is specifically designed to enqueue API call requests represented by `ApiQueueItem` objects.\n * Each item is identified by a unique `id`, which is used to manage the queue.\n *\n * @param {string} id - The unique identifier for the queue item. It's crucial to ensure that this ID is unique within the queue.\n * If an item with the same ID already exists, the new item will overwrite the existing one.\n * WARNING: Duplicate IDs will lead to overwriting of queue items.\n *\n * @param {ApiQueueItem} item - The item to be enqueued. This should be an object of type `ApiQueueItem`.\n * The `method` property of the item must be one of the allowed methods ('post', 'put', 'get').\n * If an unsupported method is provided, the function will throw an error.\n *\n * @throws {Error} Throws an error if the `method` property of the `item` is not one of the allowed methods.\n * The error message is: `[ApiQueue] method \"${item.method}\" is not allowed`.\n *\n * @example\n * // Example of adding an item to the API queue\n * addQueueItem('12345', { method: 'post', url: '/api/data', payload: {...} });\n *\n * @returns {void} This function does not return a value. It adds the item to the queue via a dispatch action.\n */\n addQueueItem(id: string, item: ApiQueueItem): void {\n const allowedMethods = ['post', 'put', 'get'];\n\n if (allowedMethods.indexOf(item.method) < 0) {\n throw new Error(`[ApiQueue] method \"${item.method}\" is not allowed`);\n }\n\n this.store.updateState({ id, item }, this.addApiQueueItem);\n }\n\n /**\n * Retrieves the current state of the API queue and converts it into an array of Observables.\n *\n * This method subscribes to the store to access the API queue. It then maps the queue object,\n * which is an associative array, into a linear array of ApiQueueItem instances. If the queue is empty,\n * a warning is logged. This method is useful for tracking the state and contents of the API queue\n * at a given moment.\n *\n * Note: This method takes a snapshot of the queue at the time of subscription. It does not provide\n * a continuous stream of queue updates. To get real-time updates, consider subscribing directly\n * to the store's observable.\n *\n * @returns {Observable<ApiQueueItem[]>} An Observable that emits an array of ApiQueueItem.\n * The array represents all items currently in the queue. If the queue is empty, it emits an empty array.\n *\n * @example\n * // Example usage\n * this.getQueue().subscribe(queueItems => {\n * console.log('Current queue items:', queueItems);\n * });\n */\n getQueue(): Observable<ApiQueueItem[]> {\n return this.store.select(this.getApiQueue).pipe(\n take(1),\n map((queue: ApiQueue) => {\n const queueArray = queue && Object.values<ApiQueueItem>(queue);\n if (!queueArray || queueArray.length < 1) {\n this.logger?.warn('No items in the queue exist.');\n }\n\n return queueArray;\n }),\n );\n }\n\n /**\n * Retrieves a specific item from the API queue by its ID.\n *\n * This method subscribes to the store and selects a single item from the API queue based on the provided ID.\n * It employs a pipeline to fetch the item: the `getApiQueueItem` selector is used to retrieve the item,\n * and a `map` operator processes the result. If the item with the specified ID does not exist in the queue,\n * a warning is logged, and `null` is returned.\n *\n * This method is ideal for accessing a specific queue item when its ID is known, allowing for targeted\n * operations or checks on that particular item.\n *\n * @param {string} id - The unique identifier of the item within the queue.\n * @returns {Observable<ApiQueueItem | null>} An Observable emitting the requested ApiQueueItem.\n * If no item with the given ID exists in the queue, the Observable emits `null`.\n *\n * @example\n * // Example usage\n * this.getQueueItem('item123').subscribe(item => {\n * if (item) {\n * console.log('Found item:', item);\n * } else {\n * console.log('Item not found in the queue');\n * }\n * });\n */\n getQueueItem(id: string): Observable<ApiQueueItem> {\n return this.store.select(this.getApiQueueItem(id)).pipe(\n take(1),\n map((queue: ApiQueueItem) => {\n if (!queue) {\n this.logger?.warn(`Queue item with id \"${id}\" does not exist`);\n return null;\n }\n return queue;\n }),\n );\n }\n\n /**\n * Removes a specific item from the API queue using its ID.\n *\n * This method dispatches an action to remove an item from the queue, identified by the provided ID.\n * It is essential for managing the queue by eliminating items that are no longer needed or have been processed.\n * The function does not return any value, as it primarily triggers an action within the store.\n *\n * Note: This method assumes the existence of the item in the queue. It does not perform a check\n * to confirm the presence of the item before attempting to remove it. Therefore, it's recommended\n * to verify the item's existence in the queue if uncertainty exists.\n *\n * @param {string} id - The unique identifier of the item to be removed from the queue.\n *\n * @example\n * // Example usage\n * this.removeQueueItem('item123');\n * // The item with ID 'item123' will be dispatched for removal from the queue.\n */\n removeQueueItem(id: string): void {\n this.store.updateState({ payload: id } as unknown, this.removeApiQueueItem);\n }\n\n /**\n * Clears all items from the API queue.\n *\n * This method dispatches an action to empty the entire API queue, effectively removing all items that are currently queued.\n * It is useful for scenarios where a complete reset of the queue is required, such as during initialization or after processing\n * a batch of items. The function does not return any value, as its primary purpose is to trigger a state change in the store.\n *\n * Note: Use this method with caution as it will irreversibly clear all items in the queue. Ensure that this action does not\n * disrupt any ongoing processes that rely on the queue's contents.\n *\n * @example\n * // Example usage\n * this.removeAllQueueItem();\n * // This will dispatch an action to empty the entire API queue.\n */\n removeAllQueueItem(): void {\n this.store.updateState({ app: { apiQueue: {} } });\n }\n\n /**\n * Processes an item from the API queue identified by its ID.\n *\n * Retrieves the specified item from the queue and applies processing logic as defined in `buildHttpRequest`.\n * If the item is not found, logs a warning and returns an Observable emitting `null`.\n *\n * @param {string} id - The unique identifier of the item within the queue to be processed.\n * @returns {Observable<any>} An Observable that emits the result of processing the queue item.\n * If the item does not exist, the Observable emits `null`.\n *\n * @example\n * // Example usage\n * this.processQueueItem('item123').subscribe(result => {\n * if (result) {\n * console.log('Processing result:', result);\n * } else {\n * console.log('Item not found in the queue');\n * }\n * });\n */\n processQueueItem<T>(id: string): Observable<T> {\n return this.store.select(this.getApiQueueItem(id)).pipe(\n take(1),\n switchMap((queue: ApiQueueItem) => {\n if (!queue) {\n this.logger?.warn(`Queue item with id \"${id}\" does not exist`);\n return of(null);\n }\n\n return this.buildHttpRequest<T>(id, queue);\n }),\n );\n }\n\n /**\n * Processes all items in the API queue and collects their responses.\n *\n * Iterates over each item in the queue and processes them using `buildHttpRequest`. If a request fails,\n * the method can either continue processing the remaining items or stop, based on the `continueOnError` parameter.\n * It returns an Observable that emits an array containing the responses or errors from all the processed items.\n *\n * The function currently returns `Observable<any[]>` indicating an array of any type. Future improvements\n * should aim to specify a more accurate return type or utilize generics for increased type safety.\n *\n * @param {boolean} [continueOnError=true] - Determines whether to continue with the next item in the queue\n * after a request failure. Defaults to `true`.\n * @returns {Observable<any[]>} An Observable emitting an array of either responses or errors from the processed\n * queue items.\n *\n * @example\n * this.processAllQueueItems().subscribe(results => {\n * // Handle the array of responses or errors\n * });\n */\n processAllQueueItems<T>(continueOnError = true): Observable<T[]> {\n return this.store.select(this.getApiQueue).pipe(\n map((queue: ApiQueue) =>\n Object.entries(queue).map(([key, value]) =>\n this.buildHttpRequest(key, value).pipe(\n catchError((error: Error) => {\n this.logger?.error(`Queue Item with id ${key} failed.`, error.message, error.stack);\n\n if (!continueOnError) {\n throw error;\n }\n\n return of(error);\n }),\n ),\n ),\n ),\n switchMap((obsQueue: Observable<T>[]) => forkJoin(Array.from(obsQueue))),\n );\n }\n\n /**\n * Processes all items in the queue sequentially, based on their timestamp ordering.\n *\n * This method first orders the items in the API queue by their timestamp, either in ascending or descending\n * order as specified by the `ascending` parameter. It then processes each item using `buildHttpRequest`, ensuring\n * that each request is completed before the next begins. This sequential processing is crucial when the order of\n * execution matters for HTTP requests in the queue. The method returns an Observable that emits the responses\n * following the same order as the queue items were processed.\n *\n * The function currently returns `Observable<any>`, indicating a broad type. Future improvements should focus on\n * specifying a more accurate return type or utilizing generics for increased type safety.\n *\n * @param {boolean} [ascending=true] - Determines whether the queue items are processed in ascending order of their\n * timestamp. Defaults to `true`.\n * @returns {Observable<any>} An Observable emitting the responses of the HTTP requests in the order they were processed.\n *\n * @example\n * this.processAllQueueItemsSequential().subscribe(response => {\n * // Handle each response in the order of queue processing\n * });\n */\n processAllQueueItemsSequential<T>(ascending = true): Observable<T> {\n return this.store.select(this.getApiQueue).pipe(\n switchMap((queue: ApiQueue) =>\n from(Object.entries(queue)\n .sort((a, b) => (ascending ? this.sortOnTimestamp(a, b) : this.sortOnTimestamp(b, a)))\n .map(([id, item]) => this.buildHttpRequest<T>(id, item)))\n .pipe(concatMap(x => x)),\n ),\n );\n }\n\n /**\n * Compares two queue items based on their timestamp and determines their order.\n *\n * This protected method is used to sort queue items. It takes two queue items as input, each represented\n * as a tuple containing an item ID and the `ApiQueueItem` object. The method compares these items based on\n * the `timestamp` property of the `ApiQueueItem` objects. It returns a number indicating the order in which\n * these items should be sorted.\n *\n * A positive return value indicates that the first item should come after the second, a negative value\n * indicates the opposite, and zero indicates that they are equal in terms of timestamp.\n *\n * @param {[string, ApiQueueItem]} a - The first queue item tuple for comparison.\n * @param {[string, ApiQueueItem]} b - The second queue item tuple for comparison.\n * @returns {number} A number indicating the order of the items: negative if `a` is earlier than `b`,\n * positive if `a` is later than `b`, and zero if they are equal.\n * @beta\n */\n protected sortOnTimestamp(a: [string, ApiQueueItem], b: [string, ApiQueueItem]): number {\n return +new Date(a[1].timestamp) - +new Date(b[1].timestamp);\n }\n\n /**\n * Constructs and executes an HTTP request based on the provided queue item details.\n *\n * This private method takes an ID and an `ApiQueueItem` object to build and execute an HTTP request.\n * It determines the HTTP method (like GET, POST, etc.) from the `method` property of the `ApiQueueItem`,\n * and uses the `uri` and `payload` properties for the request's URL and body, respectively. After the\n * request is executed, the corresponding queue item is removed from the queue.\n *\n * The method is generic, allowing the caller to specify the expected response type `T`. By default,\n * it uses `any` type, but specifying a more concrete type enhances type safety and clarity in usage.\n *\n * @param {string} id - The ID of the queue item being processed.\n * @param {ApiQueueItem} item - The queue item containing details for the HTTP request.\n * @returns {Observable<T>} An Observable of type T, representing the response of the HTTP request.\n *\n * @example\n * // Example usage for a specific response type\n * this.buildHttpRequest<MyResponseType>('item123', queueItem)\n * .subscribe(response => {\n * // Handle the response\n * });\n *\n * @template T - The expected type of the HTTP response. Defaults to `any`.\n */\n private buildHttpRequest<T>(id: string, item: ApiQueueItem): Observable<T> {\n return this.http[item.method.toLowerCase()]<T>(item.uri, item.payload).pipe(tap(() => this.removeQueueItem(id)));\n }\n\n /**\n * A state reducer that adds an item to the API queue.\n * @param state\n * @param action\n */\n private addApiQueueItem = (state: CoreState, action: { id: string; item: ApiQueueItem }): CoreState => {\n // apply the timestamp to the queue item\n action.item.timestamp = new Date().getTime();\n\n // update the queue\n const apiQueue = Object.assign({}, state.app?.apiQueue, { [action.id]: action.item });\n return Object.assign({}, state, { app: { ...state.app, apiQueue } });\n };\n\n /**\n * A state reducer that removes an item from the API queue.\n * @param state\n * @param action\n */\n private removeApiQueueItem = (state: CoreState, action: { payload: string }): CoreState => {\n // remove the specified id from the list of item ids and recreate the apiQueue from the remaining ids\n const apiQueue = Object.keys(state.app.apiQueue)\n .filter((id) => id !== action.payload)\n .reduce((queue, key) => {\n queue[key] = state.app.apiQueue[key];\n return queue;\n }, {});\n return Object.assign({}, state, { app: { ...state.app, apiQueue } });\n };\n}\n","import { ApiQueueService } from './api-queue.service';\nimport { Observable, of } from 'rxjs';\nimport { ApiQueueItem } from '@eui/base';\n\nexport class ApiQueueServiceMock extends ApiQueueService {\n constructor() {\n super();\n }\n override getQueue(): Observable<ApiQueueItem[]> {\n return of([]);\n }\n override getQueueItem(id: string): Observable<ApiQueueItem> {\n return of({ uri: id, method: 'GET' });\n }\n override removeAllQueueItem(): void { /* empty */ }\n override processAllQueueItems<T>(): Observable<T> {\n return of({} as T);\n }\n override addQueueItem(): void { /* empty */ }\n override removeQueueItem(): void { /* empty */ }\n override processQueueItem<T>(): Observable<T> {\n return of({} as T);\n }\n}\n","export class I18nResourceImpl {\n /**\n * Resource constructor\n *\n * @param prefix the prefix of the resource\n * @param suffix the suffix of the resource, optional parameter\n * @param compileTranslationsFn compiler function, optional parameter\n */\n constructor(\n protected prefix: string,\n protected suffix = '',\n protected compileTranslationsFn: (translations: unknown, lang: string) => unknown = (translations: unknown) => translations,\n ) {}\n\n /**\n * Translations pre-processor\n *\n * @param translations the object to be pre-processed\n * @param lang the translations language\n * @returns the pre-processed translations\n */\n public compileTranslations(translations: unknown, lang: string): unknown {\n return this.compileTranslationsFn(translations, lang);\n }\n\n /**\n * Indicates whether other object is equal-to this one.\n *\n * @param obj the reference object with which to compare\n * @returns true if this object is the same as obj, false otherwise\n */\n public equals(obj: I18nResourceImpl): boolean {\n return this.prefix === obj.prefix && this.suffix === obj.suffix;\n }\n\n /**\n * The path to the resource\n *\n * @param lang the resource language\n * @returns the path\n */\n public getPath(lang: string): string {\n return `${this.prefix}${lang}${this.suffix}`;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport {\n getI18nLoaderConfig,\n I18nResource,\n type EuiAppConfig,\n mergeAll,\n Logger,\n I18nLoaderConfig,\n I18nConfig,\n TranslationsCompiler,\n} from '@eui/base';\nimport { I18nResourceImpl } from './i18n.resource';\nimport { CONFIG_TOKEN } from '../config/tokens';\nimport { LogService } from '../log/log.service';\n\ninterface ResourceError {\n isError: boolean;\n error?: string;\n resource?: I18nResourceImpl;\n}\n\nexport interface LoadedResources {\n translations: object;\n hasError: boolean;\n errors?: Array<LoadedResourcesError>;\n}\n\nexport interface LoadedResourcesError {\n resource: I18nResourceImpl;\n error: string;\n}\n\nexport interface TranslationKeys {\n [key: string]: string\n}\n\n@Injectable()\nexport class I18nLoader implements TranslateLoader {\n protected http = inject(HttpClient);\n protected logService = inject(LogService, { optional: true });\n protected euiAppConfig = inject<EuiAppConfig>(CONFIG_TOKEN);\n\n protected resources: I18nResourceImpl[] = [];\n protected failedResources: Array<LoadedResourcesError> = [];\n private logger: Logger;\n\n constructor() {\n const logService = this.logService;\n\n if (logService) {\n this.logger = this.logService.getLogger('core.I18nLoader')\n }\n\n // create the resources from the config object\n const i18nConfig: I18nConfig = this.euiAppConfig.global && this.euiAppConfig.global.i18n;\n const i18nLoaderConfig: I18nLoaderConfig = i18nConfig && i18nConfig.i18nLoader;\n this.resources.push(...this.createResources(i18nLoaderConfig));\n }\n\n /**\n * Gets the translations from the server\n *\n * @param lang\n * @returns Observable<object>\n */\n public getTranslation(lang: string): Observable<object> {\n return this.loadResources(this.resources, lang).pipe(\n map((loadedResources: LoadedResources) => {\n this.failedResources = loadedResources.hasError ? loadedResources.errors : [];\n return loadedResources.translations;\n }),\n );\n }\n\n /**\n * Adds resources\n *\n * @param config loader configuration\n * @returns Observable<any> | false\n */\n public addResources(config: I18nLoaderConfig): I18nResourceImpl[] {\n // create the resources\n let resources = this.createResources(config);\n\n // filter the resources first, to avoid duplicates\n resources = resources.filter((resource) => !this.resources.some((res) => res.equals(resource)));\n\n // add the new resources to the list of existing resources\n this.resources.push(...resources);\n\n // return the filtered resources\n return resources;\n }\n\n /**\n * Removes resources from the loader instance\n */\n public removeResources(removedResources: I18nResourceImpl[]): void {\n this.resources = this.resources.filter((res) => !removedResources.some((removedResource) => removedResource.equals(res)));\n }\n\n /**\n * Loads an array of resources, by language\n *\n * @param resources the definition of the resources\n * @param lang the resource language to load\n * @returns Observable<any>\n */\n public loadResources(resources: I18nResourceImpl[], lang: string): Observable<{ hasError: boolean; translations: object; errors?: LoadedResourcesError[] }> {\n // if there are resources to load\n if (Array.isArray(resources) && resources.length > 0) {\n // load all the resources in an array of Observable\n const requests = resources.map((resource) => this.loadResource(resource, lang));\n // group all the observables with forkJoin and deep merge them\n return forkJoin(requests).pipe(\n map((response) => {\n const successResp = [];\n const errResp: Array<LoadedResourcesError> = [];\n response.forEach((item) => {\n if ((<ResourceError>item).isError) {\n errResp.push({ resource: (<ResourceError>item).resource, error: (<ResourceError>item).error });\n } else {\n successResp.push(item);\n }\n });\n if (successResp.length === response.length) {\n return { hasError: false, translations: mergeAll(successResp) };\n } else {\n return { hasError: true, translations: mergeAll(successResp), errors: errResp };\n }\n }),\n );\n } else {\n // no resources to load\n return of({ hasError: false, translations: {} });\n }\n }\n\n /**\n * Returns resources that failed\n */\n public getFailedResources(): Array<LoadedResourcesError> {\n return this.failedResources;\n }\n\n /**\n * Create resources from a config file\n *\n * @param config loader configuration\n * @returns I18nResourceImpl[] resources\n */\n protected createResources(config: I18nLoaderConfig): I18nResourceImpl[] {\n // use the default config as a reference base\n config = getI18nLoaderConfig(config);\n\n const resources = [];\n\n // extract the i18n folders from config\n const i18nFolders: string[] = Array.isArray(config.i18nFolders)\n ? config.i18nFolders\n : config.i18nFolders\n ? [config.i18nFolders]\n : [];\n if (i18nFolders) {\n // add the i18n folders to resources\n resources.push(...i18nFolders.map((folder) => new I18nResourceImpl(`assets/${folder}/`, '.json')));\n }\n\n // extract the i18n services from config\n const i18nServices: string[] = Array.isArray(config.i18nServices)\n ? config.i18nServices\n : config.i18nServices\n ? [config.i18nServices]\n : [];\n if (i18nServices) {\n // add the i18n services to resources\n resources.push(...i18nServices.map((service) => new I18nResourceImpl(service)));\n }\n\n // extract the i18n resources from config\n const i18nResources: I18nResource[] = Array.isArray(config.i18nResources)\n ? config.i18nResources\n : config.i18nResources\n ? [config.i18nResources]\n : [];\n if (i18nResources) {\n // add the i18n resources to resources\n resources.push(\n ...i18nResources.map(\n (resource) =>\n new I18nResourceImpl(\n resource.prefix,\n resource.suffix,\n this.getResourceCompileFunction(resource.compileTranslations),\n ),\n ),\n );\n }\n\n return resources;\n }\n\n /**\n * Loads a resource, by language\n *\n * @param resource the definition of the resource\n * @param lang the resource language to load\n * @returns Observable<any>\n */\n protected loadResource(resource: I18nResourceImpl, lang: string): Observable<TranslationKeys | ResourceError> {\n // the path to the resource\n const path = resource.getPath(lang);\n\n // load the translations from the path\n return this.http.get(path).pipe(\n // preprocess the translations using the resource compiler\n map((translations: unknown) => resource.compileTranslations(translations, lang)),\n map((translations: TranslationKeys) => {\n // resource loaded properly, send a info message\n this.logger?.info(`I18n resource loaded from path ${path}`);\n // return the translations\n return translations;\n }),\n catchError((err) => {\n // remove failed resource from loaded resource array\n // this.removeResources([resource]);\n // resource not loaded properly, send a warning message\n this.logger?.warn(`I18n resource NOT loaded from path ${path}`, err);\n const resourceError: ResourceError = { error: `I18n resource NOT loaded from path ${path}`, resource, isError: true };\n return of(resourceError);\n }),\n );\n }\n\n private getResourceCompileFunction(id: string): TranslationsCompiler {\n const customHandlers = this.euiAppConfig.customHandler;\n if (customHandlers && typeof customHandlers[id] === 'function') {\n return customHandlers[id];\n }\n return undefined;\n }\n}\n\nexport const translateConfig = {\n loader: {\n provide: TranslateLoader,\n useClass: I18nLoader,\n },\n};\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, OnDestroy, Signal, inject } from '@angular/core';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, forkJoin, Observable, of, Subject } from 'rxjs';\nimport {\n catchError,\n filter,\n map,\n take,\n tap,\n switchMap,\n takeUntil,\n distinctUntilChanged,\n} from 'rxjs/operators';\nimport {\n GlobalConfig,\n EuiLazyService,\n EuiServiceStatus,\n getI18nServiceConfigFromBase,\n I18nLoaderConfig,\n I18nServiceConfig,\n I18nState,\n ModuleConfig,\n getBrowserDefaultLanguage,\n EuiEuLanguages,\n CoreState,\n DeepPartial,\n} from '@eui/base';\n\nimport { I18nLoader, LoadedResources } from './i18n.loader';\nimport { GLOBAL_CONFIG_TOKEN } from '../config/tokens';\nimport { LogService } from '../log';\nimport { StoreService } from '../store';\nimport { DEFAULT_I18N_SERVICE_CONFIG } from '../config/defaults';\nimport { isEqual } from 'lodash-es';\nimport { Selector } from 'reselect';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nexport interface ModuleLoadEvent {\n ready: boolean;\n name: string;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error?: any;\n}\n\nconst getLastAddedModule: Selector<CoreState, string> = (state: CoreState) => state.app.loadedConfigModules.lastAddedModule;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService<T extends I18nState = I18nState> extends EuiLazyService<T | I18nState> implements OnDestroy {\n protected config: I18nServiceConfig;\n protected onModuleLoad: BehaviorSubject<ModuleLoadEvent>;\n protected baseGlobalConfig = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN);\n protected translateService = inject(TranslateService);\n protected logService = inject(LogService, { optional: true });\n protected store = inject<StoreService<T>>(StoreService);\n private static readonly DEFAULT_STATE: I18nState = { activeLang: 'en' };\n private document = inject<Document>(DOCUMENT);\n /**\n * a single signal holding the state - initial state is null\n */\n private state: Signal<T>;\n /**\n * a BehaviorSubject holding the state - initial state is null\n * This is the main source of truth for the state\n */\n private stateSubject: BehaviorSubject<T>;\n private subNotifier: Subject<void> = new Subject();\n\n constructor() {\n super(I18nService.DEFAULT_STATE as T);\n // Create a BehaviorSubject with the initial state\n this.stateSubject = new BehaviorSubject<T>(this.stateInstance as T);\n\n // Initialize signal with base state\n this.state = toSignal(this.stateSubject, { equal: isEqual });\n\n // Subscribe to base class state changes\n this.onStateChange.subscribe((newState) => {\n // const clonedState = structuredClone(newState as T);\n this.stateSubject.next(newState as T);\n });\n\n this.config = getI18nServiceConfigFromBase(this.baseGlobalConfig);\n this.onModuleLoad = new BehaviorSubject<ModuleLoadEvent>({ ready: false, name: null });\n }\n\n ngOnDestroy(): void {\n this.subNotifier.next(void 0);\n this.subNotifier.complete();\n }\n\n getState(): Observable<T>;\n /**\n * @deprecated this will be removed in a future version\n * @param mapFn\n */\n getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n getState<a extends keyof DeepPartial<T>>(key?: a): Observable<DeepPartial<a>>;\n getState<K = T>(keyOrMapFn?: ((state: T) => K) | string): Observable<DeepPartial<K>> {\n if (!keyOrMapFn) {\n return this.stateSubject.asObservable().pipe(\n takeUntil(this.subNotifier),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n ) as Observable<DeepPartial<K>>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return this.stateSubject.asObservable().pipe(\n takeUntil(this.subNotifier),\n map(state => keyOrMapFn(state)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return this.stateSubject.asObservable().pipe(\n takeUntil(this.subNotifier),\n map(state => {\n const keys = (keyOrMapFn as string).split('.');\n\n // Traverse the object based on the dot notation\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state as DeepPartial<T>);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n updateState(state: DeepPartial<T>): void;\n /**\n * @deprecated it will be removed in next version. Use updateState(partialState: DeepPartial<T>) instead\n * @param slice\n * @param reducer\n */\n updateState(slice: DeepPartial<T>, reducer: (state: T, action: DeepPartial<T>) => T): void;\n updateState<K extends T>(state: DeepPartial<K>, reducer?: (state: T, action: DeepPartial<K>) => T): void {\n if(state.activeLang) {\n this.updateHTMLDOMLang(state.activeLang as string);\n }\n this.stateInstance = super.deepMerge(this.stateInstance as T, { ...state });\n // Emit state change\n this.onStateChange.next(this.stateInstance);\n }\n\n /**\n * This method is used to get the state as readonly signal.\n */\n getSignal(): Signal<T> {\n return this.state;\n }\n\n init(langState?: T): Observable<EuiServiceStatus> {\n const initLang = langState && langState.activeLang ? langState.activeLang : this.preparedDefaultLanguage();\n const initState = {\n ...langState,\n activeLang: initLang,\n };\n if (typeof initLang === 'string') {\n super.initEuiService(this.store);\n this.updateState(initState);\n return this.setup(initLang);\n }\n return of({ success: false, error: 'Initial active lang should be string' });\n }\n\n /**\n * A pipe function that could serve as a wrapper of another observable\n * e.g. ngx-translate i18n.onReady('my_module').pipe(switchMap(()=>translate.get('eui.KEY')));\n * WARNING: onReady will emit only once for a loaded Module, going to another and then going back will not result\n * into another emission.\n *\n * @param moduleName the name of the module that has been given through the eUI globalConfig. In case non provided\n * fetch module name from the state.\n */\n onReady(moduleName?: string): Observable<ModuleLoadEvent> {\n return this.onModuleLoad.pipe(\n switchMap((evt: ModuleLoadEvent) =>\n moduleName\n ? of(evt)\n : this.store.select(getLastAddedModule).pipe(\n tap((m) => (moduleName = m)),\n map(() => evt),\n ),\n ),\n // emit only if event emitted matches the module name and is ready\n filter((evt: ModuleLoadEvent) => evt.ready === true && evt.name === moduleName),\n // make sure that observable completes\n take(1),\n );\n }\n\n public lazyLoad(config: I18nLoaderConfig): Observable<EuiServiceStatus> {\n const moduleId = Math.floor(Math.random() * 100000 + 1).toLocaleString();\n return this.addResources(config, moduleId);\n }\n\n lazyLoadInit(moduleConfig: ModuleConfig, moduleName?: string): Observable<EuiServiceStatus> {\n const i18nLoaderConfig = moduleConfig as I18nLoaderConfig;\n // add resources\n return this.addResources(i18nLoaderConfig, moduleName);\n }\n\n /**\n * Add resources based of a config loader\n *\n * @param config I18nLoaderConfig\n * @param moduleName\n * @return Promise<EuiServiceStatus> an EuiServiceStatus when translation has fully loaded\n */\n public addResources(config: I18nLoaderConfig, moduleName?: string): Observable<EuiServiceStatus> {\n // emit that module is loading\n this.onModuleLoad.next({ ready: false, name: moduleName });\n\n const loader = this.translateService.currentLoader;\n if (loader instanceof I18nLoader) {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const langSubscription: Observable<any>[] = [];\n const i18nLoader = <I18nLoader>loader;\n\n // add the resources to the loader\n const resources = i18nLoader.addResources(config);\n\n // manually load the resources for the CURRENT language and add them to the translate service\n langSubscription.push(\n i18nLoader.loadResources(resources, this.translateService.currentLang).pipe(\n take(1),\n tap((loadedResources: LoadedResources) => {\n // add the new set of translations to the current language\n this.translateService.setTranslation(this.translateService.currentLang, loadedResources.translations, true);\n }),\n ),\n );\n\n // if the current language is different from the DEFAULT language\n const defaultLang = this.config.defaultLanguage || this.translateService.defaultLang;\n if (this.translateService.currentLang !== defaultLang) {\n // manually load the resources for the default language and add them to the translation service\n langSubscription.push(\n i18nLoader.loadResources(resources, defaultLang).pipe(\n take(1),\n tap((loadedResources: LoadedResources) => {\n this.translateService.setTranslation(defaultLang, loadedResources.translations, true);\n }),\n ),\n );\n }\n\n return forkJoin(langSubscription).pipe(\n map((loadedResourcesArr: LoadedResources[]) =>\n !loadedResourcesArr[0].hasError ? { success: true } : { success: false, error: loadedResourcesArr[0].errors },\n ),\n tap(() => {\n // emit status of module loading progress\n this.onModuleLoad.next({ ready: true, name: moduleName });\n }),\n catchError((error) => {\n // emit status of module loading progress\n this.onModuleLoad.next({ ready: true, name: moduleName, error });\n return of({ success: false, error });\n }),\n );\n } else {\n return of({ success: false, error: 'currentLoader is not an I18nLoader.' });\n }\n }\n\n /**\n * Prepares the default language\n */\n private preparedDefaultLanguage(): string {\n const browserPref = getBrowserDefaultLanguage();\n // If user has browser preferred lang, and that language is part of the languages array\n if (browserPref && this.config.languages && EuiEuLanguages.getLanguageCodes(this.config.languages).includes(browserPref)) {\n return browserPref;\n }\n return this.config.defaultLanguage;\n }\n\n /**\n * @param initLanguage if given default language to override default language coming from the\n * configuration token.\n */\n private setup(initLanguage: string): Observable<EuiServiceStatus> {\n // use the default config as a reference base\n this.config = Object.assign({}, DEFAULT_I18N_SERVICE_CONFIG, this.config);\n // configure the translation config service\n if (this.config.languages) {\n this.translateService.addLangs(EuiEuLanguages.getLanguageCodes(this.config.languages));\n if (this.logService) {\n this.logService.info(`I18n accepted languages set to ${EuiEuLanguages.getLanguageCodes(this.config.languages)}`);\n }\n }\n // set the current language, causing to load translations\n return this.translateService.use(initLanguage).pipe(\n tap(() => {\n this.bindActiveLangStateToTranslateService();\n this.bindTranslateServiceLangChangeToState();\n if (this.config.defaultLanguage) {\n this.setDefaultLanguage(this.config.defaultLanguage);\n }\n }),\n map(() => {\n if (this.translateService.currentLoader instanceof I18nLoader) {\n const failedResources = this.translateService.currentLoader.getFailedResources();\n if (failedResources.length > 0) {\n return { success: false, error: failedResources };\n }\n }\n return { success: true };\n }),\n catchError((error) => of({ success: false, error })),\n );\n }\n\n private bindActiveLangStateToTranslateService(): void {\n this.getState((s) => s.activeLang)\n .pipe(takeUntil(this.subNotifier))\n .subscribe((lang) => {\n if (lang !== null && this.translateService.currentLang !== lang) {\n this.use(lang);\n }\n });\n }\n\n private bindTranslateServiceLangChangeToState(): void {\n this.translateService.onLangChange.subscribe((event: LangChangeEvent) => {\n if (this.stateInstance.activeLang !== event.lang) {\n this.updateState({ activeLang: event.lang } as Partial<T>);\n }\n if (this.logService) {\n this.logService.info(`I18n current language set to ${event.lang}`);\n }\n });\n }\n\n private setDefaultLanguage(defaultLanguage: string): void {\n // removed, current language is already calculated in init, setup function fill use it directly, not default\n // this.translateService.currentLang = default_language || this.config.defaultLanguage;\n this.translateService.setDefaultLang(defaultLanguage);\n if (this.logService) {\n this.logService.info(`I18n default language set to ${defaultLanguage}`);\n }\n }\n\n /**\n * change the currently used language\n *\n * @param lang is the language code based on the convention you used e.g. (en or en-EN)\n * @returns Observable that returns an object contain the object translation for given language after language\n * fully loaded.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private use(lang: string): Observable<any> {\n return this.translateService.use(lang);\n }\n\n /**\n * updates the HTML element lang attribute\n *\n * @private\n */\n private updateHTMLDOMLang(lang: string): void {\n this.document.documentElement.lang = lang;\n }\n}\n","export * from './i18n.resource';\nexport * from './i18n.loader';\n// export * from './i18n.module';\nexport * from './i18n.service';\n// export * from './i18n.service.mock';\n","export const diffDays = (dateStart: Date, dateEnd: Date): number =>\n Math.round((dateEnd.getTime() - dateStart.getTime()) / 1000 / 60 / 60 / 24);\n\nexport const diffDaysFromToday = (date: Date): number => diffDays(new Date(), date);\n","import { By } from '@angular/platform-browser';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { DebugElement } from '@angular/core';\n\n/**\n * Provides read-only equivalent of jQuery's position function:\n * http://api.jquery.com/position/\n */\nexport const position = (nativeEl: HTMLElement): { width: number; height: number; top: number; left: number } => {\n const elBCR = offset(nativeEl);\n let offsetParentBCR = { top: 0, left: 0 };\n const offsetParentEl = parentOffsetEl(nativeEl);\n if (offsetParentEl !== document) {\n offsetParentBCR = offset(offsetParentEl as HTMLElement);\n offsetParentBCR.top += (offsetParentEl as Element).clientTop - (offsetParentEl as Element).scrollTop;\n offsetParentBCR.left += (offsetParentEl as Element).clientLeft - (offsetParentEl as Element).scrollLeft;\n }\n\n const boundingClientRect = nativeEl.getBoundingClientRect();\n return {\n width: boundingClientRect.width || nativeEl.offsetWidth,\n height: boundingClientRect.height || nativeEl.offsetHeight,\n top: elBCR.top - offsetParentBCR.top,\n left: elBCR.left - offsetParentBCR.left,\n };\n};\n\n/**\n * Provides read-only equivalent of jQuery's offset function:\n * http://api.jquery.com/offset/\n */\nexport const offset = (nativeEl: HTMLElement): { width: number; height: number; top: number; left: number } => {\n const boundingClientRect = nativeEl.getBoundingClientRect();\n return {\n width: boundingClientRect.width || nativeEl.offsetWidth,\n height: boundingClientRect.height || nativeEl.offsetHeight,\n top: boundingClientRect.top + (window.pageYOffset || document.documentElement.scrollTop),\n left: boundingClientRect.left + (window.pageXOffset || document.documentElement.scrollLeft),\n };\n};\n\n// PRIVATE FUNCTIONS\nconst getStyle = (nativeEl: Element, cssProp: keyof CSSStyleDeclaration): string => {\n /* istanbul ignore if */\n if (getComputedStyle(nativeEl)) {\n return getComputedStyle(nativeEl)[cssProp] as string;\n }\n\n // finally try and get inline style\n /* istanbul ignore next */\n return (nativeEl as HTMLElement).style[cssProp] as string;\n};\n\n/* istanbul ignore next */\n/**\n * Checks if a given element is statically positioned\n */\nconst isStaticPositioned = (nativeEl: Element): boolean => (getStyle(nativeEl, 'position') || 'static') === 'static';\n\n/**\n * returns the closest, non-statically positioned parentOffset of a given element\n * @param nativeEl\n */\nexport const parentOffsetEl = (nativeEl: HTMLElement): Element | Document => {\n let offsetParent = nativeEl.offsetParent || document;\n while (offsetParent && offsetParent !== document && isStaticPositioned(offsetParent as Element)) {\n offsetParent = (offsetParent as HTMLElement).offsetParent;\n }\n return offsetParent || document;\n};\n\nexport const getViewElement = <F>(fixture: ComponentFixture<F>, componentClass: string, klass?: string): {de: DebugElement, el: HTMLElement, domElement: HTMLElement} => {\n let el: HTMLElement, domElement: NodeList | HTMLElement;\n\n const de = fixture.debugElement.query(By.css(componentClass));\n if (de) {\n el = de.nativeElement;\n\n if (el && klass) {\n domElement = el.querySelectorAll(klass);\n\n if (domElement.length <= 1) {\n domElement = el.querySelector(klass) as HTMLElement;\n }\n }\n }\n\n return { de, el, domElement: domElement as HTMLElement };\n};\n\nexport const closestMatchingParent = (target: HTMLElement, className: string): HTMLElement | null => {\n let element = target;\n\n while (element && element.nodeType === Node.ELEMENT_NODE) {\n if (element.classList.contains(className)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n};\n","export const consumeEvent = (event: Event): boolean => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.cancelBubble = true;\n }\n return false;\n};\n","import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\n\nexport const markFormGroupTouched = (FormControls: { [key: string]: AbstractControl } | AbstractControl[]): void => {\n const forOwn = (object, iteratee): void => {\n object = Object(object);\n Object.keys(object).forEach((key) => iteratee(object[key], key, object));\n };\n\n const markFormGroupTouchedRecursive = (controls: { [key: string]: AbstractControl } | AbstractControl[]): void => {\n forOwn(controls, (c) => {\n if (c instanceof FormGroup || c instanceof FormArray) {\n markFormGroupTouchedRecursive(c.controls);\n } else {\n c.markAsTouched();\n c.updateValueAndValidity();\n }\n });\n };\n markFormGroupTouchedRecursive(FormControls);\n};\n\nexport const markControlsTouched = (group: FormGroup | FormArray): void => {\n Object.keys(group.controls).forEach((key: string) => {\n const abstractControl = group.controls[key];\n if (abstractControl instanceof FormGroup || abstractControl instanceof FormArray) {\n markControlsTouched(abstractControl);\n } else {\n abstractControl.markAsTouched();\n }\n });\n};\n\nexport const validateEmail = (c: FormControl): { validateEmail: { valid: boolean } } => {\n const EMAIL_REGEXP =\n // eslint-disable-next-line max-len, no-useless-escape\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n const error = {\n validateEmail: {\n valid: false,\n },\n };\n return EMAIL_REGEXP.test(c.value) ? null : error;\n};\n","/**\n * returns a random string with radix=36\n */\nexport const uniqueId = (): string => Math.random().toString(36).substring(2, 9);\n\n/**\n * Its job is to parse number and format it based on given input.\n * @param value can be a number or a string number\n * @param fractionSize size of fraction of a number e.g. 1000.88 fraction is 2 (88) default is 2\n * @param inDecimalSeparator separator for decimal part of the number default is ','\n * @param inThousandSeparator separator for the whole part of the number default is ''\n */\nexport const formatNumber = (value: number | string, fractionSize = 2, inDecimalSeparator = ',', inThousandSeparator = ''): string => {\n // in case value is not a number throw an error\n if (typeof value === 'string' && isNaN(parseFloat(value))) {\n console.error(`Value ${value} is not a number`);\n return null;\n }\n\n let decimalSeparator = '';\n let thousandsSeparator = '';\n\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === 'string') {\n // get all non characters\n const nonChars: string[] = value.match(/\\D+/g) || [];\n\n // get all unique chars\n const uniqueChars = nonChars.reduce((acc, e) => acc.set(e, (acc.get(e) || 0) + 1), new Map());\n\n // get separators\n const separators = Array.from<string>(uniqueChars.keys());\n\n // sense where decimal separator and where a thousand separator is\n if (separators.length > 1) {\n // left detected separator will be a thousand and second will be decimal\n thousandsSeparator = separators[0];\n decimalSeparator = separators[1];\n } else if (separators.length > 0) {\n // in case there is only one separator you don't know exactly who this separator is.\n // in case there are more than two occurrences means we have a thousand otherwise we'll\n // agree by conventions that is decimal\n if (nonChars.length > 1) {\n return value\n .split(separators[0])\n .join('')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, inThousandSeparator);\n } else {\n return value.replace(separators[0], inDecimalSeparator).replace(/\\B(?=(\\d{3})+(?!\\d))/g, inThousandSeparator);\n }\n } else {\n // in case there are no separators then only format based on thousand one\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, inThousandSeparator) + (fractionSize > 0 ? inDecimalSeparator + '0'.repeat(fractionSize) : '');\n }\n\n // do the replacement of separators and parseInt\n // Beware! Always replace a thousand separator first and then decimal\n value = value.split(thousandsSeparator).join('').replace(decimalSeparator, '.');\n }\n\n decimalSeparator = inDecimalSeparator;\n thousandsSeparator = inThousandSeparator;\n\n const maxFraction = '0'.repeat(fractionSize);\n\n // eslint-disable-next-line prefer-const\n let [integer, fraction = maxFraction] = (value || '0').toString().split('.');\n fraction = fractionSize > 0 ? roundUpNumber(fraction + maxFraction, fractionSize) : '';\n\n // this rule makes sense only in number in case fraction is all zero\n fraction = fraction.length > 0 ? decimalSeparator + fraction : '';\n\n // if fraction is all zero then round up the number\n if(fractionSize === 0) {\n integer = Math.round(parseFloat((value).toString())).toString();\n }\n\n return integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator) + fraction;\n};\n\nconst roundUpNumber = (decimalPart: string, fractionSize: number): string => {\n return (Math.round(parseFloat(`0.${decimalPart}`) * Math.pow(10, fractionSize)) / Math.pow(10, fractionSize))\n .toFixed(fractionSize)\n .split('.')[1];\n};\n","/* istanbul ignore next */\n\nimport { Observable } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n/**\n * @deprecated it will be removed in the future. Consult the angular documentation for a replacement.\n * @param error\n */\nexport const handleError = (error: HttpErrorResponse): Observable<never> => {\n const errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\n throw new Error(errMsg);\n};\n","/**\n * check if a value is null or undefined. If it's not both returns true otherwise false\n *\n * @param value\n */\nexport const isDefined = <T>(value: T | undefined | null): value is T => <T>value !== undefined && <T>value !== null;\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\n\nexport abstract class CssUtils {\n public static readonly setHtmlClass = (inputClass: string, document: Document): void => {\n document.documentElement.classList.add(inputClass);\n }\n\n /**\n * Get the value of a CSS variable. Using getComputedStyle to get the value of the CSS variable (Browser Specific API)\n * @param inputProperty\n * @param document\n * @param platform\n */\n public static readonly getCssVarValue = (inputProperty: string, document: Document, platform: unknown): string => {\n if(isPlatformServer(platform)) {\n return document.documentElement.style.getPropertyValue(inputProperty);\n } else {\n return getComputedStyle(document.documentElement).getPropertyValue(inputProperty);\n }\n }\n\n public static readonly setCssVarValue = (propertyName: string, propertyValue: string, document: Document): void => {\n document.documentElement.style.setProperty(propertyName, propertyValue);\n }\n\n public static readonly setCssVar = (inputProperty: string, outputProperty: string, document: Document, platform: unknown): void => {\n const cssVarValue = this.getCssVarValue(inputProperty, document, platform);\n this.setCssVarValue(outputProperty, cssVarValue, document);\n }\n\n public static readonly initCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-header-height-default', '--eui-app-header-height', document, platform);\n this.setCssVar('--eui-app-breadcrumb-height-default', '--eui-app-breadcrumb-height', document, platform);\n this.setCssVar('--eui-app-top-message-height-default', '--eui-app-top-message-height', document, platform);\n this.setCssVar('--eui-app-toolbar-height-default', '--eui-app-toolbar-height', document, platform);\n this.setCssVar('--eui-app-toolbar-mega-menu-height-default', '--eui-app-toolbar-mega-menu-height', document, platform);\n this.setCssVar('--eui-app-sidebar-width-default', '--eui-app-sidebar-width', document, platform);\n this.setCssVar('--eui-app-sidebar-width-close-default', '--eui-app-sidebar-width-close', document, platform);\n this.setCssVar('--eui-app-sidebar-header-height-default', '--eui-app-sidebar-header-height', document, platform);\n this.setCssVar('--eui-app-sidebar-footer-height-default', '--eui-app-sidebar-footer-height', document, platform);\n }\n\n // eslint-disable-next-line\n public static readonly getBreakpointValues = (document: Document, platform: unknown): any => {\n const breakpoints = [];\n\n const xs = this.getCssVarValue('--eui-bp-xs', document, platform);\n breakpoints.push({ bkp: 'xs', pxValue: xs, value: xs.replace('px', '') });\n const sm = this.getCssVarValue('--eui-bp-sm', document, platform);\n breakpoints.push({ bkp: 'sm', pxValue: sm, value: sm.replace('px', '') });\n const md = this.getCssVarValue('--eui-bp-md', document, platform);\n breakpoints.push({ bkp: 'md', pxValue: md, value: md.replace('px', '') });\n const lg = this.getCssVarValue('--eui-bp-lg', document, platform);\n breakpoints.push({ bkp: 'lg', pxValue: lg, value: lg.replace('px', '') });\n const xl = this.getCssVarValue('--eui-bp-xl', document, platform);\n breakpoints.push({ bkp: 'xl', pxValue: xl, value: xl.replace('px', '') });\n const xxl = this.getCssVarValue('--eui-bp-xxl', document, platform);\n breakpoints.push({ bkp: 'xxl', pxValue: xxl, value: xxl.replace('px', '') });\n const fhd = this.getCssVarValue('--eui-bp-fhd', document, platform);\n breakpoints.push({ bkp: 'fhd', pxValue: fhd, value: fhd.replace('px', '') });\n const twok = this.getCssVarValue('--eui-bp-2k', document, platform);\n breakpoints.push({ bkp: '2k', pxValue: twok, value: twok.replace('px', '') });\n const fourk = this.getCssVarValue('--eui-bp-4k', document, platform);\n breakpoints.push({ bkp: '4k', pxValue: fourk, value: fourk.replace('px', '') });\n\n return breakpoints;\n }\n\n public static readonly activateEditModeCssVars = (isActive: boolean, document: Document): void => {\n if (isActive) {\n this.setCssVarValue('--eui-docpage-navigation-z-index', 'inherit', document); // Reset doc-page-navigation-column z-index\n this.setCssVarValue('--eui-z-index-sidebar', 'inherit', document); // Reset eui-app-sidebar z-index\n this.setCssVarValue('--eui-z-index-root', 'inherit', document); // Reset eui-app-main-content z-index\n } else {\n this.setCssVarValue('--eui-docpage-navigation-z-index', '2', document); // Restore doc-page-navigation-column z-index\n this.setCssVarValue('--eui-z-index-sidebar', '1044', document); // Restore eui-app-sidebar z-index\n this.setCssVarValue('--eui-z-index-root', '1', document); // Restore eui-app-main-content z-index\n }\n }\n\n public static readonly activateHeaderCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-header-height-active', '--eui-app-header-height', document, platform);\n }\n public static readonly activateBreadcrumbCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-breadcrumb-height-active', '--eui-app-breadcrumb-height', document, platform);\n }\n\n public static readonly activateTopMessageCssVars = (height: number, document: Document): void => {\n this.setCssVarValue('--eui-app-top-message-height', `${height}px`, document);\n }\n\n public static readonly activateToolbarCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-toolbar-height-active', '--eui-app-toolbar-height', document, platform);\n }\n\n public static readonly activateToolbarMegaMenuCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-toolbar-mega-menu-height-active', '--eui-app-toolbar-mega-menu-height', document, platform);\n }\n\n public static readonly activateFooterCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-footer-height-active', '--eui-app-footer-height', document, platform);\n }\n\n public static readonly setHeaderShrinkCssVar = (active: boolean, document: Document, platform: unknown): void => {\n if (active) {\n this.setCssVar('--eui-app-header-height-shrink', '--eui-app-header-height', document, platform);\n } else {\n this.setCssVar('--eui-app-header-height-active', '--eui-app-header-height', document, platform);\n }\n }\n\n public static readonly activateSidebarCssVars = (document: Document, platform: unknown, hasSidebarCollapsedVariant = false): void => {\n this.setCssVar('--eui-app-sidebar-width-active', '--eui-app-sidebar-width', document, platform);\n if (hasSidebarCollapsedVariant) {\n this.setCssVar('--eui-app-sidebar-width-close-variant-active', '--eui-app-sidebar-width-close', document, platform);\n } else {\n this.setCssVar('--eui-app-sidebar-width-close-active', '--eui-app-sidebar-width-close', document, platform);\n }\n }\n\n public static readonly removeSidebarCssVars = (document: Document): void => {\n document.documentElement.style.removeProperty('--eui-app-sidebar-header-height');\n document.documentElement.style.removeProperty('--eui-app-sidebar-footer-height');\n document.documentElement.style.removeProperty('--eui-app-sidebar-width');\n document.documentElement.style.removeProperty('--eui-app-sidebar-width-close');\n }\n\n public static readonly activateSidebarHeaderCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-sidebar-header-height-active', '--eui-app-sidebar-header-height', document, platform);\n }\n\n public static readonly activateSidebarFooterCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-sidebar-footer-height-active', '--eui-app-sidebar-footer-height', document, platform);\n }\n\n /**\n * Gets the viewport height and width and multiply it by 1% to get a value for a vh/vw unit\n * Sets the value in the --eui-app-vh custom property to the root of the document\n * Sets the value in the --eui-app-vw custom property to the root of the document\n * Example for 100% height: calc(var(--eui-app-vh, 1vh) * 100);\n * Example for 50% height: calc(var(--eui-app-vh, 1vh) * 50);\n * Example for 50% width: calc(var(--eui-app-vw, 1vw) * 50);\n */\n public static setAppViewportCssVars(platform: unknown): void {\n if(isPlatformBrowser(platform)) {\n const vh = window.innerHeight * 0.01;\n const vw = window.innerWidth * 0.01;\n this.setCssVarValue('--eui-app-vh', `${vh}px`, document);\n this.setCssVarValue('--eui-app-vw', `${vw}px`, document);\n }\n }\n}\n\n","import { inject, InjectionToken, Injector, Type } from '@angular/core';\n\n/**\n * Safely resolves a service from the injector only when needed.\n * Avoids instantiation errors that can occur with `inject(..., { optional: true })`.\n *\n * @param token The service token to inject\n * @param injector The injector to use (defaults to the current injector)\n * @returns The service instance or null if unavailable\n */\nexport function injectOptional<T>(token: Type<T> | InjectionToken<T>, injector = inject(Injector)): T | null {\n try {\n return injector.get(token, null);\n } catch {\n return null;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { EuiService, EuiServiceStatus, EuiUserRight, Logger, UserState, CoreState } from '@eui/base';\nimport { Observable, of } from 'rxjs';\nimport { LogService } from '../log';\nimport { StoreService } from '../store';\nimport { isDefined } from '../../helpers';\nimport { createSelector, Selector } from 'reselect';\n\n/**\n * Service for managing user permissions within the application.\n * This class extends `EuiService` and is responsible for handling user rights and permissions.\n * It provides methods to initialize the service with user rights, check specific rights and permissions,\n * and subscribe to changes in the user rights state.\n *\n * @extends {EuiService<EuiUserRight[]>}\n * @see EuiService\n *\n * @example\n * // Example of using the EuiPermissionService in an application\n * const permissionService = new EuiPermissionService();\n * permissionService.init([{ id: 'ADMIN', permissions: ['CREATE', 'READ', 'UPDATE', 'DELETE'] }]);\n * if (permissionService.checkRight('ADMIN')) {\n * console.log('User has ADMIN rights');\n * }\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiPermissionService extends EuiService<EuiUserRight[]> {\n private log = inject(LogService, { optional: true });\n protected store = inject(StoreService);\n\n private readonly logger: Logger;\n\n constructor() {\n super([]);\n const log = this.log;\n\n if (log) {\n this.logger = log.getLogger('core.PermissionService');\n }\n }\n\n /**\n * Initializes the permission service with a set of user rights.\n * This method sets up the initial state of the service based on the provided user rights.\n * It should be called before using other methods of the service to ensure it is properly configured.\n *\n * @param {EuiUserRight[]} rights - An array of user rights to initialize the service with.\n * Each `EuiUserRight` object should contain at least an `id` property,\n * and optionally a `permissions` property which is an array of strings.\n *\n * @returns {Observable<EuiServiceStatus>} An Observable that emits the status of the initialization.\n * The status object includes a `success` boolean indicating\n * whether the initialization was successful, and an `error` property\n * with a message in case of failure.\n *\n * @example\n * // Example of initializing the service with two user rights\n * const userRights = [\n * { id: 'ADMIN', permissions: ['CREATE', 'READ', 'UPDATE', 'DELETE'] },\n * { id: 'USER', permissions: ['READ'] }\n * ];\n * permissionService.init(userRights).subscribe(status => {\n * if (status.success) {\n * console.log('Initialization successful');\n * } else {\n * console.error('Initialization failed:', status.error);\n * }\n * });\n *\n * @throws {Error} Throws an error if the `rights` parameter is not an array of `EuiUserRight` objects.\n */\n init(rights: EuiUserRight[]): Observable<EuiServiceStatus> {\n super.initEuiService();\n if (Array.isArray(rights)) {\n this.updateState(rights);\n return of({ success: true });\n }\n\n if (this.logger) {\n this.logger.error('Init object should be instance of BaseUserState');\n }\n return of({ success: false, error: 'Init object should be instance of BaseUserState' });\n }\n\n /**\n * Retrieves the current user rights from the service's state.\n * This getter provides access to the array of `EuiUserRight` objects that represent the current rights\n * of the user. It is a protected method, intended for internal use within the service or by subclasses.\n *\n * @returns {EuiUserRight[]} An array of `EuiUserRight` objects representing the current user rights.\n * Each `EuiUserRight` object typically contains an `id` property, and may\n * also include a `permissions` property which is an array of strings.\n *\n * @example\n * // Example of accessing user rights within a subclass or within the service\n * const currentRights = this.userRights;\n * currentRights.forEach(right => {\n * console.log(`Right ID: ${right.id}, Permissions: ${right.permissions.join(', ')}`);\n * });\n *\n * @protected\n */\n protected get userRights(): EuiUserRight[] {\n return this.stateInstance;\n }\n\n /**\n * Retrieves the current state of user rights by subscribing to changes.\n * This method is used to access the current state of user rights in the service. It returns an Observable\n * that emits the current user rights. The method is generic and can be parameterized to return a specific\n * type that extends from `EuiUserRight[]`.\n *\n * @template K - The type of the user rights state to be returned. Defaults to `EuiUserRight[]` if not specified.\n *\n * @returns {Observable<K>} An Observable that emits the current state of user rights.\n * The type of the emitted value is `K`, which is `EuiUserRight[]` by default.\n *\n * @example\n * // Example of subscribing to the user rights state\n * permissionService.getState().subscribe(currentRights => {\n * console.log('Current User Rights:', currentRights);\n * });\n *\n * // Example with a specific type\n * permissionService.getState<CustomUserRightType[]>().subscribe(customRights => {\n * console.log('Custom User Rights:', customRights);\n * });\n */\n getState<K = EuiUserRight[]>(): Observable<K> {\n const getUserState = (state: CoreState): UserState => state.user;\n const getUserRights: Selector<CoreState, EuiUserRight[]> = createSelector(getUserState, (state: UserState) => state.rights);\n\n return this.store.select(getUserRights);\n }\n\n /**\n * Updates the state of the service with a new set of user rights.\n * This method is used to modify the current user rights in the service. It takes an array of `EuiUserRight`\n * objects and updates the service's state. This change is then propagated to all subscribers of the state.\n *\n * @param {EuiUserRight[]} rights - An array of `EuiUserRight` objects to update the service's state with.\n * Each `EuiUserRight` object should contain an `id` property,\n * and optionally a `permissions` property which is an array of strings.\n *\n * @example\n * // Example of updating the service's state with new user rights\n * const newUserRights = [\n * { id: 'USER', permissions: ['READ', 'COMMENT'] },\n * { id: 'MODERATOR', permissions: ['READ', 'WRITE', 'DELETE'] }\n * ];\n * permissionService.updateState(newUserRights);\n */\n updateState(rights: EuiUserRight[]): void {\n this.store.updateState({ user: { rights: rights || [] } });\n }\n\n /**\n * Checks if the user has the specified attribute permission.\n * This method interprets a string that represents a combination of rights and/or permissions\n * and determines whether the user has the specified permissions. The string format can be\n * 'RIGHT.PERMISSION' or just 'RIGHT'. For multiple rights, it can be 'RIGHT1.RIGHT2.PERMISSION'.\n *\n * @param {string} rightsAndPermission - A string representing the rights and/or permissions to check.\n * Format can be 'RIGHT', 'RIGHT.PERMISSION', or 'RIGHT1.RIGHT2.PERMISSION'.\n *\n * @returns {boolean} True if the user has the specified attribute permission, false otherwise.\n *\n * @example\n * // Check a single right\n * const hasRight = permissionService.checkAttributePermission('VIEW');\n *\n * // Check a right with a specific permission\n * const hasRightWithPermission = permissionService.checkAttributePermission('EDIT.APPROVE');\n *\n * // Check multiple rights with a specific permission\n * const hasMultipleRights = permissionService.checkAttributePermission('ADMIN.VIEW.APPROVE');\n */\n checkAttributePermission(rightsAndPermission: string): boolean {\n const permProps = rightsAndPermission.split('.');\n const rightId = permProps[0];\n const hasRight = this.checkRight(rightId);\n\n if (hasRight) {\n if (permProps.length === 2) {\n // in case of 'RIGHT.PERMISSION'\n const permission = permProps[1];\n return this.checkPermission(rightId, permission);\n } else if (permProps.length > 2) {\n // in case of 'RIGHT1.RIGHT2.....PERMISSION' string call recursively\n return this.checkAttributePermission(rightsAndPermission.slice(rightId.length + 1));\n }\n }\n\n return hasRight;\n }\n\n /**\n * Checks if the user has a specific right.\n * This method determines whether the user possesses a particular right identified by its ID.\n *\n * @param {string} rightId - The ID of the right to check.\n *\n * @returns {boolean} True if the user has the specified right, false otherwise.\n *\n * @example\n * // Check if the user has the 'ADMIN' right\n * const isAdmin = permissionService.checkRight('ADMIN');\n */\n checkRight(rightId: string): boolean {\n return this.userRights.some((right) => right && right.id === rightId);\n }\n\n /**\n * Checks if the user has a specific permission within a right.\n * This method determines whether the user has a specific permission associated with a given right.\n *\n * @param {string} rightId - The ID of the right.\n * @param {string} permission - The permission to check within the right.\n *\n * @returns {boolean} True if the user has the specified permission in the given right, false otherwise.\n *\n * @example\n * // Check if the user has 'APPROVE' permission in the 'EDIT' right\n * const canApproveEdit = permissionService.checkPermission('EDIT', 'APPROVE');\n */\n checkPermission(rightId: string, permission: string): boolean {\n // the user has to have that right and that right has to have the given permission\n return this.userRights.some(\n (right) => right && right.id === rightId && right.permissions && right.permissions.includes(permission),\n );\n }\n\n /**\n * Checks if the user has all the specified rights.\n * This private method determines whether the user possesses all the rights provided in the array.\n * Each right in the array is checked against the user's current rights.\n *\n * @param {EuiUserRight[]} rights - An array of rights to check against the user's rights.\n *\n * @returns {boolean} True if the user has all the specified rights, false otherwise.\n *\n * @example\n * // Example usage within the service\n * const requiredRights = [{ id: 'VIEW' }, { id: 'EDIT' }];\n * const hasAllRequiredRights = this.haveAllRights(requiredRights);\n *\n * @private\n */\n private haveAllRights(rights: EuiUserRight[]): boolean {\n if (!isDefined(rights)) {\n throw Error('The rights should be an array but instead it\\'s not defined!');\n }\n\n return rights.every((right: EuiUserRight) => this.userRights.find((uRight: EuiUserRight) => uRight.id === right.id));\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { getUserState, EuiMenuItem } from '@eui/base';\nimport { EuiPermissionService } from '../permission/permission.service';\nimport { StoreService } from '../store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiDynamicMenuService {\n menuLinks: Array<EuiMenuItem> = [];\n private euiPermission = inject(EuiPermissionService);\n private store = inject(StoreService);\n\n // TODO: it should be moved euiService, or it should be static\n // TODO: can we moved that service inside the module of the component that's using it?\n constructor() {\n this.store.select(getUserState).subscribe((user) => {\n if (user?.menuLinks) {\n this.menuLinks = user.menuLinks;\n }\n });\n }\n\n getMenuLinks(): EuiMenuItem[] {\n return this.menuLinks;\n }\n\n filterEuiMenuItemsWithRights(links: Array<EuiMenuItem>): Array<EuiMenuItem> {\n return links.filter((link) => {\n if (link.children != null) {\n link.children = this.filterEuiMenuItemsWithRights(link.children);\n }\n\n // First check if the user is denied access:\n if (link.deniedRightId) {\n if (this.euiPermission.checkRight(link.deniedRightId)) {\n return false;\n }\n }\n if (link.deniedRightIds) {\n for (const deniedRightId of link.deniedRightIds) {\n if (this.euiPermission.checkRight(deniedRightId)) {\n return false;\n }\n }\n }\n\n // Then check if the user needs to be allowed access explicitly:\n if (link.allowedRightId) {\n return this.euiPermission.checkRight(link.allowedRightId);\n }\n if (link.allowedRightIds) {\n for (const allowedRightId of link.allowedRightIds) {\n if (this.euiPermission.checkRight(allowedRightId)) {\n return true;\n }\n }\n // User doesn't have one of the allowed rights. Deny access:\n return false;\n }\n\n // Access to the menu item is not denied, therefore allow it:\n return true;\n });\n }\n}\n","// TODO: Do we need that service anymore? Can we remove it?\n\nimport { ApplicationRef, ComponentRef, ElementRef, Injectable, InjectionToken, Injector, inject } from '@angular/core';\nimport { ComponentPortal, DomPortalOutlet, ComponentType } from '@angular/cdk/portal';\n\nexport const DYNAMIC_COMPONENT_CONFIG = new InjectionToken<object>('DYNAMIC_COMPONENT_CONFIG');\n\n@Injectable()\nexport class EuiDynamicComponentService {\n private injector = inject(Injector);\n private appRef = inject(ApplicationRef);\n\n private portalHost: DomPortalOutlet;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private portal: ComponentPortal<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private portalComponentInstance: ComponentRef<any>;\n\n /**\n * Adds a component to portal host dynamically\n * @param component The component to be injected\n * @param el The element reference for the component to be injected\n * @param config The data to be passed (config) for the DYNAMIC_COMPONENT_CONFIG token\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public add<T>(component: ComponentType<T>, el?: ElementRef, config?: any): any {\n // TODO: take a look and replace deprecated componentFactoryResolver https://github.com/angular/components/issues/24334\n // Create a portalHost from a DOM element\n this.portalHost = new DomPortalOutlet(\n el ? el.nativeElement : document.body,\n this.appRef,\n );\n\n // Locate the component factory for the ComponentToIncludeDynamicallyComponent\n this.portal = new ComponentPortal<T>(component, null, config ? this.createInjector(config) : null);\n\n // Attach portal to host\n this.portalComponentInstance = this.portalHost.attach(this.portal);\n\n if (config) {\n Object.assign(config, {\n portalHostRef: this.portalHost,\n portalRef: this.portal,\n portalComponentInstanceRef: this.portalComponentInstance,\n });\n }\n\n return {\n portalHost: this.portalHost,\n portal: this.portal,\n portalComponentInstance: this.portalComponentInstance,\n };\n }\n\n /**\n * detaches a portalHost\n * @param portalHostRef reference of portal host to be detached\n */\n public remove(portalHostRef: DomPortalOutlet): void {\n portalHostRef.detach();\n\n this.portalHost = null;\n this.portal = null;\n this.portalComponentInstance = null;\n }\n\n /**\n * creates a custom injector to be used when providing custom injection tokens to components inside a portal\n * @param data to be used by DYNAMIC_COMPONENT_CONFIG token\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private createInjector(data: any): Injector {\n return Injector.create({\n providers: [{ provide: DYNAMIC_COMPONENT_CONFIG, useValue: data }],\n parent: this.injector,\n });\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, defer, firstValueFrom, Observable } from 'rxjs';\nimport { EuiEuLanguages, GlobalConfig, getActiveLang, EuiLanguage, EuiMenuItem } from '@eui/base';\nimport { GLOBAL_CONFIG_TOKEN } from './config/tokens';\nimport { I18nService } from './i18n';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { StoreService } from './store/store.service';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { isEqual, get } from 'lodash-es';\nimport { CssUtils } from '../helpers/css-utils';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface UIState<BP = any, DI = any, AMD =any, BPV = any> {\n // app state\n appName?: string;\n appShortName?: string;\n appSubTitle?: string;\n appBaseFontSize?: string;\n\n // Sidebar state\n isSidebarOpen?: boolean;\n isSidebarActive?: boolean;\n hasSidebar?: boolean;\n hasBreadcrumb?: boolean;\n hasHeader?: boolean;\n hasHeaderLogo?: boolean;\n hasHeaderEnvironment?: boolean;\n hasToolbar?: boolean;\n hasToolbarMegaMenu?: boolean;\n hasToolbarMenu?: boolean;\n environmentValue?: string;\n isSidebarHidden?: boolean;\n isSidebarFocused?: boolean;\n hasSidebarCollapsedVariant?: boolean;\n hasTopMessage?: boolean;\n\n // window state\n windowWidth?: number;\n windowHeight?: number;\n mainContentHeight?: number;\n pageHeaderHeight?: number;\n breakpoint?: string;\n wrapperClasses?: string;\n breakpoints?: BP;\n breakpointValues?: BPV;\n\n // navigation state\n menuLinks?: EuiMenuItem[];\n sidebarLinks?: EuiMenuItem[];\n combinedLinks?: EuiMenuItem[];\n\n // other states\n isBlockDocumentActive?: boolean;\n\n // device info\n deviceInfo: DI;\n\n // language infos\n activeLanguage: string;\n languages: (string | EuiLanguage)[];\n\n // app metadata\n appMetadata: AMD;\n\n // various dynamic state\n hasModalActive?: boolean;\n isDimmerActive?: boolean; // Usage: map to eui base directive input coerce euiHighlighted\n}\n\nconst initialState: UIState = {\n appName: '',\n appShortName: '',\n appSubTitle: '',\n appBaseFontSize: '',\n\n isSidebarOpen: true,\n isSidebarActive: false,\n hasSidebar: false,\n hasHeader: false,\n hasBreadcrumb: false,\n hasHeaderLogo: false,\n hasHeaderEnvironment: false,\n hasToolbar: false,\n hasToolbarMegaMenu: false,\n hasToolbarMenu: false,\n environmentValue: '',\n isSidebarHidden: false,\n isSidebarFocused: false,\n hasSidebarCollapsedVariant: false,\n hasTopMessage: false,\n windowWidth: 0,\n windowHeight: 0,\n mainContentHeight: 0,\n pageHeaderHeight: 0,\n wrapperClasses: '',\n breakpoint: '',\n breakpoints: {\n isMobile: false,\n isTablet: false,\n isLtLargeTablet: false,\n isLtDesktop: false,\n isDesktop: false,\n isXL: false,\n isXXL: false,\n isFHD: false,\n is2K: false,\n is4K: false,\n },\n breakpointValues: [],\n menuLinks: [],\n sidebarLinks: [],\n combinedLinks: [],\n isBlockDocumentActive: false,\n deviceInfo: null,\n activeLanguage: 'en',\n languages: EuiEuLanguages.getLanguages(),\n appMetadata: null,\n hasModalActive: false,\n isDimmerActive: false,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiAppShellService {\n navigationStartCustomHandler: () => void;\n navigationEndCustomHandler: () => void;\n protected config = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN, { optional: true });\n private http = inject(HttpClient);\n private platformId = inject(PLATFORM_ID);\n private document = inject<Document>(DOCUMENT);\n private router = inject(Router);\n private storeService = inject(StoreService);\n private i18nService = inject(I18nService, { optional: true });\n\n // -------------------\n get state$(): Observable<UIState> {\n return this._state$.asObservable();\n }\n\n // -------------------\n // exposed observables\n\n get breakpoint$(): Observable<string> {\n return this._breakpoint$.asObservable();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get breakpoints$(): Observable<any> {\n return this._breakpoints$.asObservable();\n }\n\n // ----------------\n // state operations\n // ----------------\n get state(): UIState {\n return this._state$.getValue();\n }\n\n // ----------------------------\n // public setters and functions\n // ----------------------------\n set isSidebarOpen(isOpen: boolean) {\n this.setState({\n ...this.state,\n isSidebarOpen: isOpen,\n });\n }\n\n get isSidebarOpen(): boolean {\n return this.state.isSidebarOpen;\n }\n\n set isSidebarActive(isActive: boolean) {\n this.setState({\n ...this.state,\n isSidebarActive: isActive,\n });\n }\n\n set sidebarLinks(links: EuiMenuItem[]) {\n this.setState({\n ...this.state,\n sidebarLinks: links,\n });\n }\n\n set hasSidebarCollapsedVariant(isActive: boolean) {\n this.setState({\n ...this.state,\n hasSidebarCollapsedVariant: isActive,\n });\n CssUtils.activateSidebarCssVars(this.document, this.platformId, isActive);\n }\n\n set menuLinks(links: EuiMenuItem[]) {\n this.setState({\n ...this.state,\n menuLinks: links,\n });\n }\n\n set isBlockDocumentActive(isActive: boolean) {\n this.setState({\n ...this.state,\n isBlockDocumentActive: isActive,\n });\n }\n\n get hasHeader(): boolean {\n return this.state.hasHeader;\n }\n\n // Edit mode\n get isDimmerActive(): boolean {\n return this.state.isDimmerActive;\n }\n\n set isDimmerActive(isActive: boolean) {\n this.setState({\n ...this.state,\n isDimmerActive: isActive,\n });\n }\n\n private _state$: BehaviorSubject<UIState>;\n private _breakpoint$: BehaviorSubject<string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _breakpoints$: BehaviorSubject<any>;\n\n constructor() {\n const config = this.config;\n\n let stateWithConfig = initialState;\n const languages = config?.i18n?.i18nService?.languages || initialState.languages;\n const defaultLanguage = config?.i18n?.i18nService?.defaultLanguage || initialState.activeLanguage;\n stateWithConfig = {\n ...stateWithConfig,\n ...{\n languages,\n activeLanguage: defaultLanguage,\n },\n };\n this._state$ = new BehaviorSubject(stateWithConfig);\n this._breakpoint$ = new BehaviorSubject('');\n this._breakpoints$ = new BehaviorSubject({});\n this.bindActiveLanguageToAppShellState();\n }\n\n setState(nextState: UIState, updateI18 = true): void {\n let breakpoint, breakpoints;\n let combinedLinks;\n\n const state = this.state;\n\n // check if window width has been updated from previous state\n if (this.state.windowWidth !== nextState.windowWidth) {\n breakpoint = this.getBreakpoint(nextState.windowWidth);\n breakpoints = this.getBreakpoints(breakpoint);\n\n this._breakpoint$.next(breakpoint);\n this._breakpoints$.next(breakpoints);\n\n // if not propagate the old ones without doing any calculations\n } else {\n breakpoint = state.breakpoint;\n breakpoints = state.breakpoints;\n }\n\n // finally get the wrapper classes when both the state and breakpoint are known\n const wrapperClasses = this.getWrapperClasses(nextState, breakpoint);\n\n // check if the menuLinks or sidebarLinks have changed from previous state\n if (this.state.menuLinks !== nextState.menuLinks || this.state.sidebarLinks !== nextState.sidebarLinks) {\n combinedLinks = [...nextState.menuLinks, ...nextState.sidebarLinks];\n } else {\n combinedLinks = this.state.combinedLinks;\n }\n\n const stateBeforeUpdate = { ...this.state };\n\n // we put it all together with the calculated properties\n this._state$.next({\n ...nextState,\n wrapperClasses,\n breakpoint,\n breakpoints,\n combinedLinks,\n });\n\n // update the Store Language\n if (updateI18 && nextState.activeLanguage !== stateBeforeUpdate.activeLanguage) {\n this.i18nService.updateState({ activeLang: nextState.activeLanguage });\n }\n }\n\n /**\n * Emits a slice from the state whether that changes\n *\n * @param key can be 'key' or 'key.sub.sub'\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getState<T = any>(key?: string): Observable<T> {\n return defer(() =>\n // check if key exists\n key\n ? this.state$.pipe(\n map((state) => get(state, key)),\n // filter((state) => state),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n )\n : this.state$,\n );\n }\n\n public sidebarToggle(): void {\n this.isSidebarOpen = !this.state.isSidebarOpen;\n }\n\n // Edit mode\n public dimmerActiveToggle(): void {\n const isActive = this.isDimmerActive;\n this.setState({\n ...this.state,\n isDimmerActive: !isActive,\n });\n CssUtils.activateEditModeCssVars(!isActive, this.document);\n }\n\n public setDimmerActiveState(activeState: boolean): void {\n this.setState({\n ...this.state,\n isDimmerActive: activeState,\n });\n CssUtils.activateEditModeCssVars(activeState, this.document);\n }\n\n // --------------\n // public methods\n // --------------\n public fetchAppMetadata(metadataFilePath = 'assets/app-metadata.json'): void {\n this.getJson(metadataFilePath).then((data) => {\n this.setState({\n ...this.state,\n appMetadata: data,\n });\n });\n }\n\n public activateSidebar(): void {\n this.setState({\n ...this.state,\n hasSidebar: true,\n });\n\n if (!this.state.isSidebarHidden) {\n CssUtils.activateSidebarCssVars(this.document, this.platformId, this.state.hasSidebarCollapsedVariant);\n }\n }\n\n public activateSidebarHeader(): void {\n CssUtils.activateSidebarHeaderCssVars(this.document, this.platformId);\n }\n\n public activateSidebarFooter(): void {\n CssUtils.activateSidebarFooterCssVars(this.document, this.platformId);\n }\n\n public activateHeader(): void {\n this.setState({\n ...this.state,\n hasHeader: true,\n });\n CssUtils.activateHeaderCssVars(this.document, this.platformId);\n }\n\n public activateBreadcrumb(): void {\n this.setState({\n ...this.state,\n hasBreadcrumb: true,\n });\n CssUtils.activateBreadcrumbCssVars(this.document, this.platformId);\n }\n\n public activateTopMessage(height: number): void {\n this.setState({\n ...this.state,\n hasTopMessage: true,\n });\n CssUtils.activateTopMessageCssVars(height, this.document);\n }\n\n public activateToolbar(): void {\n this.setState({\n ...this.state,\n hasToolbar: true,\n });\n CssUtils.activateToolbarCssVars(this.document, this.platformId);\n }\n\n public activateToolbarMegaMenu(): void {\n this.setState({\n ...this.state,\n hasToolbarMegaMenu: true,\n });\n CssUtils.activateToolbarMegaMenuCssVars(this.document, this.platformId);\n }\n\n public activateToolbarMenu(): void {\n this.setState({\n ...this.state,\n hasToolbarMenu: true,\n });\n }\n\n /**\n * Returns the current value of --eui-f-size-base CSS variable\n */\n public getBaseFontSize(): string {\n return this.state.appBaseFontSize || CssUtils.getCssVarValue('--eui-f-size-base', this.document, this.platformId);\n }\n\n /**\n * Updates the current value of --eui-f-size-base CSS variable and the UIState appBaseFontSize\n */\n public setBaseFontSize(newsize: string): void {\n this.setState(\n {\n ...this.state,\n appBaseFontSize: newsize,\n },\n false,\n );\n CssUtils.setCssVarValue('--eui-f-size-base', newsize, this.document);\n }\n\n // ---------------\n // private getters\n // ---------------\n private getWrapperClasses(state: UIState, breakpoint: string): string {\n const classes: string[] = [];\n\n classes.push(breakpoint);\n\n if (state.hasSidebar) {\n if (state.isSidebarHidden) {\n classes.push('sidebar--hidden');\n }\n if (state.isSidebarOpen) {\n classes.push('sidebar--open');\n } else {\n classes.push('sidebar--close');\n }\n }\n if (state.deviceInfo?.isFF) {\n classes.push('ff');\n }\n if (state.deviceInfo?.isIE) {\n classes.push('ie');\n }\n if (state.deviceInfo?.isChrome) {\n classes.push('chrome');\n }\n return classes.join(' ');\n }\n\n private getBreakpoint(windowWidth: number): string {\n let bkp = '';\n\n if (this.state.breakpointValues.length === 0) {\n this.setState({\n ...this.state,\n breakpointValues: CssUtils.getBreakpointValues(this.document, this.platformId),\n });\n }\n\n this.state.breakpointValues.forEach((b, i) => {\n if (i < this.state.breakpointValues.length) {\n if (windowWidth >= b.value && windowWidth < this.state.breakpointValues[i+1]?.value) {\n bkp = b.bkp;\n }\n } else if(windowWidth >= b.value) {\n bkp = b.bkp;\n }\n });\n\n return bkp;\n }\n\n private getBreakpoints(bkp: string): object {\n return {\n isMobile: bkp === 'xs' || bkp === 'sm',\n isTablet: bkp === 'md',\n isLtLargeTablet: bkp === 'xs' || bkp === 'sm' || bkp === 'md' || bkp === 'lg',\n isLtDesktop: bkp === 'xs' || bkp === 'sm' || bkp === 'md' || bkp === 'lg' || bkp === 'xl',\n isDesktop: bkp === 'xxl',\n isXL: bkp === 'xl',\n isXXL: bkp === 'xxl',\n isFHD: bkp === 'fhd',\n is2K: bkp === '2k',\n is4K: bkp === '4k',\n };\n }\n\n private getJson(url: string): Promise<object> {\n return firstValueFrom(this.http.get(url)).then(this.extractData).catch(this.handleError);\n }\n\n private extractData(res: Response): object {\n const body = res;\n return body || {};\n }\n\n private handleError<T extends Error>(error: T): Promise<T> {\n console.error('An error occurred', error);\n return Promise.reject(error.message || error);\n }\n\n private bindActiveLanguageToAppShellState(): void {\n this.i18nService.getState((s) => s.activeLang).subscribe((activeLang) => {\n if (activeLang !== this.state.activeLanguage) {\n this.setState(\n {\n ...this.state,\n activeLanguage: activeLang,\n },\n false,\n );\n }\n });\n }\n}\n","/* eslint-disable */\n\nimport { Injectable } from '@angular/core';\n\nexport const EUI_COUNTRIES = {\n AF: 'Afghanistan',\n AX: 'Aland Islands',\n AL: 'Albania',\n DZ: 'Algeria',\n AS: 'American Samoa',\n AD: 'Andorra',\n AO: 'Angola',\n AI: 'Anguilla',\n AQ: 'Antarctica',\n AG: 'Antigua and Barbuda',\n AR: 'Argentina',\n AM: 'Armenia',\n AW: 'Aruba',\n AU: 'Australia',\n AT: 'Austria',\n AZ: 'Azerbaijan',\n BS: 'Bahamas',\n BH: 'Bahrain',\n BD: 'Bangladesh',\n BB: 'Barbados',\n BY: 'Belarus',\n BE: 'Belgium',\n BZ: 'Belize',\n BJ: 'Benin',\n BM: 'Bermuda',\n BT: 'Bhutan',\n BO: 'Bolivia',\n BA: 'Bosnia and Herzegovina',\n BW: 'Botswana',\n BV: 'Bouvet Island',\n BR: 'Brazil',\n VG: 'British Virgin Islands',\n IO: 'British Indian Ocean Territory',\n BN: 'Brunei Darussalam',\n BG: 'Bulgaria',\n BF: 'Burkina Faso',\n BI: 'Burundi',\n KH: 'Cambodia',\n CM: 'Cameroon',\n CA: 'Canada',\n CV: 'Cape Verde',\n KY: 'Cayman Islands',\n CF: 'Central African Republic',\n TD: 'Chad',\n CL: 'Chile',\n CN: 'China',\n HK: 'Hong Kong',\n MO: 'Macao',\n CX: 'Christmas Island',\n CC: 'Cocos (Keeling) Islands',\n CO: 'Colombia',\n KM: 'Comoros',\n CG: 'Congo (Brazzaville)',\n CD: 'Congo, (Kinshasa)',\n CK: 'Cook Islands',\n CR: 'Costa Rica',\n CI: \"Côte d'Ivoire\",\n HR: 'Croatia',\n CU: 'Cuba',\n CY: 'Cyprus',\n CZ: 'Czech Republic',\n DK: 'Denmark',\n DJ: 'Djibouti',\n DM: 'Dominica',\n DO: 'Dominican Republic',\n EC: 'Ecuador',\n EG: 'Egypt',\n SV: 'El Salvador',\n GQ: 'Equatorial Guinea',\n ER: 'Eritrea',\n EE: 'Estonia',\n ET: 'Ethiopia',\n FK: 'Falkland Islands (Malvinas)',\n FO: 'Faroe Islands',\n FJ: 'Fiji',\n FI: 'Finland',\n FR: 'France',\n GF: 'French Guiana',\n PF: 'French Polynesia',\n TF: 'French Southern Territories',\n GA: 'Gabon',\n GM: 'Gambia',\n GE: 'Georgia',\n DE: 'Germany',\n GH: 'Ghana',\n GI: 'Gibraltar',\n GR: 'Greece',\n GL: 'Greenland',\n GD: 'Grenada',\n GP: 'Guadeloupe',\n GU: 'Guam',\n GT: 'Guatemala',\n GG: 'Guernsey',\n GN: 'Guinea',\n GW: 'Guinea-Bissau',\n GY: 'Guyana',\n HT: 'Haiti',\n HM: 'Heard and Mcdonald Islands',\n VA: 'Vatican City State',\n HN: 'Honduras',\n HU: 'Hungary',\n IS: 'Iceland',\n IN: 'India',\n ID: 'Indonesia',\n IR: 'Iran',\n IQ: 'Iraq',\n IE: 'Ireland',\n IM: 'Isle of Man',\n IL: 'Israel',\n IT: 'Italy',\n JM: 'Jamaica',\n JP: 'Japan',\n JE: 'Jersey',\n JO: 'Jordan',\n KZ: 'Kazakhstan',\n KE: 'Kenya',\n KI: 'Kiribati',\n KP: 'Korea (North)',\n KR: 'Korea (South)',\n KW: 'Kuwait',\n KG: 'Kyrgyzstan',\n LA: 'Lao PDR',\n LV: 'Latvia',\n LB: 'Lebanon',\n LS: 'Lesotho',\n LR: 'Liberia',\n LY: 'Libya',\n LI: 'Liechtenstein',\n LT: 'Lithuania',\n LU: 'Luxembourg',\n MK: 'Macedonia',\n MG: 'Madagascar',\n MW: 'Malawi',\n MY: 'Malaysia',\n MV: 'Maldives',\n ML: 'Mali',\n MT: 'Malta',\n MH: 'Marshall Islands',\n MQ: 'Martinique',\n MR: 'Mauritania',\n MU: 'Mauritius',\n YT: 'Mayotte',\n MX: 'Mexico',\n FM: 'Micronesia',\n MD: 'Moldova',\n MC: 'Monaco',\n MN: 'Mongolia',\n ME: 'Montenegro',\n MS: 'Montserrat',\n MA: 'Morocco',\n MZ: 'Mozambique',\n MM: 'Myanmar',\n NA: 'Namibia',\n NR: 'Nauru',\n NP: 'Nepal',\n NL: 'Netherlands',\n AN: 'Netherlands Antilles',\n NC: 'New Caledonia',\n NZ: 'New Zealand',\n NI: 'Nicaragua',\n NE: 'Niger',\n NG: 'Nigeria',\n NU: 'Niue',\n NF: 'Norfolk Island',\n MP: 'Northern Mariana Islands',\n NO: 'Norway',\n OM: 'Oman',\n PK: 'Pakistan',\n PW: 'Palau',\n PS: 'Palestinian Territory',\n PA: 'Panama',\n PG: 'Papua New Guinea',\n PY: 'Paraguay',\n PE: 'Peru',\n PH: 'Philippines',\n PN: 'Pitcairn',\n PL: 'Poland',\n PT: 'Portugal',\n PR: 'Puerto Rico',\n QA: 'Qatar',\n RE: 'Réunion',\n RO: 'Romania',\n RU: 'Russian Federation',\n RW: 'Rwanda',\n BL: 'Saint-Barthélemy',\n SH: 'Saint Helena',\n KN: 'Saint Kitts and Nevis',\n LC: 'Saint Lucia',\n MF: 'Saint-Martin (French part)',\n PM: 'Saint Pierre and Miquelon',\n VC: 'Saint Vincent and Grenadines',\n WS: 'Samoa',\n SM: 'San Marino',\n ST: 'Sao Tome and Principe',\n SA: 'Saudi Arabia',\n SN: 'Senegal',\n RS: 'Serbia',\n SC: 'Seychelles',\n SL: 'Sierra Leone',\n SG: 'Singapore',\n SK: 'Slovakia',\n SI: 'Slovenia',\n SB: 'Solomon Islands',\n SO: 'Somalia',\n ZA: 'South Africa',\n GS: 'South Georgia and the South Sandwich Islands',\n SS: 'South Sudan',\n ES: 'Spain',\n LK: 'Sri Lanka',\n SD: 'Sudan',\n SR: 'Suriname',\n SJ: 'Svalbard and Jan Mayen Islands',\n SZ: 'Swaziland',\n SE: 'Sweden',\n CH: 'Switzerland',\n SY: 'Syria',\n TW: 'Taiwan',\n TJ: 'Tajikistan',\n TZ: 'Tanzania',\n TH: 'Thailand',\n TL: 'Timor-Leste',\n TG: 'Togo',\n TK: 'Tokelau',\n TO: 'Tonga',\n TT: 'Trinidad and Tobago',\n TN: 'Tunisia',\n TR: 'Turkey',\n TM: 'Turkmenistan',\n TC: 'Turks and Caicos Islands',\n TV: 'Tuvalu',\n UG: 'Uganda',\n UA: 'Ukraine',\n AE: 'United Arab Emirates',\n GB: 'United Kingdom (GB)',\n US: 'United States of America (USA)',\n UM: 'US Minor Outlying Islands',\n UY: 'Uruguay',\n UZ: 'Uzbekistan',\n VU: 'Vanuatu',\n VE: 'Venezuela',\n VN: 'Viet Nam',\n VI: 'Virgin Islands, US',\n WF: 'Wallis and Futuna Islands',\n EH: 'Western Sahara',\n YE: 'Yemen',\n ZM: 'Zambia',\n ZW: 'Zimbabwe',\n};\n\nexport interface EuiTimeZone {\n name: string;\n desc: string;\n}\n\nexport const EUI_TIMEZONES: EuiTimeZone[] = [\n { name: 'Europe/Andorra', desc: 'Andorra - Andorra (GMT+02:00)' },\n { name: 'Asia/Dubai', desc: 'United Arab Emirates - Dubai (GMT+04:00)' },\n { name: 'Asia/Kabul', desc: 'Afghanistan - Kabul (GMT+04:30)' },\n { name: 'America/Antigua', desc: 'Antigua and Barbuda - Antigua (GMT-04:00)' },\n { name: 'America/Anguilla', desc: 'Anguilla - Anguilla (GMT-04:00)' },\n { name: 'Europe/Tirane', desc: 'Albania - Tirane (GMT+02:00)' },\n { name: 'Asia/Yerevan', desc: 'Armenia - Yerevan (GMT+04:00)' },\n { name: 'Africa/Luanda', desc: 'Angola - Luanda (GMT+01:00)' },\n { name: 'Antarctica/McMurdo', desc: 'Antarctica - McMurdo (GMT+12:00)' },\n { name: 'Antarctica/Rothera', desc: 'Antarctica - Rothera (GMT-03:00)' },\n { name: 'Antarctica/Palmer', desc: 'Antarctica - Palmer (GMT-03:00)' },\n { name: 'Antarctica/Mawson', desc: 'Antarctica - Mawson (GMT+05:00)' },\n { name: 'Antarctica/Davis', desc: 'Antarctica - Davis (GMT+07:00)' },\n { name: 'Antarctica/Casey', desc: 'Antarctica - Casey (GMT+08:00)' },\n { name: 'Antarctica/Vostok', desc: 'Antarctica - Vostok (GMT+06:00)' },\n { name: 'Antarctica/DumontDUrville', desc: 'Antarctica - DumontDUrville (GMT+10:00)' },\n { name: 'Antarctica/Syowa', desc: 'Antarctica - Syowa (GMT+03:00)' },\n { name: 'Antarctica/Troll', desc: 'Antarctica - Troll (GMT+02:00)' },\n { name: 'America/Argentina/Buenos_Aires', desc: 'Argentina - Buenos Aires (GMT-03:00)' },\n { name: 'America/Argentina/Cordoba', desc: 'Argentina - Cordoba (GMT-03:00)' },\n { name: 'America/Argentina/Salta', desc: 'Argentina - Salta (GMT-03:00)' },\n { name: 'America/Argentina/Jujuy', desc: 'Argentina - Jujuy (GMT-03:00)' },\n { name: 'America/Argentina/Tucuman', desc: 'Argentina - Tucuman (GMT-03:00)' },\n { name: 'America/Argentina/Catamarca', desc: 'Argentina - Catamarca (GMT-03:00)' },\n { name: 'America/Argentina/La_Rioja', desc: 'Argentina - La Rioja (GMT-03:00)' },\n { name: 'America/Argentina/San_Juan', desc: 'Argentina - San Juan (GMT-03:00)' },\n { name: 'America/Argentina/Mendoza', desc: 'Argentina - Mendoza (GMT-03:00)' },\n { name: 'America/Argentina/San_Luis', desc: 'Argentina - San Luis (GMT-03:00)' },\n { name: 'America/Argentina/Rio_Gallegos', desc: 'Argentina - Rio Gallegos (GMT-03:00)' },\n { name: 'America/Argentina/Ushuaia', desc: 'Argentina - Ushuaia (GMT-03:00)' },\n { name: 'Pacific/Pago_Pago', desc: 'American Samoa - Pago Pago (GMT-11:00)' },\n { name: 'Pacific/Samoa', desc: 'American Samoa - Samoa (GMT-11:00)' },\n { name: 'Europe/Vienna', desc: 'Austria - Vienna (GMT+02:00)' },\n { name: 'Australia/Lord_Howe', desc: 'Australia - Lord Howe (GMT+10:30)' },\n { name: 'Antarctica/Macquarie', desc: 'Australia - Macquarie (GMT+11:00)' },\n { name: 'Australia/Hobart', desc: 'Australia - Hobart (GMT+10:00)' },\n { name: 'Australia/Currie', desc: 'Australia - Currie (GMT+10:00)' },\n { name: 'Australia/Melbourne', desc: 'Australia - Melbourne (GMT+10:00)' },\n { name: 'Australia/Sydney', desc: 'Australia - Sydney (GMT+10:00)' },\n { name: 'Australia/Broken_Hill', desc: 'Australia - Broken Hill (GMT+09:30)' },\n { name: 'Australia/Brisbane', desc: 'Australia - Brisbane (GMT+10:00)' },\n { name: 'Australia/Lindeman', desc: 'Australia - Lindeman (GMT+10:00)' },\n { name: 'Australia/Adelaide', desc: 'Australia - Adelaide (GMT+09:30)' },\n { name: 'Australia/Darwin', desc: 'Australia - Darwin (GMT+09:30)' },\n { name: 'Australia/Perth', desc: 'Australia - Perth (GMT+08:00)' },\n { name: 'Australia/Eucla', desc: 'Australia - Eucla (GMT+08:45)' },\n { name: 'Australia/Canberra', desc: 'Australia - Canberra (GMT+10:00)' },\n { name: 'Australia/Queensland', desc: 'Australia - Queensland (GMT+10:00)' },\n { name: 'Australia/Tasmania', desc: 'Australia - Tasmania (GMT+10:00)' },\n { name: 'Australia/Victoria', desc: 'Australia - Victoria (GMT+10:00)' },\n { name: 'America/Aruba', desc: 'Aruba - Aruba (GMT-04:00)' },\n { name: 'Europe/Mariehamn', desc: 'Aland Islands - Mariehamn (GMT+03:00)' },\n { name: 'Asia/Baku', desc: 'Azerbaijan - Baku (GMT+04:00)' },\n { name: 'Europe/Sarajevo', desc: 'Bosnia and Herzegovina - Sarajevo (GMT+02:00)' },\n { name: 'America/Barbados', desc: 'Barbados - Barbados (GMT-04:00)' },\n { name: 'Asia/Dhaka', desc: 'Bangladesh - Dhaka (GMT+06:00)' },\n { name: 'Europe/Brussels', desc: 'Belgium - Brussels (GMT+02:00)' },\n { name: 'Africa/Ouagadougou', desc: 'Burkina Faso - Ouagadougou (GMT+00:00)' },\n { name: 'Europe/Sofia', desc: 'Bulgaria - Sofia (GMT+03:00)' },\n { name: 'Asia/Bahrain', desc: 'Bahrain - Bahrain (GMT+03:00)' },\n { name: 'Africa/Bujumbura', desc: 'Burundi - Bujumbura (GMT+02:00)' },\n { name: 'Africa/Porto-Novo', desc: 'Benin - Porto-Novo (GMT+01:00)' },\n { name: 'America/St_Barthelemy', desc: 'Saint-Barthélemy - St Barthelemy (GMT-04:00)' },\n { name: 'Atlantic/Bermuda', desc: 'Bermuda - Bermuda (GMT-03:00)' },\n { name: 'Asia/Brunei', desc: 'Brunei Darussalam - Brunei (GMT+08:00)' },\n { name: 'America/La_Paz', desc: 'Bolivia - La Paz (GMT-04:00)' },\n { name: 'America/Kralendijk', desc: 'BQ - Kralendijk (GMT-04:00)' },\n { name: 'America/Noronha', desc: 'Brazil - Noronha (GMT-02:00)' },\n { name: 'America/Belem', desc: 'Brazil - Belem (GMT-03:00)' },\n { name: 'America/Fortaleza', desc: 'Brazil - Fortaleza (GMT-03:00)' },\n { name: 'America/Recife', desc: 'Brazil - Recife (GMT-03:00)' },\n { name: 'America/Araguaina', desc: 'Brazil - Araguaina (GMT-03:00)' },\n { name: 'America/Maceio', desc: 'Brazil - Maceio (GMT-03:00)' },\n { name: 'America/Bahia', desc: 'Brazil - Bahia (GMT-03:00)' },\n { name: 'America/Sao_Paulo', desc: 'Brazil - Sao Paulo (GMT-03:00)' },\n { name: 'America/Campo_Grande', desc: 'Brazil - Campo Grande (GMT-04:00)' },\n { name: 'America/Cuiaba', desc: 'Brazil - Cuiaba (GMT-04:00)' },\n { name: 'America/Santarem', desc: 'Brazil - Santarem (GMT-03:00)' },\n { name: 'America/Porto_Velho', desc: 'Brazil - Porto Velho (GMT-04:00)' },\n { name: 'America/Boa_Vista', desc: 'Brazil - Boa Vista (GMT-04:00)' },\n { name: 'America/Manaus', desc: 'Brazil - Manaus (GMT-04:00)' },\n { name: 'America/Eirunepe', desc: 'Brazil - Eirunepe (GMT-05:00)' },\n { name: 'America/Rio_Branco', desc: 'Brazil - Rio Branco (GMT-05:00)' },\n { name: 'America/Nassau', desc: 'Bahamas - Nassau (GMT-04:00)' },\n { name: 'Asia/Thimphu', desc: 'Bhutan - Thimphu (GMT+06:00)' },\n { name: 'Africa/Gaborone', desc: 'Botswana - Gaborone (GMT+02:00)' },\n { name: 'Europe/Minsk', desc: 'Belarus - Minsk (GMT+03:00)' },\n { name: 'America/Belize', desc: 'Belize - Belize (GMT-06:00)' },\n { name: 'America/St_Johns', desc: 'Canada - St Johns (GMT-02:30)' },\n { name: 'America/Halifax', desc: 'Canada - Halifax (GMT-03:00)' },\n { name: 'America/Glace_Bay', desc: 'Canada - Glace Bay (GMT-03:00)' },\n { name: 'America/Moncton', desc: 'Canada - Moncton (GMT-03:00)' },\n { name: 'America/Goose_Bay', desc: 'Canada - Goose Bay (GMT-03:00)' },\n { name: 'America/Blanc-Sablon', desc: 'Canada - Blanc-Sablon (GMT-04:00)' },\n { name: 'America/Toronto', desc: 'Canada - Toronto (GMT-04:00)' },\n { name: 'America/Nipigon', desc: 'Canada - Nipigon (GMT-04:00)' },\n { name: 'America/Thunder_Bay', desc: 'Canada - Thunder Bay (GMT-04:00)' },\n { name: 'America/Iqaluit', desc: 'Canada - Iqaluit (GMT-04:00)' },\n { name: 'America/Pangnirtung', desc: 'Canada - Pangnirtung (GMT-04:00)' },\n { name: 'America/Resolute', desc: 'Canada - Resolute (GMT-05:00)' },\n { name: 'America/Atikokan', desc: 'Canada - Atikokan (GMT-05:00)' },\n { name: 'America/Rankin_Inlet', desc: 'Canada - Rankin Inlet (GMT-05:00)' },\n { name: 'America/Winnipeg', desc: 'Canada - Winnipeg (GMT-05:00)' },\n { name: 'America/Rainy_River', desc: 'Canada - Rainy River (GMT-05:00)' },\n { name: 'America/Regina', desc: 'Canada - Regina (GMT-06:00)' },\n { name: 'America/Swift_Current', desc: 'Canada - Swift Current (GMT-06:00)' },\n { name: 'America/Edmonton', desc: 'Canada - Edmonton (GMT-06:00)' },\n { name: 'America/Cambridge_Bay', desc: 'Canada - Cambridge Bay (GMT-06:00)' },\n { name: 'America/Yellowknife', desc: 'Canada - Yellowknife (GMT-06:00)' },\n { name: 'America/Inuvik', desc: 'Canada - Inuvik (GMT-06:00)' },\n { name: 'America/Creston', desc: 'Canada - Creston (GMT-07:00)' },\n { name: 'America/Dawson_Creek', desc: 'Canada - Dawson Creek (GMT-07:00)' },\n { name: 'America/Vancouver', desc: 'Canada - Vancouver (GMT-07:00)' },\n { name: 'America/Whitehorse', desc: 'Canada - Whitehorse (GMT-07:00)' },\n { name: 'America/Dawson', desc: 'Canada - Dawson (GMT-07:00)' },\n { name: 'America/Montreal', desc: 'Canada - Montreal (GMT-04:00)' },\n { name: 'Canada/Atlantic', desc: 'Canada - Atlantic (GMT-03:00)' },\n { name: 'Canada/Central', desc: 'Canada - Central (GMT-05:00)' },\n { name: 'Canada/Eastern', desc: 'Canada - Eastern (GMT-04:00)' },\n { name: 'Canada/Mountain', desc: 'Canada - Mountain (GMT-06:00)' },\n { name: 'Canada/Newfoundland', desc: 'Canada - Newfoundland (GMT-02:30)' },\n { name: 'Canada/Pacific', desc: 'Canada - Pacific (GMT-07:00)' },\n { name: 'Canada/Saskatchewan', desc: 'Canada - Saskatchewan (GMT-06:00)' },\n { name: 'Canada/Yukon', desc: 'Canada - Yukon (GMT-07:00)' },\n { name: 'Indian/Cocos', desc: 'Cocos (Keeling) Islands - Cocos (GMT+06:30)' },\n { name: 'Africa/Kinshasa', desc: 'Congo, (Kinshasa) - Kinshasa (GMT+01:00)' },\n { name: 'Africa/Lubumbashi', desc: 'Congo, (Kinshasa) - Lubumbashi (GMT+02:00)' },\n { name: 'Africa/Bangui', desc: 'Central African Republic - Bangui (GMT+01:00)' },\n { name: 'Africa/Brazzaville', desc: 'Congo (Brazzaville) - Brazzaville (GMT+01:00)' },\n { name: 'Europe/Zurich', desc: 'Switzerland - Zurich (GMT+02:00)' },\n { name: 'Africa/Abidjan', desc: \"Côte d'Ivoire - Abidjan (GMT+00:00)\" },\n { name: 'Pacific/Rarotonga', desc: 'Cook Islands - Rarotonga (GMT-10:00)' },\n { name: 'America/Santiago', desc: 'Chile - Santiago (GMT-04:00)' },\n { name: 'Pacific/Easter', desc: 'Chile - Easter (GMT-06:00)' },\n { name: 'Chile/Continental', desc: 'Chile - Continental (GMT-04:00)' },\n { name: 'Chile/EasterIsland', desc: 'Chile - EasterIsland (GMT-06:00)' },\n { name: 'Africa/Douala', desc: 'Cameroon - Douala (GMT+01:00)' },\n { name: 'Asia/Shanghai', desc: 'China - Shanghai (GMT+08:00)' },\n { name: 'Asia/Harbin', desc: 'China - Harbin (GMT+08:00)' },\n { name: 'Asia/Chongqing', desc: 'China - Chongqing (GMT+08:00)' },\n { name: 'Asia/Urumqi', desc: 'China - Urumqi (GMT+06:00)' },\n { name: 'Asia/Kashgar', desc: 'China - Kashgar (GMT+06:00)' },\n { name: 'America/Bogota', desc: 'Colombia - Bogota (GMT-05:00)' },\n { name: 'America/Costa_Rica', desc: 'Costa Rica - Costa Rica (GMT-06:00)' },\n { name: 'America/Havana', desc: 'Cuba - Havana (GMT-04:00)' },\n { name: 'Atlantic/Cape_Verde', desc: 'Cape Verde - Cape Verde (GMT-01:00)' },\n { name: 'America/Curacao', desc: 'CW - Curacao (GMT-04:00)' },\n { name: 'Indian/Christmas', desc: 'Christmas Island - Christmas (GMT+07:00)' },\n { name: 'Asia/Nicosia', desc: 'Cyprus - Nicosia (GMT+03:00)' },\n { name: 'Europe/Prague', desc: 'Czech Republic - Prague (GMT+02:00)' },\n { name: 'Europe/Berlin', desc: 'Germany - Berlin (GMT+02:00)' },\n { name: 'Africa/Djibouti', desc: 'Djibouti - Djibouti (GMT+03:00)' },\n { name: 'Europe/Copenhagen', desc: 'Denmark - Copenhagen (GMT+02:00)' },\n { name: 'America/Dominica', desc: 'Dominica - Dominica (GMT-04:00)' },\n { name: 'America/Santo_Domingo', desc: 'Dominican Republic - Santo Domingo (GMT-04:00)' },\n { name: 'Africa/Algiers', desc: 'Algeria - Algiers (GMT+01:00)' },\n { name: 'America/Guayaquil', desc: 'Ecuador - Guayaquil (GMT-05:00)' },\n { name: 'Pacific/Galapagos', desc: 'Ecuador - Galapagos (GMT-06:00)' },\n { name: 'Europe/Tallinn', desc: 'Estonia - Tallinn (GMT+03:00)' },\n { name: 'Egypt', desc: 'Egypt - Egypt (GMT+02:00)' },\n { name: 'Africa/El_Aaiun', desc: 'Western Sahara - El Aaiun (GMT+00:00)' },\n { name: 'Africa/Asmara', desc: 'Eritrea - Asmara (GMT+03:00)' },\n { name: 'Europe/Madrid', desc: 'Spain - Madrid (GMT+02:00)' },\n { name: 'Africa/Ceuta', desc: 'Spain - Ceuta (GMT+02:00)' },\n { name: 'Atlantic/Canary', desc: 'Spain - Canary (GMT+01:00)' },\n { name: 'Africa/Addis_Ababa', desc: 'Ethiopia - Addis Ababa (GMT+03:00)' },\n { name: 'Europe/Helsinki', desc: 'Finland - Helsinki (GMT+03:00)' },\n { name: 'Pacific/Fiji', desc: 'Fiji - Fiji (GMT+12:00)' },\n { name: 'Atlantic/Stanley', desc: 'Falkland Islands (Malvinas) - Stanley (GMT-03:00)' },\n { name: 'Pacific/Chuuk', desc: 'Micronesia - Chuuk (GMT+10:00)' },\n { name: 'Pacific/Pohnpei', desc: 'Micronesia - Pohnpei (GMT+11:00)' },\n { name: 'Pacific/Kosrae', desc: 'Micronesia - Kosrae (GMT+11:00)' },\n { name: 'Atlantic/Faroe', desc: 'Faroe Islands - Faroe (GMT+01:00)' },\n { name: 'Europe/Paris', desc: 'France - Paris (GMT+02:00)' },\n { name: 'Africa/Libreville', desc: 'Gabon - Libreville (GMT+01:00)' },\n { name: 'Europe/London', desc: 'United Kingdom (GB) - London (GMT+01:00)' },\n { name: 'America/Grenada', desc: 'Grenada - Grenada (GMT-04:00)' },\n { name: 'Asia/Tbilisi', desc: 'Georgia - Tbilisi (GMT+04:00)' },\n { name: 'America/Cayenne', desc: 'French Guiana - Cayenne (GMT-03:00)' },\n { name: 'Europe/Guernsey', desc: 'Guernsey - Guernsey (GMT+01:00)' },\n { name: 'Africa/Accra', desc: 'Ghana - Accra (GMT+00:00)' },\n { name: 'Europe/Gibraltar', desc: 'Gibraltar - Gibraltar (GMT+02:00)' },\n { name: 'America/Godthab', desc: 'Greenland - Godthab (GMT-02:00)' },\n { name: 'America/Danmarkshavn', desc: 'Greenland - Danmarkshavn (GMT+00:00)' },\n { name: 'America/Scoresbysund', desc: 'Greenland - Scoresbysund (GMT+00:00)' },\n { name: 'America/Thule', desc: 'Greenland - Thule (GMT-03:00)' },\n { name: 'Africa/Banjul', desc: 'Gambia - Banjul (GMT+00:00)' },\n { name: 'Africa/Conakry', desc: 'Guinea - Conakry (GMT+00:00)' },\n { name: 'America/Guadeloupe', desc: 'Guadeloupe - Guadeloupe (GMT-04:00)' },\n { name: 'Africa/Malabo', desc: 'Equatorial Guinea - Malabo (GMT+01:00)' },\n { name: 'Europe/Athens', desc: 'Greece - Athens (GMT+03:00)' },\n { name: 'Atlantic/South_Georgia', desc: 'South Georgia and the South Sandwich Islands - South Georgia (GMT-02:00)' },\n { name: 'America/Guatemala', desc: 'Guatemala - Guatemala (GMT-06:00)' },\n { name: 'Pacific/Guam', desc: 'Guam - Guam (GMT+10:00)' },\n { name: 'Africa/Bissau', desc: 'Guinea-Bissau - Bissau (GMT+00:00)' },\n { name: 'America/Guyana', desc: 'Guyana - Guyana (GMT-04:00)' },\n { name: 'Asia/Hong_Kong', desc: 'Hong Kong - Hong Kong (GMT+08:00)' },\n { name: 'America/Tegucigalpa', desc: 'Honduras - Tegucigalpa (GMT-06:00)' },\n { name: 'Europe/Zagreb', desc: 'Croatia - Zagreb (GMT+02:00)' },\n { name: 'America/Port-au-Prince', desc: 'Haiti - Port-au-Prince (GMT-04:00)' },\n { name: 'Europe/Budapest', desc: 'Hungary - Budapest (GMT+02:00)' },\n { name: 'Asia/Jakarta', desc: 'Indonesia - Jakarta (GMT+07:00)' },\n { name: 'Asia/Pontianak', desc: 'Indonesia - Pontianak (GMT+07:00)' },\n { name: 'Asia/Makassar', desc: 'Indonesia - Makassar (GMT+08:00)' },\n { name: 'Asia/Jayapura', desc: 'Indonesia - Jayapura (GMT+09:00)' },\n { name: 'Europe/Dublin', desc: 'Ireland - Dublin (GMT+01:00)' },\n { name: 'Asia/Jerusalem', desc: 'Israel - Jerusalem (GMT+03:00)' },\n { name: 'Europe/Isle_of_Man', desc: 'Isle of Man - Isle of_Man (GMT+01:00)' },\n { name: 'Asia/Kolkata', desc: 'India - Kolkata (GMT+05:30)' },\n { name: 'Indian/Chagos', desc: 'British Indian Ocean Territory - Chagos (GMT+06:00)' },\n { name: 'Asia/Baghdad', desc: 'Iraq - Baghdad (GMT+03:00)' },\n { name: 'Asia/Tehran', desc: 'Iran - Tehran (GMT+04:30)' },\n { name: 'Atlantic/Reykjavik', desc: 'Iceland - Reykjavik (GMT+00:00)' },\n { name: 'Europe/Rome', desc: 'Italy - Rome (GMT+02:00)' },\n { name: 'Europe/Jersey', desc: 'Jersey - Jersey (GMT+01:00)' },\n { name: 'America/Jamaica', desc: 'Jamaica - Jamaica (GMT-05:00)' },\n { name: 'Asia/Amman', desc: 'Jordan - Amman (GMT+03:00)' },\n { name: 'Asia/Tokyo', desc: 'Japan - Tokyo (GMT+09:00)' },\n { name: 'Africa/Nairobi', desc: 'Kenya - Nairobi (GMT+03:00)' },\n { name: 'Asia/Bishkek', desc: 'Kyrgyzstan - Bishkek (GMT+06:00)' },\n { name: 'Asia/Phnom_Penh', desc: 'Cambodia - Phnom Penh (GMT+07:00)' },\n { name: 'Pacific/Tarawa', desc: 'Kiribati - Tarawa (GMT+12:00)' },\n { name: 'Pacific/Enderbury', desc: 'Kiribati - Enderbury (GMT+13:00)' },\n { name: 'Pacific/Kiritimati', desc: 'Kiribati - Kiritimati (GMT+14:00)' },\n { name: 'Indian/Comoro', desc: 'Comoros - Comoro (GMT+03:00)' },\n { name: 'America/St_Kitts', desc: 'Saint Kitts and Nevis - St Kitts (GMT-04:00)' },\n { name: 'Asia/Pyongyang', desc: 'Korea (North) - Pyongyang (GMT+09:00)' },\n { name: 'Asia/Seoul', desc: 'Korea (South) - Seoul (GMT+09:00)' },\n { name: 'Asia/Kuwait', desc: 'Kuwait - Kuwait (GMT+03:00)' },\n { name: 'America/Cayman', desc: 'Cayman Islands - Cayman (GMT-05:00)' },\n { name: 'Asia/Almaty', desc: 'Kazakhstan - Almaty (GMT+06:00)' },\n { name: 'Asia/Qyzylorda', desc: 'Kazakhstan - Qyzylorda (GMT+06:00)' },\n { name: 'Asia/Aqtobe', desc: 'Kazakhstan - Aqtobe (GMT+05:00)' },\n { name: 'Asia/Aqtau', desc: 'Kazakhstan - Aqtau (GMT+05:00)' },\n { name: 'Asia/Oral', desc: 'Kazakhstan - Oral (GMT+05:00)' },\n { name: 'Asia/Vientiane', desc: 'Lao PDR - Vientiane (GMT+07:00)' },\n { name: 'Asia/Beirut', desc: 'Lebanon - Beirut (GMT+03:00)' },\n { name: 'America/St_Lucia', desc: 'Saint Lucia - St Lucia (GMT-04:00)' },\n { name: 'Europe/Vaduz', desc: 'Liechtenstein - Vaduz (GMT+02:00)' },\n { name: 'Asia/Colombo', desc: 'Sri Lanka - Colombo (GMT+05:30)' },\n { name: 'Africa/Monrovia', desc: 'Liberia - Monrovia (GMT+00:00)' },\n { name: 'Africa/Maseru', desc: 'Lesotho - Maseru (GMT+02:00)' },\n { name: 'Europe/Vilnius', desc: 'Lithuania - Vilnius (GMT+03:00)' },\n { name: 'Europe/Luxembourg', desc: 'Luxembourg - Luxembourg (GMT+02:00)' },\n { name: 'Europe/Riga', desc: 'Latvia - Riga (GMT+03:00)' },\n { name: 'Africa/Tripoli', desc: 'Libya - Tripoli (GMT+02:00)' },\n { name: 'Africa/Casablanca', desc: 'Morocco - Casablanca (GMT+00:00)' },\n { name: 'Europe/Monaco', desc: 'Monaco - Monaco (GMT+02:00)' },\n { name: 'Europe/Chisinau', desc: 'Moldova - Chisinau (GMT+03:00)' },\n { name: 'Europe/Podgorica', desc: 'Montenegro - Podgorica (GMT+02:00)' },\n { name: 'America/Marigot', desc: 'Saint-Martin (French part) - Marigot (GMT-04:00)' },\n { name: 'Indian/Antananarivo', desc: 'Madagascar - Antananarivo (GMT+03:00)' },\n { name: 'Pacific/Majuro', desc: 'Marshall Islands - Majuro (GMT+12:00)' },\n { name: 'Pacific/Kwajalein', desc: 'Marshall Islands - Kwajalein (GMT+12:00)' },\n { name: 'Europe/Skopje', desc: 'Macedonia - Skopje (GMT+02:00)' },\n { name: 'Africa/Bamako', desc: 'Mali - Bamako (GMT+00:00)' },\n { name: 'Asia/Rangoon', desc: 'Myanmar - Rangoon (GMT+06:30)' },\n { name: 'Asia/Ulaanbaatar', desc: 'Mongolia - Ulaanbaatar (GMT+08:00)' },\n { name: 'Asia/Hovd', desc: 'Mongolia - Hovd (GMT+07:00)' },\n { name: 'Asia/Choibalsan', desc: 'Mongolia - Choibalsan (GMT+08:00)' },\n { name: 'Asia/Macau', desc: 'Macao - Macau (GMT+08:00)' },\n { name: 'Pacific/Saipan', desc: 'Northern Mariana Islands - Saipan (GMT+10:00)' },\n { name: 'America/Martinique', desc: 'Martinique - Martinique (GMT-04:00)' },\n { name: 'Africa/Nouakchott', desc: 'Mauritania - Nouakchott (GMT+00:00)' },\n { name: 'America/Montserrat', desc: 'Montserrat - Montserrat (GMT-04:00)' },\n { name: 'Europe/Malta', desc: 'Malta - Malta (GMT+02:00)' },\n { name: 'Indian/Mauritius', desc: 'Mauritius - Mauritius (GMT+04:00)' },\n { name: 'Indian/Maldives', desc: 'Maldives - Maldives (GMT+05:00)' },\n { name: 'Africa/Blantyre', desc: 'Malawi - Blantyre (GMT+02:00)' },\n { name: 'America/Mexico_City', desc: 'Mexico - Mexico City (GMT-05:00)' },\n { name: 'America/Cancun', desc: 'Mexico - Cancun (GMT-05:00)' },\n { name: 'America/Merida', desc: 'Mexico - Merida (GMT-05:00)' },\n { name: 'America/Monterrey', desc: 'Mexico - Monterrey (GMT-05:00)' },\n { name: 'America/Matamoros', desc: 'Mexico - Matamoros (GMT-05:00)' },\n { name: 'America/Mazatlan', desc: 'Mexico - Mazatlan (GMT-06:00)' },\n { name: 'America/Chihuahua', desc: 'Mexico - Chihuahua (GMT-06:00)' },\n { name: 'America/Ojinaga', desc: 'Mexico - Ojinaga (GMT-06:00)' },\n { name: 'America/Hermosillo', desc: 'Mexico - Hermosillo (GMT-07:00)' },\n { name: 'America/Tijuana', desc: 'Mexico - Tijuana (GMT-07:00)' },\n { name: 'America/Santa_Isabel', desc: 'Mexico - Santa Isabel (GMT-07:00)' },\n { name: 'America/Bahia_Banderas', desc: 'Mexico - Bahia Banderas (GMT-05:00)' },\n { name: 'Asia/Kuala_Lumpur', desc: 'Malaysia - Kuala Lumpur (GMT+08:00)' },\n { name: 'Asia/Kuching', desc: 'Malaysia - Kuching (GMT+08:00)' },\n { name: 'Africa/Maputo', desc: 'Mozambique - Maputo (GMT+02:00)' },\n { name: 'Africa/Windhoek', desc: 'Namibia - Windhoek (GMT+02:00)' },\n { name: 'Pacific/Noumea', desc: 'New Caledonia - Noumea (GMT+11:00)' },\n { name: 'Africa/Niamey', desc: 'Niger - Niamey (GMT+01:00)' },\n { name: 'Pacific/Norfolk', desc: 'Norfolk Island - Norfolk (GMT+11:00)' },\n { name: 'Africa/Lagos', desc: 'Nigeria - Lagos (GMT+01:00)' },\n { name: 'America/Managua', desc: 'Nicaragua - Managua (GMT-06:00)' },\n { name: 'Europe/Amsterdam', desc: 'Netherlands - Amsterdam (GMT+02:00)' },\n { name: 'Europe/Oslo', desc: 'Norway - Oslo (GMT+02:00)' },\n { name: 'Asia/Kathmandu', desc: 'Nepal - Kathmandu (GMT+05:45)' },\n { name: 'Pacific/Nauru', desc: 'Nauru - Nauru (GMT+12:00)' },\n { name: 'Pacific/Niue', desc: 'Niue - Niue (GMT-11:00)' },\n { name: 'Pacific/Auckland', desc: 'New Zealand - Auckland (GMT+12:00)' },\n { name: 'Pacific/Chatham', desc: 'New Zealand - Chatham (GMT+12:45)' },\n { name: 'Asia/Muscat', desc: 'Oman - Muscat (GMT+04:00)' },\n { name: 'America/Panama', desc: 'Panama - Panama (GMT-05:00)' },\n { name: 'America/Lima', desc: 'Peru - Lima (GMT-05:00)' },\n { name: 'Pacific/Tahiti', desc: 'French Polynesia - Tahiti (GMT-10:00)' },\n { name: 'Pacific/Marquesas', desc: 'French Polynesia - Marquesas (GMT-09:30)' },\n { name: 'Pacific/Gambier', desc: 'French Polynesia - Gambier (GMT-09:00)' },\n { name: 'Pacific/Port_Moresby', desc: 'Papua New Guinea - Port Moresby (GMT+10:00)' },\n { name: 'Asia/Manila', desc: 'Philippines - Manila (GMT+08:00)' },\n { name: 'Asia/Karachi', desc: 'Pakistan - Karachi (GMT+05:00)' },\n { name: 'Europe/Warsaw', desc: 'Poland - Warsaw (GMT+02:00)' },\n { name: 'Poland', desc: 'Poland - Poland (GMT+02:00)' },\n { name: 'America/Miquelon', desc: 'Saint Pierre and Miquelon - Miquelon (GMT-02:00)' },\n { name: 'Pacific/Pitcairn', desc: 'Pitcairn - Pitcairn (GMT-08:00)' },\n { name: 'America/Puerto_Rico', desc: 'Puerto Rico - Puerto Rico (GMT-04:00)' },\n { name: 'Asia/Gaza', desc: 'Palestinian Territory - Gaza (GMT+03:00)' },\n { name: 'Asia/Hebron', desc: 'Palestinian Territory - Hebron (GMT+03:00)' },\n { name: 'Europe/Lisbon', desc: 'Portugal - Lisbon (GMT+01:00)' },\n { name: 'Atlantic/Madeira', desc: 'Portugal - Madeira (GMT+01:00)' },\n { name: 'Atlantic/Azores', desc: 'Portugal - Azores (GMT+00:00)' },\n { name: 'Pacific/Palau', desc: 'Palau - Palau (GMT+09:00)' },\n { name: 'America/Asuncion', desc: 'Paraguay - Asuncion (GMT-04:00)' },\n { name: 'Asia/Qatar', desc: 'Qatar - Qatar (GMT+03:00)' },\n { name: 'Indian/Reunion', desc: 'Réunion - Reunion (GMT+04:00)' },\n { name: 'Europe/Bucharest', desc: 'Romania - Bucharest (GMT+03:00)' },\n { name: 'Europe/Belgrade', desc: 'Serbia - Belgrade (GMT+02:00)' },\n { name: 'Europe/Kaliningrad', desc: 'Russian Federation - Kaliningrad (GMT+02:00)' },\n { name: 'Europe/Moscow', desc: 'Russian Federation - Moscow (GMT+03:00)' },\n { name: 'Europe/Volgograd', desc: 'Russian Federation - Volgograd (GMT+03:00)' },\n { name: 'Europe/Samara', desc: 'Russian Federation - Samara (GMT+04:00)' },\n { name: 'Europe/Simferopol', desc: 'Russian Federation - Simferopol (GMT+03:00)' },\n { name: 'Asia/Yekaterinburg', desc: 'Russian Federation - Yekaterinburg (GMT+05:00)' },\n { name: 'Asia/Omsk', desc: 'Russian Federation - Omsk (GMT+06:00)' },\n { name: 'Asia/Novosibirsk', desc: 'Russian Federation - Novosibirsk (GMT+07:00)' },\n { name: 'Asia/Novokuznetsk', desc: 'Russian Federation - Novokuznetsk (GMT+07:00)' },\n { name: 'Asia/Krasnoyarsk', desc: 'Russian Federation - Krasnoyarsk (GMT+07:00)' },\n { name: 'Asia/Irkutsk', desc: 'Russian Federation - Irkutsk (GMT+08:00)' },\n { name: 'Asia/Yakutsk', desc: 'Russian Federation - Yakutsk (GMT+09:00)' },\n { name: 'Asia/Khandyga', desc: 'Russian Federation - Khandyga (GMT+09:00)' },\n { name: 'Asia/Vladivostok', desc: 'Russian Federation - Vladivostok (GMT+10:00)' },\n { name: 'Asia/Sakhalin', desc: 'Russian Federation - Sakhalin (GMT+11:00)' },\n { name: 'Asia/Ust-Nera', desc: 'Russian Federation - Ust-Nera (GMT+10:00)' },\n { name: 'Asia/Magadan', desc: 'Russian Federation - Magadan (GMT+11:00)' },\n { name: 'Asia/Kamchatka', desc: 'Russian Federation - Kamchatka (GMT+12:00)' },\n { name: 'Asia/Anadyr', desc: 'Russian Federation - Anadyr (GMT+12:00)' },\n { name: 'Africa/Kigali', desc: 'Rwanda - Kigali (GMT+02:00)' },\n { name: 'Asia/Riyadh', desc: 'Saudi Arabia - Riyadh (GMT+03:00)' },\n { name: 'Pacific/Guadalcanal', desc: 'Solomon Islands - Guadalcanal (GMT+11:00)' },\n { name: 'Indian/Mahe', desc: 'Seychelles - Mahe (GMT+04:00)' },\n { name: 'Africa/Khartoum', desc: 'Sudan - Khartoum (GMT+02:00)' },\n { name: 'Europe/Stockholm', desc: 'Sweden - Stockholm (GMT+02:00)' },\n { name: 'Asia/Singapore', desc: 'Singapore - Singapore (GMT+08:00)' },\n { name: 'Atlantic/St_Helena', desc: 'Saint Helena - St Helena (GMT+00:00)' },\n { name: 'Europe/Ljubljana', desc: 'Slovenia - Ljubljana (GMT+02:00)' },\n { name: 'Arctic/Longyearbyen', desc: 'Svalbard and Jan Mayen Islands - Longyearbyen (GMT+02:00)' },\n { name: 'Europe/Bratislava', desc: 'Slovakia - Bratislava (GMT+02:00)' },\n { name: 'Africa/Freetown', desc: 'Sierra Leone - Freetown (GMT+00:00)' },\n { name: 'Europe/San_Marino', desc: 'San Marino - San Marino (GMT+02:00)' },\n { name: 'Africa/Dakar', desc: 'Senegal - Dakar (GMT+00:00)' },\n { name: 'Africa/Mogadishu', desc: 'Somalia - Mogadishu (GMT+03:00)' },\n { name: 'America/Paramaribo', desc: 'Suriname - Paramaribo (GMT-03:00)' },\n { name: 'Africa/Juba', desc: 'South Sudan - Juba (GMT+03:00)' },\n { name: 'Africa/Sao_Tome', desc: 'Sao Tome and Principe - Sao Tome (GMT+01:00)' },\n { name: 'America/El_Salvador', desc: 'El Salvador - El Salvador (GMT-06:00)' },\n { name: 'America/Lower_Princes', desc: 'SX - Lower Princes (GMT-04:00)' },\n { name: 'Asia/Damascus', desc: 'Syria - Damascus (GMT+03:00)' },\n { name: 'Africa/Mbabane', desc: 'Swaziland - Mbabane (GMT+02:00)' },\n { name: 'America/Grand_Turk', desc: 'Turks and Caicos Islands - Grand Turk (GMT-04:00)' },\n { name: 'Africa/Ndjamena', desc: 'Chad - Ndjamena (GMT+01:00)' },\n { name: 'Indian/Kerguelen', desc: 'French Southern Territories - Kerguelen (GMT+05:00)' },\n { name: 'Africa/Lome', desc: 'Togo - Lome (GMT+00:00)' },\n { name: 'Asia/Bangkok', desc: 'Thailand - Bangkok (GMT+07:00)' },\n { name: 'Asia/Dushanbe', desc: 'Tajikistan - Dushanbe (GMT+05:00)' },\n { name: 'Pacific/Fakaofo', desc: 'Tokelau - Fakaofo (GMT+13:00)' },\n { name: 'Asia/Dili', desc: 'Timor-Leste - Dili (GMT+09:00)' },\n { name: 'Asia/Ashgabat', desc: 'Turkmenistan - Ashgabat (GMT+05:00)' },\n { name: 'Africa/Tunis', desc: 'Tunisia - Tunis (GMT+01:00)' },\n { name: 'Pacific/Tongatapu', desc: 'Tonga - Tongatapu (GMT+13:00)' },\n { name: 'Europe/Istanbul', desc: 'Turkey - Istanbul (GMT+03:00)' },\n { name: 'America/Port_of_Spain', desc: 'Trinidad and Tobago - Port of_Spain (GMT-04:00)' },\n { name: 'Pacific/Funafuti', desc: 'Tuvalu - Funafuti (GMT+12:00)' },\n { name: 'Asia/Taipei', desc: 'Taiwan - Taipei (GMT+08:00)' },\n { name: 'Africa/Dar_es_Salaam', desc: 'Tanzania - Dar es_Salaam (GMT+03:00)' },\n { name: 'Europe/Kiev', desc: 'Ukraine - Kiev (GMT+03:00)' },\n { name: 'Europe/Uzhgorod', desc: 'Ukraine - Uzhgorod (GMT+03:00)' },\n { name: 'Europe/Zaporozhye', desc: 'Ukraine - Zaporozhye (GMT+03:00)' },\n { name: 'Africa/Kampala', desc: 'Uganda - Kampala (GMT+03:00)' },\n { name: 'Pacific/Johnston', desc: 'US Minor Outlying Islands - Johnston (GMT-10:00)' },\n { name: 'Pacific/Midway', desc: 'US Minor Outlying Islands - Midway (GMT-11:00)' },\n { name: 'Pacific/Wake', desc: 'US Minor Outlying Islands - Wake (GMT+12:00)' },\n { name: 'America/New_York', desc: 'United States of America (USA) - New York (GMT-04:00)' },\n { name: 'America/Detroit', desc: 'United States of America (USA) - Detroit (GMT-04:00)' },\n { name: 'America/Kentucky/Louisville', desc: 'United States of America (USA) - Louisville (GMT-04:00)' },\n { name: 'America/Kentucky/Monticello', desc: 'United States of America (USA) - Monticello (GMT-04:00)' },\n { name: 'America/Indiana/Indianapolis', desc: 'United States of America (USA) - Indianapolis (GMT-04:00)' },\n { name: 'America/Indiana/Vincennes', desc: 'United States of America (USA) - Vincennes (GMT-04:00)' },\n { name: 'America/Indiana/Winamac', desc: 'United States of America (USA) - Winamac (GMT-04:00)' },\n { name: 'America/Indiana/Marengo', desc: 'United States of America (USA) - Marengo (GMT-04:00)' },\n { name: 'America/Indiana/Petersburg', desc: 'United States of America (USA) - Petersburg (GMT-04:00)' },\n { name: 'America/Indiana/Vevay', desc: 'United States of America (USA) - Vevay (GMT-04:00)' },\n { name: 'America/Chicago', desc: 'United States of America (USA) - Chicago (GMT-05:00)' },\n { name: 'America/Indiana/Tell_City', desc: 'United States of America (USA) - Tell City (GMT-05:00)' },\n { name: 'America/Indiana/Knox', desc: 'United States of America (USA) - Knox (GMT-05:00)' },\n { name: 'America/Menominee', desc: 'United States of America (USA) - Menominee (GMT-05:00)' },\n { name: 'America/North_Dakota/Center', desc: 'United States of America (USA) - Center (GMT-05:00)' },\n { name: 'America/North_Dakota/New_Salem', desc: 'United States of America (USA) - New Salem (GMT-05:00)' },\n { name: 'America/North_Dakota/Beulah', desc: 'United States of America (USA) - Beulah (GMT-05:00)' },\n { name: 'America/Denver', desc: 'United States of America (USA) - Denver (GMT-06:00)' },\n { name: 'America/Boise', desc: 'United States of America (USA) - Boise (GMT-06:00)' },\n { name: 'America/Phoenix', desc: 'United States of America (USA) - Phoenix (GMT-07:00)' },\n { name: 'America/Los_Angeles', desc: 'United States of America (USA) - Los Angeles (GMT-07:00)' },\n { name: 'America/Anchorage', desc: 'United States of America (USA) - Anchorage (GMT-08:00)' },\n { name: 'America/Juneau', desc: 'United States of America (USA) - Juneau (GMT-08:00)' },\n { name: 'America/Sitka', desc: 'United States of America (USA) - Sitka (GMT-08:00)' },\n { name: 'America/Yakutat', desc: 'United States of America (USA) - Yakutat (GMT-08:00)' },\n { name: 'America/Nome', desc: 'United States of America (USA) - Nome (GMT-08:00)' },\n { name: 'America/Adak', desc: 'United States of America (USA) - Adak (GMT-09:00)' },\n { name: 'America/Metlakatla', desc: 'United States of America (USA) - Metlakatla (GMT-08:00)' },\n { name: 'Pacific/Honolulu', desc: 'United States of America (USA) - Honolulu (GMT-10:00)' },\n { name: 'America/Montevideo', desc: 'Uruguay - Montevideo (GMT-03:00)' },\n { name: 'Asia/Samarkand', desc: 'Uzbekistan - Samarkand (GMT+05:00)' },\n { name: 'Asia/Tashkent', desc: 'Uzbekistan - Tashkent (GMT+05:00)' },\n { name: 'Europe/Vatican', desc: 'Vatican City State - Vatican (GMT+02:00)' },\n { name: 'America/St_Vincent', desc: 'Saint Vincent and Grenadines - St Vincent (GMT-04:00)' },\n { name: 'America/Caracas', desc: 'Venezuela - Caracas (GMT-04:00)' },\n { name: 'America/Tortola', desc: 'British Virgin Islands - Tortola (GMT-04:00)' },\n { name: 'America/St_Thomas', desc: 'Virgin Islands, US - St Thomas (GMT-04:00)' },\n { name: 'Asia/Ho_Chi_Minh', desc: 'Viet Nam - Ho Chi_Minh (GMT+07:00)' },\n { name: 'Pacific/Efate', desc: 'Vanuatu - Efate (GMT+11:00)' },\n { name: 'Pacific/Wallis', desc: 'Wallis and Futuna Islands - Wallis (GMT+12:00)' },\n { name: 'Pacific/Apia', desc: 'Samoa - Apia (GMT+13:00)' },\n { name: 'Asia/Aden', desc: 'Yemen - Aden (GMT+03:00)' },\n { name: 'Indian/Mayotte', desc: 'Mayotte - Mayotte (GMT+03:00)' },\n { name: 'Africa/Johannesburg', desc: 'South Africa - Johannesburg (GMT+02:00)' },\n { name: 'Africa/Lusaka', desc: 'Zambia - Lusaka (GMT+02:00)' },\n { name: 'Africa/Harare', desc: 'Zimbabwe - Harare (GMT+02:00)' },\n];\n\n@Injectable()\nexport class EuiTimezoneService {\n /**\n * Convert country ISO code to country name (in english)\n */\n iso2country(iso: string): string {\n return EUI_COUNTRIES[iso] ? EUI_COUNTRIES[iso] : iso;\n }\n\n /**\n * Gets the list of ISO-codes for all countries\n */\n getCountries(): string[] {\n const res: string[] = [];\n for (const prop of Object.keys(EUI_COUNTRIES)) {\n res.push(prop);\n }\n return res;\n }\n\n getTimezones(): EuiTimeZone[] {\n return EUI_TIMEZONES;\n }\n\n getTimezone(tz: string): EuiTimeZone {\n return EUI_TIMEZONES.find((item) => item.name === tz);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { GLOBAL_CONFIG_TOKEN } from './config/tokens';\nimport { GlobalConfig } from '@eui/base';\nimport { EuiAppShellService } from './eui-app-shell.service';\nimport { DOCUMENT } from '@angular/common';\n\nexport enum EuiTheme {\n DEFAULT = 'default',\n ECL_EC = 'ecl-ec',\n ECL_EC_RTL = 'ecl-ec-rtl',\n ECL_EU = 'ecl-eu',\n ECL_EU_RTL = 'ecl-eu-rtl',\n EUI_LEGACY = 'eui-legacy',\n EUI_LEGACY_HC = 'eui-legacy-high-contrast',\n DARK = 'dark',\n COMPACT = 'compact',\n DS2025 = 'ds2025',\n};\n\ninterface IEuiTheme {\n name: EuiTheme,\n isActive: boolean,\n styleSheet: string,\n cssClass: string,\n};\n\nexport interface ThemeState {\n themes: IEuiTheme[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n theme: any;\n}\n\nconst initialState: ThemeState = {\n themes: [\n { name: EuiTheme.DEFAULT, isActive: false, styleSheet: null, cssClass: null },\n { name: EuiTheme.ECL_EC, isActive: false, styleSheet: 'eui-ecl-ec.css', cssClass: null },\n { name: EuiTheme.ECL_EC_RTL, isActive: false, styleSheet: 'eui-ecl-ec-rtl.css', cssClass: null },\n { name: EuiTheme.ECL_EU, isActive: false, styleSheet: 'eui-ecl-eu.css', cssClass: null },\n { name: EuiTheme.ECL_EU_RTL, isActive: false, styleSheet: 'eui-ecl-eu-rtl.css', cssClass: null },\n { name: EuiTheme.DARK, isActive: false, styleSheet: null, cssClass: 'eui-t-dark' },\n { name: EuiTheme.COMPACT, isActive: false, styleSheet: null, cssClass: 'eui-t-compact' },\n ],\n theme: {\n isDefault: false,\n isEclEc: false,\n isEclEcRtl: false,\n isEclEu: false,\n isEclEuRtl: false,\n isDark: false,\n isCompact: false,\n },\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiThemeService {\n private document = inject<Document>(DOCUMENT);\n protected config = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN, { optional: true });\n private asService = inject(EuiAppShellService);\n\n private _state$: BehaviorSubject<ThemeState>;\n\n constructor() {\n this._state$ = new BehaviorSubject(initialState);\n const themeName = (this.config?.eui?.theme as EuiTheme) || EuiTheme.DEFAULT;\n this.setActiveTheme(themeName, true);\n }\n\n get state$(): Observable<ThemeState> {\n return this._state$.asObservable();\n }\n\n get state(): ThemeState {\n return this._state$.getValue();\n }\n\n isDefault(): boolean {\n return this.state.theme.isDefault;\n }\n isEclEc(): boolean {\n return this.state.theme.isEclEc;\n }\n isEclEcRtl(): boolean {\n return this.state.theme.isEclEcRtl;\n }\n isEclEu(): boolean {\n return this.state.theme.isEclEu;\n }\n isEclEuRtl(): boolean {\n return this.state.theme.isEclEuRtl;\n }\n isEuiLegacy(): boolean {\n return this.state.theme.isEuiLegacy;\n }\n isEuiLegacyHc(): boolean {\n return this.state.theme.isEuiLegacyHc;\n }\n isDark(): boolean {\n return this.state.theme.isDark;\n }\n isCompact(): boolean {\n return this.state.theme.isCompact;\n }\n isDs2025(): boolean {\n return this.state.theme.isDs2025;\n }\n\n setActiveTheme(theme: EuiTheme, isActive: boolean): void {\n const themes = this.state.themes;\n const themeIdx = themes.findIndex(t => t.name === theme);\n\n if (themeIdx < 0) {\n throw new Error('NO_THEME_FOUND');\n\n } else {\n themes[themeIdx].isActive = isActive;\n\n const themeFound: IEuiTheme = themes[themeIdx];\n\n const status = initialState.theme;\n\n switch(theme) {\n case EuiTheme.DEFAULT: { status.isDefault = isActive; break; }\n case EuiTheme.ECL_EC: { status.isEclEc = isActive; break; }\n case EuiTheme.ECL_EC_RTL: { status.isEclEcRtl = isActive; break; }\n case EuiTheme.ECL_EU: { status.isEclEu = isActive; break; }\n case EuiTheme.ECL_EU_RTL: { status.isEclEuRtl = isActive; break; }\n case EuiTheme.DARK: { status.isDark = isActive; break; }\n case EuiTheme.COMPACT: { status.isCompact = isActive; break; }\n case EuiTheme.EUI_LEGACY: { status.isEuiLegacy = isActive; break; }\n case EuiTheme.EUI_LEGACY_HC: { status.isEuiLegacyHc = isActive; break; }\n case EuiTheme.DS2025: { status.isDs2025 = isActive; break; }\n }\n\n this._state$.next({\n themes,\n theme: status,\n });\n\n this._renderTheme(themeFound, isActive);\n }\n }\n\n private _renderTheme(themeFound: IEuiTheme, isActive: boolean): void {\n if (themeFound.name === EuiTheme.COMPACT) {\n if (isActive) {\n this.asService.setBaseFontSize('14px');\n } else {\n this.asService.setBaseFontSize('16px');\n }\n const compactLink = this.document.getElementById('eui-theme') as HTMLLinkElement;\n this._renderThemeCss(themeFound, isActive, compactLink);\n\n } else if (themeFound.name === EuiTheme.ECL_EC_RTL || themeFound.name === EuiTheme.ECL_EU_RTL) {\n return;\n\n } else if (themeFound.name === EuiTheme.ECL_EC || themeFound.name === EuiTheme.ECL_EU) {\n const rtlLink = this.document.getElementById('eui-theme') as HTMLLinkElement;\n this._renderThemeCss(themeFound, isActive, rtlLink);\n\n }else {\n this._renderThemeCss(themeFound, isActive, null);\n }\n }\n\n private _renderThemeCss(themeFound: IEuiTheme, isActive: boolean, link: HTMLLinkElement): void {\n const head = this.document.getElementsByTagName('head')[0];\n\n console.log(link);\n console.log(themeFound);\n\n if (isActive) {\n if (themeFound.cssClass) {\n document.querySelector('html').classList.add(themeFound.cssClass);\n }\n if (themeFound.styleSheet) {\n if (link) {\n link.href = `assets/${themeFound.styleSheet}`;\n } else {\n const style = this.document.createElement('link');\n style.id = 'eui-theme';\n style.rel = 'stylesheet';\n style.href = `assets/${themeFound.styleSheet}`;\n console.log(style);\n head.appendChild(style);\n }\n }\n } else {\n if (themeFound.cssClass) {\n document.querySelector('html').classList.remove(themeFound.cssClass);\n }\n\n if (themeFound.styleSheet) {\n if (link) {\n link.media = '';\n }\n }\n }\n }\n}\n","/**\n * Generic storage service. Concrete storage services must extend this class\n */\nexport abstract class StorageService {\n /**\n * utility function, to determine the storage implementation\n */\n abstract name(): string;\n\n /**\n * retrieve an object from storage\n * @param key the associated key\n * @returns the value or undefined, if case of error\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract get(key: string): any;\n abstract get<T>(key: string): T;\n\n /**\n * sets an object in storage\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract set(key: string, value: any): void;\n abstract set<T>(key: string, value: T): void;\n\n /**\n * removes an object from storage\n * @param key the associated key\n */\n abstract remove(key: string): void;\n}\n","import { StorageService } from './storage.service';\n\nexport class StorageServiceMock extends StorageService {\n name(): string {\n return null;\n }\n\n get(): null {\n return null;\n }\n\n set(): void { /* empty */ }\n\n remove(): void { /* empty */ }\n}\n","import { StorageService } from './storage.service';\nimport { Observable } from 'rxjs';\n\n/**\n * Generic asynchronous storage service. Concrete asynchronous storage services must extend this class\n */\nexport abstract class AsyncStorageService extends StorageService {\n /**\n * reflects the readiness of the storage\n * @returns one time emission Observable<any>\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract ready(): Observable<any>;\n\n /**\n * retrieve an object from async storage\n * @param key the associated key\n * @returns one time emission Observable of value\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override get(key: string): Observable<any>\n abstract override get<T>(key: string): Observable<T>;\n\n /**\n * sets an object in async storage\n * @param key the associated key\n * @param value the value to set\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override set(key: string, value: any): Observable<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override set<T>(key: string, value: T): Observable<any>;\n\n /**\n * removes an object from async storage\n * @param key the associated key\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override remove(key: string): Observable<any>;\n\n /**\n * asynchronous helper for set function\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setAsync(key: string, value: any): void;\n setAsync<T>(key: string, value: T): void {\n this.set(key, value).subscribe(() => { /* empty */ });\n }\n\n /**\n * asynchronous helper for remove function\n * @param key the associated key\n */\n removeAsync(key: string): void {\n this.remove(key).subscribe(() => { /* empty */ });\n }\n}\n","import { AsyncStorageService } from './async-storage.service';\nimport { Observable, of } from 'rxjs';\n\nexport class AsyncStorageServiceMock extends AsyncStorageService {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ready(): Observable<any> {\n return of({});\n }\n\n name(): string {\n return null;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(): Observable<any> {\n return of({});\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(): Observable<any> {\n return of({});\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n remove(): Observable<any> {\n return of({});\n }\n\n override setAsync(): void { /* empty */ }\n\n override removeAsync(): void { /* empty */ }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { StorageService } from './storage.service';\nimport { LogService } from '../log/log.service';\n\n/**\n * localStorage service\n */\n@Injectable()\nexport class LocalStorageService extends StorageService {\n static NAME = 'LocalStorageService';\n protected log = inject(LogService, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n /**\n * the name of the storage service\n */\n name(): string {\n return LocalStorageService.NAME;\n }\n\n /**\n * retrieve an object from local storage\n * @param key the associated key\n * @returns the value or undefined, if case of error\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key: string): any {\n if(isPlatformBrowser(this.platformId)) {\n try {\n const serialized = localStorage.getItem(key);\n return serialized && JSON.parse(serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'get', err);\n }\n return undefined;\n }\n }\n }\n\n /**\n * sets an object in local storage\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(key: string, value: any): void {\n if(isPlatformBrowser(this.platformId)) {\n try {\n const serialized = JSON.stringify(value);\n localStorage.setItem(key, serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'set', err);\n }\n }\n }\n }\n\n /**\n * removes an object from local storage\n * @param key the associated key\n */\n remove(key: string): void {\n if(isPlatformBrowser(this.platformId)) {\n try {\n localStorage.removeItem(key);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'remove', err);\n }\n }\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { StorageService } from './storage.service';\nimport { LogService } from '../log/log.service';\n\n/**\n * sessionStorage service\n */\n@Injectable()\nexport class SessionStorageService extends StorageService {\n protected log = inject(LogService, { optional: true });\n\n static NAME = 'SessionStorageService';\n\n /**\n * the name of the storage service\n */\n name(): string {\n return SessionStorageService.NAME;\n }\n\n /**\n * retrieve an object from session storage\n * @param key the associated key\n * @returns the value or undefined, if case of error\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key: string): any {\n try {\n const serialized = sessionStorage.getItem(key);\n return serialized && JSON.parse(serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'get', err);\n }\n return undefined;\n }\n }\n\n /**\n * sets an object in session storage\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(key: string, value: any): void {\n try {\n const serialized = JSON.stringify(value);\n sessionStorage.setItem(key, serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'set', err);\n }\n }\n }\n\n /**\n * removes an object from session storage\n * @param key the associated key\n */\n remove(key: string): void {\n try {\n sessionStorage.removeItem(key);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'remove', err);\n }\n }\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport { take, tap } from 'rxjs/operators';\nimport * as lf from 'localforage';\nimport { AsyncStorageService } from './async-storage.service';\nimport { LogService } from '../log';\n\n/** @internal */\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const localForage: any = 'defineDriver' in lf ? lf : lf['default'];\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const LOCAL_FORAGE_SERVICE_CONFIG_TOKEN = new InjectionToken<any>('LOCAL_FORAGE_SERVICE_CONFIG');\n\n/**\n * localforage service, using the localForage javascript library\n * https://localforage.github.io/localForage\n */\n@Injectable()\nexport class LocalForageService extends AsyncStorageService {\n protected config = inject(LOCAL_FORAGE_SERVICE_CONFIG_TOKEN, { optional: true });\n protected log = inject(LogService, { optional: true });\n\n static NAME = 'LocalForageService';\n\n constructor() {\n super();\n const config = this.config;\n\n // configure localforage, if specified\n if (config) {\n localForage.config(config);\n }\n }\n\n /**\n * the name of the storage service\n */\n name(): string {\n return LocalForageService.NAME;\n }\n\n /**\n * reflects the readiness of the storage\n * @returns one time emission Observable<void>\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ready(): Observable<any> {\n return from(localForage.ready()).pipe(\n take(1),\n tap({\n next: () => { /* empty */ },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'ready', err);\n }\n },\n }),\n );\n }\n\n /**\n * retrieve an object from localforage\n * @param key the associated key\n * @returns one time emission Observable of value\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key: string): Observable<any> {\n return from(localForage.getItem(key)).pipe(\n take(1),\n tap({\n next: () => { /* empty */\n },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'get', err);\n }\n },\n }),\n );\n }\n\n /**\n * sets an object in localforage\n * @param key the associated key\n * @param value the value to set\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(key: string, value: any): Observable<any> {\n return from(localForage.setItem(key, value)).pipe(\n take(1),\n tap({\n next: () => { /* empty */\n },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'set', err);\n }\n },\n }),\n );\n }\n\n /**\n * removes an object from localforage\n * @param key the associated key\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n remove(key: string): Observable<any> {\n return from(localForage.removeItem(key)).pipe(\n take(1),\n tap({\n next: () => { /* empty */ },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'remove', err);\n }\n },\n }),\n );\n }\n}\n","import { Injectable, InjectionToken, LOCALE_ID, OnDestroy, Signal, inject } from '@angular/core';\nimport { getLocaleId } from '@angular/common';\nimport {\n DeepPartial,\n EuiService,\n EuiServiceStatus,\n getLocaleServiceConfigFromBase,\n GlobalConfig,\n I18nState,\n LocaleServiceConfig,\n LocaleState,\n Logger,\n} from '@eui/base';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { StoreService } from '../store';\nimport { LogService } from '../log';\nimport { I18nService } from '../i18n';\nimport { GLOBAL_CONFIG_TOKEN } from '../config/tokens';\nimport { isEqual } from 'lodash-es';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nexport type LocaleMapper = (locale: string) => string;\nexport const LOCALE_ID_MAPPER = new InjectionToken<LocaleMapper>('localeIdMapper');\n\n/**\n * LocaleService is responsible for managing locale states and configurations in an Angular application.\n * It utilizes the CLDR library to load and construct the locale for each region. This service allows\n * for dynamic loading of locales upon request and updates the state of the EUI app accordingly.\n *\n * Key functionalities include:\n * - Binding to a translation service for locale changes.\n * - Updating the Angular LOCALE_ID token.\n *\n * @template T - Extends LocaleState, representing the state structure for locales.\n * @template L - The type of the locale data.\n * @extends EuiService<T | LocaleState>\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LocaleService<T extends LocaleState = LocaleState> extends EuiService<T | LocaleState> implements OnDestroy {\n protected store = inject(StoreService);\n protected baseGlobalConfig = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN);\n protected locale_id: string;\n private static readonly DEFAULT_STATE: LocaleState = { id: 'en-US' };\n private localeMapper = inject<LocaleMapper>(LOCALE_ID_MAPPER, { optional: true });\n private i18n = inject(I18nService, { optional: true });\n private log = inject(LogService, { optional: true });\n\n private readonly logger: Logger;\n private subNotifier: Subject<void> = new Subject();\n protected config: LocaleServiceConfig;\n\n /**\n * a single signal holding the state - initial state is null\n */\n private state: Signal<T>;\n /**\n * a BehaviorSubject holding the state - initial state is null\n * This is the main source of truth for the state\n */\n private stateSubject: BehaviorSubject<T>;\n\n constructor() {\n const locale_id = inject(LOCALE_ID);\n\n super({ id: locale_id || Intl.DateTimeFormat().resolvedOptions().locale || LocaleService.DEFAULT_STATE.id } as T);\n this.locale_id = locale_id;\n const log = this.log;\n\n if (log) {\n this.logger = log.getLogger('core.LocaleService');\n }\n\n // Create a BehaviorSubject with the initial state\n this.stateSubject = new BehaviorSubject<T>(this.stateInstance as T);\n\n // Initialize signal with base state\n this.state = toSignal(this.stateSubject, { equal: isEqual });\n\n // Subscribe to base class state changes\n this.onStateChange.subscribe((newState) => {\n // const clonedState = structuredClone(newState as T);\n this.stateSubject.next(newState as T);\n });\n\n this.config = getLocaleServiceConfigFromBase(this.baseGlobalConfig);\n // in case no localeMapper provided, set the angular getLocaleId as default\n if (!this.localeMapper) {\n this.localeMapper = getLocaleId;\n // TODO: replace deprecated method with new one\n // this.localeMapper = (locale: string) => new Intl.Locale(locale).baseName;\n }\n }\n\n ngOnDestroy(): void {\n this.subNotifier.next(void 0);\n this.subNotifier.complete();\n }\n\n getState(): Observable<T>;\n /**\n * Retrieves the state of the locale service. This method is overloaded to allow different ways of accessing the state.\n *\n * @template K - The type of the value to be returned. Defaults to the type of the locale state (T).\n *\n * @param {((state: T) => K)} [mapFn] - A function that maps the state to a specific form.\n * Takes the current state as an argument and returns the transformed state.\n * @returns {Observable<K>} - An observable that emits the transformed state.\n */\n getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n /**\n * @template a - A key that extends the keys of the state type T.\n * @param {a} [key] - A specific key to access a part of the state.\n * The key should be a property name of the state object.\n * @returns {Observable<Partial<a>>} - An observable that emits the value of the specified key in the state.\n * @param key\n */\n getState<a extends keyof DeepPartial<T>>(key?: a): Observable<DeepPartial<a>>;\n /**\n * @param {((state: T) => K) | string} [keyOrMapFn] - Either a mapping function or a string key.\n * If a string is provided, it uses dot notation to access nested properties.\n * @returns {Observable<Partial<K>>} - An observable that emits the selected or transformed state.\n *\n * If no parameter is provided, the method returns the entire state.\n * @param keyOrMapFn\n */\n getState<K = T>(keyOrMapFn?: ((state: T) => K) | string): Observable<DeepPartial<K>> {\n if (!keyOrMapFn) {\n return this.stateSubject.asObservable().pipe(\n distinctUntilChanged((x, y) => isEqual(x, y)),\n ) as Observable<DeepPartial<K>>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return this.stateSubject.asObservable().pipe(\n map(state => keyOrMapFn(state)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return this.stateSubject.asObservable().pipe(\n map(state => {\n const keys = (keyOrMapFn as string).split('.');\n\n // Traverse the object based on the dot notation\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state as DeepPartial<T>);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n /**\n * Initializes the LocaleService with necessary configurations and state.\n * Binds language changes to the state and dynamically loads the appropriate locales.\n *\n * @param {LocaleState} [state] - Optional initial state for the locale service.\n * @returns {Observable<EuiServiceStatus>} - Observable emitting the status of the initialization.\n */\n init(state?: LocaleState): Observable<EuiServiceStatus> {\n super.initEuiService();\n\n state = state || { id: this.currentLocale };\n\n\t\tif (state?.id && !this.isValidLocale(state.id)) {\n\t\t\tconst message = `Locale '${state.id}' is not a valid locale string. Please provide a valid locale.`;\n\t\t\tif (this.log) {\n\t\t\t\tthis.logger.error(message);\n\t\t\t}\n\t\t\treturn of({ success: false, error: new Error(message) });\n\t\t}\n\n // bind language changes to locale changes\n if (this.config?.bindWithTranslate) {\n this.bindTranslateServiceLangChangeToState();\n }\n\n return of({ success: true })\n .pipe(tap(() => this.updateState(state as Partial<T>)));\n }\n\n /**\n * This method is used to update the state of the service with a new state.\n *\n * @param state\n */\n updateState(state: DeepPartial<T>): void;\n /**\n * Updates the locale state within the application. If the new state is not available,\n * it throws an error. Also updates the global LOCALE_ID token if configured to do so.\n *\n * @param {LocaleState} state - The new state to be set for the locale.\n * @throws Will throw an error if the locale for the given state id is not available.\n */\n updateState<K extends T>(state: DeepPartial<K>): void {\n const prevState = structuredClone(this.stateInstance);\n if(state?.id) {\n // check if locale is available otherwise throw error\n try {\n const id = this.localeMapper(state.id as string);\n this.stateInstance = super.deepMerge(this.stateInstance as T, { ...state, id });\n } catch (e) {\n const message = `Locale for '${state.id}' is not available.\\n` +\n `Please use addLocale('${state.id}') first`;\n if (this.log) {\n this.logger.info(message, e);\n }\n throw new Error(message);\n }\n } else {\n this.stateInstance = super.deepMerge(this.stateInstance as T, { ...state });\n }\n // Emit state change\n this.onStateChange.next(this.stateInstance);\n // set previous state of service\n this.prevStateInstance = prevState;\n }\n\n /**\n * This method is used to get the state as readonly signal.\n */\n getSignal(): Signal<T> {\n return this.state;\n }\n\n /**\n * Retrieves the previous locale used in the application.\n *\n * @returns {string} - The previous locale identifier.\n */\n get previousLocale(): string {\n return this.prevStateInstance?.id || this.currentLocale;\n }\n\n /**\n * Retrieves the current locale used in the application.\n *\n * @returns {string} - The current locale identifier.\n */\n get currentLocale(): string {\n return this.stateInstance?.id;\n }\n\n /**\n * Listens for language changes and dynamically sets the locale accordingly.\n *\n * @private\n */\n private bindTranslateServiceLangChangeToState(): void {\n if (this.i18n) {\n this.i18n.onStateChange\n .pipe(\n takeUntil(this.subNotifier),\n // Only processes state changes when the language actually changes\n // Example: With activeLang='en', ignores changes between 'en-US' and 'en-GB'\n // Checks: activeLang exists, has 2+ chars, and differs from current locale's primary language\n filter((state: I18nState) => state?.activeLang !== null &&\n state?.activeLang !== undefined &&\n state?.activeLang.length > 1 &&\n state.activeLang.toLowerCase() !== this.stateInstance?.id.slice(0, 2).toLowerCase()),\n // to check if registration of locale otherwise register it\n map((state: I18nState) => this.localeMapper(state.activeLang)),\n // update the \"available\" array attribute with newly registered\n switchMap((id: string) =>\n this.getState().pipe(\n take(1),\n map((state: LocaleState) => {\n const available = state['available'] ? state['available'] : [];\n return { ...state, id, available: Array.from(new Set([...available, id])) };\n }),\n ),\n ),\n )\n .subscribe((state: LocaleState) => {\n return this.updateState(state as Partial<T>);\n });\n }\n }\n\n\t/**\n\t * Checks if a given locale string is valid according to the Intl.Locale API. (based on BCP 47)\n\t * A valid locale string can be used to create a new Intl.Locale object without throwing an error.\n\t *\n\t * @param localeString - The locale string to be validated.\n\t * @returns {boolean} - Returns true if the locale string is valid, false otherwise.\n\t */\n\tprivate isValidLocale(localeString: string): boolean {\n\t\ttry {\n\t\t\t// Normalize: replace underscores with hyphens (support for Angular locale ids)\n\t\t\t// e.g., 'en_US' -> 'en-US'\n\t\t\t// Note: Intl.Locale only accepts hyphens as separators\n\t\t\t// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale\n\t\t\tconst normalizedString = localeString.replace(/_/g, '-');\n\t\t\tnew Intl.Locale(normalizedString);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { EuiServiceStatus, LocaleState } from '@eui/base';\nimport { LocaleService } from './locale.service';\nimport localeFr from '@angular/common/locales/fr';\nimport localeEl from '@angular/common/locales/el';\nimport { registerLocaleData } from '@angular/common';\n\n@Injectable()\nexport class LocaleServiceMock<T extends LocaleState = LocaleState> extends LocaleService<T> {\n protected override locale_id: string = inject(LOCALE_ID, { optional: true });\n\n private DEFAULT_LOCALE = 'en';\n private stateSub: BehaviorSubject<T> = new BehaviorSubject<T>({ id: this.DEFAULT_LOCALE } as T);\n\n constructor() {\n super();\n }\n\n override getState(): Observable<T> {\n return this.stateSub.asObservable();\n }\n\n override updateState(state: T): void {\n this.DEFAULT_LOCALE = state.id || 'en';\n if (state.id === 'fr') {\n registerLocaleData(localeFr, 'fr');\n } else if (state.id === 'el') {\n registerLocaleData(localeEl, 'fr');\n }\n this.stateSub.next(state);\n }\n\n override init(state?: T): Observable<EuiServiceStatus> {\n this.DEFAULT_LOCALE = state.id || 'en';\n return of({ success: true });\n }\n}\n","/**\n * The status of a library\n * @enum Status\n * @property {string} LOADING - the library is loading\n * @property {string} LOADED - the library is loaded\n * @property {string} ERROR - the library failed to load\n */\nexport enum Status {\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error',\n}\n\n/**\n * A library is a set of script and style dependencies\n * that can be loaded dynamically\n * @interface Library\n * @property {string} name - global variable object name that the script will give to the library\n * @property {Dependency[]} dependencies - a set of script and style dependencies\n * @property {Status} status - the status of the library e.g. LOADED\n * @example\n *\n * const library: Library = {\n * name: 'Quill',\n * dependencies: [\n * {\n * name: 'quill',\n * url: 'https://cdn.quilljs.com/1.3.6/quill.js',\n * type: 'js',\n * requires: [],\n * loaded: false,\n * error: false,\n * },\n * {\n * name: 'quill',\n * url: 'https://cdn.quilljs.com/1.3.6/quill.snow.css',\n * type: 'css',\n * requires: [],\n * loaded: false,\n * error: false,\n * },\n * ],\n * status: Status.LOADING,\n * };\n */\nexport interface Library {\n /** global variable object name that the script will give to the library */\n name: string;\n /** a set of script and style dependencies */\n dependencies: Dependency[];\n /** the status of the library e.g. LOADED */\n status: Status;\n}\n\n/**\n * A dependency is a script or style that can be loaded dynamically\n */\nexport interface Dependency {\n /** an identifier for the dependency */\n name: string;\n /**\n * the url of the dependency\n * @example\n * https://cdn.quilljs.com/1.3.6/quill.js\n */\n url: string;\n /** the type of the dependency. Is it a style or script? */\n type: 'js' | 'css';\n /**\n * an array of dependencies corresponds to the Dependency.name\n * that must be loaded before this dependency\n * @example\n * ['quill-better-table']\n * where 'quill-better-table' is the name of the dependency\n * const betterTable: Dependency = {\n * name: 'quill-better-table',\n * url: 'https://cdn.quilljs.com/1.3.6/quill.js',\n * type: 'js',\n * requires: ['quill-better-table'],\n * }\n */\n requires: string[];\n /** the status of the dependency */\n status?: Status;\n /** the number of times the dependency has been loaded */\n retries?: number;\n}\n\n/**\n * Configuration for different policies\n */\nexport interface Policy {\n /** Maximum number of retry attempts */\n maxAttempts: number;\n /** Time between retries in milliseconds */\n retryInterval: number;\n /** Time in milliseconds before considering a load attempt as failed */\n timeout: number;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Dependency, Policy, Status } from './eui-loader.model';\nimport { filter, map } from 'rxjs/operators';\n\n/**\n * A service for loading external dependencies dynamically to the DOM and keeping track of their status. Dependencies\n * can be loaded in any order and can have prerequisites. The service will load the prerequisites first and then load\n * the dependency. If a dependency fails to load, the service will retry loading it according to the retry policy.\n * The service will emit the status of the dependency when it changes. This is useful for showing a loading indicator\n * while the dependency is loading. In scenarios where the dependency is not required for the application to function,\n * the service will not block the application from loading if the dependency fails to load. The service will also\n * remove the dependency from the DOM if it is removed from the list. This is useful for scenarios where the dependency\n * is only required for a specific component, might be removed from the list when the component is destroyed, and it\n * will not affect the bundle size.\n *\n * @example\n * // Add a dependency\n * loader.addDependency('Quill', 'https://cdn.quilljs.com/1.3.6/quill.js', 'js');\n * // Get the status of a dependency\n * loader.getDependencyStatus('Quill');\n * // Listen for status changes\n * loader.statusChanges('Quill').subscribe((status: Status) => {\n * console.log(status);\n * });\n * // Remove a dependency\n * loader.removeDependency('Quill');\n * // Set the retry policy\n * loader.setRetryPolicy(3, 1000);\n * // Set the timeout policy\n * loader.setTimeoutPolicy(5000);\n * // Load a dependency with prerequisites\n * loader.addDependency('Quill', 'https://cdn.quilljs.com/1.3.6/quill.js', 'js', ['QuillStyle']);\n * loader.addDependency('QuillStyle', 'https://cdn.quilljs.com/1.3.6/quill.snow.css', 'css');\n * // Load a dependency with prerequisites and retry logic\n * loader.setRetryPolicy(3, 1000);\n * loader.setTimeoutPolicy(5000);\n * loader.addDependency('Quill', 'https://cdn.quilljs.com/1.3.6/quill.js', 'js', ['QuillStyle']);\n * loader.addDependency('QuillStyle', 'https://cdn.quilljs.com/1.3.6/quill.snow.css', 'css');\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiLoaderService {\n /**\n * Stores the status and details of each dependency\n */\n private dependencies: Dependency[] = [];\n\n /** Observable that emits the name of the dependency when its status changes */\n private onStatusChange: Subject<string> = new Subject<string>();\n\n /**\n * Configuration for policies such as Retry and timeout for failed loads\n */\n private policy: Policy = {\n maxAttempts: 3,\n retryInterval: 1000,\n timeout: 5000,\n };\n\n /**\n * Add a dependency with its type (JS or CSS) and dependencies\n *\n * @param name The name of the dependency\n * @param url The URL of the dependency\n * @param type The type of the dependency (JS or CSS)\n * @param requires The dependencies that must be loaded before this one (optional)\n */\n addDependency(name: string, url: string, type: 'js' | 'css', requires: string[] = []): void {\n // if the dependency is not already in the list\n if (!this.dependencies.find(d => d.name === name)) {\n // Add the dependency to the list\n this.dependencies.push({\n name,\n url,\n type,\n requires,\n status: Status.LOADING,\n retries: 0,\n });\n // Load the dependency to the DOM\n this.loadDependency(name);\n }\n }\n\n /**\n * Remove a dependency from the DOM\n *\n * @param name The name of the dependency\n */\n removeDependency(name: string): void {\n const index = this.dependencies.findIndex(d => d.name === name);\n if (index === -1) {\n return;\n }\n const dependency: Dependency = this.dependencies.at(index);\n let element: HTMLScriptElement | HTMLLinkElement | null = null;\n\n if (dependency.type === 'js') {\n element = this.getScript(dependency.url);\n } else {\n element = this.getStyle(dependency.url);\n }\n\n if (element) {\n element.remove(); // Remove the element from the DOM\n } else {\n console.warn(`Dependency ${name} not found in DOM.`);\n }\n this.dependencies.splice(index, 1); // Remove the dependency from the list\n }\n\n /**\n * Allow users to configure the retry policy\n *\n * @param maxAttempts The maximum number of retry attempts\n * @param retryInterval The time between retries in milliseconds\n */\n setRetryPolicy(maxAttempts: number, retryInterval: number): void {\n this.policy.maxAttempts = maxAttempts;\n this.policy.retryInterval = retryInterval;\n }\n\n /**\n * Allow users to configure the timeout policy\n *\n * @param time The time in milliseconds before considering a load attempt as failed\n * @see setRetryPolicy\n * @see statusChanges\n */\n setTimeoutPolicy(time: number): void {\n this.policy.timeout = time;\n }\n\n /**\n * Get the status of a dependency\n *\n * @param name The name of the dependency\n * @returns The status of the dependency\n * @deprecated Prefer using statusChanges instead\n * @see statusChanges\n */\n getDependencyStatus(name: string): Status | null {\n const dependency: Dependency = this.dependencies.find(d => d.name === name);\n return dependency?.status || null;\n }\n\n /**\n * Get the status of a dependency as an observable\n *\n * @param name The name of the dependency\n */\n statusChanges(name: string): Observable<Status> {\n return this.onStatusChange.asObservable()\n .pipe(\n filter((loadedName: string) => loadedName === name),\n map(() => this.dependencies.find(d => d.name === name)?.status),\n );\n }\n\n /**\n * Load a dependency and its prerequisites\n *\n * @param name The name of the dependency\n * @see loadDependency\n */\n private loadDependency(name: string): void {\n const dependency: Dependency = this.dependencies.find(d => d.name === name);\n if(dependency === undefined) {\n console.error(`Dependency ${name} not found in list.`);\n return;\n }\n if (dependency?.requires.length) {\n // Load all prerequisites first\n dependency.requires.forEach((dep) => {\n // If the dependency is not already loaded or in the list, load it\n if (!this.dependencies.find(d => d.name === dep && d.status === Status.LOADED)) {\n this.loadDependency(dep);\n }\n });\n }\n\n // Load the actual dependency\n if (dependency?.type === 'js' && this.getScript(dependency?.url) === null) {\n this.loadScript(dependency);\n } else if (this.getStyle(dependency?.url) === null) {\n this.loadStyle(dependency);\n }\n }\n\n /**\n * Load a JS script and append it to the root of the DOM\n * @param dependency\n */\n private loadScript(dependency: Dependency): void {\n const script: HTMLScriptElement = document.createElement('script');\n script.src = dependency.url;\n script.type = 'module';\n // script.defer = true; #Consider this to ensure scripts are loaded in order\n\n script.onload = (): void => {\n dependency.status = Status.LOADED;\n this.onStatusChange.next(dependency.name);\n };\n\n script.onerror = (): void => {\n this.handleError(dependency.name, 'Failed to load script');\n };\n\n // Append to the root of the DOM\n document.body.append(script);\n }\n\n /**\n * Load a CSS style and append it to the head of the document\n * @param dependency\n */\n private loadStyle(dependency: Dependency): void {\n const link: HTMLLinkElement = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = dependency.url;\n\n link.onload = (): void => {\n dependency.status = Status.LOADED;\n this.onStatusChange.next(dependency.name);\n };\n\n link.onerror = (): void => {\n this.handleError(dependency.name, 'Failed to load stylesheet');\n };\n\n // Append to the head, which is conventionally used for stylesheets\n document.head.append(link);\n }\n\n /**\n * Error handling for a failed load\n * @param name\n * @param error\n */\n private handleError(name: string, error: string): void {\n const dependency: Dependency = this.dependencies.find(d => d.name === name);\n \n console.error(`Error loading ${name}: ${error}`);\n \n if (dependency) {\n console.error(`Error loading ${name}: ${error}`);\n if (dependency.status !== Status.ERROR) {\n dependency.status = Status.ERROR;\n this.onStatusChange.next(dependency.name);\n // Retry logic\n if (dependency?.retries < this.policy.maxAttempts) {\n setTimeout(() => {\n console.log(`Retrying to load ${name}, attempt ${dependency.retries + 1}`);\n dependency.retries++;\n this.reloadDependency(dependency);\n }, this.policy.retryInterval);\n } else {\n console.error(`Failed to load ${name} after ${this.policy.maxAttempts} attempts`);\n }\n }\n }\n }\n\n /**\n * Get the script element from the DOM\n *\n * @param url\n * @private\n */\n private getScript(url: string): HTMLScriptElement | null {\n return document.querySelector(`script[src=\"${url}\"]`);\n }\n\n /**\n * Get the style element from the DOM\n *\n * @param url\n * @private\n */\n private getStyle(url: string): HTMLLinkElement | null {\n return document.querySelector(`link[href=\"${url}\"]`);\n }\n\n /**\n * Reload a dependency which can be either a script or a style. First remove\n * the element from the DOM and then load it again.\n *\n * @param dependency\n * @private\n */\n private reloadDependency(dependency: Dependency): void {\n if (dependency.type === 'js') {\n const script = this.getScript(dependency.url);\n script.remove();\n this.loadScript(dependency);\n } else {\n const style = this.getStyle(dependency.url);\n style.remove();\n this.loadStyle(dependency);\n }\n }\n}\n","import { Injectable, Signal, inject } from '@angular/core';\nimport { BehaviorSubject, type Observable } from 'rxjs';\nimport { of } from 'rxjs/internal/observable/of';\nimport { DeepPartial, EuiService, EuiServiceStatus, UserState } from '@eui/base';\nimport { StoreService } from '../store';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { isEqual } from 'lodash-es';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService<T extends UserState = UserState> extends EuiService<T | UserState> {\n protected store = inject(StoreService);\n\n private static readonly DEFAULT_STATE: UserState = { userId: 'annonymous' };\n\n /**\n * a single signal holding the state - initial state is null\n */\n private state: Signal<T>;\n /**\n * a BehaviorSubject holding the state - initial state is null\n * This is the main source of truth for the state\n */\n private stateSubject: BehaviorSubject<T>;\n\n constructor() {\n super(UserService.DEFAULT_STATE as T);\n // Create a BehaviorSubject with the initial state\n this.stateSubject = new BehaviorSubject<T>(this.stateInstance as T);\n\n // Initialize signal with base state\n this.state = toSignal(this.stateSubject, { equal: isEqual });\n\n // Subscribe to base class state changes\n this.onStateChange.subscribe((newState) => {\n const clonedState = structuredClone(newState as T);\n this.stateSubject.next(clonedState);\n });\n }\n\n init(state: T): Observable<EuiServiceStatus> {\n super.initEuiService();\n if (Object.prototype.hasOwnProperty.call(state, 'userId')) {\n // Let base class handle state update\n this.updateState(state);\n return of({ success: true });\n }\n return of({ success: false, error: 'Init object should be instance of BaseUserState' });\n }\n\n getState(): Observable<T>;\n /**\n * @deprecated this will be removed in a future version\n * @param mapFn\n */\n getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n getState<a extends keyof DeepPartial<T>>(key?: a): Observable<DeepPartial<a>>;\n getState<K = T>(keyOrMapFn?: ((state: T) => K) | string): Observable<DeepPartial<K>> {\n if (!keyOrMapFn) {\n return this.stateSubject.asObservable().pipe(\n distinctUntilChanged((x, y) => isEqual(x, y)),\n ) as Observable<DeepPartial<K>>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return this.stateSubject.asObservable().pipe(\n map(state => keyOrMapFn(state)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return this.stateSubject.asObservable().pipe(\n map(state => {\n const keys = (keyOrMapFn as string).split('.');\n\n // Traverse the object based on the dot notation\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state as DeepPartial<T>);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n /**\n * This method is used to update the state of the service with a new state.\n *\n * @param state\n */\n updateState(state: DeepPartial<T>): void;\n /**\n * @deprecated it will be removed in next version. Use updateState(partialState: DeepPartial<T>) instead\n * @param slice\n * @param reducer\n */\n updateState(slice: DeepPartial<T>, reducer: (state: T, action: DeepPartial<T>) => T): void;\n updateState<K extends T>(state: DeepPartial<K>, reducer?: (state: T, action: DeepPartial<K>) => T): void {\n if (reducer) {\n this.stateInstance = reducer(this.stateInstance as T, state);\n } else {\n this.stateInstance = super.deepMerge(this.stateInstance as T, state);\n }\n // Emit state change\n this.onStateChange.next(this.stateInstance);\n }\n\n /**\n * This method is used to get the signal of the service.\n */\n getSignal(): Signal<T> {\n return this.state;\n }\n}\n","import { Observable, of } from 'rxjs';\nimport { UserService } from './user.service';\nimport { Injectable } from '@angular/core';\nimport { EuiServiceStatus, UserState } from '@eui/base';\n\n@Injectable()\nexport class UserServiceMock<T> extends UserService {\n constructor() {\n super();\n }\n\n override init(userState: UserState): Observable<EuiServiceStatus> {\n return of({ success: true });\n }\n\n override getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n override getState<a extends keyof T>(key?: a): Observable<T[a]>;\n override getState<K>(keyOrMapFn?: ((state: T) => K) | string): Observable<K> {\n return of({} as K);\n }\n\n override updateState(userState: UserState): void;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override updateState<a extends keyof T>(slice: T[a], reducer: (state: any, action: T[a]) => any): void;\n override updateState<K>(userState: K | T, reducer?: unknown): void {\n /* empty */\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport const LANG_PARAM_KEY = 'X-Lang-Param';\n\n/**\n * Interceptor for adding the current language as parameter\n * Add the header (LANG_PARAM_KEY, <language parameter>) to your request http headers\n */\n@Injectable()\nexport class AddLangParamInterceptor implements HttpInterceptor {\n protected translateService = inject(TranslateService);\n\n intercept<T>(req: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n // take the lang param name from header, if specified\n const langParam = req.headers.get(LANG_PARAM_KEY);\n\n // if not specified, do nothing\n if (!langParam) {\n return next.handle(req);\n }\n\n // take the current language from the translate service\n const langValue = this.translateService.currentLang;\n\n return next.handle(\n req.clone({\n // remove the lang param header from headers\n headers: req.headers.delete(LANG_PARAM_KEY),\n // set the lang value as new parameter\n params: req.params.set(langParam, langValue),\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CachePreventionInterceptor implements HttpInterceptor {\n intercept<T>(req: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n // if Cache-Control is already specified\n if (req.headers.get('Cache-Control')) {\n // keep the current configuration\n return next.handle(req);\n }\n\n return next.handle(\n req.clone({\n // prevent the cache\n headers: req.headers.set('Cache-Control', 'No-Cache'),\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CorsSecurityInterceptor implements HttpInterceptor {\n intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n return next.handle(\n request.clone({\n withCredentials: true,\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CsrfPreventionInterceptor implements HttpInterceptor {\n intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n return next.handle(\n request.clone({\n headers: request.headers.set('X-Requested-With', 'XMLHttpRequest'),\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse, HttpResponseBase } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\ninterface body {\n success: boolean;\n status: string;\n code: number;\n message: string;\n}\n\n// The EuLoginSessionTimeoutHandlingInterceptor assumes that the EU login client is configured with:\n// <redirectionInterceptor>eu.cec.digit.ecas.client.http.ajax.JsonAjaxRedirectionInterceptor</redirectionInterceptor>\n// WARNING: The default EU login client behaviour that provides the JSON-un-parsable login HTML page, is no longer supported!\n@Injectable()\nexport class EuLoginSessionTimeoutHandlingInterceptor implements HttpInterceptor {\n intercept<T extends body>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n return next.handle(request).pipe(\n tap({\n next: (event) => {\n this.checkRequestSuccessForEULoginSessionTimeout(request, event);\n return event;\n },\n error: (error) => {\n this.checkRequestErrorForEULoginSessionTimeout(request, error);\n },\n }),\n );\n }\n\n protected checkRequestSuccessForEULoginSessionTimeout<T extends body, E>(request: HttpRequest<T>, event: HttpEvent<E>): void {\n if (event instanceof HttpResponse) {\n if (this.isSsoResponse((<HttpResponse<string | body>>event).body)) {\n this.reauthenticate();\n }\n }\n }\n\n protected checkRequestErrorForEULoginSessionTimeout<T = unknown>(request: HttpRequest<T>, response: HttpResponseBase): void {\n /* intentionally blank; meant for overriding */\n }\n\n protected isSsoResponse(body: string | body): boolean {\n if (body) {\n if (typeof body !== 'string') {\n return (\n body.success === false &&\n body.status === 'ECAS_AUTHENTICATION_REQUIRED' &&\n body.code === 303 &&\n body.message === 'session expired'\n );\n } else {\n const html = body;\n try {\n return (\n (html.indexOf('<meta name=\"Keywords\" content=\"EU Login, ECAS, Authentication, Security\" />') >= 0 &&\n html.indexOf('<meta name=\"Description\" content=\"EU Login\" />') >= 0) ||\n html.indexOf('<meta name=\"Description\" content=\"European Commission Authentication Service\" />') >= 0 ||\n html.indexOf('<title>Mock Login Form</title>') >= 0 ||\n html.indexOf('<title>Redirecting To ECAS</title>') >= 0 ||\n html === '{ success : false, status : \"ECAS_AUTHENTICATION_REQUIRED\", code : 303, message : \"session expired\" }' ||\n // eslint-disable-next-line max-len\n JSON.stringify(JSON.parse(html)) ===\n JSON.stringify({\n success: false,\n status: 'ECAS_AUTHENTICATION_REQUIRED',\n code: 303,\n message: 'session expired',\n })\n );\n } catch (e) {\n return false;\n }\n }\n } else {\n return false;\n }\n }\n\n protected reauthenticate(): void {\n document.location.reload();\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ErrorMappingHandler, transformToUxHttpResponse, UxHttpErrorResponse } from '@eui/base';\n\nexport const UX_ERROR_MAPPING_HANDLER_TOKEN = new InjectionToken<ErrorMappingHandler>('UX_ERROR_MAPPING_HANDLER');\n\n@Injectable()\nexport class UxRequestErrorModelInterceptor implements HttpInterceptor {\n private errorMappingHandler = inject<ErrorMappingHandler>(UX_ERROR_MAPPING_HANDLER_TOKEN);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req).pipe(\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n catchError((err: any) => {\n if (this.errorMappingHandler) {\n if (err instanceof HttpErrorResponse) {\n err = transformToUxHttpResponse(err, this.errorMappingHandler) as UxHttpErrorResponse;\n }\n }\n return of(err);\n }),\n );\n }\n}\n","/* BASE PACKAGE */\nexport * from '@eui/base';\n\n/* CORE MODULES */\nexport * from './lib/eui-core.module';\n\n/* CORE SERVICES */\nexport * from './lib/services/index';\n\n// /* CORE CONFIG TOKENS */\n// export * from './lib/services/config/tokens';\n\n/* CORE INTERCEPTORS */\nexport * from './lib/interceptors/index';\n\n/* CORE HELPERS */\nexport * from './lib/helpers/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["actionToReducerMap","initialState","of"],"mappings":"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"}
1
+ {"version":3,"file":"eui-core.mjs","sources":["../../src/lib/services/config/defaults.ts","../../src/lib/services/config/tokens.ts","../../src/lib/services/store/actions/app.actions.ts","../../src/lib/services/store/actions/i18n.actions.ts","../../src/lib/services/store/actions/user.actions.ts","../../src/lib/services/store/actions/notifications.actions.ts","../../src/lib/services/store/actions/locale.actions.ts","../../src/lib/services/store/reducers/app.reducers.ts","../../src/lib/services/store/reducers/user.reducers.ts","../../src/lib/services/store/reducers/notifications.reducers.ts","../../src/lib/services/store/reducers/i18n.reducers.ts","../../src/lib/services/store/reducers/locale.reducers.ts","../../src/lib/services/store/reducers/core.reducers.ts","../../src/lib/services/store/reducers/meta.reducers.ts","../../src/lib/services/log/log.service.ts","../../src/lib/services/log/log.service.mock.ts","../../src/lib/services/app/factories/log.ts","../../src/lib/services/log/log.module.ts","../../src/lib/services/store/store.service.ts","../../src/lib/services/store/store.service.mock.ts","../../src/lib/services/app/eui-startup.ts","../../src/lib/eui-core.module.ts","../../src/lib/services/app/eui-pre-init-app.ts","../../src/lib/services/app/eui-init-app.ts","../../src/lib/services/errors/eui.error.ts","../../src/lib/services/errors/global-error-handler.ts","../../src/lib/services/errors/http-error-handler.interceptor.ts","../../src/lib/services/growl/eui-growl.service.ts","../../src/lib/services/errors/http-error-handler-callback-functions.ts","../../src/lib/services/queue/api-queue.service.ts","../../src/lib/services/queue/api-queue.service.mock.ts","../../src/lib/services/i18n/i18n.resource.ts","../../src/lib/services/i18n/i18n.loader.ts","../../src/lib/services/i18n/i18n.service.ts","../../src/lib/services/i18n/index.ts","../../src/lib/helpers/date-helpers.ts","../../src/lib/helpers/dom-helpers.ts","../../src/lib/helpers/event-helpers.ts","../../src/lib/helpers/form-helpers.ts","../../src/lib/helpers/format-helpers.ts","../../src/lib/helpers/http-helpers.ts","../../src/lib/helpers/utils.ts","../../src/lib/helpers/css-utils.ts","../../src/lib/helpers/injector.ts","../../src/lib/services/permission/permission.service.ts","../../src/lib/services/dynamic-menu/dynamic-menu.service.ts","../../src/lib/services/dynamic-component/dynamic-component.service.ts","../../src/lib/services/eui-app-shell.service.ts","../../src/lib/services/eui-timezone.service.ts","../../src/lib/services/eui-theme.service.ts","../../src/lib/services/storage/storage.service.ts","../../src/lib/services/storage/storage.service.mock.ts","../../src/lib/services/storage/async-storage.service.ts","../../src/lib/services/storage/async-storage.service.mock.ts","../../src/lib/services/storage/local-storage.service.ts","../../src/lib/services/storage/session-storage.service.ts","../../src/lib/services/storage/local-forage.service.ts","../../src/lib/services/locale/locale.service.ts","../../src/lib/services/locale/locale.service.mock.ts","../../src/lib/services/loader/eui-loader.model.ts","../../src/lib/services/loader/eui-loader.service.ts","../../src/lib/services/user/user.service.ts","../../src/lib/services/user/user.service.mock.ts","../../src/lib/interceptors/add-lang-param.interceptor.ts","../../src/lib/interceptors/cache-prevention.interceptor.ts","../../src/lib/interceptors/cors-security.interceptor.ts","../../src/lib/interceptors/csrf-prevention.interceptor.ts","../../src/lib/interceptors/eu-login-session-timeout-handling.interceptor.ts","../../src/lib/interceptors/ux-request-error-model.interceptor.ts","../../src/index.ts","../../src/eui-core.ts"],"sourcesContent":["import {\n EuiConfig,\n EuiAppConfig,\n EuiEnvConfig,\n GlobalConfig,\n LogLevel,\n LogConfig,\n ConsoleAppender,\n HttpErrorHandlerConfig,\n I18nLoaderConfig,\n I18nServiceConfig,\n LocaleServiceConfig,\n} from '@eui/base';\n\n/** default log configuration */\nexport const DEFAULT_LOG_CONFIG: LogConfig = {\n baseLoggerName: 'root',\n logLevel: LogLevel.ERROR,\n logAppenders: {\n type: ConsoleAppender,\n prefixFormat: '[{level}]',\n },\n};\n\nexport const DEFAULT_I18N_SERVICE_CONFIG: I18nServiceConfig = {\n languages: ['en'],\n defaultLanguage: 'en',\n};\n\nexport const DEFAULT_I18N_LOADER_CONFIG: I18nLoaderConfig = {};\n\nexport const DEFAULT_LOCALE_SERVICE_CONFIG: LocaleServiceConfig = {\n bindWithTranslate: false,\n};\n\nexport const DEFAULT_HTTP_ERROR_HANDLER_CONFIG: HttpErrorHandlerConfig = {\n routes: [],\n};\n\nexport const DEFAULT_GLOBAL_CONFIG: GlobalConfig = {\n showConnectionStatus: {\n messageBox: {\n lifespan: 0,\n },\n enabled: true,\n },\n i18n: {\n i18nService: {\n ...DEFAULT_I18N_SERVICE_CONFIG,\n },\n i18nLoader: {\n ...DEFAULT_I18N_LOADER_CONFIG,\n },\n },\n locale: {\n ...DEFAULT_LOCALE_SERVICE_CONFIG,\n },\n user: {\n defaultUserPreferences: {\n locale: {\n ...DEFAULT_LOCALE_SERVICE_CONFIG,\n },\n },\n },\n};\nexport const DEFAULT_EUI_APP_CONFIG: EuiAppConfig = {\n global: {\n ...DEFAULT_GLOBAL_CONFIG,\n },\n};\n\nexport const DEFAULT_EUI_ENV_CONFIG: EuiEnvConfig = {\n envAppHandlersConfig: {},\n};\n\nexport const DEFAULT_EUI_CONFIG: EuiConfig = {\n appConfig: {\n ...DEFAULT_EUI_APP_CONFIG,\n },\n environment: {\n ...DEFAULT_EUI_ENV_CONFIG,\n },\n};\n","import {\n EuiAppConfig,\n EuiAppHandlersConfig,\n EuiAppJsonConfig,\n EuiConfig,\n LogConfig,\n ModuleConfig,\n GlobalConfig,\n HttpErrorHandlerConfig,\n ConnectionStatus,\n} from '@eui/base';\nimport { deepmerge } from 'deepmerge-ts';\n// import * as extendProxy from 'extend';\n\n// const extend = (<{default: unknown}>extendProxy).default || extendProxy;\n\nimport { InjectionToken } from '@angular/core';\nimport { DEFAULT_EUI_CONFIG } from './defaults';\n\nexport const EUI_CONFIG_TOKEN = new InjectionToken<EuiConfig>('EuiConfig');\nexport const MODULE_NAME_TOKEN = new InjectionToken<string>('moduleName');\nexport const MODULE_CONFIG_TOKEN = new InjectionToken<ModuleConfig>('moduleConfig');\nexport const CONFIG_TOKEN = new InjectionToken<EuiAppConfig>('finalConfigToken');\nexport const GLOBAL_CONFIG_TOKEN = new InjectionToken<GlobalConfig>('globalConfig');\nexport const BASE_NAME_TOKEN = new InjectionToken<string>('baseName');\nexport const ROOT_LOG_CONFIG_TOKEN = new InjectionToken<LogConfig>('logConfig');\nexport const SHOW_CONNECTION_STATUS_TOKEN = new InjectionToken<boolean>('SHOW_CONNECTION_STATUS');\n\nexport const HTTP_ERROR_HANDLER_CONFIG_TOKEN = new InjectionToken<HttpErrorHandlerConfig>('HTTP_ERROR_HANDLER_CONFIG');\n\nexport function getGlobalConfig(appConfig: EuiAppConfig): GlobalConfig {\n return Object.assign(DEFAULT_EUI_CONFIG.appConfig.global, appConfig && appConfig.global);\n}\n\nexport function getShowConnectionStatus(globalConfig: GlobalConfig): ConnectionStatus {\n return Object.assign({}, DEFAULT_EUI_CONFIG.appConfig.global.showConnectionStatus, globalConfig && globalConfig.showConnectionStatus);\n}\n\nexport function getModuleConfig(appConfig: EuiAppConfig, moduleName: string): ModuleConfig {\n return Object.assign({}, appConfig && appConfig.modules && appConfig.modules[moduleName]);\n}\n\nexport function getHttpErrorHandlingConfig(appConfig: EuiAppConfig): HttpErrorHandlerConfig {\n return Object.assign({}, appConfig && appConfig.httpErrorHandler);\n}\n\nexport function getRootLogConfig(appConfig: EuiAppConfig): LogConfig {\n return Object.assign({}, appConfig && appConfig.log);\n}\n\nexport function prepareEuiAppConfigToken(euiConfig: EuiConfig): EuiAppConfig {\n const environment = euiConfig && euiConfig.environment;\n const merge: Array<string> =\n environment.envDynamicConfig && environment.envDynamicConfig.merge && Array.isArray(environment.envDynamicConfig.merge)\n ? environment.envDynamicConfig.merge\n : [];\n const isDeepMerge: boolean =\n environment.envDynamicConfig && environment.envDynamicConfig.deepMerge ? environment.envDynamicConfig.deepMerge : false;\n const envAppJsonConfig: EuiAppJsonConfig = environment && environment.loadedEnvDynamicConfig;\n const initialAppConfig = euiConfig && euiConfig.appConfig;\n const envAppHandlersConfig: EuiAppHandlersConfig = environment && environment.envAppHandlersConfig;\n\n const envHandlersMergedAppConfig = mergeAppHandlerConfigToAppConfig(initialAppConfig, envAppHandlersConfig);\n const finalConfig = mergeAppJsonConfigToAppConfig(envHandlersMergedAppConfig, envAppJsonConfig, merge, isDeepMerge);\n return finalConfig;\n}\n\nexport function mergeAppHandlerConfigToAppConfig(euiAppConfig: EuiAppConfig, envAppHandler: EuiAppHandlersConfig): EuiAppConfig {\n return Object.assign({}, euiAppConfig, envAppHandler);\n}\n\nexport function mergeAppJsonConfigToAppConfig(\n euiAppConfig: EuiAppConfig,\n envAppJsonConfig: EuiAppJsonConfig,\n merge: Array<string>,\n isDeepMerge: boolean,\n): EuiAppConfig {\n const deepMerged = {};\n if (merge && merge.length > 0) {\n merge.forEach((key) => {\n if (\n envAppJsonConfig != null &&\n envAppJsonConfig[key] &&\n typeof envAppJsonConfig[key] === 'object' &&\n euiAppConfig != null &&\n euiAppConfig[key] &&\n typeof euiAppConfig[key] === 'object'\n ) {\n if (isDeepMerge) {\n deepMerged[key] = {};\n deepMerged[key] = deepmerge(euiAppConfig[key], envAppJsonConfig[key]);\n // extend(true, deepMerged[key], euiAppConfig[key], envAppJsonConfig[key]);\n } else {\n envAppJsonConfig[key] = {\n ...euiAppConfig[key],\n ...envAppJsonConfig[key],\n };\n }\n }\n });\n }\n return Object.assign({}, euiAppConfig, envAppJsonConfig, deepMerged);\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { Action } from '../ngrx_kit';\nimport { ModuleConfig, ApiQueueItem } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreAppActionTypes {\n INIT_STORE = '[App] Init store',\n UPDATE_APP_VERSION = '[App] Update version',\n UPDATE_APP_CONNECTION = '[App] Update connection',\n ADD_APP_LOADED_CONFIG_MODULES = '[App] Update app loaded config modules',\n UPDATE_APP_STATUS = '[App] Update status',\n UPDATE_CURRENT_MODULE = '[App] Update current module',\n ACTIVATED_ROUTE = '[App] Activated route',\n ADD_API_QUEUE_ITEM = '[App] Add API queue item',\n REMOVE_API_QUEUE_ITEM = '[App] Remove API queue item',\n EMPTY_API_QUEUE = '[App] empty API queue',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class InitStoreAction implements Action {\n type = CoreAppActionTypes.INIT_STORE;\n\n constructor(public payload: { version?: string }) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateAppVersionAction implements Action {\n type = CoreAppActionTypes.UPDATE_APP_VERSION;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateAppConnectionAction implements Action {\n type = CoreAppActionTypes.UPDATE_APP_CONNECTION;\n\n constructor(public payload: boolean) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class AddAppLoadedConfigModulesAction implements Action {\n type = CoreAppActionTypes.ADD_APP_LOADED_CONFIG_MODULES;\n\n constructor(public payload: { moduleName: string; moduleConfig: ModuleConfig }) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateAppStatusAction implements Action {\n type = CoreAppActionTypes.UPDATE_APP_STATUS;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateCurrentModuleAction implements Action {\n type = CoreAppActionTypes.UPDATE_CURRENT_MODULE;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class ActivatedRouteAction implements Action {\n type = CoreAppActionTypes.ACTIVATED_ROUTE;\n\n constructor(public payload: ActivatedRoute) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class AddApiQueueItemAction implements Action {\n type = CoreAppActionTypes.ADD_API_QUEUE_ITEM;\n\n constructor(public payload: { id: string; item: ApiQueueItem }) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class RemoveApiQueueItemAction implements Action {\n type = CoreAppActionTypes.REMOVE_API_QUEUE_ITEM;\n\n constructor(public payload: string) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class EmptyApiQueueAction implements Action {\n type = CoreAppActionTypes.EMPTY_API_QUEUE;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(public payload: any) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreAppActions =\n | InitStoreAction\n | UpdateAppVersionAction\n | UpdateAppConnectionAction\n | AddAppLoadedConfigModulesAction\n | UpdateAppStatusAction\n | UpdateCurrentModuleAction\n | ActivatedRouteAction\n | AddApiQueueItemAction\n | RemoveApiQueueItemAction;\n","import { Action } from '../ngrx_kit';\nimport { I18nState } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreI18nActionTypes {\n UPDATE_I18N_STATE = '[I18n] Update I18n State',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateI18nStateAction implements Action {\n type = CoreI18nActionTypes.UPDATE_I18N_STATE;\n constructor(public payload: I18nState) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreI18nActions = UpdateI18nStateAction;\n","import { Action } from '../ngrx_kit';\nimport { UserState, UserDetails, UserPreferences, EuiUserRight } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreUserActionTypes {\n UPDATE_USER_STATE = '[User] Update User state',\n UPDATE_USER_DETAILS = '[User] Update details',\n UPDATE_USER_PREFERENCES = '[User] Update preferences',\n UPDATE_USER_RIGHTS = '[User] Update rights',\n UPDATE_USER_DASHBOARD = '[User] Update dashboard',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserStateAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_STATE;\n\n constructor(public payload: UserState) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserDetailsAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_DETAILS;\n\n constructor(public payload: UserDetails) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserPreferencesAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_PREFERENCES;\n\n constructor(public payload: UserPreferences) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserRightsAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_RIGHTS;\n\n constructor(public payload: EuiUserRight[]) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateUserDashboardAction implements Action {\n type = CoreUserActionTypes.UPDATE_USER_DASHBOARD;\n\n constructor(public payload: unknown) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreUserActions = UpdateUserDetailsAction | UpdateUserPreferencesAction | UpdateUserRightsAction | UpdateUserDashboardAction;\n","import { Action } from '../ngrx_kit';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreNotificationsActionTypes {\n UPDATE_NOTIFICATIONS_LIST = '[Notif] Update list',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateNotificationsListAction implements Action {\n type = CoreNotificationsActionTypes.UPDATE_NOTIFICATIONS_LIST;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(public payload: any[]) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreNotificationsActions = UpdateNotificationsListAction;\n","import { Action } from '../ngrx_kit';\nimport { LocaleState } from '@eui/base';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport enum CoreLocaleActionTypes {\n UPDATE_LOCALE_STATE = '[Locale] Update Locale State',\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport class UpdateLocaleStateAction implements Action {\n type = CoreLocaleActionTypes.UPDATE_LOCALE_STATE;\n constructor(public payload: LocaleState) {}\n}\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport type CoreLocaleActions = UpdateLocaleStateAction;\n","import { Action } from '../ngrx_kit';\nimport {\n CoreAppActionTypes,\n CoreAppActions,\n UpdateAppVersionAction,\n UpdateAppConnectionAction,\n AddAppLoadedConfigModulesAction,\n UpdateAppStatusAction,\n UpdateCurrentModuleAction,\n AddApiQueueItemAction,\n RemoveApiQueueItemAction,\n EmptyApiQueueAction,\n} from '../actions';\nimport { AppState, initialAppState } from '@eui/base';\n\nconst updateAppVersion = (state: AppState, action: UpdateAppVersionAction): AppState => ({ ...state, version: action.payload });\n\nconst updateAppConnection = (state: AppState, action: UpdateAppConnectionAction): AppState => ({ ...state, connected: action.payload });\n\nconst updateAppStatus = (state: AppState, action: UpdateAppStatusAction): AppState => ({ ...state, status: action.payload });\n\nconst updateCurrentModule = (state: AppState, action: UpdateCurrentModuleAction): AppState =>\n Object.assign({}, state, { currentModule: action.payload });\n\nconst addApiQueueItem = (state: AppState, action: AddApiQueueItemAction): AppState => {\n // apply the timestamp to the queue item\n const apiQueueItem = Object.assign({}, action.payload.item, { timestamp: new Date().getTime() });\n // update the queue\n const apiQueue = Object.assign({}, state.apiQueue, { [action.payload.id]: apiQueueItem });\n return Object.assign({}, state, { apiQueue });\n};\n\nconst removeApiQueueItem = (state: AppState, action: RemoveApiQueueItemAction): AppState => {\n // remove the specified id from the list of item ids and recreate the apiQueue from the remaining ids\n const apiQueue = Object.keys(state.apiQueue)\n .filter((id) => id !== action.payload)\n .reduce((queue, key) => {\n queue[key] = state.apiQueue[key];\n return queue;\n }, {});\n return Object.assign({}, state, { apiQueue });\n};\n\nconst emptyApiQueue = (state: AppState, action: EmptyApiQueueAction): AppState =>\n // remove all items in the Api Queue\n Object.assign({}, state, { apiQueue: {} });\nconst actionToReducerMap: { [key: string]: (state: AppState, action: CoreAppActions) => AppState } = {\n [CoreAppActionTypes.UPDATE_APP_VERSION]: updateAppVersion,\n [CoreAppActionTypes.UPDATE_APP_CONNECTION]: updateAppConnection,\n [CoreAppActionTypes.UPDATE_APP_STATUS]: updateAppStatus,\n [CoreAppActionTypes.UPDATE_CURRENT_MODULE]: updateCurrentModule,\n [CoreAppActionTypes.ADD_API_QUEUE_ITEM]: addApiQueueItem,\n [CoreAppActionTypes.REMOVE_API_QUEUE_ITEM]: removeApiQueueItem,\n [CoreAppActionTypes.EMPTY_API_QUEUE]: emptyApiQueue,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreAppReducers: (state: AppState, action: Action) => AppState = (state = initialAppState, action: CoreAppActions) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n // if the action type is not in the map, call the base reducers method\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport {\n CoreUserActionTypes,\n CoreUserActions,\n UpdateUserDashboardAction,\n UpdateUserStateAction,\n UpdateUserDetailsAction,\n UpdateUserPreferencesAction,\n UpdateUserRightsAction,\n} from '../actions';\nimport { UserState, initialUserState, UserPreferences } from '@eui/base';\n\nconst updateUser = (state: UserState, action: UpdateUserStateAction): UserState => {\n let fullName = action.payload.fullName;\n if (!fullName) {\n fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();\n }\n return Object.assign({}, state, action.payload, { fullName });\n};\n\nconst updateUserDetails = (state: UserState, action: UpdateUserDetailsAction): UserState => {\n let fullName = action.payload.fullName;\n if (!fullName) {\n fullName = `${action.payload.firstName || ''} ${action.payload.lastName || ''}`.trim();\n }\n // todo should be checked if state.details is really there\n const details = Object.assign({}, state['details'], action.payload, { fullName });\n return Object.assign({}, state, details);\n};\n\nconst updateUserPreferences = (state: UserState, action: UpdateUserPreferencesAction): UserState => {\n const preferences = Object.assign({}, state.preferences, action.payload);\n return Object.assign({}, state, { preferences });\n};\n\nconst updateUserRights = (state: UserState, action: UpdateUserRightsAction): UserState =>\n Object.assign({}, state, { rights: [...action.payload] });\n\nconst updateUserDashboard = (state: UserState, action: UpdateUserDashboardAction): UserState & { preferences: UserPreferences } => {\n // apply the dashboard to preferences\n const preferences = Object.assign({}, state.preferences, { dashboard: action.payload });\n // update the state\n return { ...state, preferences };\n};\n\nconst actionToReducerMap: { [key: string]: (state: UserState, action: CoreUserActions) => UserState } = {\n [CoreUserActionTypes.UPDATE_USER_DETAILS]: updateUserDetails,\n [CoreUserActionTypes.UPDATE_USER_PREFERENCES]: updateUserPreferences,\n [CoreUserActionTypes.UPDATE_USER_STATE]: updateUser,\n [CoreUserActionTypes.UPDATE_USER_RIGHTS]: updateUserRights,\n [CoreUserActionTypes.UPDATE_USER_DASHBOARD]: updateUserDashboard,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreUserReducers: (state: UserState, action: Action) => UserState = (state = initialUserState, action: CoreUserActions) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport { NotificationsState, initialNotificationsState } from '@eui/base';\nimport { CoreNotificationsActionTypes, CoreNotificationsActions, UpdateNotificationsListAction } from '../actions';\n\nconst updateNotificationsList = (state: NotificationsState, action: UpdateNotificationsListAction): NotificationsState =>\n Object.assign({}, state, { list: [...action.payload] });\n\nconst actionToReducerMap: { [key: string]: (state: NotificationsState, action: CoreNotificationsActions) => NotificationsState } = {\n [CoreNotificationsActionTypes.UPDATE_NOTIFICATIONS_LIST]: updateNotificationsList,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreNotificationsReducers: (state: NotificationsState, action: Action) => NotificationsState = (\n state = initialNotificationsState,\n action: CoreNotificationsActions,\n) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport { I18nState, initialI18nState } from '@eui/base';\nimport { CoreI18nActionTypes, CoreI18nActions, UpdateI18nStateAction } from '../actions';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst updateI18nState = (state: I18nState, action: UpdateI18nStateAction): {activeLang: string} => ({\n ...state,\n ...action.payload,\n});\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst actionToReducerMap: { [key: string]: (state: I18nState, action: CoreI18nActions) => I18nState } = {\n [CoreI18nActionTypes.UPDATE_I18N_STATE]: updateI18nState,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const corI18nReducers: (state: I18nState, action: Action) => I18nState = (state = initialI18nState, action: CoreI18nActions) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { Action } from '../ngrx_kit';\nimport { LocaleState, initialLocaleState } from '@eui/base';\nimport { CoreLocaleActionTypes, CoreLocaleActions, UpdateLocaleStateAction } from '../actions/locale.actions';\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst updateLocaleState = (state: LocaleState, action: UpdateLocaleStateAction): LocaleState => ({\n ...state,\n ...action.payload,\n});\n\n/**\n * @deprecated it will be removed in the next major version\n */\nconst actionToReducerMap: { [key: string]: (state: LocaleState, action: CoreLocaleActions) => LocaleState } = {\n [CoreLocaleActionTypes.UPDATE_LOCALE_STATE]: updateLocaleState,\n};\n\n/**\n * @deprecated it will be removed in the next major version\n */\nexport const coreLocaleReducers: (state: LocaleState, action: Action) => LocaleState = (\n state = initialLocaleState,\n action: CoreLocaleActions,\n) => {\n if (actionToReducerMap[action.type]) {\n return actionToReducerMap[action.type](state, action);\n }\n return state;\n};\n","import { ActionReducerMap } from '../ngrx_kit';\nimport { CoreState } from '@eui/base';\nimport { coreAppReducers } from './app.reducers';\nimport { coreUserReducers } from './user.reducers';\nimport { coreNotificationsReducers } from './notifications.reducers';\nimport { corI18nReducers } from './i18n.reducers';\nimport { coreLocaleReducers } from './locale.reducers';\n\n/**\n * @deprecated it will be removed in the next major version\n */\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const coreReducers: ActionReducerMap<CoreState, any> = Object.assign(\n {},\n {\n app: coreAppReducers,\n user: coreUserReducers,\n notifications: coreNotificationsReducers,\n i18n: corI18nReducers,\n locale: coreLocaleReducers,\n },\n);\n","import { inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ActionReducer, Action } from '../ngrx_kit';\nimport { CoreAppActionTypes, InitStoreAction } from '../actions/app.actions';\nimport { AppState, CoreState } from '@eui/base';\n// import * as extendProxy from 'extend';\n\n// const extend = (<{ default: unknown }>extendProxy).default || extendProxy;\n\n/**\n * Utility meta-reducer to load the state from the local storage\n * @param platformId the platformId based on PLATFORM_ID token of Angular\n * @deprecated it will be removed in the next major version\n */\nexport function localStorageSync<S extends CoreState>(platformId: unknown): ((reducer: ActionReducer<S>) => (state: S, action: Action) => S);\n/**\n * Utility meta-reducer to load the state from the local storage\n * @param reducer the action reducer\n */\nexport function localStorageSync<S extends CoreState>(reducer: ActionReducer<S>): (state: S, action: Action) => S;\n// eslint-disable-next-line\nexport function localStorageSync<S extends CoreState>(reducer: ActionReducer<S>, platformId?: unknown): Function {\n if(platformId) {\n return <T extends CoreState>(reducer: ActionReducer<T>): (state: T, action: Action) => T => {\n return cb<T>(reducer, isPlatformBrowser(platformId) ? localStorage : null);\n }\n } else {\n const platformId = inject(PLATFORM_ID, { optional: true });\n return cb<S>(reducer, isPlatformBrowser(platformId) ? localStorage : null);\n }\n}\n\n/**\n * Utility meta-reducer to load the state from the session storage\n * @param platformId the platformId based on PLATFORM_ID token of Angular\n * @deprecated it will be removed in the next major version\n */\nexport function sessionStorageSync<S extends CoreState>(platformId: unknown): ((reducer: ActionReducer<S>) => (state: S, action: Action) => S);\n/**\n * Utility meta-reducer to load the state from the session storage\n * @param reducer the action reducer\n * @deprecated it will be removed in the next major version\n */\nexport function sessionStorageSync<S extends CoreState>(reducer: ActionReducer<S>): (state: S, action: Action) => S;\n// eslint-disable-next-line\nexport function sessionStorageSync<S extends CoreState>(reducer: ActionReducer<S>, platformId?: unknown): Function {\n if(platformId) {\n return <T extends CoreState>(reducer: ActionReducer<T>): (state: T, action: Action) => T => {\n return cb<T>(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);\n }\n } else {\n const platformId = inject(PLATFORM_ID, { optional: true });\n return cb<S>(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);\n }\n}\n\n// Keys that are allowed to be synced with NgRx state from BrowserStorage\nconst disallowedKeys = ['loadedConfigModules', 'connect', 'currentModule', 'status', 'apiQueue'];\n\n/**\n * filters the AppState by removing those keys from the state and return a new state Object\n * @param app the AppState\n * @deprecated it will be removed in the next major version\n */\nconst filterAppState = (app: AppState): AppState => {\n // in case app is undefined or null it should return empty object\n if (!app) {\n return {};\n }\n\n return (\n Object.keys(app)\n // select keys that are present in the allowed list\n .filter((key) => !disallowedKeys.includes(key))\n // build a new object with only the allowed properties\n .reduce((obj, key) => {\n obj[key] = app[key];\n return obj;\n }, {})\n );\n};\n\n/**\n *\n * @param storage Type of storage to load the state from\n * @deprecated it will be removed in the next major version\n */\nexport const loadState = <S extends CoreState>(storage: Storage | null = localStorage): S => {\n if (!storage) {\n return undefined;\n }\n\n try {\n // by default falls back to localStorage\n const serializedState = storage.getItem('state');\n\n if (serializedState === null) {\n return undefined;\n }\n\n // deserialize state\n let state: S = JSON.parse(serializedState);\n\n // filter AppState and replace\n state = { ...state, app: filterAppState(state?.app) };\n\n return state;\n } catch (err) {\n return undefined;\n }\n};\n\nconst cb =\n <S extends CoreState>(reducer: ActionReducer<S>, storage: Storage | null) =>\n (state: S, action: Action): S => {\n if (action.type === CoreAppActionTypes.INIT_STORE) {\n // This action must be dispatched from an app initializer\n // We load the state from a storage and compare the version and userId with the provided ones.\n // If they are the same, we merge the local state into the initial state.\n // If there is a mismatch, we don't merge the local state, but update only the initial state.\n\n if (storage) {\n // load the state from the localStorage\n const localState: S = loadState<S>(storage);\n\n // extract the details about user and app version from the action payload\n const payloadVersion = (action as InitStoreAction).payload?.version;\n\n if (localState) {\n // TODO: Why all these checks here? What is the purpose of this code?\n // extract the details about user and app version from the storage state\n const localVersion = localState?.app?.version;\n // const localUserId = localState.user && localState.user.userId;\n\n const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;\n // const isUserIdOK = (localUserId === payloadUserId);\n\n // update the entire state with deep merge of states, if the version and user are the same\n if (isVersionOK) {\n state = { ...state, ...localState };\n // state = extend(true, {}, state, localState);\n }\n }\n\n // update the app version, if defined\n if (payloadVersion) {\n state = { ...state, app: { ...state?.app, version: payloadVersion } };\n }\n }\n }\n\n return reducer(state, action);\n };\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { LogAppender, Logger, LogLevel } from '@eui/base';\n\nexport const BASE_LOGGER_NAME_TOKEN = new InjectionToken<string>('BASE_LOGGER_NAME');\nexport const LOG_LEVEL_TOKEN = new InjectionToken<LogLevel>('LOG_LEVEL');\nexport const LOG_APPENDERS_TOKEN = new InjectionToken<LogAppender[]>('LOG_APPENDERS');\n\n/**\n * Log service, responsible for getting or creating loggers. It itself acts as a base logger\n */\n@Injectable()\nexport class LogService extends Logger {\n protected override name: string;\n protected override level: LogLevel;\n protected override appenders: LogAppender[];\n\n /** the list of persistent loggers */\n protected loggers = {};\n\n constructor() {\n const name = inject(BASE_LOGGER_NAME_TOKEN);\n const level = inject<LogLevel>(LOG_LEVEL_TOKEN);\n const appenders = inject(LOG_APPENDERS_TOKEN);\n\n super(name, level, appenders);\n \n this.name = name;\n this.level = level;\n this.appenders = appenders;\n }\n\n /**\n * Gets a logger by name. If the logger does not exist, it is created\n *\n * @param loggerName logger name\n * @param persist optional parameter. Set it to true if you want to reuse the logger. By default, it is set to false\n * @returns the logger\n */\n getLogger(loggerName: string, persist = false): Logger {\n // create the logger, if necessary\n const logger = (persist && <Logger>this.loggers[loggerName]) || new Logger(loggerName, this.level, this.appenders);\n\n // if the logger is persistent, add it to the list of persistent loggers\n if (persist) {\n this.loggers[loggerName] = logger;\n }\n\n return logger;\n }\n}\n","import { LoggerMock } from '@eui/base';\n\nexport class LogServiceMock extends LoggerMock {\n getLogger(): LoggerMock {\n return new LoggerMock();\n }\n}\n","import { Injector } from '@angular/core';\nimport { LogAppender, LogConfig } from '@eui/base';\nimport { DEFAULT_LOG_CONFIG } from '../../config/defaults';\nimport { LogService, BASE_LOGGER_NAME_TOKEN, LOG_LEVEL_TOKEN, LOG_APPENDERS_TOKEN } from '../../log/log.service';\n\nconst LOG_INSTANCES = {};\n\n/**\n * Helper function to check if the log config is defined.\n * Does not check only for empty object, because the config can have other (non-log) parameters\n * @params config log configuration\n * @returns true/false\n */\nexport function isLogConfigDefined(config: LogConfig): boolean {\n return config && ('baseLoggerName' in config || 'logLevel' in config || 'logAppenders' in config);\n}\n\n/**\n * Helper function to provide a list of log appenders from a log configuration\n *\n * @params config log configuration\n * @returns an array of log appenders\n */\nexport function getLogAppendersConfig(config: LogConfig = DEFAULT_LOG_CONFIG, injector: Injector = null): LogAppender[] {\n config = Object.assign({}, DEFAULT_LOG_CONFIG, config);\n config.logAppenders = config.logAppenders || [];\n config.logAppenders = Array.isArray(config.logAppenders) ? config.logAppenders : [config.logAppenders];\n return config.logAppenders.map((logAppender) => {\n const appenderType = typeof logAppender === 'object' ? logAppender.type : logAppender;\n const appenderParams = typeof logAppender === 'object' ? logAppender : undefined;\n return new appenderType(appenderParams, injector);\n });\n}\n\n/**\n * Helper function to provide an instance of LogService from a configuration\n *\n * @params config log configuration\n * @returns an instance of log service\n */\nexport function logServiceFactory(config: LogConfig = DEFAULT_LOG_CONFIG, injector: Injector = null): LogService {\n // add the default values to config\n config = Object.assign({}, DEFAULT_LOG_CONFIG, config);\n // extract parameters from config\n const logLevel = config.logLevel;\n const logAppenders = getLogAppendersConfig(config, injector);\n\n // Create a child injector with the necessary providers\n const childInjector = Injector.create({\n providers: [\n { provide: BASE_LOGGER_NAME_TOKEN, useValue: config.baseLoggerName },\n { provide: LOG_LEVEL_TOKEN, useValue: logLevel },\n { provide: LOG_APPENDERS_TOKEN, useValue: logAppenders },\n LogService,\n ],\n parent: injector,\n });\n\n // return an instance of LogService\n return childInjector.get(LogService);\n}\n\nexport function euiLogServiceFactory(\n injector: Injector,\n rootBaseLoggerName: string,\n rootConfig: LogConfig,\n childBaseLoggerName: string = null,\n childConfig: LogConfig = {},\n): LogService {\n // determine if the configuration is for non-root modules\n const forChild = isLogConfigDefined(childConfig);\n const baseLoggerName = forChild ? childBaseLoggerName : rootBaseLoggerName;\n // create the proper configuration\n const config = Object.assign({ baseLoggerName }, forChild ? Object.assign({}, rootConfig, childConfig) : rootConfig);\n\n // re-use the log service or create a new instance\n const logService = LOG_INSTANCES[baseLoggerName] || logServiceFactory(config, injector);\n LOG_INSTANCES[baseLoggerName] = logService;\n return logService;\n}\n","import { InjectionToken, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { LogConfig } from '@eui/base';\n\nimport { LogService } from './log.service';\nimport { DEFAULT_LOG_CONFIG } from '../config/defaults';\nimport { logServiceFactory } from '../app/factories/log';\n\nconst LOG_MODULE_CONFIG_TOKEN = new InjectionToken<LogConfig>('LOG_CONFIG');\n\n/**\n * Log Module\n */\n@NgModule()\nexport class LogModule {\n /** method called in your root module to provide the LogService */\n static forRoot(config: LogConfig = DEFAULT_LOG_CONFIG): ModuleWithProviders<LogModule> {\n return {\n ngModule: LogModule,\n providers: [\n { provide: LOG_MODULE_CONFIG_TOKEN, useValue: config },\n { provide: LogService, useFactory: logServiceFactory, deps: [LOG_MODULE_CONFIG_TOKEN, Injector] },\n ],\n };\n }\n\n /** method called in your other (non root, lazy loaded) modules to import a different instance of LogService */\n static forChild(config: LogConfig = DEFAULT_LOG_CONFIG): ModuleWithProviders<LogModule> {\n return {\n ngModule: LogModule,\n providers: [\n { provide: LOG_MODULE_CONFIG_TOKEN, useValue: config },\n { provide: LogService, useFactory: logServiceFactory, deps: [LOG_MODULE_CONFIG_TOKEN, Injector] },\n ],\n };\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map } from 'rxjs/operators';\n\nimport { LogService } from '../log';\nimport { CoreState, DeepPartial, initialCoreState } from '@eui/base';\nimport { isEqual } from 'lodash-es';\nimport { loadState } from './reducers';\n\nexport enum BrowserStorageType {\n local,\n session,\n}\n\nexport type Handler<T> = (state: T[keyof T]) => Partial<T[keyof T]>\n\n// todo should stay here but all the store directory should be moved upper level\n@Injectable({\n providedIn: 'root',\n})\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class StoreService<T = any> {\n protected logService = inject(LogService, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n /**\n * autoSave handlers to call before saving in local Storage\n */\n protected _autoSaveHandlers: { [key: string]: Handler<T> } = {};\n /** storage instance e.g. localStorage, sessionStorage */\n private _storage: Storage;\n private state: BehaviorSubject<T>;\n private isHandlingAutoSave = false;\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this._storage = localStorage;\n }\n\n const initialState = {} as T;\n this.state = new BehaviorSubject<T>(initialState);\n\n // Subscribe to signal changes for auto-save\n this.state.asObservable()\n .pipe(\n filter(() => this.isHandlingAutoSave),\n debounceTime(1000),\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n )\n .subscribe((state) => {\n this.saveState(state as CoreState);\n });\n\n }\n\n init(version?: string, storageType?: BrowserStorageType): void {\n if (isPlatformBrowser(this.platformId)) {\n // This action must be dispatched from an app initializer\n // We load the state from a storage and compare the version and userId with the provided ones.\n // If they are the same, we merge the local state into the initial state.\n // If there is a mismatch, we don't merge the local state, but update only the initial state.\n\n this._storage = storageType === BrowserStorageType.session ? sessionStorage : localStorage;\n\n // load the state from the localStorage\n let localState: CoreState = loadState<T>(this._storage) as CoreState;\n localState = { ...localState, app: { ...localState?.app, version } };\n\n const mergedState = this.deepMerge(localState, { ...initialCoreState }) as T;\n this.updateState(mergedState);\n }\n }\n\n /**\n * Add an autoSave handler for a specific state slice\n * @param stateSlice\n * @param handler\n * @deprecated it will be removed in the next major version\n */\n addAutoSaveHandler(stateSlice: string, handler: Handler<T>): void {\n this._autoSaveHandlers[stateSlice] = handler;\n }\n\n handleAutoSave(): void {\n this.isHandlingAutoSave = true;\n }\n\n /**\n * This method is used to update the state of the service with a new state.\n *\n * @param state\n */\n updateState(state: DeepPartial<T>): void;\n /**\n * @deprecated it will be removed in next version. Use updateState(partialState: DeepPartial<T>) instead\n * @param slice\n * @param reducer\n */\n updateState(slice: DeepPartial<T>, reducer: (state: T, action: DeepPartial<T>) => T): void;\n updateState<K extends T>(state: DeepPartial<K>, reducer?: (state: T, action: DeepPartial<K>) => T): void {\n const currentState = this.state.getValue();\n let newState: T;\n\n if (reducer) {\n newState = reducer(currentState, { ...state });\n } else {\n newState = this.deepMerge<T>(currentState, { ...state });\n }\n this.state.next(newState);\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n select(key?: any): Observable<T[any]>;\n select<K>(keyOrMapFn?: ((state: T) => K) | string): Observable<Partial<K> | K> {\n const baseObservable: Observable<T | K> = this.state.asObservable();\n\n if (!keyOrMapFn) {\n return baseObservable as Observable<K>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return baseObservable.pipe(\n map(state => keyOrMapFn(state as T)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return baseObservable.pipe(\n map(state => {\n if (!keyOrMapFn) {\n return state;\n }\n\n const keys = keyOrMapFn.split('.');\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n /**\n * filters and save the state with the Browser storage\n * @param state type of CoreState\n */\n protected saveState(state: CoreState): void {\n let stateToSave: CoreState = {\n app: state.app,\n };\n\n if (state.user) {\n const { userId, preferences } = state.user;\n stateToSave.user = { userId, preferences };\n }\n\n Object.keys(this._autoSaveHandlers).forEach((sliceState: string) => {\n const handler = this._autoSaveHandlers[sliceState];\n stateToSave = Object.assign(stateToSave, { [sliceState]: handler(state[sliceState]) });\n });\n\n try {\n const serializedState = JSON.stringify(stateToSave);\n this._storage?.setItem('state', serializedState);\n } catch (err) {\n // Ignore write errors.\n }\n }\n\n /**\n * deep merge two objects\n * @param target the object that will be merged into\n * @param source the object that will be merged from\n */\n private deepMerge<T>(target: T, source: DeepPartial<T>): T {\n const output = Object.assign({}, target);\n if (this.isObject(target) && this.isObject(source)) {\n Object.keys(source).forEach(key => {\n if (this.isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n } else {\n output[key] = this.deepMerge(target[key], source[key]);\n }\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n }\n\n /**\n * checks if the given item is an object\n * @param item the item that will be checked\n */\n private isObject(item: unknown): item is object {\n return item && typeof item === 'object' && !Array.isArray(item);\n }\n\n}\n","import { Observable, of } from 'rxjs';\nimport { StoreService } from './store.service';\nimport { Injectable } from '@angular/core';\n\nexport const PLATFORM_BROWSER_ID = 'browser';\n\n@Injectable()\nexport class StoreServiceMock extends StoreService {\n constructor() {\n super();\n }\n\n override init(): void {/* empty */}\n\n override addAutoSaveHandler(): void {/* empty */}\n\n override handleAutoSave(): void {/* empty */}\n\n override select(): Observable<object> {\n return of({});\n }\n}\n","import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { Injector, Provider } from '@angular/core';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport {\n BASE_NAME_TOKEN,\n EUI_CONFIG_TOKEN,\n MODULE_CONFIG_TOKEN,\n MODULE_NAME_TOKEN,\n GLOBAL_CONFIG_TOKEN,\n CONFIG_TOKEN,\n HTTP_ERROR_HANDLER_CONFIG_TOKEN,\n SHOW_CONNECTION_STATUS_TOKEN,\n ROOT_LOG_CONFIG_TOKEN,\n prepareEuiAppConfigToken,\n getGlobalConfig,\n getShowConnectionStatus,\n getModuleConfig,\n getHttpErrorHandlingConfig,\n getRootLogConfig,\n} from '../config/tokens';\nimport { euiLogServiceFactory } from './factories/log';\nimport { LogService } from '../log/log.service';\n\nexport function getCoreProviders(): Provider[] {\n return [\n // core config\n ...getDependencyProviders(),\n { provide: BASE_NAME_TOKEN, useValue: 'eui-core' },\n // app config\n { provide: CONFIG_TOKEN, useFactory: prepareEuiAppConfigToken, deps: [EUI_CONFIG_TOKEN] },\n // global config\n { provide: GLOBAL_CONFIG_TOKEN, useFactory: getGlobalConfig, deps: [CONFIG_TOKEN] },\n { provide: ROOT_LOG_CONFIG_TOKEN, useFactory: getRootLogConfig, deps: [CONFIG_TOKEN] },\n { provide: SHOW_CONNECTION_STATUS_TOKEN, useFactory: getShowConnectionStatus, deps: [GLOBAL_CONFIG_TOKEN] },\n { provide: LogService, useFactory: euiLogServiceFactory, deps: [Injector, BASE_NAME_TOKEN, ROOT_LOG_CONFIG_TOKEN] },\n { provide: HTTP_ERROR_HANDLER_CONFIG_TOKEN, useFactory: getHttpErrorHandlingConfig, deps: [CONFIG_TOKEN] },\n ];\n}\n\nexport function getDependencyProviders(): Provider[] {\n return [{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] }];\n}\n\nexport function getCoreChildProviders(moduleName: string): Provider[] {\n return [\n // module config\n { provide: MODULE_NAME_TOKEN, useValue: moduleName },\n { provide: MODULE_CONFIG_TOKEN, useFactory: getModuleConfig, deps: [CONFIG_TOKEN, MODULE_NAME_TOKEN] },\n // log config\n {\n provide: LogService,\n useFactory: euiLogServiceFactory,\n deps: [Injector, BASE_NAME_TOKEN, ROOT_LOG_CONFIG_TOKEN, MODULE_NAME_TOKEN, MODULE_CONFIG_TOKEN],\n },\n ];\n}\n","import { Injector, ModuleWithProviders, NgModule, Optional, SkipSelf, InjectionToken, inject } from '@angular/core';\n\nimport { MODULE_CONFIG_TOKEN, MODULE_NAME_TOKEN } from './services/config/tokens';\nimport { StoreService } from './services/store/index';\nimport { getCoreChildProviders, getCoreProviders } from './services/app/eui-startup';\nimport { CoreState } from '@eui/base';\n\nconst AddAppLoadedConfigModules = (state: CoreState, action: { moduleName, moduleConfig }): CoreState => ({\n ...state,\n app: {\n ...state.app,\n loadedConfigModules: {\n lastAddedModule: action.moduleName,\n modulesConfig: {\n ...state.app.loadedConfigModules.modulesConfig,\n [action.moduleName]: {\n ...action.moduleConfig,\n },\n },\n },\n },\n});\n\nexport const CORE_ROOT_GUARD = new InjectionToken<void>('Internal Theme ForRoot Guard');\n\n@NgModule()\nexport class CoreModule {\n /**\n * No more providing config from forRoot, you have to use EUI_CONFIG_TOKEN to pass config via providers.\n */\n static forRoot(): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: [\n {\n provide: EuiCoreRootGuardClass,\n useFactory: euiCoreRootGuardClass,\n deps: [],\n },\n {\n provide: CORE_ROOT_GUARD,\n useFactory: createEuiCoreRootGuard,\n deps: [[EuiCoreRootGuardClass, new Optional(), new SkipSelf()]],\n },\n ...getCoreProviders(),\n ],\n };\n }\n\n static forChild(moduleName: string): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: getCoreChildProviders(moduleName),\n };\n }\n\n constructor() {\n const parentModule = inject(CoreModule, { optional: true, skipSelf: true });\n const injector = inject(Injector);\n\n // if there is a parentModule, a new instance is created in a lazy loaded module\n if (parentModule) {\n // extract the i18n service and the i18n loader config\n // todo, this thing should be achieved by store, and localization service dependency should be removed\n const storeService = injector.get(StoreService);\n const moduleName = injector.get(MODULE_NAME_TOKEN);\n const moduleConfig = injector.get(MODULE_CONFIG_TOKEN);\n storeService.updateState({ moduleName, moduleConfig }, AddAppLoadedConfigModules);\n }\n }\n}\n\nconst createEuiCoreRootGuard = (core): string => {\n if (core) {\n throw new TypeError('CoreModule.forRoot() called twice. Feature modules should use ThemeModule.forChild() instead.');\n }\n return 'guarded';\n};\n\nexport class EuiCoreRootGuardClass {\n constructor() { /* empty */ }\n}\n\nconst euiCoreRootGuardClass = (): EuiCoreRootGuardClass => new EuiCoreRootGuardClass();\n\nexport { createEuiCoreRootGuard, euiCoreRootGuardClass };\n","import { EnvDynamicConfig, EuiAppJsonConfig, EuiEnvConfig, xhr } from '@eui/base';\n\n/**\n * Function to be used before the AppModule is bootstrapped. It is currently used to load dynamic configurations.\n * It needs to be added in your application main.ts file.\n * @param envConfig the current environment configuration\n * @returns the updated environment configuration, as a promise\n */\nexport async function preInitApp(envConfig: EuiEnvConfig): Promise<EuiEnvConfig> {\n const envDynamicConfig: EnvDynamicConfig = envConfig && envConfig.envDynamicConfig;\n if (envDynamicConfig) {\n // load the local configuration file, if defined\n envConfig.loadedEnvDynamicConfig = await loadEuiDynamicEnvironmentConfig(\n envDynamicConfig.uri,\n envDynamicConfig.configTimeout || 2000,\n );\n return envConfig;\n }\n return envConfig;\n}\n\n/**\n * Function to load asynchronously a dynamic configuration (from a local path or a web service)\n *\n * @param url the path to the configuration\n * @param timeout possible timeout\n * @returns EuiAppJsonConfig promise\n */\nexport async function loadEuiDynamicEnvironmentConfig(url: string, timeout?: number): Promise<EuiAppJsonConfig> {\n // if the url is specified\n if (url) {\n // fetch the config\n try {\n return await xhr<EuiAppJsonConfig>({\n url,\n timeout,\n });\n } catch (error) {\n // send a warning to the console\n console.warn('Dynamic configuration cannot be loaded from url', url, error);\n }\n }\n // the dynamic config is not loaded\n return null;\n}\n","import { LOCATION_INITIALIZED } from '@angular/common';\nimport { EnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\nimport { EuiAppConfig } from '@eui/base';\nimport { CONFIG_TOKEN } from '../config/tokens';\nimport { BrowserStorageType, StoreService } from '../store';\n\nconst init = (): Promise<unknown> => {\n const locationInitialized = inject(LOCATION_INITIALIZED, { optional: true }) || Promise.resolve(null);\n const appConfig: EuiAppConfig = inject(CONFIG_TOKEN);\n const storeService = inject(StoreService);\n\n return new Promise<void>(resolve => {\n\n locationInitialized.then(() => {\n // necessary config parameters\n let appVersion: string;\n if (appConfig && appConfig.versions && appConfig.versions.app) {\n appVersion = appConfig.versions.app;\n } else {\n appVersion = '0.0.0';\n }\n let storageType: BrowserStorageType;\n if (appConfig && appConfig['saveStateStorage']) {\n storageType = appConfig['saveStateStorage'];\n } else {\n storageType = BrowserStorageType.local;\n }\n\n storeService.init(appVersion, storageType);\n storeService.handleAutoSave();\n resolve(null);\n });\n });\n};\n\n/**\n * Initializes the app with the necessary configurations. Use this in combination with `provideAppInitializer(euiInitApp_Env)`\n */\nexport function provideEuiInitializer(): EnvironmentProviders {\n return provideAppInitializer(init);\n}","export const errorCodes = {\n ERR_GENERIC: 'ERR_GENERIC',\n};\n\nconst messages = {\n ERR_GENERIC: 'An error occured',\n};\n\n// Intermediate \"hacky\" subclass taken from\n// https://www.bennadel.com/blog/3226-experimenting-with-error-sub-classing-using-es5-and-typescript-2-1-5.htm\n\nexport class ErrorSubClass {\n public code?: string;\n public message: string;\n public stack: string;\n public name: string;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(code?: string, msg?: string, args?: any) {\n if (!msg && code && code in messages) {\n if (typeof messages[code] === 'function') {\n msg = messages[code](...args.messageParams);\n } else {\n msg = messages[code];\n }\n }\n\n this.name = 'ErrorSubClass';\n this.message = msg;\n this.code = code;\n this.stack = new Error(msg).stack;\n\n if (args) {\n Object.keys(args).forEach((k) => {\n if (k !== 'messageParams') {\n this[k] = args[k];\n }\n });\n }\n }\n}\n\n// This replaces the \"extends\" on the Class\n// ErrorSubClass.prototype = <any>Object.create(Error.prototype);\n\nexport class EuiError extends ErrorSubClass {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(code: string = errorCodes.ERR_GENERIC, msg?: string, args?: any) {\n super(code, msg, args);\n\n this.name = 'EuiError';\n }\n}\n","import { ErrorHandler, Injectable, inject } from '@angular/core';\n\nimport { LogService } from '../log';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalErrorHandler extends ErrorHandler {\n protected logService = inject(LogService);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override handleError(error: any): void {\n // log error\n this.logService.error(error.message || error.toString());\n\n // throw error;\n super.handleError(error);\n }\n}\n","import { Injectable, Injector, inject } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { HttpErrorHandlerConfig, HttpErrorRouteConfig } from '@eui/base';\nimport { HTTP_ERROR_HANDLER_CONFIG_TOKEN } from '../config/tokens';\nimport { DEFAULT_HTTP_ERROR_HANDLER_CONFIG } from '../config/defaults';\n\n@Injectable()\nexport class HttpErrorHandlerInterceptor implements HttpInterceptor {\n protected config = inject<HttpErrorHandlerConfig>(HTTP_ERROR_HANDLER_CONFIG_TOKEN) ?? DEFAULT_HTTP_ERROR_HANDLER_CONFIG;\n protected injector = inject(Injector);\n protected router = inject(Router);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req).pipe(\n tap({\n next: () => { /* empty */ },\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error: (error: any) => {\n // in case of http error\n if (error instanceof HttpErrorResponse) {\n const routeConfig = this.getRouteConfig(error);\n const rule = routeConfig && (routeConfig[error.status] || routeConfig.default);\n\n if (typeof rule === 'string') {\n // perform a redirect\n this.router.navigate([rule]);\n } else if (typeof rule === 'function') {\n // callback function\n rule.call(null, error, this.injector);\n }\n }\n },\n }),\n );\n }\n\n /**\n * Search in the configuration for the first matching route\n *\n * @param error http error response\n * @returns HttpErrorRouteConfig or null\n */\n protected getRouteConfig(error: HttpErrorResponse): HttpErrorRouteConfig | null {\n // filter the routes\n const routes = this.config.routes.filter((route) => {\n const regex = new RegExp('^' + route.path.split('*').join('.*') + '$');\n return regex.test(error.url) && (typeof route[error.status] !== 'undefined' || typeof route.default !== 'undefined');\n });\n // return the first matching route, if any\n return routes.length > 0 ? routes[0] : null;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { EuiGrowlMessage } from '@eui/base';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiGrowlService {\n readonly growlMessages = new BehaviorSubject<EuiGrowlMessage[]>([]);\n readonly isGrowlSticky = new BehaviorSubject(false);\n readonly isCloseAllSticky = new BehaviorSubject(false);\n readonly growlLife = new BehaviorSubject(3000);\n readonly growlPosition = new BehaviorSubject('bottom-right');\n readonly growlCallback = new BehaviorSubject<(() => void) | null>(null);\n readonly ariaGrowlLive = new BehaviorSubject<'off' | 'polite' | 'assertive'>('polite');\n\n /**\n * displays a growl UxMessage item, isSticky\n */\n growl(\n msg: EuiGrowlMessage,\n isSticky?: boolean,\n isMultiple?: boolean,\n life?: number,\n position?: string,\n callback?: () => void,\n ariaLive?: 'off' | 'polite' | 'assertive',\n ): void {\n if (msg.severity !== 'info' && msg.severity !== 'warning' && msg.severity !== 'success' && msg.severity !== 'danger') {\n throw new Error('EuiGrowlService.growl() ERROR : message severity must be either : success, warning, info, danger');\n } else {\n if (isMultiple === undefined || !isMultiple) {\n this.growlMessages.next([]);\n }\n msg.life = life || msg.life;\n msg.sticky = isSticky || msg.sticky;\n\n this.growlMessages.next([...this.growlMessages.value, msg]);\n\n if (life === undefined || isNaN(life)) {\n if (msg.severity === 'danger') {\n isSticky = true;\n } else {\n this.growlLife.next(3000);\n }\n } else {\n this.growlLife.next(life);\n }\n\n if (isSticky) {\n this.isGrowlSticky.next(isSticky);\n } else {\n this.isGrowlSticky.next(false);\n }\n\n if (position) {\n this.growlPosition.next(position);\n }\n\n if (callback) {\n this.growlCallback.next(callback);\n }\n if (ariaLive) {\n this.ariaGrowlLive.next(ariaLive);\n }\n }\n }\n\n clearGrowl(): void {\n this.growlMessages.next([]);\n }\n\n growlSuccess(msg: string, position?: string): void {\n this.growl({ severity: 'success', summary: 'SUCCESS', detail: msg }, false, false, undefined, position);\n }\n\n growlError(msg: string, position?: string): void {\n this.growl({ severity: 'danger', summary: 'ERROR', detail: msg }, false, false, undefined, position);\n }\n\n growlWarning(msg: string, position?: string): void {\n this.growl({ severity: 'warning', summary: 'WARNING', detail: msg }, false, false, undefined, position);\n }\n\n growlInfo(msg: string, position?: string): void {\n this.growl({ severity: 'info', summary: 'INFO', detail: msg }, false, false, undefined, position);\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injector } from '@angular/core';\nimport { LogService } from '../log';\nimport { EuiGrowlService } from '../growl/eui-growl.service';\n\nexport function AlertHttpErrorCallbackFn(error: HttpErrorResponse): void {\n alert(error.statusText);\n}\n\nexport function ConsoleHttpErrorCallbackFn(error: HttpErrorResponse): void {\n console.error('HttpError', error);\n}\n\nexport function LogHttpErrorCallbackFn(error: HttpErrorResponse, injector: Injector): void {\n const logService = injector.get(LogService);\n logService.error('HttpError', error);\n}\n\nexport function GrowlHttpErrorCallbackFn(error: HttpErrorResponse, injector: Injector): void {\n const asService = injector.get(EuiGrowlService);\n asService.growlError(error.statusText);\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of, forkJoin, from } from 'rxjs';\nimport { tap, switchMap, take, map, catchError, concatMap } from 'rxjs/operators';\nimport { ApiQueue, ApiQueueItem, Logger, AppState, CoreState } from '@eui/base';\n\nimport { LogService } from '../log';\nimport { StoreService } from '../store';\nimport { createSelector, Selector } from 'reselect';\n\n/**\n * Service class for managing and processing a queue of API requests.\n *\n * This service provides functionality to add, remove, process, and manage HTTP requests stored in a queue.\n * It enables sequential or bulk processing of requests, ensuring controlled execution and handling of API calls.\n * The service methods offer features like processing individual items, processing all items in the queue either\n * sequentially or all at once, and removing items from the queue. Each method is designed to handle specific aspects\n * of queue management and processing, with attention to details like order of execution and error handling.\n *\n * Usage of this service is ideal in scenarios where API requests need to be managed in a queue structure, allowing\n * for controlled execution and monitoring of these requests.\n *\n * @example\n * // Adding a new item to the queue\n * apiQueueService.addQueueItem({ id: 'item124', method: 'POST', uri: '/api/data', payload: {...} });\n *\n * // Processing a single item from the queue\n * apiQueueService.processQueueItem('item123').subscribe(result => {\n * console.log('Processed item 123 with result:', result);\n * });\n *\n * // Processing all items in the queue in sequential order\n * apiQueueService.processAllQueueItemsSequential(false).subscribe(results => {\n * console.log('Processed all items in descending order of their timestamp:', results);\n * });\n *\n * // Removing an item from the queue\n * apiQueueService.removeQueueItem('item123');\n *\n * // Processing all items in the queue and continuing on error\n * apiQueueService.processAllQueueItems(true).subscribe(results => {\n * console.log('Processed all items in the queue with continuation on errors:', results);\n * });\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiQueueService {\n protected store = inject(StoreService);\n protected http = inject(HttpClient);\n protected logService = inject(LogService, { optional: true });\n\n private readonly logger: Logger;\n private readonly getAppState: (state: CoreState) => AppState;\n private getApiQueue: Selector<AppState, ApiQueue>;\n private getApiQueueItem: (itemId: string) => Selector<AppState, ApiQueueItem>;\n\n constructor() {\n const logService = this.logService;\n\n if (logService) {\n this.logger = logService.getLogger('core.ApiQueueService');\n }\n this.getAppState = (state: CoreState): AppState => state.app;\n this.getApiQueue = createSelector(this.getAppState, (state: AppState) => state.apiQueue);\n this.getApiQueueItem = (itemId: string): Selector<AppState, ApiQueueItem> =>\n createSelector(this.getAppState, (state: AppState) => state.apiQueue[itemId]);\n }\n\n /**\n * Adds an item to the queue by dispatching an action to the store.\n * This function is specifically designed to enqueue API call requests represented by `ApiQueueItem` objects.\n * Each item is identified by a unique `id`, which is used to manage the queue.\n *\n * @param {string} id - The unique identifier for the queue item. It's crucial to ensure that this ID is unique within the queue.\n * If an item with the same ID already exists, the new item will overwrite the existing one.\n * WARNING: Duplicate IDs will lead to overwriting of queue items.\n *\n * @param {ApiQueueItem} item - The item to be enqueued. This should be an object of type `ApiQueueItem`.\n * The `method` property of the item must be one of the allowed methods ('post', 'put', 'get').\n * If an unsupported method is provided, the function will throw an error.\n *\n * @throws {Error} Throws an error if the `method` property of the `item` is not one of the allowed methods.\n * The error message is: `[ApiQueue] method \"${item.method}\" is not allowed`.\n *\n * @example\n * // Example of adding an item to the API queue\n * addQueueItem('12345', { method: 'post', url: '/api/data', payload: {...} });\n *\n * @returns {void} This function does not return a value. It adds the item to the queue via a dispatch action.\n */\n addQueueItem(id: string, item: ApiQueueItem): void {\n const allowedMethods = ['post', 'put', 'get'];\n\n if (allowedMethods.indexOf(item.method) < 0) {\n throw new Error(`[ApiQueue] method \"${item.method}\" is not allowed`);\n }\n\n this.store.updateState({ id, item }, this.addApiQueueItem);\n }\n\n /**\n * Retrieves the current state of the API queue and converts it into an array of Observables.\n *\n * This method subscribes to the store to access the API queue. It then maps the queue object,\n * which is an associative array, into a linear array of ApiQueueItem instances. If the queue is empty,\n * a warning is logged. This method is useful for tracking the state and contents of the API queue\n * at a given moment.\n *\n * Note: This method takes a snapshot of the queue at the time of subscription. It does not provide\n * a continuous stream of queue updates. To get real-time updates, consider subscribing directly\n * to the store's observable.\n *\n * @returns {Observable<ApiQueueItem[]>} An Observable that emits an array of ApiQueueItem.\n * The array represents all items currently in the queue. If the queue is empty, it emits an empty array.\n *\n * @example\n * // Example usage\n * this.getQueue().subscribe(queueItems => {\n * console.log('Current queue items:', queueItems);\n * });\n */\n getQueue(): Observable<ApiQueueItem[]> {\n return this.store.select(this.getApiQueue).pipe(\n take(1),\n map((queue: ApiQueue) => {\n const queueArray = queue && Object.values<ApiQueueItem>(queue);\n if (!queueArray || queueArray.length < 1) {\n this.logger?.warn('No items in the queue exist.');\n }\n\n return queueArray;\n }),\n );\n }\n\n /**\n * Retrieves a specific item from the API queue by its ID.\n *\n * This method subscribes to the store and selects a single item from the API queue based on the provided ID.\n * It employs a pipeline to fetch the item: the `getApiQueueItem` selector is used to retrieve the item,\n * and a `map` operator processes the result. If the item with the specified ID does not exist in the queue,\n * a warning is logged, and `null` is returned.\n *\n * This method is ideal for accessing a specific queue item when its ID is known, allowing for targeted\n * operations or checks on that particular item.\n *\n * @param {string} id - The unique identifier of the item within the queue.\n * @returns {Observable<ApiQueueItem | null>} An Observable emitting the requested ApiQueueItem.\n * If no item with the given ID exists in the queue, the Observable emits `null`.\n *\n * @example\n * // Example usage\n * this.getQueueItem('item123').subscribe(item => {\n * if (item) {\n * console.log('Found item:', item);\n * } else {\n * console.log('Item not found in the queue');\n * }\n * });\n */\n getQueueItem(id: string): Observable<ApiQueueItem> {\n return this.store.select(this.getApiQueueItem(id)).pipe(\n take(1),\n map((queue: ApiQueueItem) => {\n if (!queue) {\n this.logger?.warn(`Queue item with id \"${id}\" does not exist`);\n return null;\n }\n return queue;\n }),\n );\n }\n\n /**\n * Removes a specific item from the API queue using its ID.\n *\n * This method dispatches an action to remove an item from the queue, identified by the provided ID.\n * It is essential for managing the queue by eliminating items that are no longer needed or have been processed.\n * The function does not return any value, as it primarily triggers an action within the store.\n *\n * Note: This method assumes the existence of the item in the queue. It does not perform a check\n * to confirm the presence of the item before attempting to remove it. Therefore, it's recommended\n * to verify the item's existence in the queue if uncertainty exists.\n *\n * @param {string} id - The unique identifier of the item to be removed from the queue.\n *\n * @example\n * // Example usage\n * this.removeQueueItem('item123');\n * // The item with ID 'item123' will be dispatched for removal from the queue.\n */\n removeQueueItem(id: string): void {\n this.store.updateState({ payload: id } as unknown, this.removeApiQueueItem);\n }\n\n /**\n * Clears all items from the API queue.\n *\n * This method dispatches an action to empty the entire API queue, effectively removing all items that are currently queued.\n * It is useful for scenarios where a complete reset of the queue is required, such as during initialization or after processing\n * a batch of items. The function does not return any value, as its primary purpose is to trigger a state change in the store.\n *\n * Note: Use this method with caution as it will irreversibly clear all items in the queue. Ensure that this action does not\n * disrupt any ongoing processes that rely on the queue's contents.\n *\n * @example\n * // Example usage\n * this.removeAllQueueItem();\n * // This will dispatch an action to empty the entire API queue.\n */\n removeAllQueueItem(): void {\n this.store.updateState({ app: { apiQueue: {} } });\n }\n\n /**\n * Processes an item from the API queue identified by its ID.\n *\n * Retrieves the specified item from the queue and applies processing logic as defined in `buildHttpRequest`.\n * If the item is not found, logs a warning and returns an Observable emitting `null`.\n *\n * @param {string} id - The unique identifier of the item within the queue to be processed.\n * @returns {Observable<any>} An Observable that emits the result of processing the queue item.\n * If the item does not exist, the Observable emits `null`.\n *\n * @example\n * // Example usage\n * this.processQueueItem('item123').subscribe(result => {\n * if (result) {\n * console.log('Processing result:', result);\n * } else {\n * console.log('Item not found in the queue');\n * }\n * });\n */\n processQueueItem<T>(id: string): Observable<T> {\n return this.store.select(this.getApiQueueItem(id)).pipe(\n take(1),\n switchMap((queue: ApiQueueItem) => {\n if (!queue) {\n this.logger?.warn(`Queue item with id \"${id}\" does not exist`);\n return of(null);\n }\n\n return this.buildHttpRequest<T>(id, queue);\n }),\n );\n }\n\n /**\n * Processes all items in the API queue and collects their responses.\n *\n * Iterates over each item in the queue and processes them using `buildHttpRequest`. If a request fails,\n * the method can either continue processing the remaining items or stop, based on the `continueOnError` parameter.\n * It returns an Observable that emits an array containing the responses or errors from all the processed items.\n *\n * The function currently returns `Observable<any[]>` indicating an array of any type. Future improvements\n * should aim to specify a more accurate return type or utilize generics for increased type safety.\n *\n * @param {boolean} [continueOnError=true] - Determines whether to continue with the next item in the queue\n * after a request failure. Defaults to `true`.\n * @returns {Observable<any[]>} An Observable emitting an array of either responses or errors from the processed\n * queue items.\n *\n * @example\n * this.processAllQueueItems().subscribe(results => {\n * // Handle the array of responses or errors\n * });\n */\n processAllQueueItems<T>(continueOnError = true): Observable<T[]> {\n return this.store.select(this.getApiQueue).pipe(\n map((queue: ApiQueue) =>\n Object.entries(queue).map(([key, value]) =>\n this.buildHttpRequest(key, value).pipe(\n catchError((error: Error) => {\n this.logger?.error(`Queue Item with id ${key} failed.`, error.message, error.stack);\n\n if (!continueOnError) {\n throw error;\n }\n\n return of(error);\n }),\n ),\n ),\n ),\n switchMap((obsQueue: Observable<T>[]) => forkJoin(Array.from(obsQueue))),\n );\n }\n\n /**\n * Processes all items in the queue sequentially, based on their timestamp ordering.\n *\n * This method first orders the items in the API queue by their timestamp, either in ascending or descending\n * order as specified by the `ascending` parameter. It then processes each item using `buildHttpRequest`, ensuring\n * that each request is completed before the next begins. This sequential processing is crucial when the order of\n * execution matters for HTTP requests in the queue. The method returns an Observable that emits the responses\n * following the same order as the queue items were processed.\n *\n * The function currently returns `Observable<any>`, indicating a broad type. Future improvements should focus on\n * specifying a more accurate return type or utilizing generics for increased type safety.\n *\n * @param {boolean} [ascending=true] - Determines whether the queue items are processed in ascending order of their\n * timestamp. Defaults to `true`.\n * @returns {Observable<any>} An Observable emitting the responses of the HTTP requests in the order they were processed.\n *\n * @example\n * this.processAllQueueItemsSequential().subscribe(response => {\n * // Handle each response in the order of queue processing\n * });\n */\n processAllQueueItemsSequential<T>(ascending = true): Observable<T> {\n return this.store.select(this.getApiQueue).pipe(\n switchMap((queue: ApiQueue) =>\n from(Object.entries(queue)\n .sort((a, b) => (ascending ? this.sortOnTimestamp(a, b) : this.sortOnTimestamp(b, a)))\n .map(([id, item]) => this.buildHttpRequest<T>(id, item)))\n .pipe(concatMap(x => x)),\n ),\n );\n }\n\n /**\n * Compares two queue items based on their timestamp and determines their order.\n *\n * This protected method is used to sort queue items. It takes two queue items as input, each represented\n * as a tuple containing an item ID and the `ApiQueueItem` object. The method compares these items based on\n * the `timestamp` property of the `ApiQueueItem` objects. It returns a number indicating the order in which\n * these items should be sorted.\n *\n * A positive return value indicates that the first item should come after the second, a negative value\n * indicates the opposite, and zero indicates that they are equal in terms of timestamp.\n *\n * @param {[string, ApiQueueItem]} a - The first queue item tuple for comparison.\n * @param {[string, ApiQueueItem]} b - The second queue item tuple for comparison.\n * @returns {number} A number indicating the order of the items: negative if `a` is earlier than `b`,\n * positive if `a` is later than `b`, and zero if they are equal.\n * @beta\n */\n protected sortOnTimestamp(a: [string, ApiQueueItem], b: [string, ApiQueueItem]): number {\n return +new Date(a[1].timestamp) - +new Date(b[1].timestamp);\n }\n\n /**\n * Constructs and executes an HTTP request based on the provided queue item details.\n *\n * This private method takes an ID and an `ApiQueueItem` object to build and execute an HTTP request.\n * It determines the HTTP method (like GET, POST, etc.) from the `method` property of the `ApiQueueItem`,\n * and uses the `uri` and `payload` properties for the request's URL and body, respectively. After the\n * request is executed, the corresponding queue item is removed from the queue.\n *\n * The method is generic, allowing the caller to specify the expected response type `T`. By default,\n * it uses `any` type, but specifying a more concrete type enhances type safety and clarity in usage.\n *\n * @param {string} id - The ID of the queue item being processed.\n * @param {ApiQueueItem} item - The queue item containing details for the HTTP request.\n * @returns {Observable<T>} An Observable of type T, representing the response of the HTTP request.\n *\n * @example\n * // Example usage for a specific response type\n * this.buildHttpRequest<MyResponseType>('item123', queueItem)\n * .subscribe(response => {\n * // Handle the response\n * });\n *\n * @template T - The expected type of the HTTP response. Defaults to `any`.\n */\n private buildHttpRequest<T>(id: string, item: ApiQueueItem): Observable<T> {\n return this.http[item.method.toLowerCase()]<T>(item.uri, item.payload).pipe(tap(() => this.removeQueueItem(id)));\n }\n\n /**\n * A state reducer that adds an item to the API queue.\n * @param state\n * @param action\n */\n private addApiQueueItem = (state: CoreState, action: { id: string; item: ApiQueueItem }): CoreState => {\n // apply the timestamp to the queue item\n action.item.timestamp = new Date().getTime();\n\n // update the queue\n const apiQueue = Object.assign({}, state.app?.apiQueue, { [action.id]: action.item });\n return Object.assign({}, state, { app: { ...state.app, apiQueue } });\n };\n\n /**\n * A state reducer that removes an item from the API queue.\n * @param state\n * @param action\n */\n private removeApiQueueItem = (state: CoreState, action: { payload: string }): CoreState => {\n // remove the specified id from the list of item ids and recreate the apiQueue from the remaining ids\n const apiQueue = Object.keys(state.app.apiQueue)\n .filter((id) => id !== action.payload)\n .reduce((queue, key) => {\n queue[key] = state.app.apiQueue[key];\n return queue;\n }, {});\n return Object.assign({}, state, { app: { ...state.app, apiQueue } });\n };\n}\n","import { ApiQueueService } from './api-queue.service';\nimport { Observable, of } from 'rxjs';\nimport { ApiQueueItem } from '@eui/base';\n\nexport class ApiQueueServiceMock extends ApiQueueService {\n constructor() {\n super();\n }\n override getQueue(): Observable<ApiQueueItem[]> {\n return of([]);\n }\n override getQueueItem(id: string): Observable<ApiQueueItem> {\n return of({ uri: id, method: 'GET' });\n }\n override removeAllQueueItem(): void { /* empty */ }\n override processAllQueueItems<T>(): Observable<T> {\n return of({} as T);\n }\n override addQueueItem(): void { /* empty */ }\n override removeQueueItem(): void { /* empty */ }\n override processQueueItem<T>(): Observable<T> {\n return of({} as T);\n }\n}\n","export class I18nResourceImpl {\n /**\n * Resource constructor\n *\n * @param prefix the prefix of the resource\n * @param suffix the suffix of the resource, optional parameter\n * @param compileTranslationsFn compiler function, optional parameter\n */\n constructor(\n protected prefix: string,\n protected suffix = '',\n protected compileTranslationsFn: (translations: unknown, lang: string) => unknown = (translations: unknown) => translations,\n ) {}\n\n /**\n * Translations pre-processor\n *\n * @param translations the object to be pre-processed\n * @param lang the translations language\n * @returns the pre-processed translations\n */\n public compileTranslations(translations: unknown, lang: string): unknown {\n return this.compileTranslationsFn(translations, lang);\n }\n\n /**\n * Indicates whether other object is equal-to this one.\n *\n * @param obj the reference object with which to compare\n * @returns true if this object is the same as obj, false otherwise\n */\n public equals(obj: I18nResourceImpl): boolean {\n return this.prefix === obj.prefix && this.suffix === obj.suffix;\n }\n\n /**\n * The path to the resource\n *\n * @param lang the resource language\n * @returns the path\n */\n public getPath(lang: string): string {\n return `${this.prefix}${lang}${this.suffix}`;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateLoader, TranslationObject } from '@ngx-translate/core';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport {\n getI18nLoaderConfig,\n I18nResource,\n type EuiAppConfig,\n mergeAll,\n Logger,\n I18nLoaderConfig,\n I18nConfig,\n TranslationsCompiler,\n} from '@eui/base';\nimport { I18nResourceImpl } from './i18n.resource';\nimport { CONFIG_TOKEN } from '../config/tokens';\nimport { LogService } from '../log/log.service';\n\ninterface ResourceError {\n isError: boolean;\n error?: string;\n resource?: I18nResourceImpl;\n}\n\nexport interface LoadedResources {\n translations: TranslationObject;\n hasError: boolean;\n errors?: Array<LoadedResourcesError>;\n}\n\nexport interface LoadedResourcesError {\n resource: I18nResourceImpl;\n error: string;\n}\n\nexport interface TranslationKeys {\n [key: string]: string\n}\n\n@Injectable()\nexport class I18nLoader implements TranslateLoader {\n protected http = inject(HttpClient);\n protected logService = inject(LogService, { optional: true });\n protected euiAppConfig = inject<EuiAppConfig>(CONFIG_TOKEN);\n\n protected resources: I18nResourceImpl[] = [];\n protected failedResources: Array<LoadedResourcesError> = [];\n private logger: Logger;\n\n constructor() {\n const logService = this.logService;\n\n if (logService) {\n this.logger = this.logService.getLogger('core.I18nLoader')\n }\n\n // create the resources from the config object\n const i18nConfig: I18nConfig = this.euiAppConfig.global && this.euiAppConfig.global.i18n;\n const i18nLoaderConfig: I18nLoaderConfig = i18nConfig && i18nConfig.i18nLoader;\n this.resources.push(...this.createResources(i18nLoaderConfig));\n }\n\n /**\n * Gets the translations from the server\n *\n * @param lang\n * @returns Observable<object>\n */\n public getTranslation(lang: string): Observable<TranslationObject> {\n return this.loadResources(this.resources, lang).pipe(\n map((loadedResources: LoadedResources) => {\n this.failedResources = loadedResources.hasError ? loadedResources.errors : [];\n return loadedResources.translations;\n }),\n );\n }\n\n /**\n * Adds resources\n *\n * @param config loader configuration\n * @returns Observable<any> | false\n */\n public addResources(config: I18nLoaderConfig): I18nResourceImpl[] {\n // create the resources\n let resources = this.createResources(config);\n\n // filter the resources first, to avoid duplicates\n resources = resources.filter((resource) => !this.resources.some((res) => res.equals(resource)));\n\n // add the new resources to the list of existing resources\n this.resources.push(...resources);\n\n // return the filtered resources\n return resources;\n }\n\n /**\n * Removes resources from the loader instance\n */\n public removeResources(removedResources: I18nResourceImpl[]): void {\n this.resources = this.resources.filter((res) => !removedResources.some((removedResource) => removedResource.equals(res)));\n }\n\n /**\n * Loads an array of resources, by language\n *\n * @param resources the definition of the resources\n * @param lang the resource language to load\n * @returns Observable<any>\n */\n public loadResources(resources: I18nResourceImpl[], lang: string): Observable<{ hasError: boolean; translations: TranslationObject; errors?: LoadedResourcesError[] }> {\n // if there are resources to load\n if (Array.isArray(resources) && resources.length > 0) {\n // load all the resources in an array of Observable\n const requests = resources.map((resource) => this.loadResource(resource, lang));\n // group all the observables with forkJoin and deep merge them\n return forkJoin(requests).pipe(\n map((response) => {\n const successResp = [];\n const errResp: Array<LoadedResourcesError> = [];\n response.forEach((item) => {\n if ((<ResourceError>item).isError) {\n errResp.push({ resource: (<ResourceError>item).resource, error: (<ResourceError>item).error });\n } else {\n successResp.push(item);\n }\n });\n if (successResp.length === response.length) {\n return { hasError: false, translations: mergeAll(successResp) };\n } else {\n return { hasError: true, translations: mergeAll(successResp), errors: errResp };\n }\n }),\n );\n } else {\n // no resources to load\n return of({ hasError: false, translations: {} });\n }\n }\n\n /**\n * Returns resources that failed\n */\n public getFailedResources(): Array<LoadedResourcesError> {\n return this.failedResources;\n }\n\n /**\n * Create resources from a config file\n *\n * @param config loader configuration\n * @returns I18nResourceImpl[] resources\n */\n protected createResources(config: I18nLoaderConfig): I18nResourceImpl[] {\n // use the default config as a reference base\n config = getI18nLoaderConfig(config);\n\n const resources = [];\n\n // extract the i18n folders from config\n const i18nFolders: string[] = Array.isArray(config.i18nFolders)\n ? config.i18nFolders\n : config.i18nFolders\n ? [config.i18nFolders]\n : [];\n if (i18nFolders) {\n // add the i18n folders to resources\n resources.push(...i18nFolders.map((folder) => new I18nResourceImpl(`assets/${folder}/`, '.json')));\n }\n\n // extract the i18n services from config\n const i18nServices: string[] = Array.isArray(config.i18nServices)\n ? config.i18nServices\n : config.i18nServices\n ? [config.i18nServices]\n : [];\n if (i18nServices) {\n // add the i18n services to resources\n resources.push(...i18nServices.map((service) => new I18nResourceImpl(service)));\n }\n\n // extract the i18n resources from config\n const i18nResources: I18nResource[] = Array.isArray(config.i18nResources)\n ? config.i18nResources\n : config.i18nResources\n ? [config.i18nResources]\n : [];\n if (i18nResources) {\n // add the i18n resources to resources\n resources.push(\n ...i18nResources.map(\n (resource) =>\n new I18nResourceImpl(\n resource.prefix,\n resource.suffix,\n this.getResourceCompileFunction(resource.compileTranslations),\n ),\n ),\n );\n }\n\n return resources;\n }\n\n /**\n * Loads a resource, by language\n *\n * @param resource the definition of the resource\n * @param lang the resource language to load\n * @returns Observable<any>\n */\n protected loadResource(resource: I18nResourceImpl, lang: string): Observable<TranslationKeys | ResourceError> {\n // the path to the resource\n const path = resource.getPath(lang);\n\n // load the translations from the path\n return this.http.get(path).pipe(\n // preprocess the translations using the resource compiler\n map((translations: unknown) => resource.compileTranslations(translations, lang)),\n map((translations: TranslationKeys) => {\n // resource loaded properly, send a info message\n this.logger?.info(`I18n resource loaded from path ${path}`);\n // return the translations\n return translations;\n }),\n catchError((err) => {\n // remove failed resource from loaded resource array\n // this.removeResources([resource]);\n // resource not loaded properly, send a warning message\n this.logger?.warn(`I18n resource NOT loaded from path ${path}`, err);\n const resourceError: ResourceError = { error: `I18n resource NOT loaded from path ${path}`, resource, isError: true };\n return of(resourceError);\n }),\n );\n }\n\n private getResourceCompileFunction(id: string): TranslationsCompiler {\n const customHandlers = this.euiAppConfig.customHandler;\n if (customHandlers && typeof customHandlers[id] === 'function') {\n return customHandlers[id];\n }\n return undefined;\n }\n}\n\nexport const translateConfig = {\n loader: {\n provide: TranslateLoader,\n useClass: I18nLoader,\n },\n};\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, OnDestroy, Signal, inject } from '@angular/core';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, forkJoin, Observable, of, Subject } from 'rxjs';\nimport {\n catchError,\n filter,\n map,\n take,\n tap,\n switchMap,\n takeUntil,\n distinctUntilChanged,\n} from 'rxjs/operators';\nimport {\n GlobalConfig,\n EuiLazyService,\n EuiServiceStatus,\n getI18nServiceConfigFromBase,\n I18nLoaderConfig,\n I18nServiceConfig,\n I18nState,\n ModuleConfig,\n getBrowserDefaultLanguage,\n EuiEuLanguages,\n CoreState,\n DeepPartial,\n} from '@eui/base';\n\nimport { I18nLoader, LoadedResources } from './i18n.loader';\nimport { GLOBAL_CONFIG_TOKEN } from '../config/tokens';\nimport { LogService } from '../log';\nimport { StoreService } from '../store';\nimport { DEFAULT_I18N_SERVICE_CONFIG } from '../config/defaults';\nimport { isEqual } from 'lodash-es';\nimport { Selector } from 'reselect';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nexport interface ModuleLoadEvent {\n ready: boolean;\n name: string;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error?: any;\n}\n\nconst getLastAddedModule: Selector<CoreState, string> = (state: CoreState) => state.app.loadedConfigModules.lastAddedModule;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService<T extends I18nState = I18nState> extends EuiLazyService<T | I18nState> implements OnDestroy {\n protected config: I18nServiceConfig;\n protected onModuleLoad: BehaviorSubject<ModuleLoadEvent>;\n protected baseGlobalConfig = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN);\n protected translateService = inject(TranslateService);\n protected logService = inject(LogService, { optional: true });\n protected store = inject<StoreService<T>>(StoreService);\n private static readonly DEFAULT_STATE: I18nState = { activeLang: 'en' };\n private document = inject<Document>(DOCUMENT);\n /**\n * a single signal holding the state - initial state is null\n */\n private state: Signal<T>;\n /**\n * a BehaviorSubject holding the state - initial state is null\n * This is the main source of truth for the state\n */\n private stateSubject: BehaviorSubject<T>;\n private subNotifier: Subject<void> = new Subject();\n\n constructor() {\n super(I18nService.DEFAULT_STATE as T);\n // Create a BehaviorSubject with the initial state\n this.stateSubject = new BehaviorSubject<T>(this.stateInstance as T);\n\n // Initialize signal with base state\n this.state = toSignal(this.stateSubject, { equal: isEqual });\n\n // Subscribe to base class state changes\n this.onStateChange.subscribe((newState) => {\n // const clonedState = structuredClone(newState as T);\n this.stateSubject.next(newState as T);\n });\n\n this.config = getI18nServiceConfigFromBase(this.baseGlobalConfig);\n this.onModuleLoad = new BehaviorSubject<ModuleLoadEvent>({ ready: false, name: null });\n }\n\n ngOnDestroy(): void {\n this.subNotifier.next(void 0);\n this.subNotifier.complete();\n }\n\n getState(): Observable<T>;\n /**\n * @deprecated this will be removed in a future version\n * @param mapFn\n */\n getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n getState<a extends keyof DeepPartial<T>>(key?: a): Observable<DeepPartial<a>>;\n getState<K = T>(keyOrMapFn?: ((state: T) => K) | string): Observable<DeepPartial<K>> {\n if (!keyOrMapFn) {\n return this.stateSubject.asObservable().pipe(\n takeUntil(this.subNotifier),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n ) as Observable<DeepPartial<K>>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return this.stateSubject.asObservable().pipe(\n takeUntil(this.subNotifier),\n map(state => keyOrMapFn(state)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return this.stateSubject.asObservable().pipe(\n takeUntil(this.subNotifier),\n map(state => {\n const keys = (keyOrMapFn as string).split('.');\n\n // Traverse the object based on the dot notation\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state as DeepPartial<T>);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n updateState(state: DeepPartial<T>): void;\n /**\n * @deprecated it will be removed in next version. Use updateState(partialState: DeepPartial<T>) instead\n * @param slice\n * @param reducer\n */\n updateState(slice: DeepPartial<T>, reducer: (state: T, action: DeepPartial<T>) => T): void;\n updateState<K extends T>(state: DeepPartial<K>, reducer?: (state: T, action: DeepPartial<K>) => T): void {\n if(state.activeLang) {\n this.updateHTMLDOMLang(state.activeLang as string);\n }\n this.stateInstance = super.deepMerge(this.stateInstance as T, { ...state });\n // Emit state change\n this.onStateChange.next(this.stateInstance);\n }\n\n /**\n * This method is used to get the state as readonly signal.\n */\n getSignal(): Signal<T> {\n return this.state;\n }\n\n init(langState?: T): Observable<EuiServiceStatus> {\n const initLang = langState && langState.activeLang ? langState.activeLang : this.preparedDefaultLanguage();\n const initState = {\n ...langState,\n activeLang: initLang,\n };\n if (typeof initLang === 'string') {\n super.initEuiService(this.store);\n this.updateState(initState);\n return this.setup(initLang);\n }\n return of({ success: false, error: 'Initial active lang should be string' });\n }\n\n /**\n * A pipe function that could serve as a wrapper of another observable\n * e.g. ngx-translate i18n.onReady('my_module').pipe(switchMap(()=>translate.get('eui.KEY')));\n * WARNING: onReady will emit only once for a loaded Module, going to another and then going back will not result\n * into another emission.\n *\n * @param moduleName the name of the module that has been given through the eUI globalConfig. In case non provided\n * fetch module name from the state.\n */\n onReady(moduleName?: string): Observable<ModuleLoadEvent> {\n return this.onModuleLoad.pipe(\n switchMap((evt: ModuleLoadEvent) =>\n moduleName\n ? of(evt)\n : this.store.select(getLastAddedModule).pipe(\n tap((m) => (moduleName = m)),\n map(() => evt),\n ),\n ),\n // emit only if event emitted matches the module name and is ready\n filter((evt: ModuleLoadEvent) => evt.ready === true && evt.name === moduleName),\n // make sure that observable completes\n take(1),\n );\n }\n\n public lazyLoad(config: I18nLoaderConfig): Observable<EuiServiceStatus> {\n const moduleId = Math.floor(Math.random() * 100000 + 1).toLocaleString();\n return this.addResources(config, moduleId);\n }\n\n lazyLoadInit(moduleConfig: ModuleConfig, moduleName?: string): Observable<EuiServiceStatus> {\n const i18nLoaderConfig = moduleConfig as I18nLoaderConfig;\n // add resources\n return this.addResources(i18nLoaderConfig, moduleName);\n }\n\n /**\n * Add resources based of a config loader\n *\n * @param config I18nLoaderConfig\n * @param moduleName\n * @return Promise<EuiServiceStatus> an EuiServiceStatus when translation has fully loaded\n */\n public addResources(config: I18nLoaderConfig, moduleName?: string): Observable<EuiServiceStatus> {\n // emit that module is loading\n this.onModuleLoad.next({ ready: false, name: moduleName });\n\n const loader = this.translateService.currentLoader;\n if (loader instanceof I18nLoader) {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const langSubscription: Observable<any>[] = [];\n const i18nLoader = <I18nLoader>loader;\n\n // add the resources to the loader\n const resources = i18nLoader.addResources(config);\n\n // manually load the resources for the CURRENT language and add them to the translate service\n langSubscription.push(\n i18nLoader.loadResources(resources, this.translateService.currentLang).pipe(\n take(1),\n tap((loadedResources: LoadedResources) => {\n // add the new set of translations to the current language\n this.translateService.setTranslation(this.translateService.currentLang, loadedResources.translations, true);\n }),\n ),\n );\n\n // if the current language is different from the DEFAULT language\n const defaultLang = this.config.defaultLanguage || this.translateService.defaultLang;\n if (this.translateService.currentLang !== defaultLang) {\n // manually load the resources for the default language and add them to the translation service\n langSubscription.push(\n i18nLoader.loadResources(resources, defaultLang).pipe(\n take(1),\n tap((loadedResources: LoadedResources) => {\n this.translateService.setTranslation(defaultLang, loadedResources.translations, true);\n }),\n ),\n );\n }\n\n return forkJoin(langSubscription).pipe(\n map((loadedResourcesArr: LoadedResources[]) =>\n !loadedResourcesArr[0].hasError ? { success: true } : { success: false, error: loadedResourcesArr[0].errors },\n ),\n tap(() => {\n // emit status of module loading progress\n this.onModuleLoad.next({ ready: true, name: moduleName });\n }),\n catchError((error) => {\n // emit status of module loading progress\n this.onModuleLoad.next({ ready: true, name: moduleName, error });\n return of({ success: false, error });\n }),\n );\n } else {\n return of({ success: false, error: 'currentLoader is not an I18nLoader.' });\n }\n }\n\n /**\n * Prepares the default language\n */\n private preparedDefaultLanguage(): string {\n const browserPref = getBrowserDefaultLanguage();\n // If user has browser preferred lang, and that language is part of the languages array\n if (browserPref && this.config.languages && EuiEuLanguages.getLanguageCodes(this.config.languages).includes(browserPref)) {\n return browserPref;\n }\n return this.config.defaultLanguage;\n }\n\n /**\n * @param initLanguage if given default language to override default language coming from the\n * configuration token.\n */\n private setup(initLanguage: string): Observable<EuiServiceStatus> {\n // use the default config as a reference base\n this.config = Object.assign({}, DEFAULT_I18N_SERVICE_CONFIG, this.config);\n // configure the translation config service\n if (this.config.languages) {\n this.translateService.addLangs(EuiEuLanguages.getLanguageCodes(this.config.languages));\n if (this.logService) {\n this.logService.info(`I18n accepted languages set to ${EuiEuLanguages.getLanguageCodes(this.config.languages)}`);\n }\n }\n // set the current language, causing to load translations\n return this.translateService.use(initLanguage).pipe(\n tap(() => {\n this.bindActiveLangStateToTranslateService();\n this.bindTranslateServiceLangChangeToState();\n if (this.config.defaultLanguage) {\n this.setDefaultLanguage(this.config.defaultLanguage);\n }\n }),\n map(() => {\n if (this.translateService.currentLoader instanceof I18nLoader) {\n const failedResources = this.translateService.currentLoader.getFailedResources();\n if (failedResources.length > 0) {\n return { success: false, error: failedResources };\n }\n }\n return { success: true };\n }),\n catchError((error) => of({ success: false, error })),\n );\n }\n\n private bindActiveLangStateToTranslateService(): void {\n this.getState((s) => s.activeLang)\n .pipe(takeUntil(this.subNotifier))\n .subscribe((lang) => {\n if (lang !== null && this.translateService.currentLang !== lang) {\n this.use(lang);\n }\n });\n }\n\n private bindTranslateServiceLangChangeToState(): void {\n this.translateService.onLangChange.subscribe((event: LangChangeEvent) => {\n if (this.stateInstance.activeLang !== event.lang) {\n this.updateState({ activeLang: event.lang } as Partial<T>);\n }\n if (this.logService) {\n this.logService.info(`I18n current language set to ${event.lang}`);\n }\n });\n }\n\n private setDefaultLanguage(defaultLanguage: string): void {\n // removed, current language is already calculated in init, setup function fill use it directly, not default\n // this.translateService.currentLang = default_language || this.config.defaultLanguage;\n this.translateService.setDefaultLang(defaultLanguage);\n if (this.logService) {\n this.logService.info(`I18n default language set to ${defaultLanguage}`);\n }\n }\n\n /**\n * change the currently used language\n *\n * @param lang is the language code based on the convention you used e.g. (en or en-EN)\n * @returns Observable that returns an object contain the object translation for given language after language\n * fully loaded.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private use(lang: string): Observable<any> {\n return this.translateService.use(lang);\n }\n\n /**\n * updates the HTML element lang attribute\n *\n * @private\n */\n private updateHTMLDOMLang(lang: string): void {\n this.document.documentElement.lang = lang;\n }\n}\n","export * from './i18n.resource';\nexport * from './i18n.loader';\n// export * from './i18n.module';\nexport * from './i18n.service';\n// export * from './i18n.service.mock';\n","export const diffDays = (dateStart: Date, dateEnd: Date): number =>\n Math.round((dateEnd.getTime() - dateStart.getTime()) / 1000 / 60 / 60 / 24);\n\nexport const diffDaysFromToday = (date: Date): number => diffDays(new Date(), date);\n","import { By } from '@angular/platform-browser';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { DebugElement } from '@angular/core';\n\n/**\n * Provides read-only equivalent of jQuery's position function:\n * http://api.jquery.com/position/\n */\nexport const position = (nativeEl: HTMLElement): { width: number; height: number; top: number; left: number } => {\n const elBCR = offset(nativeEl);\n let offsetParentBCR = { top: 0, left: 0 };\n const offsetParentEl = parentOffsetEl(nativeEl);\n if (offsetParentEl !== document) {\n offsetParentBCR = offset(offsetParentEl as HTMLElement);\n offsetParentBCR.top += (offsetParentEl as Element).clientTop - (offsetParentEl as Element).scrollTop;\n offsetParentBCR.left += (offsetParentEl as Element).clientLeft - (offsetParentEl as Element).scrollLeft;\n }\n\n const boundingClientRect = nativeEl.getBoundingClientRect();\n return {\n width: boundingClientRect.width || nativeEl.offsetWidth,\n height: boundingClientRect.height || nativeEl.offsetHeight,\n top: elBCR.top - offsetParentBCR.top,\n left: elBCR.left - offsetParentBCR.left,\n };\n};\n\n/**\n * Provides read-only equivalent of jQuery's offset function:\n * http://api.jquery.com/offset/\n */\nexport const offset = (nativeEl: HTMLElement): { width: number; height: number; top: number; left: number } => {\n const boundingClientRect = nativeEl.getBoundingClientRect();\n return {\n width: boundingClientRect.width || nativeEl.offsetWidth,\n height: boundingClientRect.height || nativeEl.offsetHeight,\n top: boundingClientRect.top + (window.pageYOffset || document.documentElement.scrollTop),\n left: boundingClientRect.left + (window.pageXOffset || document.documentElement.scrollLeft),\n };\n};\n\n// PRIVATE FUNCTIONS\nconst getStyle = (nativeEl: Element, cssProp: keyof CSSStyleDeclaration): string => {\n /* istanbul ignore if */\n if (getComputedStyle(nativeEl)) {\n return getComputedStyle(nativeEl)[cssProp] as string;\n }\n\n // finally try and get inline style\n /* istanbul ignore next */\n return (nativeEl as HTMLElement).style[cssProp] as string;\n};\n\n/* istanbul ignore next */\n/**\n * Checks if a given element is statically positioned\n */\nconst isStaticPositioned = (nativeEl: Element): boolean => (getStyle(nativeEl, 'position') || 'static') === 'static';\n\n/**\n * returns the closest, non-statically positioned parentOffset of a given element\n * @param nativeEl\n */\nexport const parentOffsetEl = (nativeEl: HTMLElement): Element | Document => {\n let offsetParent = nativeEl.offsetParent || document;\n while (offsetParent && offsetParent !== document && isStaticPositioned(offsetParent as Element)) {\n offsetParent = (offsetParent as HTMLElement).offsetParent;\n }\n return offsetParent || document;\n};\n\nexport const getViewElement = <F>(fixture: ComponentFixture<F>, componentClass: string, klass?: string): {de: DebugElement, el: HTMLElement, domElement: HTMLElement} => {\n let el: HTMLElement, domElement: NodeList | HTMLElement;\n\n const de = fixture.debugElement.query(By.css(componentClass));\n if (de) {\n el = de.nativeElement;\n\n if (el && klass) {\n domElement = el.querySelectorAll(klass);\n\n if (domElement.length <= 1) {\n domElement = el.querySelector(klass) as HTMLElement;\n }\n }\n }\n\n return { de, el, domElement: domElement as HTMLElement };\n};\n\nexport const closestMatchingParent = (target: HTMLElement, className: string): HTMLElement | null => {\n let element = target;\n\n while (element && element.nodeType === Node.ELEMENT_NODE) {\n if (element.classList.contains(className)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n};\n","export const consumeEvent = (event: Event): boolean => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.cancelBubble = true;\n }\n return false;\n};\n","import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\n\nexport const markFormGroupTouched = (FormControls: { [key: string]: AbstractControl } | AbstractControl[]): void => {\n const forOwn = (object, iteratee): void => {\n object = Object(object);\n Object.keys(object).forEach((key) => iteratee(object[key], key, object));\n };\n\n const markFormGroupTouchedRecursive = (controls: { [key: string]: AbstractControl } | AbstractControl[]): void => {\n forOwn(controls, (c) => {\n if (c instanceof FormGroup || c instanceof FormArray) {\n markFormGroupTouchedRecursive(c.controls);\n } else {\n c.markAsTouched();\n c.updateValueAndValidity();\n }\n });\n };\n markFormGroupTouchedRecursive(FormControls);\n};\n\nexport const markControlsTouched = (group: FormGroup | FormArray): void => {\n Object.keys(group.controls).forEach((key: string) => {\n const abstractControl = group.controls[key];\n if (abstractControl instanceof FormGroup || abstractControl instanceof FormArray) {\n markControlsTouched(abstractControl);\n } else {\n abstractControl.markAsTouched();\n }\n });\n};\n\nexport const validateEmail = (c: FormControl): { validateEmail: { valid: boolean } } => {\n const EMAIL_REGEXP =\n // eslint-disable-next-line max-len, no-useless-escape\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n const error = {\n validateEmail: {\n valid: false,\n },\n };\n return EMAIL_REGEXP.test(c.value) ? null : error;\n};\n","/**\n * returns a random string with radix=36\n */\nexport const uniqueId = (): string => Math.random().toString(36).substring(2, 9);\n\n/**\n * Its job is to parse number and format it based on given input.\n * @param value can be a number or a string number\n * @param fractionSize size of fraction of a number e.g. 1000.88 fraction is 2 (88) default is 2\n * @param inDecimalSeparator separator for decimal part of the number default is ','\n * @param inThousandSeparator separator for the whole part of the number default is ''\n */\nexport const formatNumber = (value: number | string, fractionSize = 2, inDecimalSeparator = ',', inThousandSeparator = ''): string => {\n // in case value is not a number throw an error\n if (typeof value === 'string' && isNaN(parseFloat(value))) {\n console.error(`Value ${value} is not a number`);\n return null;\n }\n\n let decimalSeparator = '';\n let thousandsSeparator = '';\n\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === 'string') {\n // get all non characters\n const nonChars: string[] = value.match(/\\D+/g) || [];\n\n // get all unique chars\n const uniqueChars = nonChars.reduce((acc, e) => acc.set(e, (acc.get(e) || 0) + 1), new Map());\n\n // get separators\n const separators = Array.from<string>(uniqueChars.keys());\n\n // sense where decimal separator and where a thousand separator is\n if (separators.length > 1) {\n // left detected separator will be a thousand and second will be decimal\n thousandsSeparator = separators[0];\n decimalSeparator = separators[1];\n } else if (separators.length > 0) {\n // in case there is only one separator you don't know exactly who this separator is.\n // in case there are more than two occurrences means we have a thousand otherwise we'll\n // agree by conventions that is decimal\n if (nonChars.length > 1) {\n return value\n .split(separators[0])\n .join('')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, inThousandSeparator);\n } else {\n return value.replace(separators[0], inDecimalSeparator).replace(/\\B(?=(\\d{3})+(?!\\d))/g, inThousandSeparator);\n }\n } else {\n // in case there are no separators then only format based on thousand one\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, inThousandSeparator) + (fractionSize > 0 ? inDecimalSeparator + '0'.repeat(fractionSize) : '');\n }\n\n // do the replacement of separators and parseInt\n // Beware! Always replace a thousand separator first and then decimal\n value = value.split(thousandsSeparator).join('').replace(decimalSeparator, '.');\n }\n\n decimalSeparator = inDecimalSeparator;\n thousandsSeparator = inThousandSeparator;\n\n const maxFraction = '0'.repeat(fractionSize);\n\n // eslint-disable-next-line prefer-const\n let [integer, fraction = maxFraction] = (value || '0').toString().split('.');\n fraction = fractionSize > 0 ? roundUpNumber(fraction + maxFraction, fractionSize) : '';\n\n // this rule makes sense only in number in case fraction is all zero\n fraction = fraction.length > 0 ? decimalSeparator + fraction : '';\n\n // if fraction is all zero then round up the number\n if(fractionSize === 0) {\n integer = Math.round(parseFloat((value).toString())).toString();\n }\n\n return integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator) + fraction;\n};\n\nconst roundUpNumber = (decimalPart: string, fractionSize: number): string => {\n return (Math.round(parseFloat(`0.${decimalPart}`) * Math.pow(10, fractionSize)) / Math.pow(10, fractionSize))\n .toFixed(fractionSize)\n .split('.')[1];\n};\n","/* istanbul ignore next */\n\nimport { Observable } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n/**\n * @deprecated it will be removed in the future. Consult the angular documentation for a replacement.\n * @param error\n */\nexport const handleError = (error: HttpErrorResponse): Observable<never> => {\n const errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\n throw new Error(errMsg);\n};\n","/**\n * check if a value is null or undefined. If it's not both returns true otherwise false\n *\n * @param value\n */\nexport const isDefined = <T>(value: T | undefined | null): value is T => <T>value !== undefined && <T>value !== null;\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\n\nexport abstract class CssUtils {\n public static readonly setHtmlClass = (inputClass: string, document: Document): void => {\n document.documentElement.classList.add(inputClass);\n }\n\n /**\n * Get the value of a CSS variable. Using getComputedStyle to get the value of the CSS variable (Browser Specific API)\n * @param inputProperty\n * @param document\n * @param platform\n */\n public static readonly getCssVarValue = (inputProperty: string, document: Document, platform: unknown): string => {\n if(isPlatformServer(platform)) {\n return document.documentElement.style.getPropertyValue(inputProperty);\n } else {\n return getComputedStyle(document.documentElement).getPropertyValue(inputProperty);\n }\n }\n\n public static readonly setCssVarValue = (propertyName: string, propertyValue: string, document: Document): void => {\n document.documentElement.style.setProperty(propertyName, propertyValue);\n }\n\n public static readonly setCssVar = (inputProperty: string, outputProperty: string, document: Document, platform: unknown): void => {\n const cssVarValue = this.getCssVarValue(inputProperty, document, platform);\n this.setCssVarValue(outputProperty, cssVarValue, document);\n }\n\n public static readonly initCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-header-height-default', '--eui-app-header-height', document, platform);\n this.setCssVar('--eui-app-breadcrumb-height-default', '--eui-app-breadcrumb-height', document, platform);\n this.setCssVar('--eui-app-top-message-height-default', '--eui-app-top-message-height', document, platform);\n this.setCssVar('--eui-app-toolbar-height-default', '--eui-app-toolbar-height', document, platform);\n this.setCssVar('--eui-app-toolbar-mega-menu-height-default', '--eui-app-toolbar-mega-menu-height', document, platform);\n this.setCssVar('--eui-app-sidebar-width-default', '--eui-app-sidebar-width', document, platform);\n this.setCssVar('--eui-app-sidebar-width-close-default', '--eui-app-sidebar-width-close', document, platform);\n this.setCssVar('--eui-app-sidebar-header-height-default', '--eui-app-sidebar-header-height', document, platform);\n this.setCssVar('--eui-app-sidebar-footer-height-default', '--eui-app-sidebar-footer-height', document, platform);\n }\n\n // eslint-disable-next-line\n public static readonly getBreakpointValues = (document: Document, platform: unknown): any => {\n const breakpoints = [];\n\n const xs = this.getCssVarValue('--eui-bp-xs', document, platform);\n breakpoints.push({ bkp: 'xs', pxValue: xs, value: xs.replace('px', '') });\n const sm = this.getCssVarValue('--eui-bp-sm', document, platform);\n breakpoints.push({ bkp: 'sm', pxValue: sm, value: sm.replace('px', '') });\n const md = this.getCssVarValue('--eui-bp-md', document, platform);\n breakpoints.push({ bkp: 'md', pxValue: md, value: md.replace('px', '') });\n const lg = this.getCssVarValue('--eui-bp-lg', document, platform);\n breakpoints.push({ bkp: 'lg', pxValue: lg, value: lg.replace('px', '') });\n const xl = this.getCssVarValue('--eui-bp-xl', document, platform);\n breakpoints.push({ bkp: 'xl', pxValue: xl, value: xl.replace('px', '') });\n const xxl = this.getCssVarValue('--eui-bp-xxl', document, platform);\n breakpoints.push({ bkp: 'xxl', pxValue: xxl, value: xxl.replace('px', '') });\n const fhd = this.getCssVarValue('--eui-bp-fhd', document, platform);\n breakpoints.push({ bkp: 'fhd', pxValue: fhd, value: fhd.replace('px', '') });\n const twok = this.getCssVarValue('--eui-bp-2k', document, platform);\n breakpoints.push({ bkp: '2k', pxValue: twok, value: twok.replace('px', '') });\n const fourk = this.getCssVarValue('--eui-bp-4k', document, platform);\n breakpoints.push({ bkp: '4k', pxValue: fourk, value: fourk.replace('px', '') });\n\n return breakpoints;\n }\n\n public static readonly activateEditModeCssVars = (isActive: boolean, document: Document): void => {\n if (isActive) {\n this.setCssVarValue('--eui-docpage-navigation-z-index', 'inherit', document); // Reset doc-page-navigation-column z-index\n this.setCssVarValue('--eui-z-index-sidebar', 'inherit', document); // Reset eui-app-sidebar z-index\n this.setCssVarValue('--eui-z-index-root', 'inherit', document); // Reset eui-app-main-content z-index\n } else {\n this.setCssVarValue('--eui-docpage-navigation-z-index', '2', document); // Restore doc-page-navigation-column z-index\n this.setCssVarValue('--eui-z-index-sidebar', '1044', document); // Restore eui-app-sidebar z-index\n this.setCssVarValue('--eui-z-index-root', '1', document); // Restore eui-app-main-content z-index\n }\n }\n\n public static readonly activateHeaderCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-header-height-active', '--eui-app-header-height', document, platform);\n }\n public static readonly activateBreadcrumbCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-breadcrumb-height-active', '--eui-app-breadcrumb-height', document, platform);\n }\n\n public static readonly activateTopMessageCssVars = (height: number, document: Document): void => {\n this.setCssVarValue('--eui-app-top-message-height', `${height}px`, document);\n }\n\n public static readonly activateToolbarCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-toolbar-height-active', '--eui-app-toolbar-height', document, platform);\n }\n\n public static readonly activateToolbarMegaMenuCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-toolbar-mega-menu-height-active', '--eui-app-toolbar-mega-menu-height', document, platform);\n }\n\n public static readonly activateFooterCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-footer-height-active', '--eui-app-footer-height', document, platform);\n }\n\n public static readonly setHeaderShrinkCssVar = (active: boolean, document: Document, platform: unknown): void => {\n if (active) {\n this.setCssVar('--eui-app-header-height-shrink', '--eui-app-header-height', document, platform);\n } else {\n this.setCssVar('--eui-app-header-height-active', '--eui-app-header-height', document, platform);\n }\n }\n\n public static readonly activateSidebarCssVars = (document: Document, platform: unknown, hasSidebarCollapsedVariant = false): void => {\n this.setCssVar('--eui-app-sidebar-width-active', '--eui-app-sidebar-width', document, platform);\n if (hasSidebarCollapsedVariant) {\n this.setCssVar('--eui-app-sidebar-width-close-variant-active', '--eui-app-sidebar-width-close', document, platform);\n } else {\n this.setCssVar('--eui-app-sidebar-width-close-active', '--eui-app-sidebar-width-close', document, platform);\n }\n }\n\n public static readonly removeSidebarCssVars = (document: Document): void => {\n document.documentElement.style.removeProperty('--eui-app-sidebar-header-height');\n document.documentElement.style.removeProperty('--eui-app-sidebar-footer-height');\n document.documentElement.style.removeProperty('--eui-app-sidebar-width');\n document.documentElement.style.removeProperty('--eui-app-sidebar-width-close');\n }\n\n public static readonly activateSidebarHeaderCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-sidebar-header-height-active', '--eui-app-sidebar-header-height', document, platform);\n }\n\n public static readonly activateSidebarFooterCssVars = (document: Document, platform: unknown): void => {\n this.setCssVar('--eui-app-sidebar-footer-height-active', '--eui-app-sidebar-footer-height', document, platform);\n }\n\n /**\n * Gets the viewport height and width and multiply it by 1% to get a value for a vh/vw unit\n * Sets the value in the --eui-app-vh custom property to the root of the document\n * Sets the value in the --eui-app-vw custom property to the root of the document\n * Example for 100% height: calc(var(--eui-app-vh, 1vh) * 100);\n * Example for 50% height: calc(var(--eui-app-vh, 1vh) * 50);\n * Example for 50% width: calc(var(--eui-app-vw, 1vw) * 50);\n */\n public static setAppViewportCssVars(platform: unknown): void {\n if(isPlatformBrowser(platform)) {\n const vh = window.innerHeight * 0.01;\n const vw = window.innerWidth * 0.01;\n this.setCssVarValue('--eui-app-vh', `${vh}px`, document);\n this.setCssVarValue('--eui-app-vw', `${vw}px`, document);\n }\n }\n}\n\n","import { inject, InjectionToken, Injector, Type } from '@angular/core';\n\n/**\n * Safely resolves a service from the injector only when needed.\n * Avoids instantiation errors that can occur with `inject(..., { optional: true })`.\n *\n * @param token The service token to inject\n * @param injector The injector to use (defaults to the current injector)\n * @returns The service instance or null if unavailable\n */\nexport function injectOptional<T>(token: Type<T> | InjectionToken<T>, injector = inject(Injector)): T | null {\n try {\n return injector.get(token, null);\n } catch {\n return null;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { EuiService, EuiServiceStatus, EuiUserRight, Logger, UserState, CoreState } from '@eui/base';\nimport { Observable, of } from 'rxjs';\nimport { LogService } from '../log';\nimport { StoreService } from '../store';\nimport { isDefined } from '../../helpers';\nimport { createSelector, Selector } from 'reselect';\n\n/**\n * Service for managing user permissions within the application.\n * This class extends `EuiService` and is responsible for handling user rights and permissions.\n * It provides methods to initialize the service with user rights, check specific rights and permissions,\n * and subscribe to changes in the user rights state.\n *\n * @extends {EuiService<EuiUserRight[]>}\n * @see EuiService\n *\n * @example\n * // Example of using the EuiPermissionService in an application\n * const permissionService = new EuiPermissionService();\n * permissionService.init([{ id: 'ADMIN', permissions: ['CREATE', 'READ', 'UPDATE', 'DELETE'] }]);\n * if (permissionService.checkRight('ADMIN')) {\n * console.log('User has ADMIN rights');\n * }\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiPermissionService extends EuiService<EuiUserRight[]> {\n private log = inject(LogService, { optional: true });\n protected store = inject(StoreService);\n\n private readonly logger: Logger;\n\n constructor() {\n super([]);\n const log = this.log;\n\n if (log) {\n this.logger = log.getLogger('core.PermissionService');\n }\n }\n\n /**\n * Initializes the permission service with a set of user rights.\n * This method sets up the initial state of the service based on the provided user rights.\n * It should be called before using other methods of the service to ensure it is properly configured.\n *\n * @param {EuiUserRight[]} rights - An array of user rights to initialize the service with.\n * Each `EuiUserRight` object should contain at least an `id` property,\n * and optionally a `permissions` property which is an array of strings.\n *\n * @returns {Observable<EuiServiceStatus>} An Observable that emits the status of the initialization.\n * The status object includes a `success` boolean indicating\n * whether the initialization was successful, and an `error` property\n * with a message in case of failure.\n *\n * @example\n * // Example of initializing the service with two user rights\n * const userRights = [\n * { id: 'ADMIN', permissions: ['CREATE', 'READ', 'UPDATE', 'DELETE'] },\n * { id: 'USER', permissions: ['READ'] }\n * ];\n * permissionService.init(userRights).subscribe(status => {\n * if (status.success) {\n * console.log('Initialization successful');\n * } else {\n * console.error('Initialization failed:', status.error);\n * }\n * });\n *\n * @throws {Error} Throws an error if the `rights` parameter is not an array of `EuiUserRight` objects.\n */\n init(rights: EuiUserRight[]): Observable<EuiServiceStatus> {\n super.initEuiService();\n if (Array.isArray(rights)) {\n this.updateState(rights);\n return of({ success: true });\n }\n\n if (this.logger) {\n this.logger.error('Init object should be instance of BaseUserState');\n }\n return of({ success: false, error: 'Init object should be instance of BaseUserState' });\n }\n\n /**\n * Retrieves the current user rights from the service's state.\n * This getter provides access to the array of `EuiUserRight` objects that represent the current rights\n * of the user. It is a protected method, intended for internal use within the service or by subclasses.\n *\n * @returns {EuiUserRight[]} An array of `EuiUserRight` objects representing the current user rights.\n * Each `EuiUserRight` object typically contains an `id` property, and may\n * also include a `permissions` property which is an array of strings.\n *\n * @example\n * // Example of accessing user rights within a subclass or within the service\n * const currentRights = this.userRights;\n * currentRights.forEach(right => {\n * console.log(`Right ID: ${right.id}, Permissions: ${right.permissions.join(', ')}`);\n * });\n *\n * @protected\n */\n protected get userRights(): EuiUserRight[] {\n return this.stateInstance;\n }\n\n /**\n * Retrieves the current state of user rights by subscribing to changes.\n * This method is used to access the current state of user rights in the service. It returns an Observable\n * that emits the current user rights. The method is generic and can be parameterized to return a specific\n * type that extends from `EuiUserRight[]`.\n *\n * @template K - The type of the user rights state to be returned. Defaults to `EuiUserRight[]` if not specified.\n *\n * @returns {Observable<K>} An Observable that emits the current state of user rights.\n * The type of the emitted value is `K`, which is `EuiUserRight[]` by default.\n *\n * @example\n * // Example of subscribing to the user rights state\n * permissionService.getState().subscribe(currentRights => {\n * console.log('Current User Rights:', currentRights);\n * });\n *\n * // Example with a specific type\n * permissionService.getState<CustomUserRightType[]>().subscribe(customRights => {\n * console.log('Custom User Rights:', customRights);\n * });\n */\n getState<K = EuiUserRight[]>(): Observable<K> {\n const getUserState = (state: CoreState): UserState => state.user;\n const getUserRights: Selector<CoreState, EuiUserRight[]> = createSelector(getUserState, (state: UserState) => state.rights);\n\n return this.store.select(getUserRights);\n }\n\n /**\n * Updates the state of the service with a new set of user rights.\n * This method is used to modify the current user rights in the service. It takes an array of `EuiUserRight`\n * objects and updates the service's state. This change is then propagated to all subscribers of the state.\n *\n * @param {EuiUserRight[]} rights - An array of `EuiUserRight` objects to update the service's state with.\n * Each `EuiUserRight` object should contain an `id` property,\n * and optionally a `permissions` property which is an array of strings.\n *\n * @example\n * // Example of updating the service's state with new user rights\n * const newUserRights = [\n * { id: 'USER', permissions: ['READ', 'COMMENT'] },\n * { id: 'MODERATOR', permissions: ['READ', 'WRITE', 'DELETE'] }\n * ];\n * permissionService.updateState(newUserRights);\n */\n updateState(rights: EuiUserRight[]): void {\n this.store.updateState({ user: { rights: rights || [] } });\n }\n\n /**\n * Checks if the user has the specified attribute permission.\n * This method interprets a string that represents a combination of rights and/or permissions\n * and determines whether the user has the specified permissions. The string format can be\n * 'RIGHT.PERMISSION' or just 'RIGHT'. For multiple rights, it can be 'RIGHT1.RIGHT2.PERMISSION'.\n *\n * @param {string} rightsAndPermission - A string representing the rights and/or permissions to check.\n * Format can be 'RIGHT', 'RIGHT.PERMISSION', or 'RIGHT1.RIGHT2.PERMISSION'.\n *\n * @returns {boolean} True if the user has the specified attribute permission, false otherwise.\n *\n * @example\n * // Check a single right\n * const hasRight = permissionService.checkAttributePermission('VIEW');\n *\n * // Check a right with a specific permission\n * const hasRightWithPermission = permissionService.checkAttributePermission('EDIT.APPROVE');\n *\n * // Check multiple rights with a specific permission\n * const hasMultipleRights = permissionService.checkAttributePermission('ADMIN.VIEW.APPROVE');\n */\n checkAttributePermission(rightsAndPermission: string): boolean {\n const permProps = rightsAndPermission.split('.');\n const rightId = permProps[0];\n const hasRight = this.checkRight(rightId);\n\n if (hasRight) {\n if (permProps.length === 2) {\n // in case of 'RIGHT.PERMISSION'\n const permission = permProps[1];\n return this.checkPermission(rightId, permission);\n } else if (permProps.length > 2) {\n // in case of 'RIGHT1.RIGHT2.....PERMISSION' string call recursively\n return this.checkAttributePermission(rightsAndPermission.slice(rightId.length + 1));\n }\n }\n\n return hasRight;\n }\n\n /**\n * Checks if the user has a specific right.\n * This method determines whether the user possesses a particular right identified by its ID.\n *\n * @param {string} rightId - The ID of the right to check.\n *\n * @returns {boolean} True if the user has the specified right, false otherwise.\n *\n * @example\n * // Check if the user has the 'ADMIN' right\n * const isAdmin = permissionService.checkRight('ADMIN');\n */\n checkRight(rightId: string): boolean {\n return this.userRights.some((right) => right && right.id === rightId);\n }\n\n /**\n * Checks if the user has a specific permission within a right.\n * This method determines whether the user has a specific permission associated with a given right.\n *\n * @param {string} rightId - The ID of the right.\n * @param {string} permission - The permission to check within the right.\n *\n * @returns {boolean} True if the user has the specified permission in the given right, false otherwise.\n *\n * @example\n * // Check if the user has 'APPROVE' permission in the 'EDIT' right\n * const canApproveEdit = permissionService.checkPermission('EDIT', 'APPROVE');\n */\n checkPermission(rightId: string, permission: string): boolean {\n // the user has to have that right and that right has to have the given permission\n return this.userRights.some(\n (right) => right && right.id === rightId && right.permissions && right.permissions.includes(permission),\n );\n }\n\n /**\n * Checks if the user has all the specified rights.\n * This private method determines whether the user possesses all the rights provided in the array.\n * Each right in the array is checked against the user's current rights.\n *\n * @param {EuiUserRight[]} rights - An array of rights to check against the user's rights.\n *\n * @returns {boolean} True if the user has all the specified rights, false otherwise.\n *\n * @example\n * // Example usage within the service\n * const requiredRights = [{ id: 'VIEW' }, { id: 'EDIT' }];\n * const hasAllRequiredRights = this.haveAllRights(requiredRights);\n *\n * @private\n */\n private haveAllRights(rights: EuiUserRight[]): boolean {\n if (!isDefined(rights)) {\n throw Error('The rights should be an array but instead it\\'s not defined!');\n }\n\n return rights.every((right: EuiUserRight) => this.userRights.find((uRight: EuiUserRight) => uRight.id === right.id));\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { getUserState, EuiMenuItem } from '@eui/base';\nimport { EuiPermissionService } from '../permission/permission.service';\nimport { StoreService } from '../store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiDynamicMenuService {\n menuLinks: Array<EuiMenuItem> = [];\n private euiPermission = inject(EuiPermissionService);\n private store = inject(StoreService);\n\n // TODO: it should be moved euiService, or it should be static\n // TODO: can we moved that service inside the module of the component that's using it?\n constructor() {\n this.store.select(getUserState).subscribe((user) => {\n if (user?.menuLinks) {\n this.menuLinks = user.menuLinks;\n }\n });\n }\n\n getMenuLinks(): EuiMenuItem[] {\n return this.menuLinks;\n }\n\n filterEuiMenuItemsWithRights(links: Array<EuiMenuItem>): Array<EuiMenuItem> {\n return links.filter((link) => {\n if (link.children != null) {\n link.children = this.filterEuiMenuItemsWithRights(link.children);\n }\n\n // First check if the user is denied access:\n if (link.deniedRightId) {\n if (this.euiPermission.checkRight(link.deniedRightId)) {\n return false;\n }\n }\n if (link.deniedRightIds) {\n for (const deniedRightId of link.deniedRightIds) {\n if (this.euiPermission.checkRight(deniedRightId)) {\n return false;\n }\n }\n }\n\n // Then check if the user needs to be allowed access explicitly:\n if (link.allowedRightId) {\n return this.euiPermission.checkRight(link.allowedRightId);\n }\n if (link.allowedRightIds) {\n for (const allowedRightId of link.allowedRightIds) {\n if (this.euiPermission.checkRight(allowedRightId)) {\n return true;\n }\n }\n // User doesn't have one of the allowed rights. Deny access:\n return false;\n }\n\n // Access to the menu item is not denied, therefore allow it:\n return true;\n });\n }\n}\n","// TODO: Do we need that service anymore? Can we remove it?\n\nimport { ApplicationRef, ComponentRef, ElementRef, Injectable, InjectionToken, Injector, inject } from '@angular/core';\nimport { ComponentPortal, DomPortalOutlet, ComponentType } from '@angular/cdk/portal';\n\nexport const DYNAMIC_COMPONENT_CONFIG = new InjectionToken<object>('DYNAMIC_COMPONENT_CONFIG');\n\n@Injectable()\nexport class EuiDynamicComponentService {\n private injector = inject(Injector);\n private appRef = inject(ApplicationRef);\n\n private portalHost: DomPortalOutlet;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private portal: ComponentPortal<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private portalComponentInstance: ComponentRef<any>;\n\n /**\n * Adds a component to portal host dynamically\n * @param component The component to be injected\n * @param el The element reference for the component to be injected\n * @param config The data to be passed (config) for the DYNAMIC_COMPONENT_CONFIG token\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public add<T>(component: ComponentType<T>, el?: ElementRef, config?: any): any {\n // TODO: take a look and replace deprecated componentFactoryResolver https://github.com/angular/components/issues/24334\n // Create a portalHost from a DOM element\n this.portalHost = new DomPortalOutlet(\n el ? el.nativeElement : document.body,\n this.appRef,\n );\n\n // Locate the component factory for the ComponentToIncludeDynamicallyComponent\n this.portal = new ComponentPortal<T>(component, null, config ? this.createInjector(config) : null);\n\n // Attach portal to host\n this.portalComponentInstance = this.portalHost.attach(this.portal);\n\n if (config) {\n Object.assign(config, {\n portalHostRef: this.portalHost,\n portalRef: this.portal,\n portalComponentInstanceRef: this.portalComponentInstance,\n });\n }\n\n return {\n portalHost: this.portalHost,\n portal: this.portal,\n portalComponentInstance: this.portalComponentInstance,\n };\n }\n\n /**\n * detaches a portalHost\n * @param portalHostRef reference of portal host to be detached\n */\n public remove(portalHostRef: DomPortalOutlet): void {\n portalHostRef.detach();\n\n this.portalHost = null;\n this.portal = null;\n this.portalComponentInstance = null;\n }\n\n /**\n * creates a custom injector to be used when providing custom injection tokens to components inside a portal\n * @param data to be used by DYNAMIC_COMPONENT_CONFIG token\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private createInjector(data: any): Injector {\n return Injector.create({\n providers: [{ provide: DYNAMIC_COMPONENT_CONFIG, useValue: data }],\n parent: this.injector,\n });\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, defer, firstValueFrom, Observable } from 'rxjs';\nimport { EuiEuLanguages, GlobalConfig, getActiveLang, EuiLanguage, EuiMenuItem } from '@eui/base';\nimport { GLOBAL_CONFIG_TOKEN } from './config/tokens';\nimport { I18nService } from './i18n';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { StoreService } from './store/store.service';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { isEqual, get } from 'lodash-es';\nimport { CssUtils } from '../helpers/css-utils';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface UIState<BP = any, DI = any, AMD =any, BPV = any> {\n // app state\n appName?: string;\n appShortName?: string;\n appSubTitle?: string;\n appBaseFontSize?: string;\n\n // Sidebar state\n isSidebarOpen?: boolean;\n isSidebarActive?: boolean;\n hasSidebar?: boolean;\n hasBreadcrumb?: boolean;\n hasHeader?: boolean;\n hasHeaderLogo?: boolean;\n hasHeaderEnvironment?: boolean;\n hasToolbar?: boolean;\n hasToolbarMegaMenu?: boolean;\n hasToolbarMenu?: boolean;\n environmentValue?: string;\n isSidebarHidden?: boolean;\n isSidebarFocused?: boolean;\n hasSidebarCollapsedVariant?: boolean;\n hasTopMessage?: boolean;\n\n // window state\n windowWidth?: number;\n windowHeight?: number;\n mainContentHeight?: number;\n pageHeaderHeight?: number;\n breakpoint?: string;\n wrapperClasses?: string;\n breakpoints?: BP;\n breakpointValues?: BPV;\n\n // navigation state\n menuLinks?: EuiMenuItem[];\n sidebarLinks?: EuiMenuItem[];\n combinedLinks?: EuiMenuItem[];\n\n // other states\n isBlockDocumentActive?: boolean;\n\n // device info\n deviceInfo: DI;\n\n // language infos\n activeLanguage: string;\n languages: (string | EuiLanguage)[];\n\n // app metadata\n appMetadata: AMD;\n\n // various dynamic state\n hasModalActive?: boolean;\n isDimmerActive?: boolean; // Usage: map to eui base directive input coerce euiHighlighted\n}\n\nconst initialState: UIState = {\n appName: '',\n appShortName: '',\n appSubTitle: '',\n appBaseFontSize: '',\n\n isSidebarOpen: true,\n isSidebarActive: false,\n hasSidebar: false,\n hasHeader: false,\n hasBreadcrumb: false,\n hasHeaderLogo: false,\n hasHeaderEnvironment: false,\n hasToolbar: false,\n hasToolbarMegaMenu: false,\n hasToolbarMenu: false,\n environmentValue: '',\n isSidebarHidden: false,\n isSidebarFocused: false,\n hasSidebarCollapsedVariant: false,\n hasTopMessage: false,\n windowWidth: 0,\n windowHeight: 0,\n mainContentHeight: 0,\n pageHeaderHeight: 0,\n wrapperClasses: '',\n breakpoint: '',\n breakpoints: {\n isMobile: false,\n isTablet: false,\n isLtLargeTablet: false,\n isLtDesktop: false,\n isDesktop: false,\n isXL: false,\n isXXL: false,\n isFHD: false,\n is2K: false,\n is4K: false,\n },\n breakpointValues: [],\n menuLinks: [],\n sidebarLinks: [],\n combinedLinks: [],\n isBlockDocumentActive: false,\n deviceInfo: null,\n activeLanguage: 'en',\n languages: EuiEuLanguages.getLanguages(),\n appMetadata: null,\n hasModalActive: false,\n isDimmerActive: false,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiAppShellService {\n navigationStartCustomHandler: () => void;\n navigationEndCustomHandler: () => void;\n protected config = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN, { optional: true });\n private http = inject(HttpClient);\n private platformId = inject(PLATFORM_ID);\n private document = inject<Document>(DOCUMENT);\n private router = inject(Router);\n private storeService = inject(StoreService);\n private i18nService = inject(I18nService, { optional: true });\n\n // -------------------\n get state$(): Observable<UIState> {\n return this._state$.asObservable();\n }\n\n // -------------------\n // exposed observables\n\n get breakpoint$(): Observable<string> {\n return this._breakpoint$.asObservable();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get breakpoints$(): Observable<any> {\n return this._breakpoints$.asObservable();\n }\n\n // ----------------\n // state operations\n // ----------------\n get state(): UIState {\n return this._state$.getValue();\n }\n\n // ----------------------------\n // public setters and functions\n // ----------------------------\n set isSidebarOpen(isOpen: boolean) {\n this.setState({\n ...this.state,\n isSidebarOpen: isOpen,\n });\n }\n\n get isSidebarOpen(): boolean {\n return this.state.isSidebarOpen;\n }\n\n set isSidebarActive(isActive: boolean) {\n this.setState({\n ...this.state,\n isSidebarActive: isActive,\n });\n }\n\n set sidebarLinks(links: EuiMenuItem[]) {\n this.setState({\n ...this.state,\n sidebarLinks: links,\n });\n }\n\n set hasSidebarCollapsedVariant(isActive: boolean) {\n this.setState({\n ...this.state,\n hasSidebarCollapsedVariant: isActive,\n });\n CssUtils.activateSidebarCssVars(this.document, this.platformId, isActive);\n }\n\n set menuLinks(links: EuiMenuItem[]) {\n this.setState({\n ...this.state,\n menuLinks: links,\n });\n }\n\n set isBlockDocumentActive(isActive: boolean) {\n this.setState({\n ...this.state,\n isBlockDocumentActive: isActive,\n });\n }\n\n get hasHeader(): boolean {\n return this.state.hasHeader;\n }\n\n // Edit mode\n get isDimmerActive(): boolean {\n return this.state.isDimmerActive;\n }\n\n set isDimmerActive(isActive: boolean) {\n this.setState({\n ...this.state,\n isDimmerActive: isActive,\n });\n }\n\n private _state$: BehaviorSubject<UIState>;\n private _breakpoint$: BehaviorSubject<string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _breakpoints$: BehaviorSubject<any>;\n\n constructor() {\n const config = this.config;\n\n let stateWithConfig = initialState;\n const languages = config?.i18n?.i18nService?.languages || initialState.languages;\n const defaultLanguage = config?.i18n?.i18nService?.defaultLanguage || initialState.activeLanguage;\n stateWithConfig = {\n ...stateWithConfig,\n ...{\n languages,\n activeLanguage: defaultLanguage,\n },\n };\n this._state$ = new BehaviorSubject(stateWithConfig);\n this._breakpoint$ = new BehaviorSubject('');\n this._breakpoints$ = new BehaviorSubject({});\n this.bindActiveLanguageToAppShellState();\n }\n\n setState(nextState: UIState, updateI18 = true): void {\n let breakpoint, breakpoints;\n let combinedLinks;\n\n const state = this.state;\n\n // check if window width has been updated from previous state\n if (this.state.windowWidth !== nextState.windowWidth) {\n breakpoint = this.getBreakpoint(nextState.windowWidth);\n breakpoints = this.getBreakpoints(breakpoint);\n\n this._breakpoint$.next(breakpoint);\n this._breakpoints$.next(breakpoints);\n\n // if not propagate the old ones without doing any calculations\n } else {\n breakpoint = state.breakpoint;\n breakpoints = state.breakpoints;\n }\n\n // finally get the wrapper classes when both the state and breakpoint are known\n const wrapperClasses = this.getWrapperClasses(nextState, breakpoint);\n\n // check if the menuLinks or sidebarLinks have changed from previous state\n if (this.state.menuLinks !== nextState.menuLinks || this.state.sidebarLinks !== nextState.sidebarLinks) {\n combinedLinks = [...nextState.menuLinks, ...nextState.sidebarLinks];\n } else {\n combinedLinks = this.state.combinedLinks;\n }\n\n const stateBeforeUpdate = { ...this.state };\n\n // we put it all together with the calculated properties\n this._state$.next({\n ...nextState,\n wrapperClasses,\n breakpoint,\n breakpoints,\n combinedLinks,\n });\n\n // update the Store Language\n if (updateI18 && nextState.activeLanguage !== stateBeforeUpdate.activeLanguage) {\n this.i18nService.updateState({ activeLang: nextState.activeLanguage });\n }\n }\n\n /**\n * Emits a slice from the state whether that changes\n *\n * @param key can be 'key' or 'key.sub.sub'\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getState<T = any>(key?: string): Observable<T> {\n return defer(() =>\n // check if key exists\n key\n ? this.state$.pipe(\n map((state) => get(state, key)),\n // filter((state) => state),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n )\n : this.state$,\n );\n }\n\n public sidebarToggle(): void {\n this.isSidebarOpen = !this.state.isSidebarOpen;\n }\n\n // Edit mode\n public dimmerActiveToggle(): void {\n const isActive = this.isDimmerActive;\n this.setState({\n ...this.state,\n isDimmerActive: !isActive,\n });\n CssUtils.activateEditModeCssVars(!isActive, this.document);\n }\n\n public setDimmerActiveState(activeState: boolean): void {\n this.setState({\n ...this.state,\n isDimmerActive: activeState,\n });\n CssUtils.activateEditModeCssVars(activeState, this.document);\n }\n\n // --------------\n // public methods\n // --------------\n public fetchAppMetadata(metadataFilePath = 'assets/app-metadata.json'): void {\n this.getJson(metadataFilePath).then((data) => {\n this.setState({\n ...this.state,\n appMetadata: data,\n });\n });\n }\n\n public activateSidebar(): void {\n this.setState({\n ...this.state,\n hasSidebar: true,\n });\n\n if (!this.state.isSidebarHidden) {\n CssUtils.activateSidebarCssVars(this.document, this.platformId, this.state.hasSidebarCollapsedVariant);\n }\n }\n\n public activateSidebarHeader(): void {\n CssUtils.activateSidebarHeaderCssVars(this.document, this.platformId);\n }\n\n public activateSidebarFooter(): void {\n CssUtils.activateSidebarFooterCssVars(this.document, this.platformId);\n }\n\n public activateHeader(): void {\n this.setState({\n ...this.state,\n hasHeader: true,\n });\n CssUtils.activateHeaderCssVars(this.document, this.platformId);\n }\n\n public activateBreadcrumb(): void {\n this.setState({\n ...this.state,\n hasBreadcrumb: true,\n });\n CssUtils.activateBreadcrumbCssVars(this.document, this.platformId);\n }\n\n public activateTopMessage(height: number): void {\n this.setState({\n ...this.state,\n hasTopMessage: true,\n });\n CssUtils.activateTopMessageCssVars(height, this.document);\n }\n\n public activateToolbar(): void {\n this.setState({\n ...this.state,\n hasToolbar: true,\n });\n CssUtils.activateToolbarCssVars(this.document, this.platformId);\n }\n\n public activateToolbarMegaMenu(): void {\n this.setState({\n ...this.state,\n hasToolbarMegaMenu: true,\n });\n CssUtils.activateToolbarMegaMenuCssVars(this.document, this.platformId);\n }\n\n public activateToolbarMenu(): void {\n this.setState({\n ...this.state,\n hasToolbarMenu: true,\n });\n }\n\n /**\n * Returns the current value of --eui-f-size-base CSS variable\n */\n public getBaseFontSize(): string {\n return this.state.appBaseFontSize || CssUtils.getCssVarValue('--eui-f-size-base', this.document, this.platformId);\n }\n\n /**\n * Updates the current value of --eui-f-size-base CSS variable and the UIState appBaseFontSize\n */\n public setBaseFontSize(newsize: string): void {\n this.setState(\n {\n ...this.state,\n appBaseFontSize: newsize,\n },\n false,\n );\n CssUtils.setCssVarValue('--eui-f-size-base', newsize, this.document);\n }\n\n // ---------------\n // private getters\n // ---------------\n private getWrapperClasses(state: UIState, breakpoint: string): string {\n const classes: string[] = [];\n\n classes.push(breakpoint);\n\n if (state.hasSidebar) {\n if (state.isSidebarHidden) {\n classes.push('sidebar--hidden');\n }\n if (state.isSidebarOpen) {\n classes.push('sidebar--open');\n } else {\n classes.push('sidebar--close');\n }\n }\n if (state.deviceInfo?.isFF) {\n classes.push('ff');\n }\n if (state.deviceInfo?.isIE) {\n classes.push('ie');\n }\n if (state.deviceInfo?.isChrome) {\n classes.push('chrome');\n }\n return classes.join(' ');\n }\n\n private getBreakpoint(windowWidth: number): string {\n let bkp = '';\n\n if (this.state.breakpointValues.length === 0) {\n this.setState({\n ...this.state,\n breakpointValues: CssUtils.getBreakpointValues(this.document, this.platformId),\n });\n }\n\n this.state.breakpointValues.forEach((b, i) => {\n if (i < this.state.breakpointValues.length) {\n if (windowWidth >= b.value && windowWidth < this.state.breakpointValues[i+1]?.value) {\n bkp = b.bkp;\n }\n } else if(windowWidth >= b.value) {\n bkp = b.bkp;\n }\n });\n\n return bkp;\n }\n\n private getBreakpoints(bkp: string): object {\n return {\n isMobile: bkp === 'xs' || bkp === 'sm',\n isTablet: bkp === 'md',\n isLtLargeTablet: bkp === 'xs' || bkp === 'sm' || bkp === 'md' || bkp === 'lg',\n isLtDesktop: bkp === 'xs' || bkp === 'sm' || bkp === 'md' || bkp === 'lg' || bkp === 'xl',\n isDesktop: bkp === 'xxl',\n isXL: bkp === 'xl',\n isXXL: bkp === 'xxl',\n isFHD: bkp === 'fhd',\n is2K: bkp === '2k',\n is4K: bkp === '4k',\n };\n }\n\n private getJson(url: string): Promise<object> {\n return firstValueFrom(this.http.get(url)).then(this.extractData).catch(this.handleError);\n }\n\n private extractData(res: Response): object {\n const body = res;\n return body || {};\n }\n\n private handleError<T extends Error>(error: T): Promise<T> {\n console.error('An error occurred', error);\n return Promise.reject(error.message || error);\n }\n\n private bindActiveLanguageToAppShellState(): void {\n this.i18nService.getState((s) => s.activeLang).subscribe((activeLang) => {\n if (activeLang !== this.state.activeLanguage) {\n this.setState(\n {\n ...this.state,\n activeLanguage: activeLang,\n },\n false,\n );\n }\n });\n }\n}\n","/* eslint-disable */\n\nimport { Injectable } from '@angular/core';\n\nexport const EUI_COUNTRIES = {\n AF: 'Afghanistan',\n AX: 'Aland Islands',\n AL: 'Albania',\n DZ: 'Algeria',\n AS: 'American Samoa',\n AD: 'Andorra',\n AO: 'Angola',\n AI: 'Anguilla',\n AQ: 'Antarctica',\n AG: 'Antigua and Barbuda',\n AR: 'Argentina',\n AM: 'Armenia',\n AW: 'Aruba',\n AU: 'Australia',\n AT: 'Austria',\n AZ: 'Azerbaijan',\n BS: 'Bahamas',\n BH: 'Bahrain',\n BD: 'Bangladesh',\n BB: 'Barbados',\n BY: 'Belarus',\n BE: 'Belgium',\n BZ: 'Belize',\n BJ: 'Benin',\n BM: 'Bermuda',\n BT: 'Bhutan',\n BO: 'Bolivia',\n BA: 'Bosnia and Herzegovina',\n BW: 'Botswana',\n BV: 'Bouvet Island',\n BR: 'Brazil',\n VG: 'British Virgin Islands',\n IO: 'British Indian Ocean Territory',\n BN: 'Brunei Darussalam',\n BG: 'Bulgaria',\n BF: 'Burkina Faso',\n BI: 'Burundi',\n KH: 'Cambodia',\n CM: 'Cameroon',\n CA: 'Canada',\n CV: 'Cape Verde',\n KY: 'Cayman Islands',\n CF: 'Central African Republic',\n TD: 'Chad',\n CL: 'Chile',\n CN: 'China',\n HK: 'Hong Kong',\n MO: 'Macao',\n CX: 'Christmas Island',\n CC: 'Cocos (Keeling) Islands',\n CO: 'Colombia',\n KM: 'Comoros',\n CG: 'Congo (Brazzaville)',\n CD: 'Congo, (Kinshasa)',\n CK: 'Cook Islands',\n CR: 'Costa Rica',\n CI: \"Côte d'Ivoire\",\n HR: 'Croatia',\n CU: 'Cuba',\n CY: 'Cyprus',\n CZ: 'Czech Republic',\n DK: 'Denmark',\n DJ: 'Djibouti',\n DM: 'Dominica',\n DO: 'Dominican Republic',\n EC: 'Ecuador',\n EG: 'Egypt',\n SV: 'El Salvador',\n GQ: 'Equatorial Guinea',\n ER: 'Eritrea',\n EE: 'Estonia',\n ET: 'Ethiopia',\n FK: 'Falkland Islands (Malvinas)',\n FO: 'Faroe Islands',\n FJ: 'Fiji',\n FI: 'Finland',\n FR: 'France',\n GF: 'French Guiana',\n PF: 'French Polynesia',\n TF: 'French Southern Territories',\n GA: 'Gabon',\n GM: 'Gambia',\n GE: 'Georgia',\n DE: 'Germany',\n GH: 'Ghana',\n GI: 'Gibraltar',\n GR: 'Greece',\n GL: 'Greenland',\n GD: 'Grenada',\n GP: 'Guadeloupe',\n GU: 'Guam',\n GT: 'Guatemala',\n GG: 'Guernsey',\n GN: 'Guinea',\n GW: 'Guinea-Bissau',\n GY: 'Guyana',\n HT: 'Haiti',\n HM: 'Heard and Mcdonald Islands',\n VA: 'Vatican City State',\n HN: 'Honduras',\n HU: 'Hungary',\n IS: 'Iceland',\n IN: 'India',\n ID: 'Indonesia',\n IR: 'Iran',\n IQ: 'Iraq',\n IE: 'Ireland',\n IM: 'Isle of Man',\n IL: 'Israel',\n IT: 'Italy',\n JM: 'Jamaica',\n JP: 'Japan',\n JE: 'Jersey',\n JO: 'Jordan',\n KZ: 'Kazakhstan',\n KE: 'Kenya',\n KI: 'Kiribati',\n KP: 'Korea (North)',\n KR: 'Korea (South)',\n KW: 'Kuwait',\n KG: 'Kyrgyzstan',\n LA: 'Lao PDR',\n LV: 'Latvia',\n LB: 'Lebanon',\n LS: 'Lesotho',\n LR: 'Liberia',\n LY: 'Libya',\n LI: 'Liechtenstein',\n LT: 'Lithuania',\n LU: 'Luxembourg',\n MK: 'Macedonia',\n MG: 'Madagascar',\n MW: 'Malawi',\n MY: 'Malaysia',\n MV: 'Maldives',\n ML: 'Mali',\n MT: 'Malta',\n MH: 'Marshall Islands',\n MQ: 'Martinique',\n MR: 'Mauritania',\n MU: 'Mauritius',\n YT: 'Mayotte',\n MX: 'Mexico',\n FM: 'Micronesia',\n MD: 'Moldova',\n MC: 'Monaco',\n MN: 'Mongolia',\n ME: 'Montenegro',\n MS: 'Montserrat',\n MA: 'Morocco',\n MZ: 'Mozambique',\n MM: 'Myanmar',\n NA: 'Namibia',\n NR: 'Nauru',\n NP: 'Nepal',\n NL: 'Netherlands',\n AN: 'Netherlands Antilles',\n NC: 'New Caledonia',\n NZ: 'New Zealand',\n NI: 'Nicaragua',\n NE: 'Niger',\n NG: 'Nigeria',\n NU: 'Niue',\n NF: 'Norfolk Island',\n MP: 'Northern Mariana Islands',\n NO: 'Norway',\n OM: 'Oman',\n PK: 'Pakistan',\n PW: 'Palau',\n PS: 'Palestinian Territory',\n PA: 'Panama',\n PG: 'Papua New Guinea',\n PY: 'Paraguay',\n PE: 'Peru',\n PH: 'Philippines',\n PN: 'Pitcairn',\n PL: 'Poland',\n PT: 'Portugal',\n PR: 'Puerto Rico',\n QA: 'Qatar',\n RE: 'Réunion',\n RO: 'Romania',\n RU: 'Russian Federation',\n RW: 'Rwanda',\n BL: 'Saint-Barthélemy',\n SH: 'Saint Helena',\n KN: 'Saint Kitts and Nevis',\n LC: 'Saint Lucia',\n MF: 'Saint-Martin (French part)',\n PM: 'Saint Pierre and Miquelon',\n VC: 'Saint Vincent and Grenadines',\n WS: 'Samoa',\n SM: 'San Marino',\n ST: 'Sao Tome and Principe',\n SA: 'Saudi Arabia',\n SN: 'Senegal',\n RS: 'Serbia',\n SC: 'Seychelles',\n SL: 'Sierra Leone',\n SG: 'Singapore',\n SK: 'Slovakia',\n SI: 'Slovenia',\n SB: 'Solomon Islands',\n SO: 'Somalia',\n ZA: 'South Africa',\n GS: 'South Georgia and the South Sandwich Islands',\n SS: 'South Sudan',\n ES: 'Spain',\n LK: 'Sri Lanka',\n SD: 'Sudan',\n SR: 'Suriname',\n SJ: 'Svalbard and Jan Mayen Islands',\n SZ: 'Swaziland',\n SE: 'Sweden',\n CH: 'Switzerland',\n SY: 'Syria',\n TW: 'Taiwan',\n TJ: 'Tajikistan',\n TZ: 'Tanzania',\n TH: 'Thailand',\n TL: 'Timor-Leste',\n TG: 'Togo',\n TK: 'Tokelau',\n TO: 'Tonga',\n TT: 'Trinidad and Tobago',\n TN: 'Tunisia',\n TR: 'Turkey',\n TM: 'Turkmenistan',\n TC: 'Turks and Caicos Islands',\n TV: 'Tuvalu',\n UG: 'Uganda',\n UA: 'Ukraine',\n AE: 'United Arab Emirates',\n GB: 'United Kingdom (GB)',\n US: 'United States of America (USA)',\n UM: 'US Minor Outlying Islands',\n UY: 'Uruguay',\n UZ: 'Uzbekistan',\n VU: 'Vanuatu',\n VE: 'Venezuela',\n VN: 'Viet Nam',\n VI: 'Virgin Islands, US',\n WF: 'Wallis and Futuna Islands',\n EH: 'Western Sahara',\n YE: 'Yemen',\n ZM: 'Zambia',\n ZW: 'Zimbabwe',\n};\n\nexport interface EuiTimeZone {\n name: string;\n desc: string;\n}\n\nexport const EUI_TIMEZONES: EuiTimeZone[] = [\n { name: 'Europe/Andorra', desc: 'Andorra - Andorra (GMT+02:00)' },\n { name: 'Asia/Dubai', desc: 'United Arab Emirates - Dubai (GMT+04:00)' },\n { name: 'Asia/Kabul', desc: 'Afghanistan - Kabul (GMT+04:30)' },\n { name: 'America/Antigua', desc: 'Antigua and Barbuda - Antigua (GMT-04:00)' },\n { name: 'America/Anguilla', desc: 'Anguilla - Anguilla (GMT-04:00)' },\n { name: 'Europe/Tirane', desc: 'Albania - Tirane (GMT+02:00)' },\n { name: 'Asia/Yerevan', desc: 'Armenia - Yerevan (GMT+04:00)' },\n { name: 'Africa/Luanda', desc: 'Angola - Luanda (GMT+01:00)' },\n { name: 'Antarctica/McMurdo', desc: 'Antarctica - McMurdo (GMT+12:00)' },\n { name: 'Antarctica/Rothera', desc: 'Antarctica - Rothera (GMT-03:00)' },\n { name: 'Antarctica/Palmer', desc: 'Antarctica - Palmer (GMT-03:00)' },\n { name: 'Antarctica/Mawson', desc: 'Antarctica - Mawson (GMT+05:00)' },\n { name: 'Antarctica/Davis', desc: 'Antarctica - Davis (GMT+07:00)' },\n { name: 'Antarctica/Casey', desc: 'Antarctica - Casey (GMT+08:00)' },\n { name: 'Antarctica/Vostok', desc: 'Antarctica - Vostok (GMT+06:00)' },\n { name: 'Antarctica/DumontDUrville', desc: 'Antarctica - DumontDUrville (GMT+10:00)' },\n { name: 'Antarctica/Syowa', desc: 'Antarctica - Syowa (GMT+03:00)' },\n { name: 'Antarctica/Troll', desc: 'Antarctica - Troll (GMT+02:00)' },\n { name: 'America/Argentina/Buenos_Aires', desc: 'Argentina - Buenos Aires (GMT-03:00)' },\n { name: 'America/Argentina/Cordoba', desc: 'Argentina - Cordoba (GMT-03:00)' },\n { name: 'America/Argentina/Salta', desc: 'Argentina - Salta (GMT-03:00)' },\n { name: 'America/Argentina/Jujuy', desc: 'Argentina - Jujuy (GMT-03:00)' },\n { name: 'America/Argentina/Tucuman', desc: 'Argentina - Tucuman (GMT-03:00)' },\n { name: 'America/Argentina/Catamarca', desc: 'Argentina - Catamarca (GMT-03:00)' },\n { name: 'America/Argentina/La_Rioja', desc: 'Argentina - La Rioja (GMT-03:00)' },\n { name: 'America/Argentina/San_Juan', desc: 'Argentina - San Juan (GMT-03:00)' },\n { name: 'America/Argentina/Mendoza', desc: 'Argentina - Mendoza (GMT-03:00)' },\n { name: 'America/Argentina/San_Luis', desc: 'Argentina - San Luis (GMT-03:00)' },\n { name: 'America/Argentina/Rio_Gallegos', desc: 'Argentina - Rio Gallegos (GMT-03:00)' },\n { name: 'America/Argentina/Ushuaia', desc: 'Argentina - Ushuaia (GMT-03:00)' },\n { name: 'Pacific/Pago_Pago', desc: 'American Samoa - Pago Pago (GMT-11:00)' },\n { name: 'Pacific/Samoa', desc: 'American Samoa - Samoa (GMT-11:00)' },\n { name: 'Europe/Vienna', desc: 'Austria - Vienna (GMT+02:00)' },\n { name: 'Australia/Lord_Howe', desc: 'Australia - Lord Howe (GMT+10:30)' },\n { name: 'Antarctica/Macquarie', desc: 'Australia - Macquarie (GMT+11:00)' },\n { name: 'Australia/Hobart', desc: 'Australia - Hobart (GMT+10:00)' },\n { name: 'Australia/Currie', desc: 'Australia - Currie (GMT+10:00)' },\n { name: 'Australia/Melbourne', desc: 'Australia - Melbourne (GMT+10:00)' },\n { name: 'Australia/Sydney', desc: 'Australia - Sydney (GMT+10:00)' },\n { name: 'Australia/Broken_Hill', desc: 'Australia - Broken Hill (GMT+09:30)' },\n { name: 'Australia/Brisbane', desc: 'Australia - Brisbane (GMT+10:00)' },\n { name: 'Australia/Lindeman', desc: 'Australia - Lindeman (GMT+10:00)' },\n { name: 'Australia/Adelaide', desc: 'Australia - Adelaide (GMT+09:30)' },\n { name: 'Australia/Darwin', desc: 'Australia - Darwin (GMT+09:30)' },\n { name: 'Australia/Perth', desc: 'Australia - Perth (GMT+08:00)' },\n { name: 'Australia/Eucla', desc: 'Australia - Eucla (GMT+08:45)' },\n { name: 'Australia/Canberra', desc: 'Australia - Canberra (GMT+10:00)' },\n { name: 'Australia/Queensland', desc: 'Australia - Queensland (GMT+10:00)' },\n { name: 'Australia/Tasmania', desc: 'Australia - Tasmania (GMT+10:00)' },\n { name: 'Australia/Victoria', desc: 'Australia - Victoria (GMT+10:00)' },\n { name: 'America/Aruba', desc: 'Aruba - Aruba (GMT-04:00)' },\n { name: 'Europe/Mariehamn', desc: 'Aland Islands - Mariehamn (GMT+03:00)' },\n { name: 'Asia/Baku', desc: 'Azerbaijan - Baku (GMT+04:00)' },\n { name: 'Europe/Sarajevo', desc: 'Bosnia and Herzegovina - Sarajevo (GMT+02:00)' },\n { name: 'America/Barbados', desc: 'Barbados - Barbados (GMT-04:00)' },\n { name: 'Asia/Dhaka', desc: 'Bangladesh - Dhaka (GMT+06:00)' },\n { name: 'Europe/Brussels', desc: 'Belgium - Brussels (GMT+02:00)' },\n { name: 'Africa/Ouagadougou', desc: 'Burkina Faso - Ouagadougou (GMT+00:00)' },\n { name: 'Europe/Sofia', desc: 'Bulgaria - Sofia (GMT+03:00)' },\n { name: 'Asia/Bahrain', desc: 'Bahrain - Bahrain (GMT+03:00)' },\n { name: 'Africa/Bujumbura', desc: 'Burundi - Bujumbura (GMT+02:00)' },\n { name: 'Africa/Porto-Novo', desc: 'Benin - Porto-Novo (GMT+01:00)' },\n { name: 'America/St_Barthelemy', desc: 'Saint-Barthélemy - St Barthelemy (GMT-04:00)' },\n { name: 'Atlantic/Bermuda', desc: 'Bermuda - Bermuda (GMT-03:00)' },\n { name: 'Asia/Brunei', desc: 'Brunei Darussalam - Brunei (GMT+08:00)' },\n { name: 'America/La_Paz', desc: 'Bolivia - La Paz (GMT-04:00)' },\n { name: 'America/Kralendijk', desc: 'BQ - Kralendijk (GMT-04:00)' },\n { name: 'America/Noronha', desc: 'Brazil - Noronha (GMT-02:00)' },\n { name: 'America/Belem', desc: 'Brazil - Belem (GMT-03:00)' },\n { name: 'America/Fortaleza', desc: 'Brazil - Fortaleza (GMT-03:00)' },\n { name: 'America/Recife', desc: 'Brazil - Recife (GMT-03:00)' },\n { name: 'America/Araguaina', desc: 'Brazil - Araguaina (GMT-03:00)' },\n { name: 'America/Maceio', desc: 'Brazil - Maceio (GMT-03:00)' },\n { name: 'America/Bahia', desc: 'Brazil - Bahia (GMT-03:00)' },\n { name: 'America/Sao_Paulo', desc: 'Brazil - Sao Paulo (GMT-03:00)' },\n { name: 'America/Campo_Grande', desc: 'Brazil - Campo Grande (GMT-04:00)' },\n { name: 'America/Cuiaba', desc: 'Brazil - Cuiaba (GMT-04:00)' },\n { name: 'America/Santarem', desc: 'Brazil - Santarem (GMT-03:00)' },\n { name: 'America/Porto_Velho', desc: 'Brazil - Porto Velho (GMT-04:00)' },\n { name: 'America/Boa_Vista', desc: 'Brazil - Boa Vista (GMT-04:00)' },\n { name: 'America/Manaus', desc: 'Brazil - Manaus (GMT-04:00)' },\n { name: 'America/Eirunepe', desc: 'Brazil - Eirunepe (GMT-05:00)' },\n { name: 'America/Rio_Branco', desc: 'Brazil - Rio Branco (GMT-05:00)' },\n { name: 'America/Nassau', desc: 'Bahamas - Nassau (GMT-04:00)' },\n { name: 'Asia/Thimphu', desc: 'Bhutan - Thimphu (GMT+06:00)' },\n { name: 'Africa/Gaborone', desc: 'Botswana - Gaborone (GMT+02:00)' },\n { name: 'Europe/Minsk', desc: 'Belarus - Minsk (GMT+03:00)' },\n { name: 'America/Belize', desc: 'Belize - Belize (GMT-06:00)' },\n { name: 'America/St_Johns', desc: 'Canada - St Johns (GMT-02:30)' },\n { name: 'America/Halifax', desc: 'Canada - Halifax (GMT-03:00)' },\n { name: 'America/Glace_Bay', desc: 'Canada - Glace Bay (GMT-03:00)' },\n { name: 'America/Moncton', desc: 'Canada - Moncton (GMT-03:00)' },\n { name: 'America/Goose_Bay', desc: 'Canada - Goose Bay (GMT-03:00)' },\n { name: 'America/Blanc-Sablon', desc: 'Canada - Blanc-Sablon (GMT-04:00)' },\n { name: 'America/Toronto', desc: 'Canada - Toronto (GMT-04:00)' },\n { name: 'America/Nipigon', desc: 'Canada - Nipigon (GMT-04:00)' },\n { name: 'America/Thunder_Bay', desc: 'Canada - Thunder Bay (GMT-04:00)' },\n { name: 'America/Iqaluit', desc: 'Canada - Iqaluit (GMT-04:00)' },\n { name: 'America/Pangnirtung', desc: 'Canada - Pangnirtung (GMT-04:00)' },\n { name: 'America/Resolute', desc: 'Canada - Resolute (GMT-05:00)' },\n { name: 'America/Atikokan', desc: 'Canada - Atikokan (GMT-05:00)' },\n { name: 'America/Rankin_Inlet', desc: 'Canada - Rankin Inlet (GMT-05:00)' },\n { name: 'America/Winnipeg', desc: 'Canada - Winnipeg (GMT-05:00)' },\n { name: 'America/Rainy_River', desc: 'Canada - Rainy River (GMT-05:00)' },\n { name: 'America/Regina', desc: 'Canada - Regina (GMT-06:00)' },\n { name: 'America/Swift_Current', desc: 'Canada - Swift Current (GMT-06:00)' },\n { name: 'America/Edmonton', desc: 'Canada - Edmonton (GMT-06:00)' },\n { name: 'America/Cambridge_Bay', desc: 'Canada - Cambridge Bay (GMT-06:00)' },\n { name: 'America/Yellowknife', desc: 'Canada - Yellowknife (GMT-06:00)' },\n { name: 'America/Inuvik', desc: 'Canada - Inuvik (GMT-06:00)' },\n { name: 'America/Creston', desc: 'Canada - Creston (GMT-07:00)' },\n { name: 'America/Dawson_Creek', desc: 'Canada - Dawson Creek (GMT-07:00)' },\n { name: 'America/Vancouver', desc: 'Canada - Vancouver (GMT-07:00)' },\n { name: 'America/Whitehorse', desc: 'Canada - Whitehorse (GMT-07:00)' },\n { name: 'America/Dawson', desc: 'Canada - Dawson (GMT-07:00)' },\n { name: 'America/Montreal', desc: 'Canada - Montreal (GMT-04:00)' },\n { name: 'Canada/Atlantic', desc: 'Canada - Atlantic (GMT-03:00)' },\n { name: 'Canada/Central', desc: 'Canada - Central (GMT-05:00)' },\n { name: 'Canada/Eastern', desc: 'Canada - Eastern (GMT-04:00)' },\n { name: 'Canada/Mountain', desc: 'Canada - Mountain (GMT-06:00)' },\n { name: 'Canada/Newfoundland', desc: 'Canada - Newfoundland (GMT-02:30)' },\n { name: 'Canada/Pacific', desc: 'Canada - Pacific (GMT-07:00)' },\n { name: 'Canada/Saskatchewan', desc: 'Canada - Saskatchewan (GMT-06:00)' },\n { name: 'Canada/Yukon', desc: 'Canada - Yukon (GMT-07:00)' },\n { name: 'Indian/Cocos', desc: 'Cocos (Keeling) Islands - Cocos (GMT+06:30)' },\n { name: 'Africa/Kinshasa', desc: 'Congo, (Kinshasa) - Kinshasa (GMT+01:00)' },\n { name: 'Africa/Lubumbashi', desc: 'Congo, (Kinshasa) - Lubumbashi (GMT+02:00)' },\n { name: 'Africa/Bangui', desc: 'Central African Republic - Bangui (GMT+01:00)' },\n { name: 'Africa/Brazzaville', desc: 'Congo (Brazzaville) - Brazzaville (GMT+01:00)' },\n { name: 'Europe/Zurich', desc: 'Switzerland - Zurich (GMT+02:00)' },\n { name: 'Africa/Abidjan', desc: \"Côte d'Ivoire - Abidjan (GMT+00:00)\" },\n { name: 'Pacific/Rarotonga', desc: 'Cook Islands - Rarotonga (GMT-10:00)' },\n { name: 'America/Santiago', desc: 'Chile - Santiago (GMT-04:00)' },\n { name: 'Pacific/Easter', desc: 'Chile - Easter (GMT-06:00)' },\n { name: 'Chile/Continental', desc: 'Chile - Continental (GMT-04:00)' },\n { name: 'Chile/EasterIsland', desc: 'Chile - EasterIsland (GMT-06:00)' },\n { name: 'Africa/Douala', desc: 'Cameroon - Douala (GMT+01:00)' },\n { name: 'Asia/Shanghai', desc: 'China - Shanghai (GMT+08:00)' },\n { name: 'Asia/Harbin', desc: 'China - Harbin (GMT+08:00)' },\n { name: 'Asia/Chongqing', desc: 'China - Chongqing (GMT+08:00)' },\n { name: 'Asia/Urumqi', desc: 'China - Urumqi (GMT+06:00)' },\n { name: 'Asia/Kashgar', desc: 'China - Kashgar (GMT+06:00)' },\n { name: 'America/Bogota', desc: 'Colombia - Bogota (GMT-05:00)' },\n { name: 'America/Costa_Rica', desc: 'Costa Rica - Costa Rica (GMT-06:00)' },\n { name: 'America/Havana', desc: 'Cuba - Havana (GMT-04:00)' },\n { name: 'Atlantic/Cape_Verde', desc: 'Cape Verde - Cape Verde (GMT-01:00)' },\n { name: 'America/Curacao', desc: 'CW - Curacao (GMT-04:00)' },\n { name: 'Indian/Christmas', desc: 'Christmas Island - Christmas (GMT+07:00)' },\n { name: 'Asia/Nicosia', desc: 'Cyprus - Nicosia (GMT+03:00)' },\n { name: 'Europe/Prague', desc: 'Czech Republic - Prague (GMT+02:00)' },\n { name: 'Europe/Berlin', desc: 'Germany - Berlin (GMT+02:00)' },\n { name: 'Africa/Djibouti', desc: 'Djibouti - Djibouti (GMT+03:00)' },\n { name: 'Europe/Copenhagen', desc: 'Denmark - Copenhagen (GMT+02:00)' },\n { name: 'America/Dominica', desc: 'Dominica - Dominica (GMT-04:00)' },\n { name: 'America/Santo_Domingo', desc: 'Dominican Republic - Santo Domingo (GMT-04:00)' },\n { name: 'Africa/Algiers', desc: 'Algeria - Algiers (GMT+01:00)' },\n { name: 'America/Guayaquil', desc: 'Ecuador - Guayaquil (GMT-05:00)' },\n { name: 'Pacific/Galapagos', desc: 'Ecuador - Galapagos (GMT-06:00)' },\n { name: 'Europe/Tallinn', desc: 'Estonia - Tallinn (GMT+03:00)' },\n { name: 'Egypt', desc: 'Egypt - Egypt (GMT+02:00)' },\n { name: 'Africa/El_Aaiun', desc: 'Western Sahara - El Aaiun (GMT+00:00)' },\n { name: 'Africa/Asmara', desc: 'Eritrea - Asmara (GMT+03:00)' },\n { name: 'Europe/Madrid', desc: 'Spain - Madrid (GMT+02:00)' },\n { name: 'Africa/Ceuta', desc: 'Spain - Ceuta (GMT+02:00)' },\n { name: 'Atlantic/Canary', desc: 'Spain - Canary (GMT+01:00)' },\n { name: 'Africa/Addis_Ababa', desc: 'Ethiopia - Addis Ababa (GMT+03:00)' },\n { name: 'Europe/Helsinki', desc: 'Finland - Helsinki (GMT+03:00)' },\n { name: 'Pacific/Fiji', desc: 'Fiji - Fiji (GMT+12:00)' },\n { name: 'Atlantic/Stanley', desc: 'Falkland Islands (Malvinas) - Stanley (GMT-03:00)' },\n { name: 'Pacific/Chuuk', desc: 'Micronesia - Chuuk (GMT+10:00)' },\n { name: 'Pacific/Pohnpei', desc: 'Micronesia - Pohnpei (GMT+11:00)' },\n { name: 'Pacific/Kosrae', desc: 'Micronesia - Kosrae (GMT+11:00)' },\n { name: 'Atlantic/Faroe', desc: 'Faroe Islands - Faroe (GMT+01:00)' },\n { name: 'Europe/Paris', desc: 'France - Paris (GMT+02:00)' },\n { name: 'Africa/Libreville', desc: 'Gabon - Libreville (GMT+01:00)' },\n { name: 'Europe/London', desc: 'United Kingdom (GB) - London (GMT+01:00)' },\n { name: 'America/Grenada', desc: 'Grenada - Grenada (GMT-04:00)' },\n { name: 'Asia/Tbilisi', desc: 'Georgia - Tbilisi (GMT+04:00)' },\n { name: 'America/Cayenne', desc: 'French Guiana - Cayenne (GMT-03:00)' },\n { name: 'Europe/Guernsey', desc: 'Guernsey - Guernsey (GMT+01:00)' },\n { name: 'Africa/Accra', desc: 'Ghana - Accra (GMT+00:00)' },\n { name: 'Europe/Gibraltar', desc: 'Gibraltar - Gibraltar (GMT+02:00)' },\n { name: 'America/Godthab', desc: 'Greenland - Godthab (GMT-02:00)' },\n { name: 'America/Danmarkshavn', desc: 'Greenland - Danmarkshavn (GMT+00:00)' },\n { name: 'America/Scoresbysund', desc: 'Greenland - Scoresbysund (GMT+00:00)' },\n { name: 'America/Thule', desc: 'Greenland - Thule (GMT-03:00)' },\n { name: 'Africa/Banjul', desc: 'Gambia - Banjul (GMT+00:00)' },\n { name: 'Africa/Conakry', desc: 'Guinea - Conakry (GMT+00:00)' },\n { name: 'America/Guadeloupe', desc: 'Guadeloupe - Guadeloupe (GMT-04:00)' },\n { name: 'Africa/Malabo', desc: 'Equatorial Guinea - Malabo (GMT+01:00)' },\n { name: 'Europe/Athens', desc: 'Greece - Athens (GMT+03:00)' },\n { name: 'Atlantic/South_Georgia', desc: 'South Georgia and the South Sandwich Islands - South Georgia (GMT-02:00)' },\n { name: 'America/Guatemala', desc: 'Guatemala - Guatemala (GMT-06:00)' },\n { name: 'Pacific/Guam', desc: 'Guam - Guam (GMT+10:00)' },\n { name: 'Africa/Bissau', desc: 'Guinea-Bissau - Bissau (GMT+00:00)' },\n { name: 'America/Guyana', desc: 'Guyana - Guyana (GMT-04:00)' },\n { name: 'Asia/Hong_Kong', desc: 'Hong Kong - Hong Kong (GMT+08:00)' },\n { name: 'America/Tegucigalpa', desc: 'Honduras - Tegucigalpa (GMT-06:00)' },\n { name: 'Europe/Zagreb', desc: 'Croatia - Zagreb (GMT+02:00)' },\n { name: 'America/Port-au-Prince', desc: 'Haiti - Port-au-Prince (GMT-04:00)' },\n { name: 'Europe/Budapest', desc: 'Hungary - Budapest (GMT+02:00)' },\n { name: 'Asia/Jakarta', desc: 'Indonesia - Jakarta (GMT+07:00)' },\n { name: 'Asia/Pontianak', desc: 'Indonesia - Pontianak (GMT+07:00)' },\n { name: 'Asia/Makassar', desc: 'Indonesia - Makassar (GMT+08:00)' },\n { name: 'Asia/Jayapura', desc: 'Indonesia - Jayapura (GMT+09:00)' },\n { name: 'Europe/Dublin', desc: 'Ireland - Dublin (GMT+01:00)' },\n { name: 'Asia/Jerusalem', desc: 'Israel - Jerusalem (GMT+03:00)' },\n { name: 'Europe/Isle_of_Man', desc: 'Isle of Man - Isle of_Man (GMT+01:00)' },\n { name: 'Asia/Kolkata', desc: 'India - Kolkata (GMT+05:30)' },\n { name: 'Indian/Chagos', desc: 'British Indian Ocean Territory - Chagos (GMT+06:00)' },\n { name: 'Asia/Baghdad', desc: 'Iraq - Baghdad (GMT+03:00)' },\n { name: 'Asia/Tehran', desc: 'Iran - Tehran (GMT+04:30)' },\n { name: 'Atlantic/Reykjavik', desc: 'Iceland - Reykjavik (GMT+00:00)' },\n { name: 'Europe/Rome', desc: 'Italy - Rome (GMT+02:00)' },\n { name: 'Europe/Jersey', desc: 'Jersey - Jersey (GMT+01:00)' },\n { name: 'America/Jamaica', desc: 'Jamaica - Jamaica (GMT-05:00)' },\n { name: 'Asia/Amman', desc: 'Jordan - Amman (GMT+03:00)' },\n { name: 'Asia/Tokyo', desc: 'Japan - Tokyo (GMT+09:00)' },\n { name: 'Africa/Nairobi', desc: 'Kenya - Nairobi (GMT+03:00)' },\n { name: 'Asia/Bishkek', desc: 'Kyrgyzstan - Bishkek (GMT+06:00)' },\n { name: 'Asia/Phnom_Penh', desc: 'Cambodia - Phnom Penh (GMT+07:00)' },\n { name: 'Pacific/Tarawa', desc: 'Kiribati - Tarawa (GMT+12:00)' },\n { name: 'Pacific/Enderbury', desc: 'Kiribati - Enderbury (GMT+13:00)' },\n { name: 'Pacific/Kiritimati', desc: 'Kiribati - Kiritimati (GMT+14:00)' },\n { name: 'Indian/Comoro', desc: 'Comoros - Comoro (GMT+03:00)' },\n { name: 'America/St_Kitts', desc: 'Saint Kitts and Nevis - St Kitts (GMT-04:00)' },\n { name: 'Asia/Pyongyang', desc: 'Korea (North) - Pyongyang (GMT+09:00)' },\n { name: 'Asia/Seoul', desc: 'Korea (South) - Seoul (GMT+09:00)' },\n { name: 'Asia/Kuwait', desc: 'Kuwait - Kuwait (GMT+03:00)' },\n { name: 'America/Cayman', desc: 'Cayman Islands - Cayman (GMT-05:00)' },\n { name: 'Asia/Almaty', desc: 'Kazakhstan - Almaty (GMT+06:00)' },\n { name: 'Asia/Qyzylorda', desc: 'Kazakhstan - Qyzylorda (GMT+06:00)' },\n { name: 'Asia/Aqtobe', desc: 'Kazakhstan - Aqtobe (GMT+05:00)' },\n { name: 'Asia/Aqtau', desc: 'Kazakhstan - Aqtau (GMT+05:00)' },\n { name: 'Asia/Oral', desc: 'Kazakhstan - Oral (GMT+05:00)' },\n { name: 'Asia/Vientiane', desc: 'Lao PDR - Vientiane (GMT+07:00)' },\n { name: 'Asia/Beirut', desc: 'Lebanon - Beirut (GMT+03:00)' },\n { name: 'America/St_Lucia', desc: 'Saint Lucia - St Lucia (GMT-04:00)' },\n { name: 'Europe/Vaduz', desc: 'Liechtenstein - Vaduz (GMT+02:00)' },\n { name: 'Asia/Colombo', desc: 'Sri Lanka - Colombo (GMT+05:30)' },\n { name: 'Africa/Monrovia', desc: 'Liberia - Monrovia (GMT+00:00)' },\n { name: 'Africa/Maseru', desc: 'Lesotho - Maseru (GMT+02:00)' },\n { name: 'Europe/Vilnius', desc: 'Lithuania - Vilnius (GMT+03:00)' },\n { name: 'Europe/Luxembourg', desc: 'Luxembourg - Luxembourg (GMT+02:00)' },\n { name: 'Europe/Riga', desc: 'Latvia - Riga (GMT+03:00)' },\n { name: 'Africa/Tripoli', desc: 'Libya - Tripoli (GMT+02:00)' },\n { name: 'Africa/Casablanca', desc: 'Morocco - Casablanca (GMT+00:00)' },\n { name: 'Europe/Monaco', desc: 'Monaco - Monaco (GMT+02:00)' },\n { name: 'Europe/Chisinau', desc: 'Moldova - Chisinau (GMT+03:00)' },\n { name: 'Europe/Podgorica', desc: 'Montenegro - Podgorica (GMT+02:00)' },\n { name: 'America/Marigot', desc: 'Saint-Martin (French part) - Marigot (GMT-04:00)' },\n { name: 'Indian/Antananarivo', desc: 'Madagascar - Antananarivo (GMT+03:00)' },\n { name: 'Pacific/Majuro', desc: 'Marshall Islands - Majuro (GMT+12:00)' },\n { name: 'Pacific/Kwajalein', desc: 'Marshall Islands - Kwajalein (GMT+12:00)' },\n { name: 'Europe/Skopje', desc: 'Macedonia - Skopje (GMT+02:00)' },\n { name: 'Africa/Bamako', desc: 'Mali - Bamako (GMT+00:00)' },\n { name: 'Asia/Rangoon', desc: 'Myanmar - Rangoon (GMT+06:30)' },\n { name: 'Asia/Ulaanbaatar', desc: 'Mongolia - Ulaanbaatar (GMT+08:00)' },\n { name: 'Asia/Hovd', desc: 'Mongolia - Hovd (GMT+07:00)' },\n { name: 'Asia/Choibalsan', desc: 'Mongolia - Choibalsan (GMT+08:00)' },\n { name: 'Asia/Macau', desc: 'Macao - Macau (GMT+08:00)' },\n { name: 'Pacific/Saipan', desc: 'Northern Mariana Islands - Saipan (GMT+10:00)' },\n { name: 'America/Martinique', desc: 'Martinique - Martinique (GMT-04:00)' },\n { name: 'Africa/Nouakchott', desc: 'Mauritania - Nouakchott (GMT+00:00)' },\n { name: 'America/Montserrat', desc: 'Montserrat - Montserrat (GMT-04:00)' },\n { name: 'Europe/Malta', desc: 'Malta - Malta (GMT+02:00)' },\n { name: 'Indian/Mauritius', desc: 'Mauritius - Mauritius (GMT+04:00)' },\n { name: 'Indian/Maldives', desc: 'Maldives - Maldives (GMT+05:00)' },\n { name: 'Africa/Blantyre', desc: 'Malawi - Blantyre (GMT+02:00)' },\n { name: 'America/Mexico_City', desc: 'Mexico - Mexico City (GMT-05:00)' },\n { name: 'America/Cancun', desc: 'Mexico - Cancun (GMT-05:00)' },\n { name: 'America/Merida', desc: 'Mexico - Merida (GMT-05:00)' },\n { name: 'America/Monterrey', desc: 'Mexico - Monterrey (GMT-05:00)' },\n { name: 'America/Matamoros', desc: 'Mexico - Matamoros (GMT-05:00)' },\n { name: 'America/Mazatlan', desc: 'Mexico - Mazatlan (GMT-06:00)' },\n { name: 'America/Chihuahua', desc: 'Mexico - Chihuahua (GMT-06:00)' },\n { name: 'America/Ojinaga', desc: 'Mexico - Ojinaga (GMT-06:00)' },\n { name: 'America/Hermosillo', desc: 'Mexico - Hermosillo (GMT-07:00)' },\n { name: 'America/Tijuana', desc: 'Mexico - Tijuana (GMT-07:00)' },\n { name: 'America/Santa_Isabel', desc: 'Mexico - Santa Isabel (GMT-07:00)' },\n { name: 'America/Bahia_Banderas', desc: 'Mexico - Bahia Banderas (GMT-05:00)' },\n { name: 'Asia/Kuala_Lumpur', desc: 'Malaysia - Kuala Lumpur (GMT+08:00)' },\n { name: 'Asia/Kuching', desc: 'Malaysia - Kuching (GMT+08:00)' },\n { name: 'Africa/Maputo', desc: 'Mozambique - Maputo (GMT+02:00)' },\n { name: 'Africa/Windhoek', desc: 'Namibia - Windhoek (GMT+02:00)' },\n { name: 'Pacific/Noumea', desc: 'New Caledonia - Noumea (GMT+11:00)' },\n { name: 'Africa/Niamey', desc: 'Niger - Niamey (GMT+01:00)' },\n { name: 'Pacific/Norfolk', desc: 'Norfolk Island - Norfolk (GMT+11:00)' },\n { name: 'Africa/Lagos', desc: 'Nigeria - Lagos (GMT+01:00)' },\n { name: 'America/Managua', desc: 'Nicaragua - Managua (GMT-06:00)' },\n { name: 'Europe/Amsterdam', desc: 'Netherlands - Amsterdam (GMT+02:00)' },\n { name: 'Europe/Oslo', desc: 'Norway - Oslo (GMT+02:00)' },\n { name: 'Asia/Kathmandu', desc: 'Nepal - Kathmandu (GMT+05:45)' },\n { name: 'Pacific/Nauru', desc: 'Nauru - Nauru (GMT+12:00)' },\n { name: 'Pacific/Niue', desc: 'Niue - Niue (GMT-11:00)' },\n { name: 'Pacific/Auckland', desc: 'New Zealand - Auckland (GMT+12:00)' },\n { name: 'Pacific/Chatham', desc: 'New Zealand - Chatham (GMT+12:45)' },\n { name: 'Asia/Muscat', desc: 'Oman - Muscat (GMT+04:00)' },\n { name: 'America/Panama', desc: 'Panama - Panama (GMT-05:00)' },\n { name: 'America/Lima', desc: 'Peru - Lima (GMT-05:00)' },\n { name: 'Pacific/Tahiti', desc: 'French Polynesia - Tahiti (GMT-10:00)' },\n { name: 'Pacific/Marquesas', desc: 'French Polynesia - Marquesas (GMT-09:30)' },\n { name: 'Pacific/Gambier', desc: 'French Polynesia - Gambier (GMT-09:00)' },\n { name: 'Pacific/Port_Moresby', desc: 'Papua New Guinea - Port Moresby (GMT+10:00)' },\n { name: 'Asia/Manila', desc: 'Philippines - Manila (GMT+08:00)' },\n { name: 'Asia/Karachi', desc: 'Pakistan - Karachi (GMT+05:00)' },\n { name: 'Europe/Warsaw', desc: 'Poland - Warsaw (GMT+02:00)' },\n { name: 'Poland', desc: 'Poland - Poland (GMT+02:00)' },\n { name: 'America/Miquelon', desc: 'Saint Pierre and Miquelon - Miquelon (GMT-02:00)' },\n { name: 'Pacific/Pitcairn', desc: 'Pitcairn - Pitcairn (GMT-08:00)' },\n { name: 'America/Puerto_Rico', desc: 'Puerto Rico - Puerto Rico (GMT-04:00)' },\n { name: 'Asia/Gaza', desc: 'Palestinian Territory - Gaza (GMT+03:00)' },\n { name: 'Asia/Hebron', desc: 'Palestinian Territory - Hebron (GMT+03:00)' },\n { name: 'Europe/Lisbon', desc: 'Portugal - Lisbon (GMT+01:00)' },\n { name: 'Atlantic/Madeira', desc: 'Portugal - Madeira (GMT+01:00)' },\n { name: 'Atlantic/Azores', desc: 'Portugal - Azores (GMT+00:00)' },\n { name: 'Pacific/Palau', desc: 'Palau - Palau (GMT+09:00)' },\n { name: 'America/Asuncion', desc: 'Paraguay - Asuncion (GMT-04:00)' },\n { name: 'Asia/Qatar', desc: 'Qatar - Qatar (GMT+03:00)' },\n { name: 'Indian/Reunion', desc: 'Réunion - Reunion (GMT+04:00)' },\n { name: 'Europe/Bucharest', desc: 'Romania - Bucharest (GMT+03:00)' },\n { name: 'Europe/Belgrade', desc: 'Serbia - Belgrade (GMT+02:00)' },\n { name: 'Europe/Kaliningrad', desc: 'Russian Federation - Kaliningrad (GMT+02:00)' },\n { name: 'Europe/Moscow', desc: 'Russian Federation - Moscow (GMT+03:00)' },\n { name: 'Europe/Volgograd', desc: 'Russian Federation - Volgograd (GMT+03:00)' },\n { name: 'Europe/Samara', desc: 'Russian Federation - Samara (GMT+04:00)' },\n { name: 'Europe/Simferopol', desc: 'Russian Federation - Simferopol (GMT+03:00)' },\n { name: 'Asia/Yekaterinburg', desc: 'Russian Federation - Yekaterinburg (GMT+05:00)' },\n { name: 'Asia/Omsk', desc: 'Russian Federation - Omsk (GMT+06:00)' },\n { name: 'Asia/Novosibirsk', desc: 'Russian Federation - Novosibirsk (GMT+07:00)' },\n { name: 'Asia/Novokuznetsk', desc: 'Russian Federation - Novokuznetsk (GMT+07:00)' },\n { name: 'Asia/Krasnoyarsk', desc: 'Russian Federation - Krasnoyarsk (GMT+07:00)' },\n { name: 'Asia/Irkutsk', desc: 'Russian Federation - Irkutsk (GMT+08:00)' },\n { name: 'Asia/Yakutsk', desc: 'Russian Federation - Yakutsk (GMT+09:00)' },\n { name: 'Asia/Khandyga', desc: 'Russian Federation - Khandyga (GMT+09:00)' },\n { name: 'Asia/Vladivostok', desc: 'Russian Federation - Vladivostok (GMT+10:00)' },\n { name: 'Asia/Sakhalin', desc: 'Russian Federation - Sakhalin (GMT+11:00)' },\n { name: 'Asia/Ust-Nera', desc: 'Russian Federation - Ust-Nera (GMT+10:00)' },\n { name: 'Asia/Magadan', desc: 'Russian Federation - Magadan (GMT+11:00)' },\n { name: 'Asia/Kamchatka', desc: 'Russian Federation - Kamchatka (GMT+12:00)' },\n { name: 'Asia/Anadyr', desc: 'Russian Federation - Anadyr (GMT+12:00)' },\n { name: 'Africa/Kigali', desc: 'Rwanda - Kigali (GMT+02:00)' },\n { name: 'Asia/Riyadh', desc: 'Saudi Arabia - Riyadh (GMT+03:00)' },\n { name: 'Pacific/Guadalcanal', desc: 'Solomon Islands - Guadalcanal (GMT+11:00)' },\n { name: 'Indian/Mahe', desc: 'Seychelles - Mahe (GMT+04:00)' },\n { name: 'Africa/Khartoum', desc: 'Sudan - Khartoum (GMT+02:00)' },\n { name: 'Europe/Stockholm', desc: 'Sweden - Stockholm (GMT+02:00)' },\n { name: 'Asia/Singapore', desc: 'Singapore - Singapore (GMT+08:00)' },\n { name: 'Atlantic/St_Helena', desc: 'Saint Helena - St Helena (GMT+00:00)' },\n { name: 'Europe/Ljubljana', desc: 'Slovenia - Ljubljana (GMT+02:00)' },\n { name: 'Arctic/Longyearbyen', desc: 'Svalbard and Jan Mayen Islands - Longyearbyen (GMT+02:00)' },\n { name: 'Europe/Bratislava', desc: 'Slovakia - Bratislava (GMT+02:00)' },\n { name: 'Africa/Freetown', desc: 'Sierra Leone - Freetown (GMT+00:00)' },\n { name: 'Europe/San_Marino', desc: 'San Marino - San Marino (GMT+02:00)' },\n { name: 'Africa/Dakar', desc: 'Senegal - Dakar (GMT+00:00)' },\n { name: 'Africa/Mogadishu', desc: 'Somalia - Mogadishu (GMT+03:00)' },\n { name: 'America/Paramaribo', desc: 'Suriname - Paramaribo (GMT-03:00)' },\n { name: 'Africa/Juba', desc: 'South Sudan - Juba (GMT+03:00)' },\n { name: 'Africa/Sao_Tome', desc: 'Sao Tome and Principe - Sao Tome (GMT+01:00)' },\n { name: 'America/El_Salvador', desc: 'El Salvador - El Salvador (GMT-06:00)' },\n { name: 'America/Lower_Princes', desc: 'SX - Lower Princes (GMT-04:00)' },\n { name: 'Asia/Damascus', desc: 'Syria - Damascus (GMT+03:00)' },\n { name: 'Africa/Mbabane', desc: 'Swaziland - Mbabane (GMT+02:00)' },\n { name: 'America/Grand_Turk', desc: 'Turks and Caicos Islands - Grand Turk (GMT-04:00)' },\n { name: 'Africa/Ndjamena', desc: 'Chad - Ndjamena (GMT+01:00)' },\n { name: 'Indian/Kerguelen', desc: 'French Southern Territories - Kerguelen (GMT+05:00)' },\n { name: 'Africa/Lome', desc: 'Togo - Lome (GMT+00:00)' },\n { name: 'Asia/Bangkok', desc: 'Thailand - Bangkok (GMT+07:00)' },\n { name: 'Asia/Dushanbe', desc: 'Tajikistan - Dushanbe (GMT+05:00)' },\n { name: 'Pacific/Fakaofo', desc: 'Tokelau - Fakaofo (GMT+13:00)' },\n { name: 'Asia/Dili', desc: 'Timor-Leste - Dili (GMT+09:00)' },\n { name: 'Asia/Ashgabat', desc: 'Turkmenistan - Ashgabat (GMT+05:00)' },\n { name: 'Africa/Tunis', desc: 'Tunisia - Tunis (GMT+01:00)' },\n { name: 'Pacific/Tongatapu', desc: 'Tonga - Tongatapu (GMT+13:00)' },\n { name: 'Europe/Istanbul', desc: 'Turkey - Istanbul (GMT+03:00)' },\n { name: 'America/Port_of_Spain', desc: 'Trinidad and Tobago - Port of_Spain (GMT-04:00)' },\n { name: 'Pacific/Funafuti', desc: 'Tuvalu - Funafuti (GMT+12:00)' },\n { name: 'Asia/Taipei', desc: 'Taiwan - Taipei (GMT+08:00)' },\n { name: 'Africa/Dar_es_Salaam', desc: 'Tanzania - Dar es_Salaam (GMT+03:00)' },\n { name: 'Europe/Kiev', desc: 'Ukraine - Kiev (GMT+03:00)' },\n { name: 'Europe/Uzhgorod', desc: 'Ukraine - Uzhgorod (GMT+03:00)' },\n { name: 'Europe/Zaporozhye', desc: 'Ukraine - Zaporozhye (GMT+03:00)' },\n { name: 'Africa/Kampala', desc: 'Uganda - Kampala (GMT+03:00)' },\n { name: 'Pacific/Johnston', desc: 'US Minor Outlying Islands - Johnston (GMT-10:00)' },\n { name: 'Pacific/Midway', desc: 'US Minor Outlying Islands - Midway (GMT-11:00)' },\n { name: 'Pacific/Wake', desc: 'US Minor Outlying Islands - Wake (GMT+12:00)' },\n { name: 'America/New_York', desc: 'United States of America (USA) - New York (GMT-04:00)' },\n { name: 'America/Detroit', desc: 'United States of America (USA) - Detroit (GMT-04:00)' },\n { name: 'America/Kentucky/Louisville', desc: 'United States of America (USA) - Louisville (GMT-04:00)' },\n { name: 'America/Kentucky/Monticello', desc: 'United States of America (USA) - Monticello (GMT-04:00)' },\n { name: 'America/Indiana/Indianapolis', desc: 'United States of America (USA) - Indianapolis (GMT-04:00)' },\n { name: 'America/Indiana/Vincennes', desc: 'United States of America (USA) - Vincennes (GMT-04:00)' },\n { name: 'America/Indiana/Winamac', desc: 'United States of America (USA) - Winamac (GMT-04:00)' },\n { name: 'America/Indiana/Marengo', desc: 'United States of America (USA) - Marengo (GMT-04:00)' },\n { name: 'America/Indiana/Petersburg', desc: 'United States of America (USA) - Petersburg (GMT-04:00)' },\n { name: 'America/Indiana/Vevay', desc: 'United States of America (USA) - Vevay (GMT-04:00)' },\n { name: 'America/Chicago', desc: 'United States of America (USA) - Chicago (GMT-05:00)' },\n { name: 'America/Indiana/Tell_City', desc: 'United States of America (USA) - Tell City (GMT-05:00)' },\n { name: 'America/Indiana/Knox', desc: 'United States of America (USA) - Knox (GMT-05:00)' },\n { name: 'America/Menominee', desc: 'United States of America (USA) - Menominee (GMT-05:00)' },\n { name: 'America/North_Dakota/Center', desc: 'United States of America (USA) - Center (GMT-05:00)' },\n { name: 'America/North_Dakota/New_Salem', desc: 'United States of America (USA) - New Salem (GMT-05:00)' },\n { name: 'America/North_Dakota/Beulah', desc: 'United States of America (USA) - Beulah (GMT-05:00)' },\n { name: 'America/Denver', desc: 'United States of America (USA) - Denver (GMT-06:00)' },\n { name: 'America/Boise', desc: 'United States of America (USA) - Boise (GMT-06:00)' },\n { name: 'America/Phoenix', desc: 'United States of America (USA) - Phoenix (GMT-07:00)' },\n { name: 'America/Los_Angeles', desc: 'United States of America (USA) - Los Angeles (GMT-07:00)' },\n { name: 'America/Anchorage', desc: 'United States of America (USA) - Anchorage (GMT-08:00)' },\n { name: 'America/Juneau', desc: 'United States of America (USA) - Juneau (GMT-08:00)' },\n { name: 'America/Sitka', desc: 'United States of America (USA) - Sitka (GMT-08:00)' },\n { name: 'America/Yakutat', desc: 'United States of America (USA) - Yakutat (GMT-08:00)' },\n { name: 'America/Nome', desc: 'United States of America (USA) - Nome (GMT-08:00)' },\n { name: 'America/Adak', desc: 'United States of America (USA) - Adak (GMT-09:00)' },\n { name: 'America/Metlakatla', desc: 'United States of America (USA) - Metlakatla (GMT-08:00)' },\n { name: 'Pacific/Honolulu', desc: 'United States of America (USA) - Honolulu (GMT-10:00)' },\n { name: 'America/Montevideo', desc: 'Uruguay - Montevideo (GMT-03:00)' },\n { name: 'Asia/Samarkand', desc: 'Uzbekistan - Samarkand (GMT+05:00)' },\n { name: 'Asia/Tashkent', desc: 'Uzbekistan - Tashkent (GMT+05:00)' },\n { name: 'Europe/Vatican', desc: 'Vatican City State - Vatican (GMT+02:00)' },\n { name: 'America/St_Vincent', desc: 'Saint Vincent and Grenadines - St Vincent (GMT-04:00)' },\n { name: 'America/Caracas', desc: 'Venezuela - Caracas (GMT-04:00)' },\n { name: 'America/Tortola', desc: 'British Virgin Islands - Tortola (GMT-04:00)' },\n { name: 'America/St_Thomas', desc: 'Virgin Islands, US - St Thomas (GMT-04:00)' },\n { name: 'Asia/Ho_Chi_Minh', desc: 'Viet Nam - Ho Chi_Minh (GMT+07:00)' },\n { name: 'Pacific/Efate', desc: 'Vanuatu - Efate (GMT+11:00)' },\n { name: 'Pacific/Wallis', desc: 'Wallis and Futuna Islands - Wallis (GMT+12:00)' },\n { name: 'Pacific/Apia', desc: 'Samoa - Apia (GMT+13:00)' },\n { name: 'Asia/Aden', desc: 'Yemen - Aden (GMT+03:00)' },\n { name: 'Indian/Mayotte', desc: 'Mayotte - Mayotte (GMT+03:00)' },\n { name: 'Africa/Johannesburg', desc: 'South Africa - Johannesburg (GMT+02:00)' },\n { name: 'Africa/Lusaka', desc: 'Zambia - Lusaka (GMT+02:00)' },\n { name: 'Africa/Harare', desc: 'Zimbabwe - Harare (GMT+02:00)' },\n];\n\n@Injectable()\nexport class EuiTimezoneService {\n /**\n * Convert country ISO code to country name (in english)\n */\n iso2country(iso: string): string {\n return EUI_COUNTRIES[iso] ? EUI_COUNTRIES[iso] : iso;\n }\n\n /**\n * Gets the list of ISO-codes for all countries\n */\n getCountries(): string[] {\n const res: string[] = [];\n for (const prop of Object.keys(EUI_COUNTRIES)) {\n res.push(prop);\n }\n return res;\n }\n\n getTimezones(): EuiTimeZone[] {\n return EUI_TIMEZONES;\n }\n\n getTimezone(tz: string): EuiTimeZone {\n return EUI_TIMEZONES.find((item) => item.name === tz);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { GLOBAL_CONFIG_TOKEN } from './config/tokens';\nimport { GlobalConfig } from '@eui/base';\nimport { EuiAppShellService } from './eui-app-shell.service';\nimport { DOCUMENT } from '@angular/common';\n\nexport enum EuiTheme {\n DEFAULT = 'default',\n ECL_EC = 'ecl-ec',\n ECL_EC_RTL = 'ecl-ec-rtl',\n ECL_EU = 'ecl-eu',\n ECL_EU_RTL = 'ecl-eu-rtl',\n EUI_LEGACY = 'eui-legacy',\n EUI_LEGACY_HC = 'eui-legacy-high-contrast',\n DARK = 'dark',\n COMPACT = 'compact',\n DS2025 = 'ds2025',\n};\n\ninterface IEuiTheme {\n name: EuiTheme,\n isActive: boolean,\n styleSheet: string,\n cssClass: string,\n};\n\nexport interface ThemeState {\n themes: IEuiTheme[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n theme: any;\n}\n\nconst initialState: ThemeState = {\n themes: [\n { name: EuiTheme.DEFAULT, isActive: false, styleSheet: null, cssClass: null },\n { name: EuiTheme.ECL_EC, isActive: false, styleSheet: 'eui-ecl-ec.css', cssClass: null },\n { name: EuiTheme.ECL_EC_RTL, isActive: false, styleSheet: 'eui-ecl-ec.css', cssClass: null },\n { name: EuiTheme.ECL_EU, isActive: false, styleSheet: 'eui-ecl-eu.css', cssClass: null },\n { name: EuiTheme.ECL_EU_RTL, isActive: false, styleSheet: 'eui-ecl-eu.css', cssClass: null },\n { name: EuiTheme.DARK, isActive: false, styleSheet: null, cssClass: 'eui-t-dark' },\n { name: EuiTheme.COMPACT, isActive: false, styleSheet: null, cssClass: 'eui-t-compact' },\n ],\n theme: {\n isDefault: false,\n isEclEc: false,\n isEclEcRtl: false,\n isEclEu: false,\n isEclEuRtl: false,\n isDark: false,\n isCompact: false,\n },\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiThemeService {\n private document = inject<Document>(DOCUMENT);\n protected config = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN, { optional: true });\n private asService = inject(EuiAppShellService);\n\n private _state$: BehaviorSubject<ThemeState>;\n\n constructor() {\n this._state$ = new BehaviorSubject(initialState);\n const themeName = (this.config?.eui?.theme as EuiTheme) || EuiTheme.DEFAULT;\n this.setActiveTheme(themeName, true);\n }\n\n get state$(): Observable<ThemeState> {\n return this._state$.asObservable();\n }\n\n get state(): ThemeState {\n return this._state$.getValue();\n }\n\n isDefault(): boolean {\n return this.state.theme.isDefault;\n }\n isEclEc(): boolean {\n return this.state.theme.isEclEc;\n }\n isEclEcRtl(): boolean {\n return this.state.theme.isEclEcRtl;\n }\n isEclEu(): boolean {\n return this.state.theme.isEclEu;\n }\n isEclEuRtl(): boolean {\n return this.state.theme.isEclEuRtl;\n }\n isEuiLegacy(): boolean {\n return this.state.theme.isEuiLegacy;\n }\n isEuiLegacyHc(): boolean {\n return this.state.theme.isEuiLegacyHc;\n }\n isDark(): boolean {\n return this.state.theme.isDark;\n }\n isCompact(): boolean {\n return this.state.theme.isCompact;\n }\n isDs2025(): boolean {\n return this.state.theme.isDs2025;\n }\n\n setActiveTheme(theme: EuiTheme, isActive: boolean): void {\n const themes = this.state.themes;\n const themeIdx = themes.findIndex(t => t.name === theme);\n\n if (themeIdx < 0) {\n throw new Error('NO_THEME_FOUND');\n\n } else {\n themes[themeIdx].isActive = isActive;\n\n const themeFound: IEuiTheme = themes[themeIdx];\n\n const status = initialState.theme;\n\n switch(theme) {\n case EuiTheme.DEFAULT: { status.isDefault = isActive; break; }\n case EuiTheme.ECL_EC: { status.isEclEc = isActive; break; }\n case EuiTheme.ECL_EC_RTL: { status.isEclEcRtl = isActive; break; }\n case EuiTheme.ECL_EU: { status.isEclEu = isActive; break; }\n case EuiTheme.ECL_EU_RTL: { status.isEclEuRtl = isActive; break; }\n case EuiTheme.DARK: { status.isDark = isActive; break; }\n case EuiTheme.COMPACT: { status.isCompact = isActive; break; }\n case EuiTheme.EUI_LEGACY: { status.isEuiLegacy = isActive; break; }\n case EuiTheme.EUI_LEGACY_HC: { status.isEuiLegacyHc = isActive; break; }\n case EuiTheme.DS2025: { status.isDs2025 = isActive; break; }\n }\n\n this._state$.next({\n themes,\n theme: status,\n });\n\n this._renderTheme(themeFound, isActive);\n }\n }\n\n private _renderTheme(themeFound: IEuiTheme, isActive: boolean): void {\n if (themeFound.name === EuiTheme.COMPACT) {\n if (isActive) {\n this.asService.setBaseFontSize('14px');\n } else {\n this.asService.setBaseFontSize('16px');\n }\n const compactLink = this.document.getElementById('eui-theme') as HTMLLinkElement;\n this._renderThemeCss(themeFound, isActive, compactLink);\n\n } else if (themeFound.name === EuiTheme.ECL_EC_RTL || themeFound.name === EuiTheme.ECL_EU_RTL) {\n return;\n\n } else if (themeFound.name === EuiTheme.ECL_EC || themeFound.name === EuiTheme.ECL_EU) {\n const rtlLink = this.document.getElementById('eui-theme') as HTMLLinkElement;\n this._renderThemeCss(themeFound, isActive, rtlLink);\n\n }else {\n this._renderThemeCss(themeFound, isActive, null);\n }\n }\n\n private _renderThemeCss(themeFound: IEuiTheme, isActive: boolean, link: HTMLLinkElement): void {\n const head = this.document.getElementsByTagName('head')[0];\n\n console.log(link);\n console.log(themeFound);\n\n if (isActive) {\n if (themeFound.cssClass) {\n document.querySelector('html').classList.add(themeFound.cssClass);\n }\n if (themeFound.styleSheet) {\n if (link) {\n link.href = `assets/${themeFound.styleSheet}`;\n } else {\n const style = this.document.createElement('link');\n style.id = 'eui-theme';\n style.rel = 'stylesheet';\n style.href = `assets/${themeFound.styleSheet}`;\n console.log(style);\n head.appendChild(style);\n }\n }\n } else {\n if (themeFound.cssClass) {\n document.querySelector('html').classList.remove(themeFound.cssClass);\n }\n\n if (themeFound.styleSheet) {\n if (link) {\n link.media = '';\n }\n }\n }\n }\n}\n","/**\n * Generic storage service. Concrete storage services must extend this class\n */\nexport abstract class StorageService {\n /**\n * utility function, to determine the storage implementation\n */\n abstract name(): string;\n\n /**\n * retrieve an object from storage\n * @param key the associated key\n * @returns the value or undefined, if case of error\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract get(key: string): any;\n abstract get<T>(key: string): T;\n\n /**\n * sets an object in storage\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract set(key: string, value: any): void;\n abstract set<T>(key: string, value: T): void;\n\n /**\n * removes an object from storage\n * @param key the associated key\n */\n abstract remove(key: string): void;\n}\n","import { StorageService } from './storage.service';\n\nexport class StorageServiceMock extends StorageService {\n name(): string {\n return null;\n }\n\n get(): null {\n return null;\n }\n\n set(): void { /* empty */ }\n\n remove(): void { /* empty */ }\n}\n","import { StorageService } from './storage.service';\nimport { Observable } from 'rxjs';\n\n/**\n * Generic asynchronous storage service. Concrete asynchronous storage services must extend this class\n */\nexport abstract class AsyncStorageService extends StorageService {\n /**\n * reflects the readiness of the storage\n * @returns one time emission Observable<any>\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract ready(): Observable<any>;\n\n /**\n * retrieve an object from async storage\n * @param key the associated key\n * @returns one time emission Observable of value\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override get(key: string): Observable<any>\n abstract override get<T>(key: string): Observable<T>;\n\n /**\n * sets an object in async storage\n * @param key the associated key\n * @param value the value to set\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override set(key: string, value: any): Observable<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override set<T>(key: string, value: T): Observable<any>;\n\n /**\n * removes an object from async storage\n * @param key the associated key\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract override remove(key: string): Observable<any>;\n\n /**\n * asynchronous helper for set function\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setAsync(key: string, value: any): void;\n setAsync<T>(key: string, value: T): void {\n this.set(key, value).subscribe(() => { /* empty */ });\n }\n\n /**\n * asynchronous helper for remove function\n * @param key the associated key\n */\n removeAsync(key: string): void {\n this.remove(key).subscribe(() => { /* empty */ });\n }\n}\n","import { AsyncStorageService } from './async-storage.service';\nimport { Observable, of } from 'rxjs';\n\nexport class AsyncStorageServiceMock extends AsyncStorageService {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ready(): Observable<any> {\n return of({});\n }\n\n name(): string {\n return null;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(): Observable<any> {\n return of({});\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(): Observable<any> {\n return of({});\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n remove(): Observable<any> {\n return of({});\n }\n\n override setAsync(): void { /* empty */ }\n\n override removeAsync(): void { /* empty */ }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { StorageService } from './storage.service';\nimport { LogService } from '../log/log.service';\n\n/**\n * localStorage service\n */\n@Injectable()\nexport class LocalStorageService extends StorageService {\n static NAME = 'LocalStorageService';\n protected log = inject(LogService, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n /**\n * the name of the storage service\n */\n name(): string {\n return LocalStorageService.NAME;\n }\n\n /**\n * retrieve an object from local storage\n * @param key the associated key\n * @returns the value or undefined, if case of error\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key: string): any {\n if(isPlatformBrowser(this.platformId)) {\n try {\n const serialized = localStorage.getItem(key);\n return serialized && JSON.parse(serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'get', err);\n }\n return undefined;\n }\n }\n }\n\n /**\n * sets an object in local storage\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(key: string, value: any): void {\n if(isPlatformBrowser(this.platformId)) {\n try {\n const serialized = JSON.stringify(value);\n localStorage.setItem(key, serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'set', err);\n }\n }\n }\n }\n\n /**\n * removes an object from local storage\n * @param key the associated key\n */\n remove(key: string): void {\n if(isPlatformBrowser(this.platformId)) {\n try {\n localStorage.removeItem(key);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'remove', err);\n }\n }\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { StorageService } from './storage.service';\nimport { LogService } from '../log/log.service';\n\n/**\n * sessionStorage service\n */\n@Injectable()\nexport class SessionStorageService extends StorageService {\n protected log = inject(LogService, { optional: true });\n\n static NAME = 'SessionStorageService';\n\n /**\n * the name of the storage service\n */\n name(): string {\n return SessionStorageService.NAME;\n }\n\n /**\n * retrieve an object from session storage\n * @param key the associated key\n * @returns the value or undefined, if case of error\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key: string): any {\n try {\n const serialized = sessionStorage.getItem(key);\n return serialized && JSON.parse(serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'get', err);\n }\n return undefined;\n }\n }\n\n /**\n * sets an object in session storage\n * @param key the associated key\n * @param value the value to set\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(key: string, value: any): void {\n try {\n const serialized = JSON.stringify(value);\n sessionStorage.setItem(key, serialized);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'set', err);\n }\n }\n }\n\n /**\n * removes an object from session storage\n * @param key the associated key\n */\n remove(key: string): void {\n try {\n sessionStorage.removeItem(key);\n } catch (err) {\n if (this.log) {\n this.log.error(this.name(), 'remove', err);\n }\n }\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport { take, tap } from 'rxjs/operators';\nimport * as lf from 'localforage';\nimport { AsyncStorageService } from './async-storage.service';\nimport { LogService } from '../log';\n\n/** @internal */\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const localForage: any = 'defineDriver' in lf ? lf : lf['default'];\n// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const LOCAL_FORAGE_SERVICE_CONFIG_TOKEN = new InjectionToken<any>('LOCAL_FORAGE_SERVICE_CONFIG');\n\n/**\n * localforage service, using the localForage javascript library\n * https://localforage.github.io/localForage\n */\n@Injectable()\nexport class LocalForageService extends AsyncStorageService {\n protected config = inject(LOCAL_FORAGE_SERVICE_CONFIG_TOKEN, { optional: true });\n protected log = inject(LogService, { optional: true });\n\n static NAME = 'LocalForageService';\n\n constructor() {\n super();\n const config = this.config;\n\n // configure localforage, if specified\n if (config) {\n localForage.config(config);\n }\n }\n\n /**\n * the name of the storage service\n */\n name(): string {\n return LocalForageService.NAME;\n }\n\n /**\n * reflects the readiness of the storage\n * @returns one time emission Observable<void>\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ready(): Observable<any> {\n return from(localForage.ready()).pipe(\n take(1),\n tap({\n next: () => { /* empty */ },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'ready', err);\n }\n },\n }),\n );\n }\n\n /**\n * retrieve an object from localforage\n * @param key the associated key\n * @returns one time emission Observable of value\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(key: string): Observable<any> {\n return from(localForage.getItem(key)).pipe(\n take(1),\n tap({\n next: () => { /* empty */\n },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'get', err);\n }\n },\n }),\n );\n }\n\n /**\n * sets an object in localforage\n * @param key the associated key\n * @param value the value to set\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(key: string, value: any): Observable<any> {\n return from(localForage.setItem(key, value)).pipe(\n take(1),\n tap({\n next: () => { /* empty */\n },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'set', err);\n }\n },\n }),\n );\n }\n\n /**\n * removes an object from localforage\n * @param key the associated key\n * @returns one time emission Observable\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n remove(key: string): Observable<any> {\n return from(localForage.removeItem(key)).pipe(\n take(1),\n tap({\n next: () => { /* empty */ },\n error: (err) => {\n if (this.log) {\n this.log.error(this.name(), 'remove', err);\n }\n },\n }),\n );\n }\n}\n","import { Injectable, InjectionToken, LOCALE_ID, OnDestroy, Signal, inject } from '@angular/core';\nimport { getLocaleId } from '@angular/common';\nimport {\n DeepPartial,\n EuiService,\n EuiServiceStatus,\n getLocaleServiceConfigFromBase,\n GlobalConfig,\n I18nState,\n LocaleServiceConfig,\n LocaleState,\n Logger,\n} from '@eui/base';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { StoreService } from '../store';\nimport { LogService } from '../log';\nimport { I18nService } from '../i18n';\nimport { GLOBAL_CONFIG_TOKEN } from '../config/tokens';\nimport { isEqual } from 'lodash-es';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nexport type LocaleMapper = (locale: string) => string;\nexport const LOCALE_ID_MAPPER = new InjectionToken<LocaleMapper>('localeIdMapper');\n\n/**\n * LocaleService is responsible for managing locale states and configurations in an Angular application.\n * It utilizes the CLDR library to load and construct the locale for each region. This service allows\n * for dynamic loading of locales upon request and updates the state of the EUI app accordingly.\n *\n * Key functionalities include:\n * - Binding to a translation service for locale changes.\n * - Updating the Angular LOCALE_ID token.\n *\n * @template T - Extends LocaleState, representing the state structure for locales.\n * @template L - The type of the locale data.\n * @extends EuiService<T | LocaleState>\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LocaleService<T extends LocaleState = LocaleState> extends EuiService<T | LocaleState> implements OnDestroy {\n protected store = inject(StoreService);\n protected baseGlobalConfig = inject<GlobalConfig>(GLOBAL_CONFIG_TOKEN);\n protected locale_id: string;\n private static readonly DEFAULT_STATE: LocaleState = { id: 'en-US' };\n private localeMapper = inject<LocaleMapper>(LOCALE_ID_MAPPER, { optional: true });\n private i18n = inject(I18nService, { optional: true });\n private log = inject(LogService, { optional: true });\n\n private readonly logger: Logger;\n private subNotifier: Subject<void> = new Subject();\n protected config: LocaleServiceConfig;\n\n /**\n * a single signal holding the state - initial state is null\n */\n private state: Signal<T>;\n /**\n * a BehaviorSubject holding the state - initial state is null\n * This is the main source of truth for the state\n */\n private stateSubject: BehaviorSubject<T>;\n\n constructor() {\n const locale_id = inject(LOCALE_ID);\n\n super({ id: locale_id || Intl.DateTimeFormat().resolvedOptions().locale || LocaleService.DEFAULT_STATE.id } as T);\n this.locale_id = locale_id;\n const log = this.log;\n\n if (log) {\n this.logger = log.getLogger('core.LocaleService');\n }\n\n // Create a BehaviorSubject with the initial state\n this.stateSubject = new BehaviorSubject<T>(this.stateInstance as T);\n\n // Initialize signal with base state\n this.state = toSignal(this.stateSubject, { equal: isEqual });\n\n // Subscribe to base class state changes\n this.onStateChange.subscribe((newState) => {\n // const clonedState = structuredClone(newState as T);\n this.stateSubject.next(newState as T);\n });\n\n this.config = getLocaleServiceConfigFromBase(this.baseGlobalConfig);\n // in case no localeMapper provided, set the angular getLocaleId as default\n if (!this.localeMapper) {\n this.localeMapper = getLocaleId;\n // TODO: replace deprecated method with new one\n // this.localeMapper = (locale: string) => new Intl.Locale(locale).baseName;\n }\n }\n\n ngOnDestroy(): void {\n this.subNotifier.next(void 0);\n this.subNotifier.complete();\n }\n\n getState(): Observable<T>;\n /**\n * Retrieves the state of the locale service. This method is overloaded to allow different ways of accessing the state.\n *\n * @template K - The type of the value to be returned. Defaults to the type of the locale state (T).\n *\n * @param {((state: T) => K)} [mapFn] - A function that maps the state to a specific form.\n * Takes the current state as an argument and returns the transformed state.\n * @returns {Observable<K>} - An observable that emits the transformed state.\n */\n getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n /**\n * @template a - A key that extends the keys of the state type T.\n * @param {a} [key] - A specific key to access a part of the state.\n * The key should be a property name of the state object.\n * @returns {Observable<Partial<a>>} - An observable that emits the value of the specified key in the state.\n * @param key\n */\n getState<a extends keyof DeepPartial<T>>(key?: a): Observable<DeepPartial<a>>;\n /**\n * @param {((state: T) => K) | string} [keyOrMapFn] - Either a mapping function or a string key.\n * If a string is provided, it uses dot notation to access nested properties.\n * @returns {Observable<Partial<K>>} - An observable that emits the selected or transformed state.\n *\n * If no parameter is provided, the method returns the entire state.\n * @param keyOrMapFn\n */\n getState<K = T>(keyOrMapFn?: ((state: T) => K) | string): Observable<DeepPartial<K>> {\n if (!keyOrMapFn) {\n return this.stateSubject.asObservable().pipe(\n distinctUntilChanged((x, y) => isEqual(x, y)),\n ) as Observable<DeepPartial<K>>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return this.stateSubject.asObservable().pipe(\n map(state => keyOrMapFn(state)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return this.stateSubject.asObservable().pipe(\n map(state => {\n const keys = (keyOrMapFn as string).split('.');\n\n // Traverse the object based on the dot notation\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state as DeepPartial<T>);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n /**\n * Initializes the LocaleService with necessary configurations and state.\n * Binds language changes to the state and dynamically loads the appropriate locales.\n *\n * @param {LocaleState} [state] - Optional initial state for the locale service.\n * @returns {Observable<EuiServiceStatus>} - Observable emitting the status of the initialization.\n */\n init(state?: LocaleState): Observable<EuiServiceStatus> {\n super.initEuiService();\n\n state = state || { id: this.currentLocale };\n\n\t\tif (state?.id && !this.isValidLocale(state.id)) {\n\t\t\tconst message = `Locale '${state.id}' is not a valid locale string. Please provide a valid locale.`;\n\t\t\tif (this.log) {\n\t\t\t\tthis.logger.error(message);\n\t\t\t}\n\t\t\treturn of({ success: false, error: new Error(message) });\n\t\t}\n\n // bind language changes to locale changes\n if (this.config?.bindWithTranslate) {\n this.bindTranslateServiceLangChangeToState();\n }\n\n return of({ success: true })\n .pipe(tap(() => this.updateState(state as Partial<T>)));\n }\n\n /**\n * This method is used to update the state of the service with a new state.\n *\n * @param state\n */\n updateState(state: DeepPartial<T>): void;\n /**\n * Updates the locale state within the application. If the new state is not available,\n * it throws an error. Also updates the global LOCALE_ID token if configured to do so.\n *\n * @param {LocaleState} state - The new state to be set for the locale.\n * @throws Will throw an error if the locale for the given state id is not available.\n */\n updateState<K extends T>(state: DeepPartial<K>): void {\n const prevState = structuredClone(this.stateInstance);\n if(state?.id) {\n // check if locale is available otherwise throw error\n try {\n const id = this.localeMapper(state.id as string);\n this.stateInstance = super.deepMerge(this.stateInstance as T, { ...state, id });\n } catch (e) {\n const message = `Locale for '${state.id}' is not available.\\n` +\n `Please use addLocale('${state.id}') first`;\n if (this.log) {\n this.logger.info(message, e);\n }\n throw new Error(message);\n }\n } else {\n this.stateInstance = super.deepMerge(this.stateInstance as T, { ...state });\n }\n // Emit state change\n this.onStateChange.next(this.stateInstance);\n // set previous state of service\n this.prevStateInstance = prevState;\n }\n\n /**\n * This method is used to get the state as readonly signal.\n */\n getSignal(): Signal<T> {\n return this.state;\n }\n\n /**\n * Retrieves the previous locale used in the application.\n *\n * @returns {string} - The previous locale identifier.\n */\n get previousLocale(): string {\n return this.prevStateInstance?.id || this.currentLocale;\n }\n\n /**\n * Retrieves the current locale used in the application.\n *\n * @returns {string} - The current locale identifier.\n */\n get currentLocale(): string {\n return this.stateInstance?.id;\n }\n\n /**\n * Listens for language changes and dynamically sets the locale accordingly.\n *\n * @private\n */\n private bindTranslateServiceLangChangeToState(): void {\n if (this.i18n) {\n this.i18n.onStateChange\n .pipe(\n takeUntil(this.subNotifier),\n // Only processes state changes when the language actually changes\n // Example: With activeLang='en', ignores changes between 'en-US' and 'en-GB'\n // Checks: activeLang exists, has 2+ chars, and differs from current locale's primary language\n filter((state: I18nState) => state?.activeLang !== null &&\n state?.activeLang !== undefined &&\n state?.activeLang.length > 1 &&\n state.activeLang.toLowerCase() !== this.stateInstance?.id.slice(0, 2).toLowerCase()),\n // to check if registration of locale otherwise register it\n map((state: I18nState) => this.localeMapper(state.activeLang)),\n // update the \"available\" array attribute with newly registered\n switchMap((id: string) =>\n this.getState().pipe(\n take(1),\n map((state: LocaleState) => {\n const available = state['available'] ? state['available'] : [];\n return { ...state, id, available: Array.from(new Set([...available, id])) };\n }),\n ),\n ),\n )\n .subscribe((state: LocaleState) => {\n return this.updateState(state as Partial<T>);\n });\n }\n }\n\n\t/**\n\t * Checks if a given locale string is valid according to the Intl.Locale API. (based on BCP 47)\n\t * A valid locale string can be used to create a new Intl.Locale object without throwing an error.\n\t *\n\t * @param localeString - The locale string to be validated.\n\t * @returns {boolean} - Returns true if the locale string is valid, false otherwise.\n\t */\n\tprivate isValidLocale(localeString: string): boolean {\n\t\ttry {\n\t\t\t// Normalize: replace underscores with hyphens (support for Angular locale ids)\n\t\t\t// e.g., 'en_US' -> 'en-US'\n\t\t\t// Note: Intl.Locale only accepts hyphens as separators\n\t\t\t// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale\n\t\t\tconst normalizedString = localeString.replace(/_/g, '-');\n\t\t\tnew Intl.Locale(normalizedString);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { EuiServiceStatus, LocaleState } from '@eui/base';\nimport { LocaleService } from './locale.service';\nimport localeFr from '@angular/common/locales/fr';\nimport localeEl from '@angular/common/locales/el';\nimport { registerLocaleData } from '@angular/common';\n\n@Injectable()\nexport class LocaleServiceMock<T extends LocaleState = LocaleState> extends LocaleService<T> {\n protected override locale_id: string = inject(LOCALE_ID, { optional: true });\n\n private DEFAULT_LOCALE = 'en';\n private stateSub: BehaviorSubject<T> = new BehaviorSubject<T>({ id: this.DEFAULT_LOCALE } as T);\n\n constructor() {\n super();\n }\n\n override getState(): Observable<T> {\n return this.stateSub.asObservable();\n }\n\n override updateState(state: T): void {\n this.DEFAULT_LOCALE = state.id || 'en';\n if (state.id === 'fr') {\n registerLocaleData(localeFr, 'fr');\n } else if (state.id === 'el') {\n registerLocaleData(localeEl, 'el');\n }\n this.stateSub.next(state);\n }\n\n override init(state?: T): Observable<EuiServiceStatus> {\n this.DEFAULT_LOCALE = state.id || 'en';\n return of({ success: true });\n }\n}\n","/**\n * The status of a library\n * @enum Status\n * @property {string} LOADING - the library is loading\n * @property {string} LOADED - the library is loaded\n * @property {string} ERROR - the library failed to load\n */\nexport enum Status {\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error',\n}\n\n/**\n * A library is a set of script and style dependencies\n * that can be loaded dynamically\n * @interface Library\n * @property {string} name - global variable object name that the script will give to the library\n * @property {Dependency[]} dependencies - a set of script and style dependencies\n * @property {Status} status - the status of the library e.g. LOADED\n * @example\n *\n * const library: Library = {\n * name: 'Quill',\n * dependencies: [\n * {\n * name: 'quill',\n * url: 'https://cdn.quilljs.com/1.3.6/quill.js',\n * type: 'js',\n * requires: [],\n * loaded: false,\n * error: false,\n * },\n * {\n * name: 'quill',\n * url: 'https://cdn.quilljs.com/1.3.6/quill.snow.css',\n * type: 'css',\n * requires: [],\n * loaded: false,\n * error: false,\n * },\n * ],\n * status: Status.LOADING,\n * };\n */\nexport interface Library {\n /** global variable object name that the script will give to the library */\n name: string;\n /** a set of script and style dependencies */\n dependencies: Dependency[];\n /** the status of the library e.g. LOADED */\n status: Status;\n}\n\n/**\n * A dependency is a script or style that can be loaded dynamically\n */\nexport interface Dependency {\n /** an identifier for the dependency */\n name: string;\n /**\n * the url of the dependency\n * @example\n * https://cdn.quilljs.com/1.3.6/quill.js\n */\n url: string;\n /** the type of the dependency. Is it a style or script? */\n type: 'js' | 'css';\n /**\n * an array of dependencies corresponds to the Dependency.name\n * that must be loaded before this dependency\n * @example\n * ['quill-better-table']\n * where 'quill-better-table' is the name of the dependency\n * const betterTable: Dependency = {\n * name: 'quill-better-table',\n * url: 'https://cdn.quilljs.com/1.3.6/quill.js',\n * type: 'js',\n * requires: ['quill-better-table'],\n * }\n */\n requires: string[];\n /** the status of the dependency */\n status?: Status;\n /** the number of times the dependency has been loaded */\n retries?: number;\n}\n\n/**\n * Configuration for different policies\n */\nexport interface Policy {\n /** Maximum number of retry attempts */\n maxAttempts: number;\n /** Time between retries in milliseconds */\n retryInterval: number;\n /** Time in milliseconds before considering a load attempt as failed */\n timeout: number;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Dependency, Policy, Status } from './eui-loader.model';\nimport { filter, map } from 'rxjs/operators';\n\n/**\n * A service for loading external dependencies dynamically to the DOM and keeping track of their status. Dependencies\n * can be loaded in any order and can have prerequisites. The service will load the prerequisites first and then load\n * the dependency. If a dependency fails to load, the service will retry loading it according to the retry policy.\n * The service will emit the status of the dependency when it changes. This is useful for showing a loading indicator\n * while the dependency is loading. In scenarios where the dependency is not required for the application to function,\n * the service will not block the application from loading if the dependency fails to load. The service will also\n * remove the dependency from the DOM if it is removed from the list. This is useful for scenarios where the dependency\n * is only required for a specific component, might be removed from the list when the component is destroyed, and it\n * will not affect the bundle size.\n *\n * @example\n * // Add a dependency\n * loader.addDependency('Quill', 'https://cdn.quilljs.com/1.3.6/quill.js', 'js');\n * // Get the status of a dependency\n * loader.getDependencyStatus('Quill');\n * // Listen for status changes\n * loader.statusChanges('Quill').subscribe((status: Status) => {\n * console.log(status);\n * });\n * // Remove a dependency\n * loader.removeDependency('Quill');\n * // Set the retry policy\n * loader.setRetryPolicy(3, 1000);\n * // Set the timeout policy\n * loader.setTimeoutPolicy(5000);\n * // Load a dependency with prerequisites\n * loader.addDependency('Quill', 'https://cdn.quilljs.com/1.3.6/quill.js', 'js', ['QuillStyle']);\n * loader.addDependency('QuillStyle', 'https://cdn.quilljs.com/1.3.6/quill.snow.css', 'css');\n * // Load a dependency with prerequisites and retry logic\n * loader.setRetryPolicy(3, 1000);\n * loader.setTimeoutPolicy(5000);\n * loader.addDependency('Quill', 'https://cdn.quilljs.com/1.3.6/quill.js', 'js', ['QuillStyle']);\n * loader.addDependency('QuillStyle', 'https://cdn.quilljs.com/1.3.6/quill.snow.css', 'css');\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class EuiLoaderService {\n /**\n * Stores the status and details of each dependency\n */\n private dependencies: Dependency[] = [];\n\n /** Observable that emits the name of the dependency when its status changes */\n private onStatusChange: Subject<string> = new Subject<string>();\n\n /**\n * Configuration for policies such as Retry and timeout for failed loads\n */\n private policy: Policy = {\n maxAttempts: 3,\n retryInterval: 1000,\n timeout: 5000,\n };\n\n /**\n * Add a dependency with its type (JS or CSS) and dependencies\n *\n * @param name The name of the dependency\n * @param url The URL of the dependency\n * @param type The type of the dependency (JS or CSS)\n * @param requires The dependencies that must be loaded before this one (optional)\n */\n addDependency(name: string, url: string, type: 'js' | 'css', requires: string[] = []): void {\n // if the dependency is not already in the list\n if (!this.dependencies.find(d => d.name === name)) {\n // Add the dependency to the list\n this.dependencies.push({\n name,\n url,\n type,\n requires,\n status: Status.LOADING,\n retries: 0,\n });\n // Load the dependency to the DOM\n this.loadDependency(name);\n }\n }\n\n /**\n * Remove a dependency from the DOM\n *\n * @param name The name of the dependency\n */\n removeDependency(name: string): void {\n const index = this.dependencies.findIndex(d => d.name === name);\n if (index === -1) {\n return;\n }\n const dependency: Dependency = this.dependencies.at(index);\n let element: HTMLScriptElement | HTMLLinkElement | null = null;\n\n if (dependency.type === 'js') {\n element = this.getScript(dependency.url);\n } else {\n element = this.getStyle(dependency.url);\n }\n\n if (element) {\n element.remove(); // Remove the element from the DOM\n } else {\n console.warn(`Dependency ${name} not found in DOM.`);\n }\n this.dependencies.splice(index, 1); // Remove the dependency from the list\n }\n\n /**\n * Allow users to configure the retry policy\n *\n * @param maxAttempts The maximum number of retry attempts\n * @param retryInterval The time between retries in milliseconds\n */\n setRetryPolicy(maxAttempts: number, retryInterval: number): void {\n this.policy.maxAttempts = maxAttempts;\n this.policy.retryInterval = retryInterval;\n }\n\n /**\n * Allow users to configure the timeout policy\n *\n * @param time The time in milliseconds before considering a load attempt as failed\n * @see setRetryPolicy\n * @see statusChanges\n */\n setTimeoutPolicy(time: number): void {\n this.policy.timeout = time;\n }\n\n /**\n * Get the status of a dependency\n *\n * @param name The name of the dependency\n * @returns The status of the dependency\n * @deprecated Prefer using statusChanges instead\n * @see statusChanges\n */\n getDependencyStatus(name: string): Status | null {\n const dependency: Dependency = this.dependencies.find(d => d.name === name);\n return dependency?.status || null;\n }\n\n /**\n * Get the status of a dependency as an observable\n *\n * @param name The name of the dependency\n */\n statusChanges(name: string): Observable<Status> {\n return this.onStatusChange.asObservable()\n .pipe(\n filter((loadedName: string) => loadedName === name),\n map(() => this.dependencies.find(d => d.name === name)?.status),\n );\n }\n\n /**\n * Load a dependency and its prerequisites\n *\n * @param name The name of the dependency\n * @see loadDependency\n */\n private loadDependency(name: string): void {\n const dependency: Dependency = this.dependencies.find(d => d.name === name);\n if(dependency === undefined) {\n console.error(`Dependency ${name} not found in list.`);\n return;\n }\n if (dependency?.requires.length) {\n // Load all prerequisites first\n dependency.requires.forEach((dep) => {\n // If the dependency is not already loaded or in the list, load it\n if (!this.dependencies.find(d => d.name === dep && d.status === Status.LOADED)) {\n this.loadDependency(dep);\n }\n });\n }\n\n // Load the actual dependency\n if (dependency?.type === 'js' && this.getScript(dependency?.url) === null) {\n this.loadScript(dependency);\n } else if (this.getStyle(dependency?.url) === null) {\n this.loadStyle(dependency);\n }\n }\n\n /**\n * Load a JS script and append it to the root of the DOM\n * @param dependency\n */\n private loadScript(dependency: Dependency): void {\n const script: HTMLScriptElement = document.createElement('script');\n script.src = dependency.url;\n script.type = 'module';\n // script.defer = true; #Consider this to ensure scripts are loaded in order\n\n script.onload = (): void => {\n dependency.status = Status.LOADED;\n this.onStatusChange.next(dependency.name);\n };\n\n script.onerror = (): void => {\n this.handleError(dependency.name, 'Failed to load script');\n };\n\n // Append to the root of the DOM\n document.body.append(script);\n }\n\n /**\n * Load a CSS style and append it to the head of the document\n * @param dependency\n */\n private loadStyle(dependency: Dependency): void {\n const link: HTMLLinkElement = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = dependency.url;\n\n link.onload = (): void => {\n dependency.status = Status.LOADED;\n this.onStatusChange.next(dependency.name);\n };\n\n link.onerror = (): void => {\n this.handleError(dependency.name, 'Failed to load stylesheet');\n };\n\n // Append to the head, which is conventionally used for stylesheets\n document.head.append(link);\n }\n\n /**\n * Error handling for a failed load\n * @param name\n * @param error\n */\n private handleError(name: string, error: string): void {\n const dependency: Dependency = this.dependencies.find(d => d.name === name);\n \n console.error(`Error loading ${name}: ${error}`);\n \n if (dependency) {\n console.error(`Error loading ${name}: ${error}`);\n if (dependency.status !== Status.ERROR) {\n dependency.status = Status.ERROR;\n this.onStatusChange.next(dependency.name);\n // Retry logic\n if (dependency?.retries < this.policy.maxAttempts) {\n setTimeout(() => {\n console.log(`Retrying to load ${name}, attempt ${dependency.retries + 1}`);\n dependency.retries++;\n this.reloadDependency(dependency);\n }, this.policy.retryInterval);\n } else {\n console.error(`Failed to load ${name} after ${this.policy.maxAttempts} attempts`);\n }\n }\n }\n }\n\n /**\n * Get the script element from the DOM\n *\n * @param url\n * @private\n */\n private getScript(url: string): HTMLScriptElement | null {\n return document.querySelector(`script[src=\"${url}\"]`);\n }\n\n /**\n * Get the style element from the DOM\n *\n * @param url\n * @private\n */\n private getStyle(url: string): HTMLLinkElement | null {\n return document.querySelector(`link[href=\"${url}\"]`);\n }\n\n /**\n * Reload a dependency which can be either a script or a style. First remove\n * the element from the DOM and then load it again.\n *\n * @param dependency\n * @private\n */\n private reloadDependency(dependency: Dependency): void {\n if (dependency.type === 'js') {\n const script = this.getScript(dependency.url);\n script.remove();\n this.loadScript(dependency);\n } else {\n const style = this.getStyle(dependency.url);\n style.remove();\n this.loadStyle(dependency);\n }\n }\n}\n","import { Injectable, Signal, inject } from '@angular/core';\nimport { BehaviorSubject, type Observable } from 'rxjs';\nimport { of } from 'rxjs/internal/observable/of';\nimport { DeepPartial, EuiService, EuiServiceStatus, UserState } from '@eui/base';\nimport { StoreService } from '../store';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { isEqual } from 'lodash-es';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService<T extends UserState = UserState> extends EuiService<T | UserState> {\n protected store = inject(StoreService);\n\n private static readonly DEFAULT_STATE: UserState = { userId: 'annonymous' };\n\n /**\n * a single signal holding the state - initial state is null\n */\n private state: Signal<T>;\n /**\n * a BehaviorSubject holding the state - initial state is null\n * This is the main source of truth for the state\n */\n private stateSubject: BehaviorSubject<T>;\n\n constructor() {\n super(UserService.DEFAULT_STATE as T);\n // Create a BehaviorSubject with the initial state\n this.stateSubject = new BehaviorSubject<T>(this.stateInstance as T);\n\n // Initialize signal with base state\n this.state = toSignal(this.stateSubject, { equal: isEqual });\n\n // Subscribe to base class state changes\n this.onStateChange.subscribe((newState) => {\n const clonedState = structuredClone(newState as T);\n this.stateSubject.next(clonedState);\n });\n }\n\n init(state: T): Observable<EuiServiceStatus> {\n super.initEuiService();\n if (Object.prototype.hasOwnProperty.call(state, 'userId')) {\n // Let base class handle state update\n this.updateState(state);\n return of({ success: true });\n }\n return of({ success: false, error: 'Init object should be instance of BaseUserState' });\n }\n\n getState(): Observable<T>;\n /**\n * @deprecated this will be removed in a future version\n * @param mapFn\n */\n getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n getState<a extends keyof DeepPartial<T>>(key?: a): Observable<DeepPartial<a>>;\n getState<K = T>(keyOrMapFn?: ((state: T) => K) | string): Observable<DeepPartial<K>> {\n if (!keyOrMapFn) {\n return this.stateSubject.asObservable().pipe(\n distinctUntilChanged((x, y) => isEqual(x, y)),\n ) as Observable<DeepPartial<K>>;\n }\n\n if (typeof keyOrMapFn === 'function') {\n return this.stateSubject.asObservable().pipe(\n map(state => keyOrMapFn(state)),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n return this.stateSubject.asObservable().pipe(\n map(state => {\n const keys = (keyOrMapFn as string).split('.');\n\n // Traverse the object based on the dot notation\n return keys.reduce((acc, currKey) => {\n return acc && acc[currKey] !== undefined ? acc[currKey] : undefined;\n }, state as DeepPartial<T>);\n }),\n distinctUntilChanged((x, y) => isEqual(x, y)),\n );\n }\n\n /**\n * This method is used to update the state of the service with a new state.\n *\n * @param state\n */\n updateState(state: DeepPartial<T>): void;\n /**\n * @deprecated it will be removed in next version. Use updateState(partialState: DeepPartial<T>) instead\n * @param slice\n * @param reducer\n */\n updateState(slice: DeepPartial<T>, reducer: (state: T, action: DeepPartial<T>) => T): void;\n updateState<K extends T>(state: DeepPartial<K>, reducer?: (state: T, action: DeepPartial<K>) => T): void {\n if (reducer) {\n this.stateInstance = reducer(this.stateInstance as T, state);\n } else {\n this.stateInstance = super.deepMerge(this.stateInstance as T, state);\n }\n // Emit state change\n this.onStateChange.next(this.stateInstance);\n }\n\n /**\n * This method is used to get the signal of the service.\n */\n getSignal(): Signal<T> {\n return this.state;\n }\n}\n","import { Observable, of } from 'rxjs';\nimport { UserService } from './user.service';\nimport { Injectable } from '@angular/core';\nimport { EuiServiceStatus, UserState } from '@eui/base';\n\n@Injectable()\nexport class UserServiceMock<T> extends UserService {\n constructor() {\n super();\n }\n\n override init(userState: UserState): Observable<EuiServiceStatus> {\n return of({ success: true });\n }\n\n override getState<K = T>(mapFn?: (state: T) => K): Observable<K>;\n override getState<a extends keyof T>(key?: a): Observable<T[a]>;\n override getState<K>(keyOrMapFn?: ((state: T) => K) | string): Observable<K> {\n return of({} as K);\n }\n\n override updateState(userState: UserState): void;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override updateState<a extends keyof T>(slice: T[a], reducer: (state: any, action: T[a]) => any): void;\n override updateState<K>(userState: K | T, reducer?: unknown): void {\n /* empty */\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport const LANG_PARAM_KEY = 'X-Lang-Param';\n\n/**\n * Interceptor for adding the current language as parameter\n * Add the header (LANG_PARAM_KEY, <language parameter>) to your request http headers\n */\n@Injectable()\nexport class AddLangParamInterceptor implements HttpInterceptor {\n protected translateService = inject(TranslateService);\n\n intercept<T>(req: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n // take the lang param name from header, if specified\n const langParam = req.headers.get(LANG_PARAM_KEY);\n\n // if not specified, do nothing\n if (!langParam) {\n return next.handle(req);\n }\n\n // take the current language from the translate service\n const langValue = this.translateService.currentLang;\n\n return next.handle(\n req.clone({\n // remove the lang param header from headers\n headers: req.headers.delete(LANG_PARAM_KEY),\n // set the lang value as new parameter\n params: req.params.set(langParam, langValue),\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CachePreventionInterceptor implements HttpInterceptor {\n intercept<T>(req: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n // if Cache-Control is already specified\n if (req.headers.get('Cache-Control')) {\n // keep the current configuration\n return next.handle(req);\n }\n\n return next.handle(\n req.clone({\n // prevent the cache\n headers: req.headers.set('Cache-Control', 'No-Cache'),\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CorsSecurityInterceptor implements HttpInterceptor {\n intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n return next.handle(\n request.clone({\n withCredentials: true,\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CsrfPreventionInterceptor implements HttpInterceptor {\n intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n return next.handle(\n request.clone({\n headers: request.headers.set('X-Requested-With', 'XMLHttpRequest'),\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse, HttpResponseBase } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\ninterface body {\n success: boolean;\n status: string;\n code: number;\n message: string;\n}\n\n// The EuLoginSessionTimeoutHandlingInterceptor assumes that the EU login client is configured with:\n// <redirectionInterceptor>eu.cec.digit.ecas.client.http.ajax.JsonAjaxRedirectionInterceptor</redirectionInterceptor>\n// WARNING: The default EU login client behaviour that provides the JSON-un-parsable login HTML page, is no longer supported!\n@Injectable()\nexport class EuLoginSessionTimeoutHandlingInterceptor implements HttpInterceptor {\n intercept<T extends body>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n return next.handle(request).pipe(\n tap({\n next: (event) => {\n this.checkRequestSuccessForEULoginSessionTimeout(request, event);\n return event;\n },\n error: (error) => {\n this.checkRequestErrorForEULoginSessionTimeout(request, error);\n },\n }),\n );\n }\n\n protected checkRequestSuccessForEULoginSessionTimeout<T extends body, E>(request: HttpRequest<T>, event: HttpEvent<E>): void {\n if (event instanceof HttpResponse) {\n if (this.isSsoResponse((<HttpResponse<string | body>>event).body)) {\n this.reauthenticate();\n }\n }\n }\n\n protected checkRequestErrorForEULoginSessionTimeout<T = unknown>(request: HttpRequest<T>, response: HttpResponseBase): void {\n /* intentionally blank; meant for overriding */\n }\n\n protected isSsoResponse(body: string | body): boolean {\n if (body) {\n if (typeof body !== 'string') {\n return (\n body.success === false &&\n body.status === 'ECAS_AUTHENTICATION_REQUIRED' &&\n body.code === 303 &&\n body.message === 'session expired'\n );\n } else {\n const html = body;\n try {\n return (\n (html.indexOf('<meta name=\"Keywords\" content=\"EU Login, ECAS, Authentication, Security\" />') >= 0 &&\n html.indexOf('<meta name=\"Description\" content=\"EU Login\" />') >= 0) ||\n html.indexOf('<meta name=\"Description\" content=\"European Commission Authentication Service\" />') >= 0 ||\n html.indexOf('<title>Mock Login Form</title>') >= 0 ||\n html.indexOf('<title>Redirecting To ECAS</title>') >= 0 ||\n html === '{ success : false, status : \"ECAS_AUTHENTICATION_REQUIRED\", code : 303, message : \"session expired\" }' ||\n // eslint-disable-next-line max-len\n JSON.stringify(JSON.parse(html)) ===\n JSON.stringify({\n success: false,\n status: 'ECAS_AUTHENTICATION_REQUIRED',\n code: 303,\n message: 'session expired',\n })\n );\n } catch (e) {\n return false;\n }\n }\n } else {\n return false;\n }\n }\n\n protected reauthenticate(): void {\n document.location.reload();\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ErrorMappingHandler, transformToUxHttpResponse, UxHttpErrorResponse } from '@eui/base';\n\nexport const UX_ERROR_MAPPING_HANDLER_TOKEN = new InjectionToken<ErrorMappingHandler>('UX_ERROR_MAPPING_HANDLER');\n\n@Injectable()\nexport class UxRequestErrorModelInterceptor implements HttpInterceptor {\n private errorMappingHandler = inject<ErrorMappingHandler>(UX_ERROR_MAPPING_HANDLER_TOKEN);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req).pipe(\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n catchError((err: any) => {\n if (this.errorMappingHandler) {\n if (err instanceof HttpErrorResponse) {\n err = transformToUxHttpResponse(err, this.errorMappingHandler) as UxHttpErrorResponse;\n }\n }\n return of(err);\n }),\n );\n }\n}\n","/* BASE PACKAGE */\nexport * from '@eui/base';\n\n/* CORE MODULES */\nexport * from './lib/eui-core.module';\n\n/* CORE SERVICES */\nexport * from './lib/services/index';\n\n// /* CORE CONFIG TOKENS */\n// export * from './lib/services/config/tokens';\n\n/* CORE INTERCEPTORS */\nexport * from './lib/interceptors/index';\n\n/* CORE HELPERS */\nexport * from './lib/helpers/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["actionToReducerMap","initialState","of"],"mappings":"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"}