{"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/**\n * @description\n * Centralized service for managing application-wide `eui-growl` notifications.\n * Provides methods to display success, error, warning, and info messages with configurable behavior.\n * Manages message lifecycle, positioning, and accessibility settings through reactive BehaviorSubjects.\n * Supports both temporary auto-dismissing messages and persistent sticky notifications.\n * Injected at root level, ensuring a single instance across the entire application.\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 notification message with customizable behavior and appearance.\n     * Validates message severity and manages message lifecycle through reactive streams.\n     * Danger severity messages default to sticky behavior unless explicitly configured.\n     * \n     * @param msg - Message object containing severity, summary, and detail properties\n     * @param isSticky - When true, message persists until manually dismissed; defaults to false except for danger messages\n     * @param isMultiple - When true, appends message to existing queue; when false, clears previous messages\n     * @param life - Duration in milliseconds before auto-dismissal; defaults to 3000ms\n     * @param position - Screen position for message display (e.g., 'bottom-right', 'top-center')\n     * @param callback - Optional function executed when message is clicked\n     * @param ariaLive - ARIA live region politeness level for screen reader announcements\n     * @throws Error if message severity is not one of: 'info', 'warning', 'success', 'danger'\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            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            } else {\n                this.growlCallback.next(null);\n            }\n            \n            if (ariaLive) {\n                this.ariaGrowlLive.next(ariaLive);\n            }\n\n            this.growlMessages.next([...this.growlMessages.value, msg]);\n        }\n    }\n\n    /**\n     * Removes all currently displayed growl messages from the notification queue.\n     * Clears both sticky and temporary messages immediately.\n     */\n    clearGrowl(): void {\n        this.growlMessages.next([]);\n    }\n\n    /**\n     * Displays a success growl notification with predefined styling and behavior.\n     * Message is non-sticky and auto-dismisses after the default duration.\n     * \n     * @param msg - Detail text to display in the notification\n     * @param position - Optional screen position override; defaults to service-configured position\n     */\n    growlSuccess(msg: string, position?: string): void {\n        this.growl({ severity: 'success', summary: 'SUCCESS', detail: msg }, false, false, undefined, position);\n    }\n\n    /**\n     * Displays an error growl notification with predefined styling and behavior.\n     * Message is non-sticky but can be configured to persist based on severity handling.\n     * \n     * @param msg - Detail text to display in the notification\n     * @param position - Optional screen position override; defaults to service-configured position\n     */\n    growlError(msg: string, position?: string): void {\n        this.growl({ severity: 'danger', summary: 'ERROR', detail: msg }, false, false, undefined, position);\n    }\n\n    /**\n     * Displays a warning growl notification with predefined styling and behavior.\n     * Message is non-sticky and auto-dismisses after the default duration.\n     * \n     * @param msg - Detail text to display in the notification\n     * @param position - Optional screen position override; defaults to service-configured position\n     */\n    growlWarning(msg: string, position?: string): void {\n        this.growl({ severity: 'warning', summary: 'WARNING', detail: msg }, false, false, undefined, position);\n    }\n\n    /**\n     * Displays an informational growl notification with predefined styling and behavior.\n     * Message is non-sticky and auto-dismisses after the default duration.\n     * \n     * @param msg - Detail text to display in the notification\n     * @param position - Optional screen position override; defaults to service-configured position\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-side-container-width-default', '--eui-app-side-container-width', 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 activateSideContainerCssVars = (document: Document, platform: unknown): void => {\n        this.setCssVar('--eui-app-side-container-width-active', '--eui-app-side-container-width', document, platform);\n        this.setCssVar('--eui-app-side-container-width-close-active', '--eui-app-side-container-width-close', document, platform);\n    }\n\n    public static readonly deactivateSideContainerCssVars = (document: Document, platform: unknown): void => {\n        this.setCssVarValue('--eui-app-side-container-width', '0px', document);\n    }\n\n    public static readonly setSideContainerWidth = (width: number, document: Document): void => {\n        this.setCssVarValue('--eui-app-side-container-width', `${width}px` , document);\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    hasSideContainer?: 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    hasSideContainer: 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 activateSideContainer(): void {\n        this.setState({\n            ...this.state,\n            hasSideContainer: true,\n        });\n\n        CssUtils.activateSideContainerCssVars(this.document, this.platformId);\n    }    \n\n    public deactivateSideContainer(): void {\n        this.setState({\n            ...this.state,\n            hasSideContainer: false,\n        });\n\n        CssUtils.deactivateSideContainerCssVars(this.document, this.platformId);\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        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                    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                        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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"}