{"version":3,"file":"dgp-ng-app.mjs","sources":["../../../projects/dgp-ng-app/src/utils/container.component-base.ts","../../../projects/dgp-ng-app/src/action-context/actions/select-action-context.action.ts","../../../projects/dgp-ng-app/src/action-context/actions/deselect-action-context.action.ts","../../../projects/dgp-ng-app/src/action-context/constants/action-context-store-feature.constant.ts","../../../projects/dgp-ng-app/src/action-context/selectors/action-context-feature.selector.ts","../../../projects/dgp-ng-app/src/action-context/selectors/get-selected-action-context.selector.ts","../../../projects/dgp-ng-app/src/action-context/selectors/get-selected-action-context-key.selector.ts","../../../projects/dgp-ng-app/src/utils/null-checking.functions.ts","../../../projects/dgp-ng-app/src/action-context/selectors/is-action-context-selected.selector.ts","../../../projects/dgp-ng-app/src/utils/get-hash-code.function.ts","../../../projects/dgp-ng-app/src/action-context/directives/action-context.directive.ts","../../../projects/dgp-ng-app/src/action-context/constants/empty-action-context.constant.ts","../../../projects/dgp-ng-app/src/action-context/constants/empty-action-context-state.constant.ts","../../../projects/dgp-ng-app/src/action-context/reducers/action-context.reducer.ts","../../../projects/dgp-ng-app/src/action-context/action-context.module.ts","../../../projects/dgp-ng-app/src/action-context/selectors/is-any-action-context-selected.selector.ts","../../../projects/dgp-ng-app/src/action-context/selectors/get-selected-action-context-label.selector.ts","../../../projects/dgp-ng-app/src/action-context/selectors/get-selected-action-context-type.selector.ts","../../../projects/dgp-ng-app/src/action-context/selectors/get-selected-action-context-value.selector.ts","../../../projects/dgp-ng-app/src/authentication/actions.ts","../../../projects/dgp-ng-app/src/authentication/api-clients/authentication.api-client.ts","../../../projects/dgp-ng-app/src/authentication/models.ts","../../../projects/dgp-ng-app/src/authentication/selectors.ts","../../../projects/dgp-ng-app/src/authentication/guards/authentication.guard.ts","../../../projects/dgp-ng-app/src/authentication/services/authentication.service.ts","../../../projects/dgp-ng-app/src/authentication/reducers.ts","../../../projects/dgp-ng-app/src/authentication/services/initialization.service.ts","../../../projects/dgp-ng-app/src/broadcast/actions.ts","../../../projects/dgp-ng-app/src/broadcast/models/core/broadcast-role.model.ts","../../../projects/dgp-ng-app/src/authentication/services/app-initializer.function.ts","../../../projects/dgp-ng-app/src/authentication/authentication.module.ts","../../../projects/dgp-ng-app/src/broadcast/store.ts","../../../projects/dgp-ng-app/src/broadcast/guards/no-peon.guard.ts","../../../projects/dgp-ng-app/src/broadcast/functions/create-guid.function.ts","../../../projects/dgp-ng-app/src/broadcast/constants/broadcast-config-injection-token.constant.ts","../../../projects/dgp-ng-app/src/broadcast/constants/default-broadcast-role-display-config.constant.ts","../../../projects/dgp-ng-app/src/broadcast/constants/heartbeat-broadcast-channel-id.constant.ts","../../../projects/dgp-ng-app/src/broadcast/constants/action-broadcast-channel-id.constant.ts","../../../projects/dgp-ng-app/src/broadcast/constants/default-broadcast-config.model.ts","../../../projects/dgp-ng-app/src/broadcast/functions/prefix-action.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/should-prefix-action.function.ts","../../../projects/dgp-ng-app/src/broadcast/broadcast-store.decorator.ts","../../../projects/dgp-ng-app/src/broadcast/services/broadcast-channel-local-storage-fallback.service.ts","../../../projects/dgp-ng-app/src/broadcast/functions/get-broadcast-heartbeat-from-message-event.function.ts","../../../projects/dgp-ng-app/src/broadcast/services/broadcast-channel.service.ts","../../../projects/dgp-ng-app/src/broadcast/functions/create-broadcast-heartbeat.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/create-broadcast-participant.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/trim-incoming-broadcast-action.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/get-distinct-heartbeats-for-channel.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/get-heartbeat-form-oldest-participant.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/should-broadcast-participant-change-role.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/create-broadcast-action.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/filter-incoming-broadcast-action.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/should-update-browser-tab-broadcast-role-display.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/filter-action-to-prefix-with-leader.predicate.ts","../../../projects/dgp-ng-app/src/utils/filter-not-null-or-undefined.function.ts","../../../projects/dgp-ng-app/src/broadcast/functions/try-trim-selection-from-composite-entity-action.function.ts","../../../projects/dgp-ng-app/src/utils/without-dispatch.constant.ts","../../../projects/dgp-ng-app/src/broadcast/functions/get-broadcast-heartbeats-for-interval.function.ts","../../../projects/dgp-ng-app/src/utils/of-null.function.ts","../../../projects/dgp-ng-app/src/broadcast/effects.ts","../../../projects/dgp-ng-app/src/broadcast/broadcast-store.module.ts","../../../projects/dgp-ng-app/src/confirm-dialog/containers/confirm-dialog.component.ts","../../../projects/dgp-ng-app/src/confirm-dialog/confirm-dialog.module.ts","../../../projects/dgp-ng-app/src/dialog-menu/components/dialog-menu.component.ts","../../../projects/dgp-ng-app/src/table-cell-editor/functions.ts","../../../projects/dgp-ng-app/src/dialog-menu/services/dialog-menu.service.ts","../../../projects/dgp-ng-app/src/dialog-menu/directives/dialog-menu-trigger.directive.ts","../../../projects/dgp-ng-app/src/dialog-menu/directives/directives.ts","../../../projects/dgp-ng-app/src/dialog-menu/components/components.ts","../../../projects/dgp-ng-app/src/dialog-menu/dialog-menu.module.ts","../../../projects/dgp-ng-app/src/utils/observe-input/models/rx-attribute.model.ts","../../../projects/dgp-ng-app/src/utils/observe-input/models/rx-component-fixture-map.model.ts","../../../projects/dgp-ng-app/src/utils/observe-input/constants/rx-component-fixture-map.constant.ts","../../../projects/dgp-ng-app/src/utils/observe-input/models/rx-component-fixture.model.ts","../../../projects/dgp-ng-app/src/utils/observe-input/functions/create-rx-component-fixture.function.ts","../../../projects/dgp-ng-app/src/utils/observe-input/functions/register-rx-component-fixture.function.ts","../../../projects/dgp-ng-app/src/utils/observe-input/functions/get-or-create-rx-component-fixture.function.ts","../../../projects/dgp-ng-app/src/utils/observe-input/functions/create-rx-attribute.function.ts","../../../projects/dgp-ng-app/src/utils/observe-input/functions/register-rx-attribute.function.ts","../../../projects/dgp-ng-app/src/utils/observe-input/functions/get-or-create-rx-attribute$.function.ts","../../../projects/dgp-ng-app/src/utils/observe-input/observe-attribute$.function.ts","../../../projects/dgp-ng-app/src/utils/dgp-disabled-base.directive.ts","../../../projects/dgp-ng-app/src/utils/view.component-base.ts","../../../projects/dgp-ng-app/src/utils/model-editor.component-base.ts","../../../projects/dgp-ng-app/src/expansion-toggle/components/expansion-toggle.component.ts","../../../projects/dgp-ng-app/src/details/components/details.component.ts","../../../projects/dgp-ng-app/src/details/components/components.ts","../../../projects/dgp-ng-app/src/expansion-toggle/components/components.ts","../../../projects/dgp-ng-app/src/expansion-toggle/expansion-toggle.module.ts","../../../projects/dgp-ng-app/src/spacer/components/spacer.component.ts","../../../projects/dgp-ng-app/src/spacer/spacer.module.ts","../../../projects/dgp-ng-app/src/details/details.module.ts","../../../projects/dgp-ng-app/src/context-action-slot/containers/page-header-context-actions.component.ts","../../../projects/dgp-ng-app/src/context-action-slot/page-header-context-actions.module.ts","../../../projects/dgp-ng-app/src/empty-state/components/empty-state-content.component.ts","../../../projects/dgp-ng-app/src/empty-state/components/empty-state-icon.component.ts","../../../projects/dgp-ng-app/src/empty-state/components/empty-state-title.component.ts","../../../projects/dgp-ng-app/src/empty-state/components/empty-state.component.ts","../../../projects/dgp-ng-app/src/empty-state/empty-state.module.ts","../../../projects/dgp-ng-app/src/file-viewer/models.ts","../../../projects/dgp-ng-app/src/file-viewer/functions.ts","../../../projects/dgp-ng-app/src/file-upload/functions.ts","../../../projects/dgp-ng-app/src/file-viewer/components/file-viewer.component-base.ts","../../../projects/dgp-ng-app/src/safe/safe.pipe.ts","../../../projects/dgp-ng-app/src/file-viewer/components/fallback-file-viewer.component.ts","../../../projects/dgp-ng-app/src/utils/first-as-promise.ts","../../../projects/dgp-ng-app/src/file-upload/models.ts","../../../projects/dgp-ng-app/src/file-upload/selectors.ts","../../../projects/dgp-ng-app/src/file-upload/actions.ts","../../../projects/dgp-ng-app/src/shortcuts/models.ts","../../../projects/dgp-ng-app/src/shortcuts/directives/action-shortcut.directive.ts","../../../projects/dgp-ng-app/src/negate/negate.pipe.ts","../../../projects/dgp-ng-app/src/file-viewer/components/list/remove-current-file-item-action.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/list/download-current-file-item.component.ts","../../../projects/dgp-ng-app/src/utils/view.ts","../../../projects/dgp-ng-app/src/file-viewer/components/list/file-item-list-item.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/list/file-item-list.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/pdf-viewer.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/jpg-viewer.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/png-viewer.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/svg-viewer.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/dynamic-file-viewer.component.ts","../../../projects/dgp-ng-app/src/file-viewer/components/file-viewer.component.ts","../../../projects/dgp-ng-app/src/safe/safe-pipe.module.ts","../../../projects/dgp-ng-app/src/inspector/constants/inspector-default-config.constant.ts","../../../projects/dgp-ng-app/src/inspector/constants/default-inspector-config.constant.ts","../../../projects/dgp-ng-app/src/inspector/constants/inspector-config-metadata.constant.ts","../../../projects/dgp-ng-app/src/inspector/functions/provide-default-inspector-config.function.ts","../../../projects/dgp-ng-app/src/theme-switcher/models.ts","../../../projects/dgp-ng-app/src/theme-switcher/selectors.ts","../../../projects/dgp-ng-app/src/inspector/services/inspector.service.ts","../../../projects/dgp-ng-app/src/inspector/components/inspector-item.component.ts","../../../projects/dgp-ng-app/src/inspector/components/inspector-section.component.ts","../../../projects/dgp-ng-app/src/inspector/components/inspector.component.ts","../../../projects/dgp-ng-app/src/negate/negate-pipe.module.ts","../../../projects/dgp-ng-app/src/inspector/inspector.module.ts","../../../projects/dgp-ng-app/src/shortcuts/directives/directives.ts","../../../projects/dgp-ng-app/src/shortcuts/shortcuts.module.ts","../../../projects/dgp-ng-app/src/file-viewer/file-viewer.module.ts","../../../projects/dgp-ng-app/src/file-upload/directives/drag-file-listener.directive.ts","../../../projects/dgp-ng-app/src/file-upload/directives/open-file-manager-via-short-key.directive.ts","../../../projects/dgp-ng-app/src/drawer-layout/models.ts","../../../projects/dgp-ng-app/src/file-upload/store.ts","../../../projects/dgp-ng-app/src/file-upload/containers/file-drop-zone.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/current-file-drop-zone.component.ts","../../../projects/dgp-ng-app/src/drawer-layout/drawer-layout-menu-toggle.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/file-manager-menu-toggle.component.ts","../../../projects/dgp-ng-app/src/file-upload/components/close-dialog-button.component.ts","../../../projects/dgp-ng-app/src/file-upload/components/maximize-dialog-button.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/file-manager-dialog-header.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/select-previous-file-item-action.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/select-next-file-item-action.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/current-file-viewer.component.ts","../../../projects/dgp-ng-app/src/drawer-layout/drawer-layout.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/file-manager-drawer-layout.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/current-add-file-list-item.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/current-file-item-list.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/current-list-file-viewer.component.ts","../../../projects/dgp-ng-app/src/file-upload/containers/file-manager.component.ts","../../../projects/dgp-ng-app/src/file-viewer/select-file-item.action.ts","../../../projects/dgp-ng-app/src/file-upload/cache-file-system.action.ts","../../../projects/dgp-ng-app/src/file-upload/open-file-item-in-new-tab.function.ts","../../../projects/dgp-ng-app/src/file-upload/constants/directory-metadata.constant.ts","../../../projects/dgp-ng-app/src/file-upload/constants/file-item-metadata.constant.ts","../../../projects/dgp-ng-app/src/utils/get-list-item-neighbor.function.ts","../../../projects/dgp-ng-app/src/file-upload/file-upload.effects.ts","../../../projects/dgp-ng-app/src/request-store/models.ts","../../../projects/dgp-ng-app/src/request-store/selectors.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/page-header/page-header.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/page-header/page-header.module.ts","../../../projects/dgp-ng-app/src/hamburger-shell/actions.ts","../../../projects/dgp-ng-app/src/hamburger-shell/models.ts","../../../projects/dgp-ng-app/src/hamburger-shell/selectors.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/list-details-page/list-details-page.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/list-details-page/list-details-page-content.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/list-details-page/dgp-list-details-page-menu-toggle.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/list-details-page/list-details-page.module.ts","../../../projects/dgp-ng-app/src/file-upload/components/components.ts","../../../projects/dgp-ng-app/src/file-upload/containers/containers.ts","../../../projects/dgp-ng-app/src/file-upload/directives/directives.ts","../../../projects/dgp-ng-app/src/file-upload/file-upload.module.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-shell.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-menu-toggle/hamburger-menu-toggle.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-menu-toggle/hamburger-menu-toggle.module.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-menu/hamburger-menu.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-menu/hamburger-menu-header.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-menu/hamburger-menu-entries.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-menu/hamburger-menu-entry.component.ts","../../../projects/dgp-ng-app/src/hamburger-shell/components/hamburger-menu/hamburger-menu.module.ts","../../../projects/dgp-ng-app/src/hamburger-shell/effects.ts","../../../projects/dgp-ng-app/src/hamburger-shell/reducers.ts","../../../projects/dgp-ng-app/src/hamburger-shell/hamburger-shell.module.ts","../../../projects/dgp-ng-app/src/hmr/hmr.actions.ts","../../../projects/dgp-ng-app/src/hmr/hmr.reducer.ts","../../../projects/dgp-ng-app/src/hmr/hmr-app.ts","../../../projects/dgp-ng-app/src/input/components/input-error-info.component.ts","../../../projects/dgp-ng-app/src/input/components/input-length-info.component.ts","../../../projects/dgp-ng-app/src/input/components/input-hint.component.ts","../../../projects/dgp-ng-app/src/input/components/input-field.component.ts","../../../projects/dgp-ng-app/src/input/directives/input-metadata.directive.ts","../../../projects/dgp-ng-app/src/input/components/components.ts","../../../projects/dgp-ng-app/src/input/directives/directives.ts","../../../projects/dgp-ng-app/src/input/input-field.module.ts","../../../projects/dgp-ng-app/src/inspector-config/components/inspector-config-form.component.ts","../../../projects/dgp-ng-app/src/theme-switcher/actions.ts","../../../projects/dgp-ng-app/src/inspector-config/containers/inspector-config.component.ts","../../../projects/dgp-ng-app/src/inspector-config/components/components.ts","../../../projects/dgp-ng-app/src/inspector-config/containers/containers.ts","../../../projects/dgp-ng-app/src/inspector-config/inspector-config.module.ts","../../../projects/dgp-ng-app/src/lazy-rendered/directives/dgp-lazy-rendered-content.directive.ts","../../../projects/dgp-ng-app/src/lazy-rendered/directives/dgp-lazy-rendered-placeholder.directive.ts","../../../projects/dgp-ng-app/src/utils/distinct-until-hash-changed.function.ts","../../../projects/dgp-ng-app/src/lazy-rendered/components/lazy-rendered.component.ts","../../../projects/dgp-ng-app/src/lazy-rendered/components/components.ts","../../../projects/dgp-ng-app/src/lazy-rendered/directives/directives.ts","../../../projects/dgp-ng-app/src/lazy-rendered/lazy-rendered.module.ts","../../../projects/dgp-ng-app/src/log/actions.ts","../../../projects/dgp-ng-app/src/log/models.ts","../../../projects/dgp-ng-app/src/log/reducers.ts","../../../projects/dgp-ng-app/src/log/selectors.ts","../../../projects/dgp-ng-app/src/log/components/log-entry-details.component.ts","../../../projects/dgp-ng-app/src/log/components/log-entry-list.component.ts","../../../projects/dgp-ng-app/src/log/components/log-page.component.ts","../../../projects/dgp-ng-app/src/log/effects.ts","../../../projects/dgp-ng-app/src/log/log.module.ts","../../../projects/dgp-ng-app/src/request-store/actions.ts","../../../projects/dgp-ng-app/src/request-store/functions.ts","../../../projects/dgp-ng-app/src/request-store/effects.ts","../../../projects/dgp-ng-app/src/request-store/reducers.ts","../../../projects/dgp-ng-app/src/request-store/request-store.module.ts","../../../projects/dgp-ng-app/src/resize-sensor/functions/get-initial-size-from-el-ref.function.ts","../../../projects/dgp-ng-app/src/resize-sensor/services/resize-sensor.service.ts","../../../projects/dgp-ng-app/src/resize-sensor/directives/resize-sensor.directive.ts","../../../projects/dgp-ng-app/src/resize-sensor/directives/directives.ts","../../../projects/dgp-ng-app/src/resize-sensor/resize-sensor.module.ts","../../../projects/dgp-ng-app/src/routing-overlay/actions.ts","../../../projects/dgp-ng-app/src/routing-overlay/components/routing-overlay.component.ts","../../../projects/dgp-ng-app/src/routing-overlay/effects.ts","../../../projects/dgp-ng-app/src/routing-overlay/routing-overlay.module.ts","../../../projects/dgp-ng-app/src/table-cell-editor/directives/table-cell-editor.directive.ts","../../../projects/dgp-ng-app/src/table-cell-editor/components/table-cell-editor.component.ts","../../../projects/dgp-ng-app/src/table-cell-editor/service/table-cell-editor.service.ts","../../../projects/dgp-ng-app/src/table-cell-editor/components/table-cell.component.ts","../../../projects/dgp-ng-app/src/table-cell-editor/directives/close-table-cell-editor.directive.ts","../../../projects/dgp-ng-app/src/table-cell-editor/table-cell.module.ts","../../../projects/dgp-ng-app/src/theme-switcher/components/compact-theme-toggle.component.ts","../../../projects/dgp-ng-app/src/theme-switcher/components/dark-mode-toggle.component.ts","../../../projects/dgp-ng-app/src/theme-switcher/directives/compact-theme-host.directive.ts","../../../projects/dgp-ng-app/src/theme-switcher/directives/theme-host.directive.ts","../../../projects/dgp-ng-app/src/theme-switcher/effects.ts","../../../projects/dgp-ng-app/src/theme-switcher/reducers.ts","../../../projects/dgp-ng-app/src/theme-switcher/theme-switcher.module.ts","../../../projects/dgp-ng-app/src/tile/tile.component.ts","../../../projects/dgp-ng-app/src/tile/tile.module.ts","../../../projects/dgp-ng-app/src/utils/are-equal-by-hash-code.function.ts","../../../projects/dgp-ng-app/src/utils/create-on-change-effect$.function.ts","../../../projects/dgp-ng-app/src/utils/default-runtime-checks.ts","../../../projects/dgp-ng-app/src/utils/effects-base.ts","../../../projects/dgp-ng-app/src/utils/filter-empty.function.ts","../../../projects/dgp-ng-app/src/utils/flatten-matrix.function.ts","../../../projects/dgp-ng-app/src/utils/negate.function.ts","../../../projects/dgp-ng-app/src/utils/negate-map.function.ts","../../../projects/dgp-ng-app/src/utils/hybrid.component-base.ts","../../../projects/dgp-ng-app/src/utils/select-entity-via-route.resolver-base.ts","../../../projects/dgp-ng-app/src/utils/resolve-overridable-value.function.ts","../../../projects/dgp-ng-app/src/utils/resolver-base.ts","../../../projects/dgp-ng-app/src/utils/parse-string-matrix-as-number-matrix.function.ts","../../../projects/dgp-ng-app/src/utils/magnitude.model.ts","../../../projects/dgp-ng-app/src/utils/http-sse.api-client.ts","../../../projects/dgp-ng-app/src/utils/there.function.ts","../../../projects/dgp-ng-app/src/utils/get-default-value.function.ts","../../../projects/dgp-ng-app/src/utils/by-unique.function.ts","../../../projects/dgp-ng-app/src/utils/matrix-to-many.constant.ts","../../../projects/dgp-ng-app/src/utils/wait-for-stable-DOM$.function.ts","../../../projects/dgp-ng-app/src/virtual-list-panel/directives/virtual-list-item.directive.ts","../../../projects/dgp-ng-app/src/virtual-list-panel/components/virtual-list-panel.component.ts","../../../projects/dgp-ng-app/src/virtual-list-panel/virtual-list-panel.module.ts","../../../projects/dgp-ng-app/src/dgp-ng-app.module.ts","../../../projects/dgp-ng-app/src/public-api.ts","../../../projects/dgp-ng-app/src/dgp-ng-app.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { Action, Selector } from \"entity-store\";\n\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class DgpContainer<TState = any> {\n\n    constructor(\n        protected readonly store: Store<TState>\n    ) {\n    }\n\n    readonly dispatch = (x: Action) => this.store.dispatch(x);\n\n    readonly select = <TV>(x: Selector<TState, TV>) => this.store.select(x);\n\n}\n","import { createAction, props } from \"@ngrx/store\";\nimport { ActionContext } from \"../models/action-context.model\";\n\nexport const selectActionContext = createAction(\"[DgpActionContext] Select\", props<{\n    readonly actionContext: ActionContext;\n}>());\n","import { createAction, props } from \"@ngrx/store\";\n\nexport const deselectActionContext = createAction(\"[DgpActionContext] Deselect\", props<{\n    readonly selectedActionContextKey?: string;\n}>());\n","import { ActionContextStoreFeature } from \"../models/action-context-store-feature.model\";\n\nexport const actionContextStoreFeature: ActionContextStoreFeature = \"DgpActionContext\";\n","import { createFeatureSelector } from \"@ngrx/store\";\nimport { ActionContextState } from \"../models/action-context-state.model\";\nimport { actionContextStoreFeature } from \"../constants/action-context-store-feature.constant\";\n\nexport const actionContextFeatureSelector = createFeatureSelector<ActionContextState>(actionContextStoreFeature);\n","import { createSelector } from \"@ngrx/store\";\nimport { actionContextFeatureSelector } from \"./action-context-feature.selector\";\n\nexport const getSelectedActionContext = createSelector(\n    actionContextFeatureSelector, x => x.selectedActionContext\n);\n","import { createSelector } from \"@ngrx/store\";\nimport { getSelectedActionContext } from \"./get-selected-action-context.selector\";\n\nexport const getSelectedActionContextKey = createSelector(\n    getSelectedActionContext, x => x?.key\n);\n","export function isNullOrUndefined(value: any, ...additionalValues: any): boolean {\n    return value === null\n        || value === undefined\n        || additionalValues.some(x => x === null || x === undefined);\n}\n\nexport const nullOrUndefined = isNullOrUndefined;\n\nexport function notNullOrUndefined(value: any, ...additionalValues: any): boolean {\n    return !isNullOrUndefined(value)\n        && !additionalValues.some(isNullOrUndefined);\n}\n","import { createSelector } from \"@ngrx/store\";\nimport { getSelectedActionContextKey } from \"./get-selected-action-context-key.selector\";\nimport { isNullOrUndefined } from \"../../utils/null-checking.functions\";\n\nexport function isActionContextSelected(actionContextKey: string) {\n    return createSelector(\n        getSelectedActionContextKey,\n        selectedActionContextKey => {\n            if (isNullOrUndefined(actionContextKey)) return false;\n\n            return selectedActionContextKey === actionContextKey;\n        }\n    );\n}\n","\n\n\nexport function getHashCode(obj: any): number {\n    let hash = 0;\n    if (obj === null || typeof obj !== 'object') {\n        return hashString(String(obj));\n    }\n \n    // Instead of stringifying the whole thing, \n    // we iterate keys and hash their values\n    for (const key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            hash = ((hash << 5) - hash) + hashString(key);\n            const val = obj[key];\n            \n            // For nested objects, recursion (be careful with depth/circular refs)\n            if (typeof val === 'object' && val !== null) {\n                hash = ((hash << 5) - hash) + getHashCode(val);\n            } else {\n                hash = ((hash << 5) - hash) + hashString(String(val));\n            }\n            hash |= 0; // Convert to 32bit int\n        }\n    }\n    return hash;\n}\n\nfunction hashString(str: string): number {\n    let h = 0;\n    for (let i = 0; i < str.length; i++) {\n        h = (Math.imul(31, h) + str.charCodeAt(i)) | 0;\n    }\n    return h;\n}\n\n\n","import {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Renderer2,\n    SimpleChanges\n} from \"@angular/core\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { selectActionContext } from \"../actions/select-action-context.action\";\nimport { deselectActionContext } from \"../actions/deselect-action-context.action\";\nimport { Store } from \"@ngrx/store\";\nimport { ActionContextState } from \"../models/action-context-state.model\";\nimport { BehaviorSubject, Subscription } from \"rxjs\";\nimport { switchMap, tap } from \"rxjs/operators\";\nimport { isActionContextSelected } from \"../selectors/is-action-context-selected.selector\";\nimport { getHashCode } from \"../../utils/get-hash-code.function\";\nimport { isNullOrUndefined, notNullOrUndefined } from \"../../utils/null-checking.functions\";\n\n@Directive({\n    selector: \"[dgpActionContext]\",\n    standalone: false\n})\nexport class DgpActionContextDirective extends DgpContainer<ActionContextState> implements AfterViewInit, OnChanges, OnDestroy {\n\n    @HostBinding(\"tabindex\")\n    readonly tabindex = 0;\n\n    readonly actionContextKey$ = new BehaviorSubject<string>(null);\n\n    @Input()\n    actionContextKey: string;\n\n    @Input()\n    actionContextValue: any;\n\n    @Input()\n    actionContextType: string;\n\n    @Input()\n    actionContextLabel: string;\n\n    readonly subscription: Subscription;\n\n    constructor(\n        protected readonly store: Store<ActionContextState>,\n        private readonly elementRef: ElementRef,\n        private readonly renderer: Renderer2\n    ) {\n        super(store);\n\n        this.subscription = this.actionContextKey$.pipe(\n            switchMap(key => this.store.select(isActionContextSelected(key))),\n            tap(isSelected => {\n                if (isSelected) this.renderer.addClass(this.elementRef.nativeElement, \"--selected\");\n                else this.renderer.removeClass(this.elementRef.nativeElement, \"--selected\");\n            })\n        ).subscribe();\n    }\n\n    @HostListener(\"focus\")\n    focus() {\n        this.dispatch(selectActionContext({\n            actionContext: {\n                key: this.actionContextKey$.value,\n                value: this.actionContextValue,\n                type: this.actionContextType,\n                label: this.actionContextLabel\n            }\n        }));\n    }\n\n    ngAfterViewInit(): void {\n        this.renderer.addClass(\n            this.elementRef.nativeElement,\n            \"dgp-action-context\"\n        );\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.actionContextKey) this.actionContextKey$.next(this.actionContextKey);\n        if (changes.actionContextValue) {\n            if (isNullOrUndefined(this.actionContextValue)) {\n                this.actionContextKey$.next(null);\n            } else {\n                this.actionContextKey$.next(getHashCode(this.actionContextValue).toString());\n            }\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (notNullOrUndefined(this.actionContextKey)) {\n            this.dispatch(deselectActionContext({\n                selectedActionContextKey: this.actionContextKey\n            }));\n        }\n\n        if (notNullOrUndefined(this.actionContextValue)) {\n            this.dispatch(deselectActionContext({\n                selectedActionContextKey: getHashCode(this.actionContextValue).toString()\n            }));\n        }\n\n        if (!this.subscription.closed) this.subscription?.unsubscribe();\n    }\n\n}\n","import { ActionContext } from \"../models/action-context.model\";\n\nexport const emptyActionContext: ActionContext = {\n    type: null, value: null, key: null, label: null\n};\n","import { ActionContextState } from \"../models/action-context-state.model\";\nimport { emptyActionContext } from \"./empty-action-context.constant\";\n\nexport const emptyActionContextState: ActionContextState = {\n    selectedActionContext: emptyActionContext\n};\n","import { createReducer, on } from \"@ngrx/store\";\nimport { ActionContextState } from \"../models/action-context-state.model\";\nimport { selectActionContext } from \"../actions/select-action-context.action\";\nimport { deselectActionContext } from \"../actions/deselect-action-context.action\";\nimport { isNullOrUndefined } from \"../../utils/null-checking.functions\";\nimport { emptyActionContextState } from \"../constants/empty-action-context-state.constant\";\n\nexport const actionContextReducer = createReducer<ActionContextState>(\n    emptyActionContextState,\n    on(selectActionContext, (state, action) => {\n        return {\n            selectedActionContext: action.actionContext,\n        };\n    }),\n    on(deselectActionContext, (state, action) => {\n\n        if (isNullOrUndefined(action.selectedActionContextKey)) {\n            return emptyActionContextState;\n        } else {\n\n            if (action.selectedActionContextKey === state.selectedActionContext.key) {\n                return emptyActionContextState;\n            } else {\n                return state;\n            }\n\n        }\n\n    })\n);\n","import { FactoryProvider, InjectionToken, NgModule } from \"@angular/core\";\nimport { DgpActionContextDirective } from \"./directives/action-context.directive\";\nimport { ActionReducer, StoreModule } from \"@ngrx/store\";\nimport { ActionContextState } from \"./models/action-context-state.model\";\nimport { actionContextStoreFeature } from \"./constants/action-context-store-feature.constant\";\nimport { actionContextReducer } from \"./reducers/action-context.reducer\";\n\nexport const directives = [\n    DgpActionContextDirective\n];\n\nexport const ACTION_CONTEXT_REDUCER = new InjectionToken<ActionReducer<ActionContextState>>(actionContextStoreFeature);\n\nexport function actionContextReducerFactory() {\n    return actionContextReducer;\n}\n\nexport const actionContextReducerProvider: FactoryProvider = {\n    provide: ACTION_CONTEXT_REDUCER,\n    useFactory: actionContextReducerFactory\n};\n\n\n@NgModule({\n    imports: [\n        StoreModule.forFeature(actionContextStoreFeature, ACTION_CONTEXT_REDUCER)\n    ],\n    declarations: directives,\n    exports: directives,\n    providers: [\n        actionContextReducerProvider\n    ]\n})\nexport class DgpActionContextModule {\n}\n","import { createSelector } from \"@ngrx/store\";\nimport { notNullOrUndefined } from \"../../utils/null-checking.functions\";\nimport { getSelectedActionContextKey } from \"./get-selected-action-context-key.selector\";\n\nexport const isAnyActionContextSelected = createSelector(\n    getSelectedActionContextKey, x => notNullOrUndefined(x)\n);\n","import { createSelector } from \"@ngrx/store\";\nimport { getSelectedActionContext } from \"./get-selected-action-context.selector\";\n\nexport const getSelectedActionContextLabel = createSelector(\n    getSelectedActionContext, x => x?.label\n);\n","import { createSelector } from \"@ngrx/store\";\nimport { getSelectedActionContext } from \"./get-selected-action-context.selector\";\n\nexport const getSelectedActionContextType = createSelector(\n    getSelectedActionContext, x => x?.type\n);\n","import { createSelector } from \"@ngrx/store\";\nimport { getSelectedActionContext } from \"./get-selected-action-context.selector\";\n\nexport const getSelectedActionContextValue = createSelector(\n    getSelectedActionContext, x => x?.value\n);\n","import { createAction, props } from \"@ngrx/store\";\n\nexport const authenticationActionTypePrefix = \"[Authentication] \";\n\nexport const authenticateUser = createAction(authenticationActionTypePrefix + \"AuthenticateUser\", props<{ readonly user: any; }>());\nexport const cacheInitialUrl = createAction(authenticationActionTypePrefix + \"CacheInitialUrl\", props<{ readonly initialUrl: string }>());\nexport const registerAuthenticateError = createAction(authenticationActionTypePrefix + \"RegisterAuthenticationError\", props<{ readonly error: any }>());\nexport const initialize = createAction(authenticationActionTypePrefix + \"Initialize\");\n","import { ClassProvider } from \"@angular/core\";\n\n/**\n * Service for authenticating the user\n */\nexport abstract class AuthenticationApiClient<TUser = any> {\n\n    /**\n     * Returns the user via a means of\n     * authentication\n     */\n    abstract authenticate$(): Promise<TUser>;\n\n}\n\nexport interface AuthenticationApiClientProvider extends ClassProvider {\n    provide: typeof AuthenticationApiClient;\n}\n","/**\n * Object describing the outcome\n * of an authentication attempt.\n *\n * Depending on the value of success\n * either the user or the errorMessage\n * attribute is set.\n */\nexport interface AuthenticationState {\n    readonly success: boolean;\n    readonly error?: any;\n    readonly user?: any;\n    readonly initialUrl: string;\n    readonly isInitialized?: boolean;\n}\n\nexport type PostAuthenticationTask<TUser> = (user: TUser) => Promise<void>;\n\nexport const authenticationStoreFeature = \"Authentication\";\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { AuthenticationState, authenticationStoreFeature } from \"./models\";\nimport { isNullOrUndefined } from \"../utils/null-checking.functions\";\n\nexport const authenticationFeatureSelector = createFeatureSelector<AuthenticationState>(authenticationStoreFeature);\n\nexport const getIsAuthenticatedSelector = createSelector(\n    authenticationFeatureSelector,\n    x => x.success\n);\n\nexport const isAuthenticated = getIsAuthenticatedSelector;\n\nexport const getAuthenticatedUserSelector = createSelector(\n    authenticationFeatureSelector,\n    x => x.user\n);\n\nexport const getAuthenticatedUser = getAuthenticatedUserSelector;\n\nexport const getCachedInitialUrlSelector = createSelector(\n    authenticationFeatureSelector,\n    x => x.initialUrl\n);\n\nexport const hasCachedInitialUrlSelector = createSelector(\n    getCachedInitialUrlSelector,\n    x => !isNullOrUndefined(x)\n);\n\nexport const isInitialized = createSelector(\n    authenticationFeatureSelector, x => x.isInitialized === true\n);\n","import { first } from \"rxjs/operators\";\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from \"@angular/router\";\nimport { Injectable } from \"@angular/core\";\nimport { select, Store } from \"@ngrx/store\";\nimport { cacheInitialUrl } from \"../actions\";\nimport { getIsAuthenticatedSelector, hasCachedInitialUrlSelector } from \"../selectors\";\nimport { AuthenticationState } from \"../models\";\n\n@Injectable()\nexport class AuthenticationGuard  {\n\n    constructor(\n        private readonly store: Store<AuthenticationState>,\n        private readonly router: Router\n    ) {\n    }\n\n    async canActivate(route: ActivatedRouteSnapshot,\n                      state: RouterStateSnapshot): Promise<boolean> {\n\n        const hasInitialUrl = await this.store.pipe(\n            select(hasCachedInitialUrlSelector),\n            first()\n        )\n            .toPromise();\n\n        if (!hasInitialUrl) {\n            this.store.dispatch(cacheInitialUrl({ initialUrl: state.url }));\n        }\n\n        return this.store.pipe(\n            select(getIsAuthenticatedSelector),\n            first()\n        )\n            .toPromise();\n\n    }\n\n}\n","import { empty, forkJoin, from } from \"rxjs\";\nimport { catchError, defaultIfEmpty, switchMap, tap } from \"rxjs/operators\";\nimport { ClassProvider, Injectable } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { authenticateUser, initialize, registerAuthenticateError } from \"../actions\";\nimport { AuthenticationApiClient } from \"../api-clients/authentication.api-client\";\nimport { AuthenticationState, PostAuthenticationTask } from \"../models\";\n\nexport abstract class AuthenticationService<TUser = any> {\n\n    abstract authenticate$(): Promise<void>;\n\n    abstract registerPostAuthenticationTask(task: PostAuthenticationTask<TUser>): void;\n\n}\n\n@Injectable()\nexport class AuthenticationServiceImpl<TUser> implements AuthenticationService<TUser> {\n\n    private readonly postAuthenticationTasks: PostAuthenticationTask<TUser>[] = [];\n\n    constructor(private readonly store: Store<AuthenticationState>,\n                private readonly authenticationApiClient: AuthenticationApiClient) {\n    }\n\n    authenticate$(): Promise<void> {\n\n        return from(\n            this.authenticationApiClient.authenticate$()\n        )\n            .pipe(\n                tap(user => {\n                    this.store.dispatch(authenticateUser({user}));\n                }),\n                switchMap(user => {\n\n                    const requests$ = this.postAuthenticationTasks.map(task => {\n                        return from(task(user));\n                    });\n\n                    return forkJoin(requests$);\n                }),\n                tap(() => this.store.dispatch(initialize())),\n                catchError((error: any) => {\n                    this.store.dispatch(registerAuthenticateError({error}));\n                    return empty();\n                }),\n                defaultIfEmpty(null)\n            )\n            .toPromise();\n    }\n\n    registerPostAuthenticationTask(task: PostAuthenticationTask<TUser>): void {\n        this.postAuthenticationTasks.push(task);\n    }\n\n}\n\nexport const authenticationServiceProvider: ClassProvider = {\n    provide: AuthenticationService,\n    useClass: AuthenticationServiceImpl\n};\n","import { createReducer, on } from \"@ngrx/store\";\nimport { AuthenticationState } from \"./models\";\nimport { authenticateUser, cacheInitialUrl, initialize, registerAuthenticateError } from \"./actions\";\n\nexport const initialAuthenticationState: AuthenticationState = {\n    user: null,\n    success: null,\n    error: null,\n    initialUrl: null,\n    isInitialized: null\n};\n\nexport const authenticationReducer = createReducer(\n    initialAuthenticationState, on(\n        authenticateUser, (state, action) => {\n            return {\n                ...state,\n                user: action.user,\n                success: true\n            };\n        }\n    ), on(cacheInitialUrl, (state, action) => {\n        return {\n            ...state,\n            initialUrl: action.initialUrl\n        };\n    }), on(registerAuthenticateError, (state, action) => {\n        return {\n            ...state,\n            error: action.error,\n            success: false\n        };\n    }), on(initialize, (state, action) => {\n        return {\n            ...state,\n            isInitialized: true\n        };\n    })\n);\n","import { ClassProvider } from \"@angular/core\";\n\n/**\n * Service that runs tasks once the user is authenticated\n * but before the application actually starts.\n *\n * Use for downloading basic data or load user settings.\n */\nexport abstract class InitializationService<TUser = any> {\n\n    /**\n     * Runs tasks on app start\n     */\n    abstract runPostAuthenticationTask$(user: TUser): Promise<void>;\n\n}\n\nexport interface InitializationServiceProvider extends ClassProvider {\n    provide: typeof InitializationService;\n}\n","import { Action, createAction, props } from \"@ngrx/store\";\nimport { BroadcastRole } from \"./models\";\n\nexport const setOwnBroadcastRoleActionType = \"[BroadcastChannel] SetOwnRole\";\n\nexport class SetOwnBroadcastRoleAction implements Action {\n    readonly type = setOwnBroadcastRoleActionType;\n\n    constructor(\n        public readonly payload: BroadcastRole\n    ) {\n    }\n}\n\nexport const setOwnBroadcastRole = createAction(setOwnBroadcastRoleActionType, props<{ broadcastRole: BroadcastRole }>());\n\nexport const setBroadcastChannelDataIdActionType = \"[BroadcastChannel] SetSelectedDataId\";\n\nexport class SetBroadcastChannelDataIdAction implements Action {\n    readonly type = setBroadcastChannelDataIdActionType;\n\n    constructor(\n        public readonly payload: any\n    ) {\n    }\n}\n\nexport const setBroadcastChannelDataId = createAction(setBroadcastChannelDataIdActionType, props<{ readonly payload: any; }>());\n\nexport const requestInitialData = createAction(\"[BroadcastChannel] RequestInitialData\");\n\nexport const leaderActionTypePrefix = \"[Leader] \";\nexport const peonActionTypePrefix = \"[Peon] \";\nexport const compositeActionTypePrefix = \"[Composite] \";\nexport const trackRequestActionTypePrefix = \"[Request] \";\n\nexport const openUrlAsPeon = createAction(\"[BroadcastChannel] OpenUrlAsPeon\", props<{\n    readonly url: string;\n}>());\n","export enum BroadcastRole {\n    None,\n    Leader,\n    Peon\n}\n","import { inject, provideAppInitializer } from \"@angular/core\";\nimport { InitializationService } from \"./initialization.service\";\nimport { AuthenticationService } from \"./authentication.service\";\nimport { Store } from \"@ngrx/store\";\nimport { setOwnBroadcastRole } from \"../../broadcast/actions\";\nimport { BroadcastRole } from \"../../broadcast/models\";\n\n/**\n * Logic executed before the app loads\n */\nexport function appInitializer<TUser>(authenticationService: AuthenticationService<TUser>,\n                                      initializationService: InitializationService,\n                                      store: Store<any>): () => Promise<void> {\n\n    if (window.location.href.includes(\"startAsPeon=true\")) return () => {\n        store.dispatch(setOwnBroadcastRole({\n            broadcastRole: BroadcastRole.Peon\n        }));\n        return Promise.resolve();\n    };\n\n    authenticationService.registerPostAuthenticationTask((user: TUser) => {\n        return initializationService.runPostAuthenticationTask$(user);\n    });\n\n    return () => {\n\n        return authenticationService\n            .authenticate$();\n\n    };\n\n}\n\nexport const appInitializerProvider = provideAppInitializer(() => {\n    const initializerFn = (appInitializer)(inject(AuthenticationService), inject(InitializationService), inject(Store));\n    return initializerFn();\n});\n","import { FactoryProvider, InjectionToken, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { ActionReducer, StoreModule } from \"@ngrx/store\";\nimport { InitializationServiceProvider } from \"./services/initialization.service\";\nimport { AuthenticationApiClientProvider } from \"./api-clients/authentication.api-client\";\nimport { authenticationReducer } from \"./reducers\";\nimport { appInitializerProvider } from \"./services/app-initializer.function\";\nimport { AuthenticationGuard } from \"./guards/authentication.guard\";\nimport { authenticationServiceProvider } from \"./services/authentication.service\";\nimport { AuthenticationState, authenticationStoreFeature } from \"./models\";\n\nexport const AUTHENTICATION_REDUCER = new InjectionToken<ActionReducer<AuthenticationState>>(\"authenticationReducer\");\n\nexport function authenticationReducerFactory() {\n    return authenticationReducer;\n}\n\nexport const authenticationReducerProvider: FactoryProvider = {\n    provide: AUTHENTICATION_REDUCER,\n    useFactory: authenticationReducerFactory\n};\n\n\nexport interface AuthenticationModuleSettings {\n    readonly authenticationApiClientProvider: AuthenticationApiClientProvider;\n    readonly initializationServiceProvider: InitializationServiceProvider;\n}\n\n@NgModule({\n    imports: [\n        StoreModule.forFeature(\n            authenticationStoreFeature,\n            AUTHENTICATION_REDUCER\n        )\n    ],\n    providers: [\n        appInitializerProvider,\n        authenticationReducerProvider,\n        AuthenticationGuard,\n        authenticationServiceProvider\n    ]\n})\nexport class DgpAuthenticationModule {\n\n    static forRoot(settings: AuthenticationModuleSettings): ModuleWithProviders<DgpAuthenticationModule> {\n        return {\n            ngModule: DgpAuthenticationModule,\n            providers: [\n                settings.authenticationApiClientProvider,\n                settings.initializationServiceProvider,\n            ]\n        };\n    }\n\n}\n","import { createFeatureSelector, createReducer, createSelector, on } from \"@ngrx/store\";\nimport { setOwnBroadcastRole } from \"./actions\";\nimport { isNullOrUndefined } from \"../utils/null-checking.functions\";\nimport { BroadcastRole } from \"./models\";\n\nexport const broadcastStoreFeature = \"Broadcast\";\nexport const broadcastStoreFeatureSelector = createFeatureSelector<BroadcastState>(broadcastStoreFeature);\n\nexport interface BroadcastState {\n    readonly ownRole: BroadcastRole;\n}\n\nexport const broadcastReducer = createReducer<BroadcastState>(\n    {ownRole: BroadcastRole.None},\n    on(setOwnBroadcastRole, (state, action) => {\n        return {\n            ownRole: action.broadcastRole\n        };\n    })\n);\n\n\nexport const getOwnBroadcastRoleSelector = createSelector(\n    broadcastStoreFeatureSelector, x => {\n        if (isNullOrUndefined(x)) return null;\n\n        return x.ownRole;\n    }\n);\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from \"@angular/router\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { BroadcastState, getOwnBroadcastRoleSelector } from \"../store\";\nimport { BroadcastRole } from \"../models\";\n\n@Injectable()\nexport class NoPeonGuard  {\n\n    constructor(\n        private readonly store: Store<BroadcastState>\n    ) {\n    }\n\n    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n        return this.store.pipe(\n            select(getOwnBroadcastRoleSelector),\n            map((role: BroadcastRole) => {\n                return role !== BroadcastRole.Peon;\n            })\n        );\n    }\n\n}\n","// const crypto = window.crypto || (window as any).msCrypto; // for IE 11\n\n/*return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\n       // tslint:disable-next-line:no-bitwise\n       (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n   );*/\n\nexport function createGuid() {\n    // @ts-ignore\n    // tslint:disable-next-line:only-arrow-functions\n    return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n        // tslint:disable-next-line:one-variable-per-declaration no-bitwise triple-equals\n        const r = Math.random() * 16 | 0, v = c == \"x\" ? r : (r & 0x3 | 0x8);\n        return v.toString(16);\n    });\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { BroadcastConfig } from \"../models/config/broadcast-config.model\";\n\nexport const BROADCAST_CONFIG = new InjectionToken<Readonly<BroadcastConfig>>(\n    \"DEFAULT_BROADCAST_CONFIG\"\n);\n","import { BroadcastRoleDisplayConfig } from \"../models/config/broadcast-role-display-config.model\";\n\nexport const defaultBroadcastRoleDisplayConfig: BroadcastRoleDisplayConfig = {\n    leaderBrowserTabTitleSuffix: \": Leader\",\n    peonBrowserTabTitleSuffix: \": Peon\"\n};\n","export const heartbeatBroadcastChannelId = \"HeartbeatBroadcastChannel\";\n","export const actionBroadcastChannelId = \"ActionBroadcastChannel\";\n","import { BroadcastConfig } from \"../models/config/broadcast-config.model\";\nimport { heartbeatBroadcastChannelId } from \"./heartbeat-broadcast-channel-id.constant\";\nimport { actionBroadcastChannelId } from \"./action-broadcast-channel-id.constant\";\nimport { defaultBroadcastRoleDisplayConfig } from \"./default-broadcast-role-display-config.constant\";\n\nexport const defaultBroadcastConfig: BroadcastConfig = {\n    heartbeartBroadcastInterval: 1000,\n    incomingHeartbeatBufferInterval: 10000,\n    heartbeatBroadcastChannelId,\n    actionBroadcastChannelId,\n    actionTypesToPrefixWithPeon: [],\n    updateBrowserTabTitleConfig: defaultBroadcastRoleDisplayConfig,\n    canBeLeader: true\n};\n","import { Action } from \"@ngrx/store\";\n\nexport interface PrefixActionPayload {\n    readonly prefix: string;\n    readonly action: Readonly<Action>;\n}\n\nexport function prefixAction<T extends Action>(payload: PrefixActionPayload): T {\n\n    return Object.assign({}, payload.action, {\n        type: payload.prefix + payload.action.type\n    }) as T;\n\n}\n","import { Action } from \"@ngrx/store\";\nimport { BroadcastRole } from \"../models\";\n\nexport interface ShouldPrefixActionPayload {\n    readonly action: Readonly<Action>;\n    readonly actualBroadcastRole: BroadcastRole;\n    readonly triggeringBroadcastRole: BroadcastRole;\n    readonly triggeringActionPrefixes: ReadonlyArray<string>;\n}\n\nexport function shouldPrefixAction(payload: ShouldPrefixActionPayload): boolean {\n\n    if (payload.actualBroadcastRole === payload.triggeringBroadcastRole) {\n\n        if (payload.triggeringActionPrefixes.some(actionPrefix => {\n            return payload.action.type.startsWith(actionPrefix);\n        })) {\n            return true;\n        }\n    }\n\n    return false;\n\n}\n","import { Action, ActionsSubject, ReducerManager, select, StateObservable, Store } from \"@ngrx/store\";\nimport { ClassProvider, Inject, Injectable } from \"@angular/core\";\nimport { getOwnBroadcastRoleSelector } from \"./store\";\nimport { Subscription } from \"rxjs\";\nimport { prefixAction } from \"./functions/prefix-action.function\";\nimport { peonActionTypePrefix } from \"./actions\";\nimport { shouldPrefixAction } from \"./functions/should-prefix-action.function\";\nimport { BroadcastConfig, BroadcastRole } from \"./models\";\nimport { BROADCAST_CONFIG } from \"./constants/broadcast-config-injection-token.constant\";\n\n@Injectable()\nexport class BroadcastStoreDecorator<T> extends Store<T> {\n\n    broadcastRole: BroadcastRole;\n    private ownBroadcastRoleSubscription: Subscription;\n\n    constructor(\n        @Inject(StateObservable)\n            state$: StateObservable,\n        @Inject(ActionsSubject)\n            actionsObserver: ActionsSubject,\n        @Inject(ReducerManager)\n            reducerManager: ReducerManager,\n        @Inject(BROADCAST_CONFIG)\n        private config: BroadcastConfig) {\n        super(state$, actionsObserver, reducerManager);\n\n        this.ownBroadcastRoleSubscription = state$.pipe(\n            select(getOwnBroadcastRoleSelector)\n        ).subscribe(x => {\n            this.broadcastRole = x;\n        }, (e) => {\n            throw e;\n        });\n\n    }\n\n    // @ts-ignore\n    dispatch<V extends Action = Action>(action: V): void {\n\n        let localAction = action;\n\n        const shouldPrefixActionWithPeonResult = shouldPrefixAction({\n            action,\n            actualBroadcastRole: this.broadcastRole,\n            triggeringBroadcastRole: BroadcastRole.Peon,\n            triggeringActionPrefixes: this.config.actionTypesToPrefixWithPeon\n        });\n\n        if (shouldPrefixActionWithPeonResult) {\n            localAction = prefixAction({\n                action: localAction,\n                prefix: peonActionTypePrefix\n            });\n        }\n\n        super.dispatch(localAction as any);\n\n    }\n\n    next<V extends Action = Action>(action: V): void {\n\n        let localAction = action;\n\n        const shouldPrefixActionWithPeonResult = shouldPrefixAction({\n            action,\n            actualBroadcastRole: this.broadcastRole,\n            triggeringBroadcastRole: BroadcastRole.Peon,\n            triggeringActionPrefixes: this.config.actionTypesToPrefixWithPeon\n        });\n\n        if (shouldPrefixActionWithPeonResult) {\n            localAction = prefixAction({\n                action: localAction,\n                prefix: peonActionTypePrefix\n            });\n        }\n\n        super.next(localAction);\n\n    }\n\n}\n\nexport const broadcastStoreProvider: ClassProvider = {\n    provide: Store,\n    useClass: BroadcastStoreDecorator\n};\n","import { BroadcastChannelLike } from \"../models\";\nimport { isNullOrUndefined } from \"../../utils/null-checking.functions\";\n\nexport class BroadcastChannelLocalStorageFallbackService implements BroadcastChannelLike {\n\n    constructor(private readonly channelId: string) {\n    }\n\n    addEventListener(type, listener, options?: boolean | AddEventListenerOptions): void {\n        window.addEventListener(\"storage\", (ev: StorageEvent) => {\n            if (ev.key !== this.channelId) { return; }\n            if (isNullOrUndefined(ev.newValue)) { return; }\n\n            const message = JSON.parse(ev.newValue);\n            listener({\n                data: message\n            });\n        });\n    }\n\n    postMessage(message: any): void {\n        const messageJson = JSON.stringify(message);\n        window.localStorage.setItem(this.channelId, messageJson);\n    }\n\n}\n","import { BroadcastHeartbeat, MessageEventLike } from \"../models\";\nimport { isDate } from \"lodash\";\n\n/**\n * Parses heartbeats from message events\n *\n * This is needed to ensure that the objects resulting from broadcast channels\n * and local storage look the same\n */\nexport function getBroadcastHeartbeatFromMessageEvent(messageEvent: MessageEventLike, canBeLeader: boolean): BroadcastHeartbeat {\n    return {\n        dataId: messageEvent.data.dataId,\n        participantId: messageEvent.data.participantId,\n        canBeLeader,\n        participantCreationDate: isDate(messageEvent.data.participantCreationDate)\n            ? messageEvent.data.participantCreationDate\n            : new Date(messageEvent.data.participantCreationDate as string)\n    };\n}\n","import { fromEventPattern, Observable } from \"rxjs\";\nimport { ClassProvider, Inject, Injectable } from \"@angular/core\";\nimport { map } from \"rxjs/operators\";\nimport { BroadcastChannelLocalStorageFallbackService } from \"./broadcast-channel-local-storage-fallback.service\";\nimport { getBroadcastHeartbeatFromMessageEvent } from \"../functions/get-broadcast-heartbeat-from-message-event.function\";\nimport {\n    BroadcastAction,\n    BroadcastChannelLike,\n    BroadcastConfig,\n    BroadcastHeartbeat,\n    MessageEventLike\n} from \"../models\";\nimport { BROADCAST_CONFIG } from \"../constants/broadcast-config-injection-token.constant\";\n\nexport abstract class BroadcastChannelService {\n\n    abstract postHeartbeat(heartbeat: BroadcastHeartbeat): void;\n\n    abstract postAction(action: BroadcastAction): void;\n\n    abstract getHeartbeat$(): Observable<BroadcastHeartbeat>;\n\n    abstract getAction$(): Observable<BroadcastAction>;\n\n}\n\n@Injectable()\nexport class BroadcastChannelServiceImpl extends BroadcastChannelService {\n\n    private readonly heartbeatBroadcastChannel: BroadcastChannelLike;\n    private readonly actionBroadcastChannel: BroadcastChannelLike;\n\n    constructor(\n        @Inject(BROADCAST_CONFIG)\n        private readonly config: BroadcastConfig\n    ) {\n        super();\n\n        if (\"BroadcastChannel\" in self) {\n\n            this.heartbeatBroadcastChannel = new BroadcastChannel(\n                this.config.heartbeatBroadcastChannelId\n            );\n            this.actionBroadcastChannel = new BroadcastChannel(\n                this.config.actionBroadcastChannelId\n            );\n\n        } else {\n            this.heartbeatBroadcastChannel = new BroadcastChannelLocalStorageFallbackService(\n                this.config.heartbeatBroadcastChannelId\n            );\n            this.actionBroadcastChannel = new BroadcastChannelLocalStorageFallbackService(\n                this.config.actionBroadcastChannelId\n            );\n        }\n    }\n\n    private addBroadcastListenerForHeartbeat = (handler) => {\n        this.heartbeatBroadcastChannel.addEventListener(\"message\", handler);\n    }\n\n    private addBroadcastListenerForAction = (handler) => {\n        this.actionBroadcastChannel.addEventListener(\"message\", handler);\n    }\n\n\n    getAction$(): Observable<BroadcastAction> {\n        return fromEventPattern(\n            this.addBroadcastListenerForAction\n        ).pipe(\n            map((messageEvent: MessageEventLike) => messageEvent.data as BroadcastAction)\n        );\n    }\n\n    getHeartbeat$(): Observable<BroadcastHeartbeat> {\n        return fromEventPattern(\n            this.addBroadcastListenerForHeartbeat\n        ).pipe(\n            map(x => getBroadcastHeartbeatFromMessageEvent(x as any, this.config.canBeLeader))\n        );\n    }\n\n    postAction(action: BroadcastAction): void {\n        this.actionBroadcastChannel.postMessage(action);\n    }\n\n    postHeartbeat(heartbeat: BroadcastHeartbeat): void {\n        this.heartbeatBroadcastChannel.postMessage(heartbeat);\n    }\n\n}\n\nexport const broadcastChannelServiceProvider: ClassProvider = {\n    provide: BroadcastChannelService,\n    useClass: BroadcastChannelServiceImpl\n};\n","import { BroadcastHeartbeat, BroadcastParticipant } from \"../models\";\n\nexport interface CreateBroadcastHeartbeatPayload {\n    readonly participant: Readonly<BroadcastParticipant>;\n    readonly dataId?: any;\n}\n\nexport function createBroadcastHeartbeat(\n    payload: CreateBroadcastHeartbeatPayload\n): BroadcastHeartbeat {\n    return {\n        participantId: payload.participant.participantId,\n        participantCreationDate: payload.participant.participantCreationDate,\n        dataId: payload.dataId,\n        canBeLeader: payload.participant.canBeLeader\n    };\n}\n","import { createGuid } from \"./create-guid.function\";\nimport { BroadcastParticipant } from \"../models\";\n\nexport function createBroadcastParticipant(canBeLeader: boolean): BroadcastParticipant {\n    return {\n        participantId: createGuid(),\n        participantCreationDate: new Date(),\n        canBeLeader\n    };\n}\n","import { Action } from \"@ngrx/store\";\nimport { leaderActionTypePrefix, peonActionTypePrefix } from \"../actions\";\n\nexport function trimIncomingBroadcastAction(action: Action) {\n\n    if (action.type.startsWith(peonActionTypePrefix)) {\n        return Object.assign({}, action, {\n            type: action.type.replace(peonActionTypePrefix, \"\")\n        } as Action) as Action;\n    } else if (action.type.startsWith(leaderActionTypePrefix)) {\n        return Object.assign({}, action, {\n            type: action.type.replace(leaderActionTypePrefix, \"\")\n        } as Action) as Action;\n    } else {\n        throw Error(\"Broadcasted actions must either be marked as Peon or Leader actions\");\n    }\n}\n","import * as _ from \"lodash\";\nimport { BroadcastHeartbeat } from \"../models\";\nimport { isNullOrUndefined } from \"../../utils/null-checking.functions\";\n\nexport interface GetDistinctHeartbeatsForChannelPayload {\n    readonly channelDataId?: any;\n    readonly heartbeats: ReadonlyArray<BroadcastHeartbeat>;\n}\n\n/**\n * Returns distinct heartbeats for a given data channel\n *\n * If no dataId is passed to identify the channel, an empty array is returned\n * Heartbeats are distinguished by participantId\n *\n * @param payload\n */\nexport function getDistinctHeartbeatsForChannel(\n    payload: GetDistinctHeartbeatsForChannelPayload\n): BroadcastHeartbeat[] {\n\n    if (isNullOrUndefined(payload.channelDataId)) { return []; }\n\n    const distinctHearbeats = _.uniqBy(payload.heartbeats, (x) => x.participantId);\n\n    return distinctHearbeats.filter(x => {\n        if (isNullOrUndefined(x.dataId)) { return false; }\n\n        return _.isEqual(x.dataId, payload.channelDataId);\n    });\n\n}\n","import * as _ from \"lodash\";\nimport { BroadcastHeartbeat } from \"../models\";\n\nexport function getHeartbeatFromOldestParticipant(\n    payload: ReadonlyArray<BroadcastHeartbeat>\n): BroadcastHeartbeat {\n    return _.minBy(payload, x => x.participantCreationDate);\n}\n","import { getDistinctHeartbeatsForChannel } from \"./get-distinct-heartbeats-for-channel.function\";\nimport { getHeartbeatFromOldestParticipant } from \"./get-heartbeat-form-oldest-participant.function\";\nimport { BroadcastRole } from \"../models/core/broadcast-role.model\";\nimport { BroadcastHeartbeat } from \"../models/core/broadcast-heartbeat.model\";\nimport { isNullOrUndefined } from \"../../utils/null-checking.functions\";\n\nexport interface ShouldBroadcastParticipantChangeRolePayload {\n    readonly heartbeats: ReadonlyArray<BroadcastHeartbeat>;\n    readonly participantId: string;\n    readonly currentBroadcastRole: BroadcastRole;\n}\n\nexport interface ShouldBroadcastParticipantChangeRoleResult {\n    readonly shouldChangeRole: boolean;\n    readonly newBroadcastRole?: BroadcastRole;\n}\n\nexport const shouldDoNothing: ShouldBroadcastParticipantChangeRoleResult = {\n    shouldChangeRole: false\n};\n\nexport const shouldSwitchToNone: ShouldBroadcastParticipantChangeRoleResult = {\n    newBroadcastRole: BroadcastRole.None,\n    shouldChangeRole: true\n};\n\nexport const shouldSwitchToLeader: ShouldBroadcastParticipantChangeRoleResult = {\n    newBroadcastRole: BroadcastRole.Leader,\n    shouldChangeRole: true\n};\n\nexport const shouldSwitchToPeon: ShouldBroadcastParticipantChangeRoleResult = {\n    newBroadcastRole: BroadcastRole.Peon,\n    shouldChangeRole: true\n};\n\nexport function shouldBroadcastParticipantChangeRole(\n    payload: ShouldBroadcastParticipantChangeRolePayload\n): ShouldBroadcastParticipantChangeRoleResult {\n\n    const ownHeartbeat = payload.heartbeats.find(x => x.participantId === payload.participantId);\n\n    if (isNullOrUndefined(ownHeartbeat.dataId)) {\n        if (payload.currentBroadcastRole !== BroadcastRole.None) return shouldSwitchToNone;\n        else return shouldDoNothing;\n    }\n\n    const distinctHeartbeatsForOwnChannel = getDistinctHeartbeatsForChannel({\n        heartbeats: payload.heartbeats,\n        channelDataId: ownHeartbeat.dataId\n    });\n\n    if (distinctHeartbeatsForOwnChannel.length < 2) {\n        if (payload.currentBroadcastRole !== BroadcastRole.None) return shouldSwitchToNone;\n        else return shouldDoNothing;\n    }\n\n    const elderSender = getHeartbeatFromOldestParticipant(distinctHeartbeatsForOwnChannel.filter(x => x.canBeLeader));\n\n    if (!elderSender) {\n        if (payload.currentBroadcastRole !== BroadcastRole.None) return shouldSwitchToNone;\n        else return shouldDoNothing;\n    }\n\n    if (elderSender.participantId === payload.participantId) {\n        if (payload.currentBroadcastRole !== BroadcastRole.Leader) return shouldSwitchToLeader;\n        else return shouldDoNothing;\n    } else {\n        if (payload.currentBroadcastRole !== BroadcastRole.Peon) return shouldSwitchToPeon;\n        else return shouldDoNothing;\n    }\n\n}\n","import {Action} from \"@ngrx/store\";\nimport { BroadcastAction, BroadcastParticipant } from \"../models\";\n\nexport interface CreateBroadcastActionPayload {\n    readonly participant: Readonly<BroadcastParticipant>;\n    readonly dataId: any;\n    readonly action: Readonly<Action>;\n}\n\nexport function createBroadcastAction(\n    payload: CreateBroadcastActionPayload\n): BroadcastAction {\n\n    return Object.assign({}, payload.action, {\n        type: payload.action.type,\n        participantId: payload.participant.participantId,\n        participantCreationDate: payload.participant.participantCreationDate,\n        dataId: payload.dataId,\n        canBeLeader: payload.participant.canBeLeader\n    } as Partial<BroadcastAction>) as BroadcastAction;\n\n}\n","import * as _ from \"lodash\";\nimport { leaderActionTypePrefix, peonActionTypePrefix } from \"../actions\";\nimport { BroadcastAction, BroadcastRole } from \"../models\";\nimport { isNullOrUndefined } from \"../../utils/null-checking.functions\";\n\nexport interface FilterIncomingBroadcastActionPayload {\n    readonly action: BroadcastAction;\n    readonly dataId?: any;\n    readonly ownBroadcastRole: BroadcastRole;\n}\n\nexport function filterIncomingBroadcastAction(\n    payload: FilterIncomingBroadcastActionPayload): boolean {\n\n    const doDataIdsExist = !isNullOrUndefined(payload.action.dataId)\n        && !isNullOrUndefined(payload.dataId);\n\n    if (!doDataIdsExist) {\n        return false;\n    }\n\n    const areDataIdsEqual = _.isEqual(payload.action.dataId, payload.dataId);\n\n    if (!areDataIdsEqual) {\n        return false;\n    }\n\n    const peonActionArrivesAtLeader = payload.action.type.startsWith(peonActionTypePrefix)\n        && payload.ownBroadcastRole === BroadcastRole.Leader;\n\n    if (peonActionArrivesAtLeader) {\n        return true;\n    }\n\n    const leaderActionArrivesAtPeon = payload.action.type.startsWith(leaderActionTypePrefix)\n        && payload.ownBroadcastRole === BroadcastRole.Peon;\n\n    return leaderActionArrivesAtPeon;\n\n}\n","import { BroadcastRole, BroadcastRoleDisplayConfig } from \"../models\";\nimport { defaultBroadcastRoleDisplayConfig } from \"../constants/default-broadcast-role-display-config.constant\";\nimport { isNullOrUndefined } from \"../../utils/null-checking.functions\";\n\nexport interface ShouldUpdateBrowserTabBroadcastRoleDisplayPayload {\n    readonly currentBrowserTabTitle: Readonly<string>;\n    readonly currentBroadcastRole: BroadcastRole;\n}\n\nexport interface ShouldUpdateBrowserTabBroadcastRoleDisplayResult {\n    shouldUpdateRoleDisplay: boolean;\n    updatedBrowserTabTitle?: Readonly<string>;\n}\n\nexport interface ShouldUpdateBrowserTabBroadcastRoleDisplayConfig extends BroadcastRoleDisplayConfig {\n}\n\nexport const defaultShouldUpdateBrowserTabBroadcastRoleDisplayConfig: ShouldUpdateBrowserTabBroadcastRoleDisplayConfig\n    = defaultBroadcastRoleDisplayConfig;\n\nexport function shouldUpdateBrowserTabBroadcastRoleDisplay(\n    payload: ShouldUpdateBrowserTabBroadcastRoleDisplayPayload,\n    config = defaultShouldUpdateBrowserTabBroadcastRoleDisplayConfig\n): ShouldUpdateBrowserTabBroadcastRoleDisplayResult {\n\n    let updatedTabTitle: string;\n    let broadcastRoleLabel: string;\n\n    const result: ShouldUpdateBrowserTabBroadcastRoleDisplayResult = {\n        shouldUpdateRoleDisplay: null,\n        updatedBrowserTabTitle: null\n    };\n\n    switch (payload.currentBroadcastRole) {\n        case BroadcastRole.None:\n            break;\n        case BroadcastRole.Leader:\n            broadcastRoleLabel = config.leaderBrowserTabTitleSuffix;\n            break;\n        case BroadcastRole.Peon:\n            broadcastRoleLabel = config.peonBrowserTabTitleSuffix;\n            break;\n    }\n\n    if (!isNullOrUndefined(broadcastRoleLabel)) {\n        updatedTabTitle = payload.currentBrowserTabTitle;\n\n        if (updatedTabTitle.endsWith(config.leaderBrowserTabTitleSuffix)) {\n            updatedTabTitle = updatedTabTitle.replace(config.leaderBrowserTabTitleSuffix, \"\");\n        } else if (updatedTabTitle.endsWith(config.peonBrowserTabTitleSuffix)) {\n            updatedTabTitle = updatedTabTitle.replace(config.peonBrowserTabTitleSuffix, \"\");\n        }\n\n        updatedTabTitle += broadcastRoleLabel;\n\n    } else {\n        updatedTabTitle = payload.currentBrowserTabTitle;\n\n        if (updatedTabTitle.endsWith(config.leaderBrowserTabTitleSuffix)) {\n            updatedTabTitle = updatedTabTitle.replace(config.leaderBrowserTabTitleSuffix, \"\");\n        } else if (updatedTabTitle.endsWith(config.peonBrowserTabTitleSuffix)) {\n            updatedTabTitle = updatedTabTitle.replace(config.peonBrowserTabTitleSuffix, \"\");\n        }\n\n    }\n\n    if (updatedTabTitle !== payload.currentBrowserTabTitle) {\n        result.updatedBrowserTabTitle = updatedTabTitle;\n    }\n    result.shouldUpdateRoleDisplay = !isNullOrUndefined(result.updatedBrowserTabTitle);\n\n    return result;\n\n}\n","import { Action } from \"@ngrx/store\";\nimport { compositeActionTypePrefix, trackRequestActionTypePrefix } from \"../actions\";\nimport { authenticationActionTypePrefix } from \"../../authentication/actions\";\n\nexport function filterActionToPrefixWithLeaderPredicate(action: Action): boolean {\n    return action.type.startsWith(compositeActionTypePrefix)\n        || action.type.startsWith(trackRequestActionTypePrefix)\n        || action.type.startsWith(authenticationActionTypePrefix);\n}\n","import {filter} from \"rxjs/operators\";\nimport {notNullOrUndefined} from \"./null-checking.functions\";\n\nexport function filterNotNullOrUndefined<T>() {\n    return filter<T>(notNullOrUndefined);\n}\n\n","import { Action } from \"@ngrx/store\";\nimport { BroadcastConfig } from \"../models\";\nimport { compositeActionTypePrefix } from \"../actions\";\nimport { CompositeEntityAction } from \"entity-store\";\n\nexport function tryTrimSelectionFromCompositeEntityAction(action: Action,\n                                                          config: BroadcastConfig): any {\n\n    if (action.type.startsWith(compositeActionTypePrefix)) {\n\n        const typedAction = action as CompositeEntityAction<any, any>;\n\n        if (config.syncSelection) {\n            /**\n             * Synchronize everything but the selection\n             * which the client has to manage itself\n             */\n            return new CompositeEntityAction({\n                add: typedAction.payload.add,\n                clear: typedAction.payload.clear,\n                remove: typedAction.payload.remove,\n                set: typedAction.payload.set,\n                update: typedAction.payload.update,\n                select: typedAction.payload.select\n            });\n        } else {\n            /**\n             * Synchronize everything but the selection\n             * which the client has to manage itself\n             */\n            return new CompositeEntityAction({\n                add: typedAction.payload.add,\n                clear: typedAction.payload.clear,\n                remove: typedAction.payload.remove,\n                set: typedAction.payload.set,\n                update: typedAction.payload.update\n            });\n        }\n\n\n    } else {\n        return action;\n    }\n\n}\n","import { EffectConfig } from \"@ngrx/effects\";\n\nexport const withoutDispatch: EffectConfig & {\n    functional?: false;\n    dispatch: false;\n} = {\n    dispatch: false\n};\n","import { BroadcastHeartbeat, BroadcastParticipant } from \"../models\";\nimport { createBroadcastHeartbeat } from \"./create-broadcast-heartbeat.function\";\n\nexport function getBroadcastHeartbeatsForInterval<TDataId = any>(payload: {\n    heartbeatsFromOtherParticipants: ReadonlyArray<BroadcastHeartbeat>;\n    participant: BroadcastParticipant;\n    dataId: TDataId;\n}): BroadcastHeartbeat[] {\n\n    const ownHeartbeat = createBroadcastHeartbeat({\n        participant: payload.participant,\n        dataId: payload.dataId\n    });\n\n    return payload.heartbeatsFromOtherParticipants\n        .concat([ownHeartbeat]);\n}\n","import { of } from \"rxjs\";\n\nexport function ofNull<T>() {\n    return of<T>(null);\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { Store } from \"@ngrx/store\";\nimport { bufferTime, distinctUntilChanged, filter, first, map, switchMap, tap } from \"rxjs/operators\";\nimport { BroadcastState, getOwnBroadcastRoleSelector } from \"./store\";\nimport { from, interval } from \"rxjs\";\nimport { createBroadcastHeartbeat } from \"./functions/create-broadcast-heartbeat.function\";\nimport { createBroadcastParticipant } from \"./functions/create-broadcast-participant.function\";\nimport {\n    leaderActionTypePrefix,\n    openUrlAsPeon,\n    peonActionTypePrefix,\n    requestInitialData,\n    setBroadcastChannelDataId,\n    setOwnBroadcastRole\n} from \"./actions\";\nimport { trimIncomingBroadcastAction } from \"./functions/trim-incoming-broadcast-action.function\";\nimport { shouldBroadcastParticipantChangeRole } from \"./functions/should-broadcast-participant-change-role.function\";\nimport { createBroadcastAction } from \"./functions/create-broadcast-action.function\";\nimport { filterIncomingBroadcastAction } from \"./functions/filter-incoming-broadcast-action.function\";\nimport { shouldUpdateBrowserTabBroadcastRoleDisplay } from \"./functions/should-update-browser-tab-broadcast-role-display.function\";\nimport { BroadcastChannelService } from \"./services/broadcast-channel.service\";\nimport { filterActionToPrefixWithLeaderPredicate } from \"./functions/filter-action-to-prefix-with-leader.predicate\";\nimport { prefixAction } from \"./functions/prefix-action.function\";\nimport { BroadcastConfig, BroadCastInitialStateRules, BroadcastRole, SendInitialStateSignature } from \"./models\";\nimport { BROADCAST_CONFIG } from \"./constants/broadcast-config-injection-token.constant\";\nimport { filterNotNullOrUndefined } from \"../utils/filter-not-null-or-undefined.function\";\nimport { notNullOrUndefined } from \"../utils/null-checking.functions\";\nimport { DgpContainer } from \"../utils/container.component-base\";\nimport { tryTrimSelectionFromCompositeEntityAction } from \"./functions/try-trim-selection-from-composite-entity-action.function\";\nimport { withoutDispatch } from \"../utils/without-dispatch.constant\";\nimport { getBroadcastHeartbeatsForInterval } from \"./functions/get-broadcast-heartbeats-for-interval.function\";\nimport { ofNull } from \"../utils/of-null.function\";\n\n\n@Injectable()\nexport class BroadcastEffects extends DgpContainer<BroadcastState> {\n\n    readonly participant = createBroadcastParticipant(this.config.canBeLeader);\n    readonly heartbeat$ = interval(this.config.heartbeartBroadcastInterval);\n\n    selectedDataId: any;\n\n    ownBroadcastRole: BroadcastRole;\n\n    // noinspection JSUnusedGlobalSymbols\n    readonly cacheDataId$ = createEffect(() => this.actions$.pipe(\n        ofType(setBroadcastChannelDataId),\n        tap(action => this.selectedDataId = action.payload)\n    ), withoutDispatch);\n\n    // noinspection JSUnusedGlobalSymbols\n    readonly cacheOwnBroadcastRole$ = createEffect(() => this.select(getOwnBroadcastRoleSelector).pipe(\n        tap(ownBroadcastRole => this.ownBroadcastRole = ownBroadcastRole)\n    ), withoutDispatch);\n\n    readonly broadcastHeartbeat$ = createEffect(() => this.heartbeat$.pipe(\n        map(() => createBroadcastHeartbeat({\n            participant: this.participant, dataId: this.selectedDataId\n        })),\n        tap(heartbeat => this.channelService.postHeartbeat(heartbeat))\n    ), withoutDispatch);\n\n    readonly observeBroadcastHeartbeats$ = createEffect(() => this.channelService.getHeartbeat$().pipe(\n        bufferTime(this.config.incomingHeartbeatBufferInterval),\n        map(heartbeatsFromOtherParticipants => getBroadcastHeartbeatsForInterval({\n            heartbeatsFromOtherParticipants,\n            participant: this.participant,\n            dataId: this.selectedDataId\n        })),\n        map(heartbeats => {\n\n            const shouldChangeRoleResult = shouldBroadcastParticipantChangeRole({\n                currentBroadcastRole: this.ownBroadcastRole,\n                heartbeats,\n                participantId: this.participant.participantId\n            });\n            const broadcastRole = shouldChangeRoleResult.newBroadcastRole;\n\n            if (shouldChangeRoleResult.shouldChangeRole) return setOwnBroadcastRole({broadcastRole});\n            else return null;\n\n        }),\n        filterNotNullOrUndefined()\n    ));\n\n    readonly displayBroadcastRoleInBrowserTabTitle$ = createEffect(() => this.actions$.pipe(\n        ofType(setOwnBroadcastRole),\n        filter(() => notNullOrUndefined(this.config.updateBrowserTabTitleConfig)),\n        tap(action => {\n\n            const result = shouldUpdateBrowserTabBroadcastRoleDisplay({\n                currentBroadcastRole: action.broadcastRole,\n                currentBrowserTabTitle: window.document.title\n            }, this.config.updateBrowserTabTitleConfig);\n\n            if (!result.shouldUpdateRoleDisplay) return;\n\n            window.document.title = result.updatedBrowserTabTitle;\n\n        })\n    ), withoutDispatch);\n\n    readonly broadcastPeonAction$ = createEffect(() => this.actions$.pipe(\n        filter(action => action.type.startsWith(peonActionTypePrefix)),\n        map(action => createBroadcastAction({\n            participant: this.participant,\n            dataId: this.selectedDataId,\n            action\n        })),\n        tap(actionMessage => this.channelService.postAction(actionMessage))\n    ), withoutDispatch);\n\n    readonly broadcastLeaderAction$ = createEffect(() => this.actions$.pipe(\n        filter(action => action.type.startsWith(leaderActionTypePrefix)),\n        map(action => createBroadcastAction({\n            participant: this.participant,\n            dataId: this.selectedDataId,\n            action\n        })),\n        tap(actionMessage => this.channelService.postAction(actionMessage))\n    ), withoutDispatch);\n\n    readonly createLeaderAction$ = createEffect(() => this.select(getOwnBroadcastRoleSelector).pipe(\n        switchMap(broadcastRole => {\n\n            if (broadcastRole === BroadcastRole.Leader) {\n                return this.actions$.pipe(\n                    filter(filterActionToPrefixWithLeaderPredicate),\n                    map(x => tryTrimSelectionFromCompositeEntityAction(x, this.config))\n                );\n            } else return ofNull();\n\n        }),\n        filterNotNullOrUndefined(),\n        map(action => prefixAction({prefix: leaderActionTypePrefix, action}))\n    ));\n\n    readonly observeBroadcastActions$ = createEffect(() => this.channelService.getAction$().pipe(\n        filter(action => filterIncomingBroadcastAction({\n            action,\n            dataId: this.selectedDataId,\n            ownBroadcastRole: this.ownBroadcastRole\n        })),\n        map(x => trimIncomingBroadcastAction(x))\n    ));\n\n    // noinspection JSUnusedGlobalSymbols\n    readonly sendInitialData$ = createEffect(() => this.actions$.pipe(\n        ofType(requestInitialData),\n        switchMap(() => this.select(getOwnBroadcastRoleSelector).pipe(first())),\n        filter(role => role === BroadcastRole.Leader && notNullOrUndefined(this.config.sendInitialState)),\n        switchMap(() => this.store.pipe(first())),\n        switchMap(state => {\n\n            if (Array.isArray(this.config.sendInitialState)) {\n                const actionFactories = this.config.sendInitialState as BroadCastInitialStateRules<any>;\n                return from(actionFactories.map(actionFactory => actionFactory(state as any)));\n            } else {\n                // noinspection JSDeprecatedSymbols\n                const actionFactory = this.config.sendInitialState as SendInitialStateSignature<any>;\n                return from([\n                    prefixAction({\n                        action: actionFactory(state as any),\n                        prefix: leaderActionTypePrefix\n                    })\n                ]);\n            }\n\n        })\n    ));\n\n    // noinspection JSUnusedGlobalSymbols\n    readonly requestInitialData$ = createEffect(() => this.select(getOwnBroadcastRoleSelector).pipe(\n        distinctUntilChanged(),\n        filter(role => role === BroadcastRole.Peon && notNullOrUndefined(this.config.sendInitialState)),\n        map(() => prefixAction({\n            action: requestInitialData,\n            prefix: peonActionTypePrefix\n        }))\n    ));\n\n    // noinspection JSUnusedGlobalSymbols\n    readonly openUrlAsPeon$ = createEffect(() => this.actions$.pipe(\n        ofType(openUrlAsPeon),\n        switchMap(action => this.select(getOwnBroadcastRoleSelector).pipe(\n            first(),\n            tap(broadcastRole => {\n                window.open(action.url + \"?startAsPeon=true\");\n                if (broadcastRole !== BroadcastRole.Leader) return;\n                this.dispatch(setOwnBroadcastRole({broadcastRole: BroadcastRole.Leader}));\n            })\n        ))\n    ), withoutDispatch);\n\n    constructor(\n        private readonly actions$: Actions,\n        protected readonly store: Store<BroadcastState>,\n        private readonly channelService: BroadcastChannelService,\n        @Inject(BROADCAST_CONFIG)\n        private readonly config: BroadcastConfig\n    ) {\n        super(store);\n    }\n\n}\n","import { FactoryProvider, InjectionToken, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { ActionReducerMap, StoreModule } from \"@ngrx/store\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\nimport { broadcastReducer, BroadcastState, broadcastStoreFeature } from \"./store\";\nimport { broadcastStoreProvider } from \"./broadcast-store.decorator\";\nimport { broadcastChannelServiceProvider } from \"./services/broadcast-channel.service\";\nimport { BroadcastEffects } from \"./effects\";\nimport { NoPeonGuard } from \"./guards/no-peon.guard\";\nimport { EntityTypeMap } from \"entity-store\";\nimport { BroadcastConfig } from \"./models\";\nimport { BROADCAST_CONFIG } from \"./constants/broadcast-config-injection-token.constant\";\nimport { defaultBroadcastConfig } from \"./constants/default-broadcast-config.model\";\n\nexport const BROADCAST_REDUCER = new InjectionToken<ActionReducerMap<BroadcastState>>(\"BroadcastStoreReducer\");\n\nexport function broadcastReducerFactory() {\n    return broadcastReducer;\n}\n\nexport const broadcastReducerProvider: FactoryProvider = {\n    provide: BROADCAST_REDUCER,\n    useFactory: broadcastReducerFactory\n};\n\n@NgModule({\n    imports: [\n        StoreModule.forFeature(broadcastStoreFeature, BROADCAST_REDUCER),\n        EffectsModule.forFeature([\n            BroadcastEffects\n        ]),\n        MatSnackBarModule\n    ],\n    providers: [\n        broadcastChannelServiceProvider,\n        {\n            provide: BROADCAST_CONFIG,\n            useValue: defaultBroadcastConfig\n        },\n        NoPeonGuard,\n        broadcastReducerProvider\n    ]\n})\nexport class DgpBroadcastStoreModule {\n\n    static forRoot<TEntityTypeMap extends EntityTypeMap = { [key: string]: any; }, TStoreFeature = string>(\n        config: BroadcastConfig<TEntityTypeMap, TStoreFeature> = defaultBroadcastConfig as any\n    ): ModuleWithProviders<DgpBroadcastStoreModule> {\n        return {\n            ngModule: DgpBroadcastStoreModule,\n            providers: [{\n                provide: BROADCAST_CONFIG,\n                useValue: config\n            }, broadcastStoreProvider]\n        };\n    }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { ThemePalette } from \"@angular/material/core\";\n\nexport interface RemovalDialogButtonConfig {\n    readonly label: string;\n    readonly matIconName: string;\n    readonly color?: ThemePalette;\n    readonly returnValue: boolean | null;\n}\n\nexport const cancelButtonConfig: RemovalDialogButtonConfig = {\n    label: \"Cancel\",\n    returnValue: null,\n    matIconName: \"close\"\n};\n\nexport const confirmButtonConfig: RemovalDialogButtonConfig = {\n    label: \"Confirm\",\n    returnValue: true,\n    matIconName: \"delete\",\n    color: \"primary\"\n};\n\n@Component({\n    selector: \"dgp-confirm-dialog\",\n    template: `\n        <h2 mat-dialog-title>\n            {{ title }}\n        </h2>\n\n        <mat-dialog-content>\n            <ng-content></ng-content>\n        </mat-dialog-content>\n\n        <mat-dialog-actions>\n            <button [mat-dialog-close]=\"cancelButtonConfig.returnValue\"\n                    [color]=\"cancelButtonConfig.color\"\n                    mat-raised-button>\n                <mat-icon>{{cancelButtonConfig.matIconName}}</mat-icon>\n                {{ cancelButtonConfig.label }}\n            </button>\n\n            <button [mat-dialog-close]=\"confirmButtonConfig.returnValue\"\n                    mat-raised-button\n                    [color]=\"confirmButtonConfig.color\">\n                <mat-icon>{{confirmButtonConfig.matIconName}}</mat-icon>\n                {{confirmButtonConfig.label}}\n            </button>\n        </mat-dialog-actions>\n\n    `,\n    styles: [`\n        :host {\n            display: block;\n            width: 360px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpConfirmDialogComponent {\n\n    @Input()\n    title: string;\n\n    @Input()\n    confirmButtonConfig = confirmButtonConfig;\n\n    @Input()\n    cancelButtonConfig = cancelButtonConfig;\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { DgpConfirmDialogComponent } from \"./containers/confirm-dialog.component\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\n\n@NgModule({\n    imports: [\n        MatDialogModule,\n        MatButtonModule,\n        MatIconModule\n    ],\n    declarations: [\n        DgpConfirmDialogComponent\n    ],\n    exports: [\n        DgpConfirmDialogComponent\n    ]\n})\nexport class DgpConfirmDialogModule {\n}\n","import { Component, Inject, TemplateRef } from \"@angular/core\";\nimport { MAT_DIALOG_DATA } from \"@angular/material/dialog\";\n\n@Component({\n    selector: \"dgp-dialog-menu\",\n    template: `\n        <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n    `,\n    styles: [``],\n    standalone: false\n})\nexport class DgpDialogMenuComponent {\n    constructor(\n        @Inject(MAT_DIALOG_DATA) readonly template: TemplateRef<any>\n    ) {\n    }\n}\n","import { DialogPosition } from \"@angular/material/dialog\";\nimport { TriggerElementSizes } from \"./models\";\n\nexport function computeTriggerElementSizes(payload: {\n    readonly triggerElementBoundingRect: ClientRect;\n    readonly window: Window;\n    readonly triggerButtonElement: HTMLElement;\n}): TriggerElementSizes {\n\n    return {\n        offsetTop: (payload.triggerElementBoundingRect.top + payload.triggerButtonElement.offsetHeight),\n        offsetLeft: payload.triggerElementBoundingRect.left,\n        offsetRight: payload.triggerElementBoundingRect.right,\n        availableSpace: {\n            left: payload.triggerElementBoundingRect.left,\n            right: payload.window.innerWidth - (payload.triggerElementBoundingRect.left),\n            bottom: payload.window.innerHeight - (payload.triggerElementBoundingRect.top + payload.triggerButtonElement.offsetHeight),\n            top: payload.triggerElementBoundingRect.top\n        }\n    };\n\n}\n\nexport function getDialogPositionFromTriggerElementSizes(payload: {\n    readonly triggerElementSizes: TriggerElementSizes;\n    readonly triggerButtonElement: HTMLElement;\n    readonly configureDialogWidth: number;\n}): DialogPosition {\n\n    let result: DialogPosition = {\n        top: payload.triggerElementSizes.offsetTop + \"px\",\n        left: payload.triggerElementSizes.offsetLeft + \"px\",\n        bottom: null,\n        right: null\n    };\n\n\n    if (payload.triggerElementSizes.availableSpace.right < payload.configureDialogWidth\n        && payload.triggerElementSizes.availableSpace.left >= payload.configureDialogWidth) {\n        result = {\n            ...result,\n            left: (payload.triggerElementSizes.offsetRight - payload.configureDialogWidth) + \"px\"\n        };\n    }\n\n    if (payload.triggerElementSizes.availableSpace.bottom < 240\n        && payload.triggerElementSizes.availableSpace.top >= 240) {\n        result = {\n            ...result,\n            top: null,\n            bottom: null,\n            left: null,\n            right: null\n        };\n    }\n\n    return result;\n}\n","import { Injectable } from \"@angular/core\";\nimport { MatDialogRef } from \"@angular/material/dialog\";\n\n@Injectable({\n    providedIn: \"root\"\n})\nexport class DgpDialogMenuService {\n\n    private currentDialogMenu: MatDialogRef<any>;\n\n    cacheCurrentDialogMenu(editor: MatDialogRef<any>) {\n        this.currentDialogMenu = editor;\n    }\n\n    closeCurrentDialogMenu() {\n        if (!this.currentDialogMenu) {\n            console.warn(\"DgpDialogMenuService.closeCurrentDialogMenu has been called but a dialog is currently open.\");\n        } else {\n            this.currentDialogMenu.close();\n            this.currentDialogMenu = null;\n        }\n\n    }\n\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, TemplateRef } from \"@angular/core\";\nimport { MatDialog, MatDialogConfig, MatDialogRef } from \"@angular/material/dialog\";\nimport { computeTriggerElementSizes, getDialogPositionFromTriggerElementSizes } from \"../../table-cell-editor/functions\";\nimport { DgpDialogMenuComponent } from \"../components/dialog-menu.component\";\nimport { DgpDialogMenuService } from \"../services/dialog-menu.service\";\n\n\n@Directive({\n    selector: \"[dgpDialogMenuTrigger]\",\n    standalone: false\n})\nexport class DgpDialogMenuTriggerDirective {\n\n    @Input()\n    dialogConfig: MatDialogConfig = {\n        width: \"240px\"\n    };\n\n    @Output()\n    readonly dialogMenuOpened = new EventEmitter();\n\n    @Output()\n    readonly dialogMenuClosed = new EventEmitter();\n\n    @Input()\n    disabled: boolean;\n\n    @Input()\n    templateRef: TemplateRef<any>;\n\n    private dialogRef: MatDialogRef<any>;\n\n    constructor(\n        private readonly triggerElRef: ElementRef,\n        private readonly matDialog: MatDialog,\n        private readonly service: DgpDialogMenuService\n    ) {\n    }\n\n    @HostListener(\"click\")\n    async openDialogMenu() {\n\n        if (this.disabled) {\n            return;\n        }\n\n        this.dialogMenuOpened.emit();\n\n        const triggerButtonElement = this.triggerElRef.nativeElement as HTMLElement;\n        const configureDialogWidth = +this.dialogConfig.width.replace(\"px\", \"\");\n        const triggerBoundingClientRect = this.triggerElRef.nativeElement.getBoundingClientRect() as ClientRect;\n\n        const sizes = computeTriggerElementSizes({\n            triggerElementBoundingRect: triggerBoundingClientRect, triggerButtonElement, window\n        });\n\n        const position = getDialogPositionFromTriggerElementSizes({\n            triggerElementSizes: sizes, configureDialogWidth, triggerButtonElement\n        });\n\n        this.dialogRef = this.matDialog.open(DgpDialogMenuComponent, {\n            ...this.dialogConfig,\n            position,\n            backdropClass: \"mat-dialog-no-backdrop\",\n            data: this.templateRef\n        });\n        this.service.cacheCurrentDialogMenu(this.dialogRef);\n\n        await this.dialogRef.afterClosed().toPromise();\n\n        this.dialogRef = null;\n        this.dialogMenuClosed.emit();\n    }\n\n    closeMenuDialog() {\n        if (this.dialogRef) {\n            this.dialogRef.close();\n        }\n    }\n}\n","import { DgpDialogMenuTriggerDirective } from \"./dialog-menu-trigger.directive\";\n\nexport const directives = [\n    DgpDialogMenuTriggerDirective\n];\n","import { DgpDialogMenuComponent } from \"./dialog-menu.component\";\n\nexport const components = [\n    DgpDialogMenuComponent\n];\n","import { NgModule } from \"@angular/core\";\nimport { directives } from \"./directives/directives\";\nimport { components } from \"./components/components\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatDialogModule\n    ],\n    declarations: [\n        ...components,\n        ...directives\n    ],\n    exports: [\n        ...components,\n        ...directives\n    ],\n    providers: []\n})\nexport class DgpDialogMenuModule {\n}\n","import { BehaviorSubject } from \"rxjs\";\n\nexport class RxAttribute<TTarget extends object, TAttributeKey extends keyof TTarget> extends BehaviorSubject<TTarget[TAttributeKey]> {\n}\n","import { RxComponentFixture } from \"./rx-component-fixture.model\";\n\nexport class RxComponentFixtureMap<T extends object> extends WeakMap<T, RxComponentFixture<T>> {\n}\n","import { RxComponentFixtureMap } from \"../models/rx-component-fixture-map.model\";\n\nexport const rxComponentFixtureMap = new RxComponentFixtureMap<any>();\n","import { BehaviorSubject } from \"rxjs\";\n\nexport class RxComponentFixture<T extends object> extends Map<keyof T, BehaviorSubject<T[keyof T]>> {\n}\n","import { RxComponentFixture } from \"../models/rx-component-fixture.model\";\n\nexport function createRxComponentFixture<T extends object>(instance: T) {\n    return new RxComponentFixture<T>();\n}\n","import { RxComponentFixture } from \"../models/rx-component-fixture.model\";\nimport { rxComponentFixtureMap } from \"../constants/rx-component-fixture-map.constant\";\n\nexport function registerRxComponentFixture<T extends object>(\n    instance: T, fixture: RxComponentFixture<T>\n) {\n    rxComponentFixtureMap.set(instance, fixture);\n}\n","import { rxComponentFixtureMap } from \"../constants/rx-component-fixture-map.constant\";\nimport { RxComponentFixture } from \"../models/rx-component-fixture.model\";\nimport { createRxComponentFixture } from \"./create-rx-component-fixture.function\";\nimport { registerRxComponentFixture } from \"./register-rx-component-fixture.function\";\n\nexport function getOrCreateRxComponentFixture<T extends object>(instance: T) {\n    let fixture = rxComponentFixtureMap.get(instance) as RxComponentFixture<T>;\n    if (fixture === undefined) {\n        fixture = createRxComponentFixture(instance);\n        registerRxComponentFixture(instance, fixture);\n    }\n    return fixture;\n}\n","import { RxAttribute } from \"../models/rx-attribute.model\";\n\nexport function createRxAttribute<TTarget extends object, TAttributeKey extends keyof TTarget>(attributeKey: TAttributeKey) {\n    return new RxAttribute<TTarget, TAttributeKey>(null);\n}\n","import { BehaviorSubject } from \"rxjs\";\nimport { RxComponentFixture } from \"../models/rx-component-fixture.model\";\n\nexport function registerRxAttribute<T extends object>(\n    attributeKey: keyof T,\n    attribute$: BehaviorSubject<T[typeof attributeKey]>,\n    fixture: RxComponentFixture<T>\n) {\n    fixture.set(attributeKey, attribute$);\n}\n","import { getOrCreateRxComponentFixture } from \"./get-or-create-rx-component-fixture.function\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { createRxAttribute } from \"./create-rx-attribute.function\";\nimport { registerRxAttribute } from \"./register-rx-attribute.function\";\n\nexport function getOrCreateRxAttribute$<TTarget extends object, TAttributeKey extends keyof TTarget>(\n    instance: TTarget, attributeKey: TAttributeKey\n) {\n    const componentFixture = getOrCreateRxComponentFixture(instance);\n\n    let attribute$ = componentFixture.get(attributeKey) as BehaviorSubject<TTarget[TAttributeKey]>;\n\n    if (attribute$ === undefined) {\n        attribute$ = createRxAttribute(attributeKey);\n        registerRxAttribute(attributeKey, attribute$, componentFixture);\n    }\n\n    return attribute$;\n}\n","import { isEqual } from \"lodash\";\nimport { getOrCreateRxAttribute$ } from \"./functions/get-or-create-rx-attribute$.function\";\n\nexport function observeAttribute$<TTarget extends object, TAttributeKey extends keyof TTarget>(\n    target: TTarget, attributeKey: TAttributeKey\n) {\n\n    const initialAttributeValue = target[attributeKey];\n\n    delete target[attributeKey];\n\n    const attribute$ = getOrCreateRxAttribute$(target, attributeKey);\n\n    Object.defineProperty(target, attributeKey, {\n        set(value) {\n            if (isEqual(value, attribute$.value)) return;\n\n            attribute$.next(value);\n        },\n        get() {\n            return attribute$.value;\n        },\n    });\n\n    target[attributeKey] = initialAttributeValue;\n\n    return attribute$.asObservable();\n\n}\n\n","import { Directive, Input } from \"@angular/core\";\n\n@Directive()\nexport abstract class DgpDisabledBase {\n\n    @Input()\n    disabled = false;\n\n}\n","import { Directive, Input } from \"@angular/core\";\nimport { observeAttribute$ } from \"./observe-input/observe-attribute$.function\";\nimport { DgpDisabledBase } from \"./dgp-disabled-base.directive\";\n\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class DgpViewComponentBase<TModel> extends DgpDisabledBase {\n\n    protected modelValue: TModel = null;\n\n    readonly model$ = observeAttribute$(this as DgpViewComponentBase<TModel>, \"model\");\n\n    constructor() {\n        super();\n        /**\n         * Ensure the initial model value is correctly derived\n         */\n        this.model = this.modelValue;\n    }\n\n    @Input()\n    model: TModel;\n\n}\n","import { Directive, EventEmitter, Output } from \"@angular/core\";\nimport { DgpViewComponentBase } from \"./view.component-base\";\n\n/**\n * Base class for classes for manipulating a model\n */\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class DgpModelEditorComponentBase<TModel> extends DgpViewComponentBase<TModel> {\n\n    @Output()\n    readonly modelChange = new EventEmitter<TModel>();\n\n    setModel(value: TModel) {\n        this.model = value;\n        this.modelChange.emit(this.model);\n    }\n\n    updateModel(value: Partial<TModel> | TModel) {\n\n        if ((value !== null && typeof value === \"object\") || (this.model !== null && typeof this.model === \"object\")) {\n            this.model = {\n                ...this.model as any,\n                ...value as any\n            };\n        } else {\n            this.model = value as TModel;\n        }\n\n        this.modelChange.emit(this.model);\n\n    }\n\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { DgpModelEditorComponentBase } from \"../../utils/model-editor.component-base\";\n\n@Component({\n    selector: \"dgp-expansion-toggle\",\n    template: `\n        <button mat-icon-button\n          (click)=\"setModel(!model)\">\n          <mat-icon>\n            @if (model) {\n              expand_more\n            }\n            @if (!model) {\n              navigate_next\n            }\n          </mat-icon>\n        </button>\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n        }\n\n        mat-icon {\n            line-height: initial !important;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpExpansionToggleComponent extends DgpModelEditorComponentBase<boolean> {\n\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\nimport { observeAttribute$ } from \"../../utils/observe-input\";\nimport { ExpansionTogglePosition } from \"../models\";\nimport { Details } from \"../models/details.model\";\n\n@Component({\n    selector: \"dgp-details\",\n    template: `\n        <details #details\n          (toggle)=\"onToggle($event)\">\n          <summary (click)=\"$event.preventDefault()\"\n            tabindex=\"-1\">\n            @if (togglePosition === 'start') {\n              @if (expandable) {\n                <dgp-expansion-toggle\n                  [model]=\"expanded\"\n                (modelChange)=\"updateExpanded($event)\"></dgp-expansion-toggle>\n              }\n            }\n            <div class=\"summary-content\">\n              {{ summary }}\n              <ng-content select=\"[summary]\"></ng-content>\n            </div>\n            @if (togglePosition === 'end') {\n              @if (expandable) {\n                <dgp-expansion-toggle\n                  [model]=\"expanded\"\n                (modelChange)=\"updateExpanded($event)\"></dgp-expansion-toggle>\n              }\n            }\n          </summary>\n          <div class=\"details-content\">\n            <ng-content></ng-content>\n          </div>\n        </details>\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n        }\n\n        details > summary {\n            list-style: none;\n            display: flex;\n        }\n\n        summary::marker {\n            display: none;\n        }\n\n        .summary-content {\n            display: flex;\n            align-items: center;\n            flex-grow: 1;\n        }\n\n        .details-content {\n\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpDetailsComponent implements AfterViewInit, Details {\n\n    readonly expanded$ = observeAttribute$(this as DgpDetailsComponent, \"expanded\");\n\n    @ViewChild(\"details\")\n    detailsElementRef: ElementRef<HTMLDetailsElement>;\n\n    @Input()\n    summary: string;\n\n    @Input()\n    expanded = true;\n\n    @Input()\n    expandable = true;\n\n    @Input()\n    togglePosition: ExpansionTogglePosition = \"start\";\n\n    @Output()\n    readonly expandedChange = new EventEmitter<boolean>();\n\n    ngAfterViewInit(): void {\n        this.expanded$.subscribe(expanded => {\n            this.detailsElementRef.nativeElement.open = expanded;\n        });\n    }\n\n    updateExpanded(expanded: boolean) {\n        if (expanded === this.expanded) return;\n\n        this.expanded = expanded;\n        this.expandedChange.emit(this.expanded);\n    }\n\n    // noinspection JSUnusedLocalSymbols\n    onToggle($event: Event) {\n        const isExpanded = this.detailsElementRef.nativeElement.open;\n        this.updateExpanded(isExpanded);\n    }\n}\n\n","import { DgpDetailsComponent } from \"./details.component\";\n\nexport const components = [\n    DgpDetailsComponent\n];\n","import { DgpExpansionToggleComponent } from \"./expansion-toggle.component\";\n\nexport const components = [\n    DgpExpansionToggleComponent\n];\n","import { NgModule } from \"@angular/core\";\nimport { components } from \"./components/components\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n    imports: [\n        MatButtonModule,\n        MatIconModule,\n        CommonModule\n    ],\n    declarations: [\n        ...components\n    ],\n    exports: [\n        ...components\n    ]\n})\nexport class DgpExpansionToggleModule {\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-spacer\",\n    template: ``,\n    styles: [`\n        :host {\n            flex-grow: 1;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class SpacerComponent {\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { SpacerComponent } from \"./components/spacer.component\";\n\n@NgModule({\n    declarations: [\n        SpacerComponent\n    ],\n    exports: [\n        SpacerComponent\n    ]\n})\nexport class DgpSpacerModule {\n}\n","import { NgModule } from \"@angular/core\";\nimport { components } from \"./components/components\";\nimport { DgpExpansionToggleModule } from \"../expansion-toggle/expansion-toggle.module\";\nimport { DgpSpacerModule } from \"../spacer/spacer.module\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { NgIf } from \"@angular/common\";\n\n@NgModule({\n    imports: [\n        DgpExpansionToggleModule,\n        DgpSpacerModule,\n        MatIconModule,\n        NgIf\n    ],\n    declarations: [\n        ...components\n    ],\n    exports: [\n        ...components\n    ]\n})\nexport class DgpDetailsModule {\n}\n","import { Component } from \"@angular/core\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { ActionContextState } from \"../../action-context/models/action-context-state.model\";\nimport { isAnyActionContextSelected } from \"../../action-context/selectors/is-any-action-context-selected.selector\";\nimport { getSelectedActionContextLabel } from \"../../action-context/selectors/get-selected-action-context-label.selector\";\n\n@Component({\n    selector: \"dgp-page-header-context-actions\",\n    template: `\n        @if (isAnyActionContextSelected$ | async) {\n          <div\n            style=\"position: relative;\"\n            class=\"mat-elevation-z10\">\n            <mat-toolbar color=\"accent\"\n              style=\"flex-grow: 0;\">\n              <ng-content></ng-content>\n            </mat-toolbar>\n            @if (currentActionContextLabel$ | async; as label) {\n              <mat-toolbar\n                color=\"accent\"\n                class=\"dgp-bg--accent\"\n                style=\"flex-grow: 0; position: absolute; left: 0; right: 0; height: auto; font-size: small; z-index: 1;\">\n                {{ label }}\n              </mat-toolbar>\n            }\n          </div>\n        }\n        `,\n    standalone: false\n})\nexport class DgpPageHeaderContextActionsComponent extends DgpContainer<ActionContextState> {\n    readonly isAnyActionContextSelected$ = this.select(isAnyActionContextSelected);\n    readonly currentActionContextLabel$ = this.select(getSelectedActionContextLabel);\n}\n","import { NgModule } from \"@angular/core\";\nimport { DgpPageHeaderContextActionsComponent } from \"./containers/page-header-context-actions.component\";\nimport { MatToolbarModule } from \"@angular/material/toolbar\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n    imports: [\n        MatToolbarModule,\n        CommonModule\n    ],\n    declarations: [\n        DgpPageHeaderContextActionsComponent\n    ],\n    exports: [\n        DgpPageHeaderContextActionsComponent\n    ]\n})\nexport class DgpPageHeaderContextActionsModule {\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-empty-state-content\",\n    template: `<ng-content></ng-content>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class EmptyStateContentComponent {\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-empty-state-icon\",\n    template: `\n        <mat-icon class=\"icon\">\n            <ng-content></ng-content>\n        </mat-icon>\n    `,\n    styles: [`\n        :host {\n            margin-left: 16px;\n            margin-right: 16px;\n            display: inline-flex;\n        }\n\n        .icon {\n            color: gray;\n            font-size: 32px;\n            width: 32px;\n            height: 32px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class EmptyStateIconComponent {\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-empty-state-title\",\n    template: `\n        <h1 class=\"mat-h1\">\n            <ng-content></ng-content>\n        </h1>\n    `,\n    styles: [`\n        :host {\n            display: inline-flex;\n            color: gray;\n        }\n        \n        h1 {\n            margin: 0 !important;\n            font-size: initial !important;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class EmptyStateTitleComponent {\n\n}\n","import { Component, ChangeDetectionStrategy, Input } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-empty-state\",\n    template: `\n        @if (matIconName) {\n          <dgp-empty-state-icon>\n            {{ matIconName }}\n          </dgp-empty-state-icon>\n        }\n        <dgp-empty-state-title>\n          {{ title }}\n        </dgp-empty-state-title>\n        \n        <dgp-empty-state-content>\n          <ng-content></ng-content>\n        </dgp-empty-state-content>\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            margin-top: 16px;\n            margin-bottom: 16px;\n            max-height: initial !important;\n            height: 100%;\n            justify-content: center;\n            align-items: center;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class EmptyStateComponent {\n\n    @Input()\n    matIconName: string;\n\n    @Input()\n    title: string;\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { EmptyStateComponent } from \"./components/empty-state.component\";\nimport { EmptyStateContentComponent } from \"./components/empty-state-content.component\";\nimport { EmptyStateIconComponent } from \"./components/empty-state-icon.component\";\nimport { EmptyStateTitleComponent } from \"./components/empty-state-title.component\";\nimport { MatIconModule } from \"@angular/material/icon\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatIconModule\n    ],\n    declarations: [\n        EmptyStateComponent,\n        EmptyStateContentComponent,\n        EmptyStateIconComponent,\n        EmptyStateTitleComponent\n    ],\n    exports: [\n        EmptyStateComponent\n    ]\n})\nexport class DgpEmptyStateModule {\n}\n","import { InjectionToken, Type } from \"@angular/core\";\nimport { KVS } from \"entity-store\";\n\nexport interface FileItemId {\n    readonly fileItemId: string;\n}\n\nexport interface FileItem extends FileItemId {\n    readonly fileName: string;\n    readonly extension: string;\n    /**\n     * File size in bytes\n     */\n    readonly size: number;\n    readonly url: string;\n    readonly creationDate: Date;\n    /**\n     * Indicates whether this item has\n     * already been saved.\n     *\n     * When a new item is uploaded, this\n     * flag is true, so the developer\n     * has a means of knowing which items to\n     * persist.\n     */\n    readonly isSaved?: boolean;\n}\n\nexport interface Directory {\n    readonly directoryId: string;\n    readonly label: string;\n    readonly fileItemIds: ReadonlyArray<string>;\n}\n\nexport interface FileTypeViewerMap {\n    [key: string]: Type<any>;\n}\n\nexport const FILE_VIEWER_CONFIG = new InjectionToken<FileViewerConfig>(\"DgpFileViewerConfig\");\n\nexport interface FileViewerConfig {\n    readonly fileTypeViewerMap: FileTypeViewerMap;\n}\n\nexport interface FileItemListModel {\n    readonly fileItemKVS: KVS<FileItem>;\n    readonly directories: ReadonlyArray<Directory>;\n}\n\n","export function getFileItemSizeLabel(size: number): string {\n\n    if (size < 1000) {\n        return (size / (1000)).toFixed(2) + \" Kb\";\n    } else {\n        return (size / (1000 * 1000)).toFixed(2) + \" Mb\";\n    }\n\n}\n","import { FileItem } from \"../file-viewer/models\";\nimport { createGuid } from \"../broadcast/functions/create-guid.function\";\nimport { Matrix } from \"data-modeling\";\nimport { ActionContext } from \"../action-context/models/action-context.model\";\nimport { getHashCode } from \"../utils/get-hash-code.function\";\n\nexport function parseFileNameWithExtension(fileNameWithExtension: string): {\n    readonly extension: string;\n    readonly fileName: string;\n} {\n\n    const lastPeriodIndex = fileNameWithExtension.indexOf(\".\");\n    const extension = fileNameWithExtension.substring(lastPeriodIndex + 1, fileNameWithExtension.length);\n    const fileName = fileNameWithExtension.substring(0, lastPeriodIndex);\n\n    return {\n        extension, fileName\n    };\n}\n\nexport function getMimeTypeFromExtension(extension: string): string {\n    switch (extension) {\n        case \"pdf\":\n            return \"application/pdf\";\n        default:\n            return null;\n    }\n}\n\nexport function getFileItemsFromFileList(fileList: FileList): ReadonlyArray<FileItem> {\n\n    const result = new Array<FileItem>();\n\n    for (let i = 0; i < fileList.length; i++) {\n        const file = fileList.item(i);\n\n        const objectUrl = URL.createObjectURL(file);\n\n        const fileItem: FileItem = {\n            fileItemId: createGuid(),\n            size: file.size,\n            url: objectUrl,\n            creationDate: new Date(file.lastModified),\n            isSaved: false,\n            ...parseFileNameWithExtension(file.name)\n        };\n\n        result.push(fileItem);\n\n    }\n\n    return result;\n\n}\n\nexport function getFileFromFileItem$(fileItem: FileItem): Promise<File> {\n\n    return new Promise<File>(resolve => {\n\n        return fetch(fileItem.url, {\n            credentials: \"include\"\n        }).then(x => x.blob()).then(x => {\n            const file = new Blob([x], {\n                type: getMimeTypeFromExtension(fileItem.extension)\n            });\n\n            (file as any).name = fileItem.fileName + \".\" + fileItem.extension;\n\n            resolve(file as File);\n        }).catch(reason => {\n            console.error(reason);\n        });\n\n    });\n\n}\n\nexport function getFileFromUrl$(url: string): Promise<File> {\n\n    return new Promise<File>(resolve => {\n\n        return fetch(url).then(x => x.blob()).then(x => {\n            const file = new Blob([x]);\n            resolve(file as File);\n        }).catch(reason => {\n            console.error(reason);\n        });\n\n    });\n\n}\n\nexport function parseContentAsStringMatrix(csvFileContent: string) {\n    const csv = csvFileContent;\n\n    const allTextLines = csv.split(/\\r\\n|\\n/).filter(x => x.length !== 0);\n\n    let lines = [];\n\n    allTextLines.forEach(line => {\n        const segments = line.split(\";\");\n        lines = lines.concat([segments]);\n    });\n\n    return lines;\n}\n\n\nexport function parseCSVFile$(fileToRead: File): Promise<Matrix<string>> {\n    return new Promise(resolve => {\n\n        const reader = new FileReader();\n        reader.readAsText(fileToRead);\n\n        reader.onload = (event) => {\n            const csv = event.target.result as string;\n\n            resolve(parseContentAsStringMatrix(csv));\n\n        };\n\n    });\n\n}\n\nexport function toFileItemActionContextKey(fileItem: FileItem) {\n    return getHashCode(fileItem).toString();\n}\n\nexport function toFileItemActionContext(item: FileItem): ActionContext {\n    return {\n        key: toFileItemActionContextKey(item),\n        label: \"File\",\n        type: \"fileItem\",\n        value: item\n    };\n}\n","import { Input, Directive } from \"@angular/core\";\nimport { FileItem } from \"../models\";\n\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class FileViewerComponentBase {\n    @Input()\n    fileItem: FileItem;\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from \"@angular/platform-browser\";\n\n@Pipe({\n    name: \"safe\",\n    standalone: false\n})\nexport class SafePipe implements PipeTransform {\n\n    constructor(protected readonly sanitizer: DomSanitizer) {\n    }\n\n    public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n        switch (type) {\n            case \"html\":\n                return this.sanitizer.bypassSecurityTrustHtml(value);\n            case \"style\":\n                return this.sanitizer.bypassSecurityTrustStyle(value);\n            case \"script\":\n                return this.sanitizer.bypassSecurityTrustScript(value);\n            case \"url\":\n                return this.sanitizer.bypassSecurityTrustUrl(value);\n            case \"resourceUrl\":\n                return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n            default:\n                throw new Error(`Invalid safe type specified: ${type}`);\n        }\n    }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { getFileFromFileItem$ } from \"../../file-upload/functions\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { FileViewerComponentBase } from \"./file-viewer.component-base\";\n\n@Component({\n    selector: \"dgp-fallback-file-viewer\",\n    template: `\n        <dgp-empty-state title=\"No preview available\"\n          matIconName=\"get_app\">\n        \n          @if (!isTridentOrEdge) {\n            <a\n              class=\"download-link\"\n              [href]=\"fileItem.url | safe:'url'\"\n              target=\"_blank\">\n              Download it here\n            </a>\n          } @else {\n            <a class=\"download-link\"\n              href=\"javascript:;\"\n              (click)=\"downloadFileInTridentOrEdge()\">\n              Download it here\n            </a>\n          }\n        \n        \n        </dgp-empty-state>\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            width: 100%;\n            height: 100%;\n        }\n\n        .download-link {\n            color: inherit;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class FallbackFileViewerComponent extends FileViewerComponentBase implements AfterViewInit {\n\n    isTridentOrEdge: boolean;\n\n    constructor(\n        private readonly platform: Platform\n    ) {\n        super();\n\n        this.isTridentOrEdge = this.platform.TRIDENT || this.platform.EDGE;\n    }\n\n    ngAfterViewInit() {\n        this.isTridentOrEdge = this.platform.TRIDENT || this.platform.EDGE;\n    }\n\n    async downloadFileInTridentOrEdge() {\n        const file = await getFileFromFileItem$(this.fileItem);\n        (window.navigator as any).msSaveOrOpenBlob(file, file.name);\n    }\n\n}\n","import { Observable } from \"rxjs\";\nimport { first } from \"rxjs/operators\";\n\nexport function firstAsPromise<T>(observable: Observable<T>): Promise<T>  {\n    return observable.pipe(first()).toPromise();\n}\n","import { EntityStateMap } from \"entity-store\";\nimport { InjectionToken } from \"@angular/core\";\nimport { MatDialogConfig } from \"@angular/material/dialog\";\nimport { Directory, FileItem } from \"../file-viewer/models\";\n\nimport { DrawerLayout } from \"../drawer-layout/models\";\n\nexport type OpenFileManagerShortKeyFilter = (x: KeyboardEvent) => boolean;\n\nexport interface FileUploadEditingCapabilities {\n    readonly canAddFiles: boolean;\n    readonly canRemoveFiles: boolean;\n}\n\nexport interface FileUploadConfig {\n    readonly fileManagerMatDialogConfig: MatDialogConfig;\n    readonly maximizedClass: string;\n    readonly openFileManagerShortKeyFilter: OpenFileManagerShortKeyFilter;\n    readonly editingCapabilities: FileUploadEditingCapabilities;\n    readonly canOpenFileDrawer: boolean;\n}\n\nexport function openFileManagerShortKeyFilter(x: KeyboardEvent) {\n    return  x.keyCode === 70 && x.altKey;\n}\n\nexport const defaultFileUploadConfig: FileUploadConfig = {\n    fileManagerMatDialogConfig: {\n        height: \"80%\",\n        width: \"80%\",\n        panelClass: \"dgp-file-manager-overlay\"\n    },\n    maximizedClass: \"dgp-file-manager-overlay--maximized\",\n    openFileManagerShortKeyFilter,\n    editingCapabilities: {\n        canAddFiles: true,\n        canRemoveFiles: true\n    },\n    canOpenFileDrawer: true\n};\n\n\nexport const FILE_UPLOAD_CONFIG = new InjectionToken<FileUploadConfig>(\"FileUploadConfig\");\n\nexport interface FileUploadEntities {\n    readonly directory: Directory;\n    readonly fileItem: FileItem;\n}\n\nexport interface FileUploadQueryParams {\n    readonly fileItemId?: string;\n}\n\nexport interface FileUploadState extends EntityStateMap<FileUploadEntities> {\n    readonly isFileManagerOpen: boolean;\n    readonly isDropTargetVisible: boolean;\n    readonly initialConfig: FileUploadConfig;\n    readonly fileDrawerLayout: DrawerLayout;\n}\n\nexport type FileUploadStoreFeature = \"FileUpload\";\nexport const fileUploadStoreFeature: FileUploadStoreFeature = \"FileUpload\";\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { FileUploadState, fileUploadStoreFeature } from \"./models\";\nimport { getAll } from \"entity-store\";\nimport { getSelectedActionContextValue } from \"../action-context/selectors/get-selected-action-context-value.selector\";\nimport { getSelectedActionContextType } from \"../action-context/selectors/get-selected-action-context-type.selector\";\nimport { FileItem, FileItemListModel } from \"../file-viewer/models\";\n\nexport const fileUploadFeatureSelector = createFeatureSelector<FileUploadState>(fileUploadStoreFeature);\n\nexport const getFileItemState = createSelector(fileUploadFeatureSelector, x => x.fileItem);\nexport const getDirectoryState = createSelector(fileUploadFeatureSelector, x => x.directory);\n\nexport const getAllFileItems = createSelector(getFileItemState, x => getAll(x));\nexport const getFileItemKVS = createSelector(getFileItemState, x => x.entities);\nexport const getAllDirectories = createSelector(getDirectoryState, x => getAll(x));\n\nexport const getFileItemListModel = createSelector(\n    getAllDirectories, getFileItemKVS, (directories, fileItemKVS) => {\n        return {\n            directories, fileItemKVS\n        } as FileItemListModel;\n    });\n\nexport const getSelectedFileItem = createSelector(\n    getSelectedActionContextValue,\n    getSelectedActionContextType, (value, type) => {\n\n        if (type !== \"fileItem\") return null;\n        if (!value) return null;\n\n        return value as FileItem;\n    }\n);\n\nexport const hasMoreThanOneFile = createSelector(getAllFileItems, x => x.length > 1);\n\nexport const isFileManagerOpen = createSelector(fileUploadFeatureSelector, x => x.isFileManagerOpen);\n\nexport const canOpenFileDrawer = createSelector(fileUploadFeatureSelector, x => x.initialConfig.canOpenFileDrawer);\n\nexport const isAddFilesDisabled = createSelector(fileUploadFeatureSelector, x => !x.initialConfig.editingCapabilities.canAddFiles);\nexport const isRemoveFilesDisabled = createSelector(fileUploadFeatureSelector, x => !x.initialConfig.editingCapabilities.canRemoveFiles);\n\nexport const isDropTargetVisible = createSelector(fileUploadFeatureSelector,\n    x => x.initialConfig.editingCapabilities.canAddFiles\n        && (x.isDropTargetVisible || x.fileItem.ids.length === 0)\n);\nexport const canSelectPreviousFile = createSelector(\n    getSelectedFileItem,\n    getAllFileItems,\n    (selected, all) => {\n        const index = all.indexOf(selected);\n        return index > 0;\n    }\n);\nexport const canSelectNextFile = createSelector(\n    getSelectedFileItem,\n    getAllFileItems,\n    (selected, all) => {\n        const index = all.indexOf(selected);\n        return index < all.length - 1;\n    }\n);\nexport const isFileManagerMenuDrawerOpen = createSelector(\n    fileUploadFeatureSelector, x => x.fileDrawerLayout.isDrawerOpen\n);\n","import { createAction, props } from \"@ngrx/store\";\nimport { FileUploadConfig } from \"./models\";\nimport { Directory, FileItem } from \"../file-viewer/models\";\n\nexport const openFileManagerOverlay = createAction(\"[FileUpload] OpenFileManagerOverlay\", props<{\n    readonly config?: FileUploadConfig;\n    readonly fileItems?: ReadonlyArray<FileItem>;\n    readonly directories?: ReadonlyArray<Directory>;\n    readonly selectedFileItemId?: string;\n} | null>());\nexport const openFileManager = openFileManagerOverlay;\nexport const closeFileManager = createAction(\"[FileUpload] CloseFileManager\");\n\nexport const addFilesViaDrop = createAction(\"[FileUpload] AddFiles\",\n    props<{ readonly fileItems: ReadonlyArray<FileItem> }>()\n);\nexport const addFiles = addFilesViaDrop;\n\nexport const removeFile = createAction(\"[FileUpload] RemoveFile\",\n    props<{ readonly fileItem: FileItem; }>()\n);\n\nexport const downloadFile = createAction(\"[FileUpload] DownloadFile\",\n    props<{ readonly fileItem: FileItem; }>()\n);\n\nexport const showDropTarget = createAction(\"[FileUpload] ShowDropTarget\");\nexport const hideDropTarget = createAction(\"[FileUpload] HideDropTarget\");\n\nexport const setConfig = createAction(\"[FileUpload] SetConfig\", props<{ readonly config: FileUploadConfig; }>());\nexport const selectPreviousFile = createAction(\n    \"[FileUpload] SelectPreviousFile\"\n);\nexport const selectNextFile = createAction(\n    \"[FileUpload] SelectNextFile\"\n);\nexport const setIsFileDrawerOpen = createAction(\"[FileUpload] SetIsFileDrawerOpen\", props<{\n    readonly isDrawerOpen: boolean;\n}>());\n","import { InjectionToken, Provider } from \"@angular/core\";\n\nexport type TriggerEvent = \"click\";\n\nexport interface ActionShortcutConfig {\n    readonly requireAlt: boolean;\n    readonly requireCtrl: boolean;\n    readonly requireShift: boolean;\n    readonly triggerEvent?: TriggerEvent;\n}\n\nexport interface ActionShortcut extends ActionShortcutConfig {\n    readonly shortcutKey: string;\n}\n\nexport const defaultActionShortcutConfig: ActionShortcutConfig = {\n    requireAlt: true,\n    requireCtrl: true,\n    requireShift: false,\n    triggerEvent: \"click\"\n};\n\nexport interface ShortcutConfig {\n    readonly action: ActionShortcutConfig;\n}\n\nexport const defaultShortcutConfig: ShortcutConfig = {\n    action: defaultActionShortcutConfig\n};\n\nexport const SHORTCUT_CONFIG = new InjectionToken<ShortcutConfig>(\"dgpShortcutConfig\");\n\nexport function provideShortcutConfig(payload: ShortcutConfig = defaultShortcutConfig): Provider {\n    return {\n        provide: SHORTCUT_CONFIG,\n        useValue: payload\n    };\n}\n","import { Directive, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Optional, Output } from \"@angular/core\";\nimport { DgpDisabledBase } from \"../../utils/dgp-disabled-base.directive\";\nimport { ActionShortcut, ActionShortcutConfig, defaultShortcutConfig, SHORTCUT_CONFIG, ShortcutConfig, TriggerEvent } from \"../models\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\n\n@Directive({\n    selector: \"[dgpActionShortcut]\",\n    standalone: false\n})\nexport class DgpActionShortcutDirective extends DgpDisabledBase implements OnInit, OnDestroy, ActionShortcut {\n\n    /**\n     * The regular disabled input can be used as proxy\n     * for disabled inputs\n     *\n     * Only disabling the shortcut is  available via\n     * this input\n     */\n    @Input()\n    isShortcutDisabled = false;\n\n    @Input()\n    shortcutKey: string;\n\n    @Input()\n    requireAlt: boolean;\n\n    @Input()\n    requireCtrl: boolean;\n\n    @Input()\n    requireShift: boolean;\n\n    @Input()\n    triggerEvent: TriggerEvent;\n\n    @Output()\n    readonly shortcutTriggered = new EventEmitter();\n\n    constructor(\n        private readonly elRef: ElementRef<HTMLElement>,\n        @Inject(SHORTCUT_CONFIG) @Optional()\n        private readonly config: ShortcutConfig,\n        @Optional()\n        private readonly matTooltip: MatTooltip\n    ) {\n        super();\n\n        if (!this.config) this.config = defaultShortcutConfig;\n\n        this.requireAlt = this.config.action.requireAlt;\n        this.requireCtrl = this.config.action.requireCtrl;\n        this.requireShift = this.config.action.requireShift;\n        this.triggerEvent = this.config.action.triggerEvent;\n    }\n\n    ngOnInit(): void {\n        window.addEventListener(\"keydown\", this.onKeyDown);\n\n        if (this.matTooltip && this.matTooltip.message) {\n            let result = \" (\";\n            if (this.requireAlt) result += \"ALT+\";\n            if (this.requireCtrl) result += \"CTRL+\";\n            if (this.requireShift) result += \"SHIFT+\";\n            if (this.shortcutKey) result += this.shortcutKey;\n            result += \")\";\n\n            this.matTooltip.message += result;\n        }\n    }\n\n    ngOnDestroy(): void {\n        window.removeEventListener(\"keydown\", this.onKeyDown);\n    }\n\n    private onKeyDown = (event: KeyboardEvent) => {\n        if (this.disabled || this.isShortcutDisabled) return;\n        if (!this.shortcutKey) return;\n\n        if (this.requireAlt && !event.altKey) return;\n        if (this.requireCtrl && !event.ctrlKey) return;\n        if (this.requireShift && !event.shiftKey) return;\n\n        if (event.key.toLowerCase() !== this.shortcutKey.toLowerCase()) return;\n\n        if (this.triggerEvent === \"click\") {\n            this.elRef.nativeElement.click();\n        }\n        this.shortcutTriggered.emit();\n    };\n\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n    name: \"negate\",\n    standalone: false\n})\nexport class DgpNegatePipe implements PipeTransform {\n\n    transform(value: boolean | any, ...args: any[]): boolean {\n        return !value;\n    }\n\n}\n","import { Component } from \"@angular/core\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\nimport { FileUploadState } from \"../../../file-upload/models\";\nimport { firstAsPromise } from \"../../../utils/first-as-promise\";\nimport { getSelectedFileItem } from \"../../../file-upload/selectors\";\nimport { removeFile } from \"../../../file-upload/actions\";\nimport { createSelector } from \"@ngrx/store\";\nimport { notNullOrUndefined } from \"../../../utils/null-checking.functions\";\n\nexport const canRemoveCurrentFileItem = createSelector(\n    getSelectedFileItem, x => notNullOrUndefined(x)\n);\n\n@Component({\n    selector: \"dgp-remove-current-file-item-action\",\n    template: `\n        <button mat-icon-button\n                (click)=\"removeCurrentFileItem()\"\n                [disabled]=\"canRemoveCurrentFileItem$ | async | negate\"\n                matTooltip=\"Remove selected file\"\n                dgpActionShortcut\n                [requireCtrl]=\"false\"\n                [requireAlt]=\"false\"\n                shortcutKey=\"Delete\">\n            <mat-icon>delete</mat-icon>\n        </button>\n    `,\n    standalone: false\n})\nexport class RemoveCurrentFileItemActionComponent extends DgpContainer<FileUploadState> {\n\n    readonly canRemoveCurrentFileItem$ = this.select(canRemoveCurrentFileItem);\n\n    async removeCurrentFileItem() {\n        const fileItem = await firstAsPromise(this.select(getSelectedFileItem));\n        this.dispatch(removeFile({fileItem}));\n    }\n\n}\n","import { Component } from \"@angular/core\";\nimport { firstAsPromise } from \"../../../utils/first-as-promise\";\nimport { getSelectedFileItem } from \"../../../file-upload/selectors\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\nimport { FileUploadState } from \"../../../file-upload/models\";\nimport { downloadFile } from \"../../../file-upload/actions\";\n\n@Component({\n    selector: \"dgp-download-current-file-item\",\n    template: `\n        <button mat-icon-button\n                (click)=\"downloadCurrentFileItem()\"\n                matTooltip=\"Download selected file\"\n                dgpActionShortcut\n                shortcutKey=\"d\">\n            <mat-icon>file_download</mat-icon>\n        </button>\n    `,\n    standalone: false\n})\nexport class DownloadCurrentFileItemComponent extends DgpContainer<FileUploadState> {\n\n    async downloadCurrentFileItem() {\n        const fileItem = await firstAsPromise(this.select(getSelectedFileItem));\n        this.dispatch(downloadFile({fileItem}));\n    }\n}\n","import { Directive } from \"@angular/core\";\nimport { DgpViewComponentBase } from \"./view.component-base\";\n\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class DgpView<TModel> extends DgpViewComponentBase<TModel> {\n\n}\n","import { Component } from \"@angular/core\";\nimport { FileItem } from \"../../models\";\nimport { getFileItemSizeLabel } from \"../../functions\";\nimport { DgpView } from \"../../../utils/view\";\n\n@Component({\n    selector: \"dgp-file-item-list-item\",\n    template: `\n\n        <a mat-list-item\n           dgpActionContext\n           actionContextType=\"fileItem\"\n           [actionContextValue]=\"model\">\n            <mat-icon matListItemIcon>insert_drive_file</mat-icon>\n            <div matListItemTitle>{{ model.fileName }} ({{ model.extension }})</div>\n            <div matListItemLine>\n                {{ getFileItemSize() }}\n            </div>\n            <div matListItemLine>\n                {{ model.creationDate | date:'hh:mm, dd MMMM yyyy' }}\n            </div>\n\n        </a>\n    `,\n    styles: [`\n        :host {\n            border: 1px solid transparent;\n            display: flex;\n            flex-direction: column;\n        }\n    `],\n    standalone: false\n})\nexport class FileItemListItemComponent extends DgpView<FileItem> {\n\n    getFileItemSize() {\n        return getFileItemSizeLabel(this.model.size);\n    }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { FileItemListModel } from \"../../models\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\nimport { FileUploadState } from \"../../../file-upload/models\";\n\n@Component({\n    selector: \"dgp-file-item-list\",\n    template: `\n        <mat-nav-list style=\"overflow: auto;\">\n        \n          <h3 mat-subheader>\n            Files\n            <dgp-spacer></dgp-spacer>\n            <dgp-remove-current-file-item-action></dgp-remove-current-file-item-action>\n            <dgp-download-current-file-item></dgp-download-current-file-item>\n          </h3>\n        \n          @for (directory of model.directories; track directory) {\n            @for (fileItemId of directory.fileItemIds; track fileItemId) {\n              <dgp-file-item-list-item\n              [model]=\"model.fileItemKVS[fileItemId]\"></dgp-file-item-list-item>\n            }\n          }\n        \n        </mat-nav-list>\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            overflow: auto;\n        }\n\n        h3 {\n            display: flex;\n            align-items: center;\n            border-bottom: 1px solid gray;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class FileItemListComponent extends DgpContainer<FileUploadState> {\n\n    @Input()\n    disabled: boolean;\n\n    @Input()\n    model: FileItemListModel;\n\n}\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { FileViewerComponentBase } from \"./file-viewer.component-base\";\n\n@Component({\n    selector: \"dgp-pdf-viewer\",\n    template: `\n\n@if (platform.FIREFOX || platform.BLINK || platform.EDGE) {\n  @if (platform.FIREFOX || platform.BLINK) {\n    <object [attr.data]=\"fileItem.url | safe:'resourceUrl'\"\n      type=\"application/pdf\"\n      width=\"100%\"\n      height=\"100%\">\n      <dgp-fallback-file-viewer [fileItem]=\"fileItem\"></dgp-fallback-file-viewer>\n    </object>\n  }\n  @if (platform.EDGE) {\n    <div [innerHTML]=\"edgeHTML | safe:'html'\"\n    class=\"edge-helper\"></div>\n  }\n} @else {\n  <dgp-fallback-file-viewer [fileItem]=\"fileItem\"></dgp-fallback-file-viewer>\n}\n\n\n`,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            width: 100%;\n            height: 100%;\n        }\n\n        .edge-helper {\n            flex-grow: 1;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class PdfViewerComponent extends FileViewerComponentBase implements OnChanges {\n\n    edgeHTML: any;\n\n    constructor(\n        public readonly platform: Platform,\n        private readonly cd: ChangeDetectorRef\n    ) {\n        super();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.fileItem && this.platform.EDGE) {\n            this.edgeHTML = `\n                <embed src=\"${this.fileItem.url}\"\n                       type=\"application/pdf\"\n                       width=\"100%\"\n                       height=\"100%\">\n            `;\n            this.cd.markForCheck();\n        }\n    }\n\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { FileViewerComponentBase } from \"./file-viewer.component-base\";\nimport { Platform } from \"@angular/cdk/platform\";\n\n@Component({\n    selector: \"dgp-jpg-viewer\",\n    template: `\n        @if (!isTrident) {\n          <img\n            [src]=\"fileItem.url | safe:'url'\"\n            class=\"image\"\n            alt=\"{{ fileItem.fileName }}\">\n        } @else {\n          <div class=\"trident-container\">\n            <img [src]=\"fileItem.url | safe:'url'\"\n              class=\"trident-image\"\n              alt=\"{{ fileItem.fileName }}\">\n            </div>\n          }\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            width: 100%;\n            height: 100%;\n        }\n\n        .image {\n            max-width: 100%;\n            max-height: 100%;\n            object-fit: contain;\n        }\n\n        .trident-container {\n            display: flex;\n            overflow: auto;\n            flex-shrink: 0;\n        }\n\n        .trident-image {\n            margin: auto;\n            flex-shrink: 0;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class JpgViewerComponent extends FileViewerComponentBase {\n\n    readonly isTrident = this.platform.TRIDENT;\n\n    constructor(\n        private readonly platform: Platform\n    ) {\n        super();\n    }\n\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { FileViewerComponentBase } from \"./file-viewer.component-base\";\nimport { Platform } from \"@angular/cdk/platform\";\n\n@Component({\n    selector: \"dgp-png-viewer\",\n    template: `\n        @if (!isTrident) {\n          <img\n            [src]=\"fileItem.url | safe:'url'\"\n            class=\"image\"\n            alt=\"{{ fileItem.fileName }}\">\n        } @else {\n          <div class=\"trident-container\">\n            <img [src]=\"fileItem.url | safe:'url'\"\n              class=\"trident-image\"\n              alt=\"{{ fileItem.fileName }}\">\n            </div>\n          }\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            width: 100%;\n            height: 100%;\n        }\n\n        .image {\n            max-width: 100%;\n            max-height: 100%;\n            object-fit: contain;\n        }\n\n        .trident-container {\n            display: flex;\n            overflow: auto;\n            flex-shrink: 0;\n        }\n\n        .trident-image {\n            margin: auto;\n            flex-shrink: 0;\n        }\n\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class PngViewerComponent extends FileViewerComponentBase {\n\n    readonly isTrident = this.platform.TRIDENT;\n\n    constructor(\n        private readonly platform: Platform\n    ) {\n        super();\n    }\n\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { FileViewerComponentBase } from \"./file-viewer.component-base\";\nimport { Platform } from \"@angular/cdk/platform\";\n\n@Component({\n    selector: \"dgp-svg-viewer\",\n    template: `\n        @if (!isTrident) {\n          <img\n            [src]=\"fileItem.url | safe:'url'\"\n            class=\"image\"\n            alt=\"{{ fileItem.fileName }}\">\n        } @else {\n          <div class=\"trident-container\">\n            <img [src]=\"fileItem.url | safe:'url'\"\n              class=\"trident-image\"\n              alt=\"{{ fileItem.fileName }}\">\n            </div>\n          }\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            width: 100%;\n            height: 100%;\n        }\n\n        .image {\n            max-width: 100%;\n            max-height: 100%;\n            object-fit: contain;\n        }\n\n        .trident-container {\n            display: flex;\n            overflow: auto;\n            flex-shrink: 0;\n        }\n\n        .trident-image {\n            margin: auto;\n            flex-shrink: 0;\n        }\n\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class SvgViewerComponent extends FileViewerComponentBase {\n\n    readonly isTrident = this.platform.TRIDENT;\n\n    constructor(\n        private readonly platform: Platform\n    ) {\n        super();\n    }\n\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ComponentFactoryResolver,\n    Inject,\n    OnChanges,\n    SimpleChanges,\n    ViewContainerRef\n} from \"@angular/core\";\nimport { FILE_VIEWER_CONFIG, FileItem, FileViewerConfig } from \"../models\";\nimport { FileViewerComponentBase } from \"./file-viewer.component-base\";\n\n@Component({\n    selector: \"dgp-dynamic-file-viewer\",\n    template: ``,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            width: 100%;\n            height: 100%;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DynamicFileViewerComponent extends FileViewerComponentBase implements OnChanges {\n\n    constructor(\n        private readonly componentFactoryResolver: ComponentFactoryResolver,\n        private readonly viewContainerRef: ViewContainerRef,\n        @Inject(FILE_VIEWER_CONFIG)\n        private readonly config: FileViewerConfig\n    ) {\n        super();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes && changes.fileItem) {\n            if (this.fileItem) {\n                this.loadComponent(this.fileItem);\n            } else {\n                this.clear();\n            }\n        }\n    }\n\n    private loadComponent(fileItem: FileItem) {\n        const fileType = fileItem.extension;\n        const componentFactory = this.componentFactoryResolver.resolveComponentFactory(\n            this.config.fileTypeViewerMap[fileType.toLowerCase()] ? this.config.fileTypeViewerMap[fileType.toLowerCase()] : this.config.fileTypeViewerMap.default\n        );\n        this.viewContainerRef.clear();\n        const componentRef = this.viewContainerRef.createComponent(componentFactory);\n        const viewerComponent = componentRef.instance as FileViewerComponentBase;\n        viewerComponent.fileItem = this.fileItem;\n    }\n\n    private clear() {\n        this.viewContainerRef.clear();\n    }\n\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { FILE_VIEWER_CONFIG, FileViewerConfig } from \"../models\";\nimport { FileViewerComponentBase } from \"./file-viewer.component-base\";\n\n@Component({\n    selector: \"dgp-file-viewer\",\n    template: `\n\n@if (isKnownFileType) {\n  @switch (fileItem.extension) {\n    @case ('jpg') {\n      <dgp-jpg-viewer\n      [fileItem]=\"fileItem\"></dgp-jpg-viewer>\n    }\n    @case ('pdf') {\n      <dgp-pdf-viewer\n      [fileItem]=\"fileItem\"></dgp-pdf-viewer>\n    }\n    @case ('png') {\n      <dgp-png-viewer\n      [fileItem]=\"fileItem\"></dgp-png-viewer>\n    }\n    @case ('svg') {\n      <dgp-svg-viewer\n      [fileItem]=\"fileItem\"></dgp-svg-viewer>\n    }\n    @default {\n      <dgp-fallback-file-viewer\n      [fileItem]=\"fileItem\"></dgp-fallback-file-viewer>\n    }\n  }\n} @else {\n  <dgp-dynamic-file-viewer [fileItem]=\"fileItem\"></dgp-dynamic-file-viewer>\n}\n\n\n`,\n    styles: [`\n        :host {\n            display: flex;\n            flex-grow: 1;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class FileViewerComponent extends FileViewerComponentBase implements OnChanges {\n\n    isKnownFileType: boolean;\n\n    constructor(\n        @Inject(FILE_VIEWER_CONFIG)\n        private readonly config: FileViewerConfig\n    ) {\n        super();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes && changes.fileItem) {\n            if (this.fileItem) {\n                this.isKnownFileType = this.config.fileTypeViewerMap[this.fileItem.extension] === null\n                    || this.config.fileTypeViewerMap[this.fileItem.extension] === undefined;\n            }\n        }\n    }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { SafePipe } from \"./safe.pipe\";\n\n@NgModule({\n    declarations: [\n        SafePipe\n    ],\n    exports: [\n        SafePipe\n    ]\n})\nexport class SafePipeModule {\n}\n","import { InspectorConfig } from \"../models/inspector-config.model\";\n\nexport const inspectorDefaultConfig: InspectorConfig = {\n    responsive: true,\n    showFieldIcons: true,\n    fieldLabelThemeColor: undefined,\n    maxContentWidth: \"240px\",\n    showFieldDescriptions: true\n};\n\n\n","import { InjectionToken } from \"@angular/core\";\nimport { InspectorConfig } from \"../models/inspector-config.model\";\n\nexport const DEFAULT_INSPECTOR_CONFIG = new InjectionToken<InspectorConfig>(\"defaultInspectorConfig\");\n","import { ModelMetadata } from \"data-modeling\";\nimport { InspectorConfig } from \"../models\";\n\nexport const inspectorConfigMetadata: ModelMetadata<InspectorConfig> = {\n    attributes: {\n        fieldLabelThemeColor: {\n            label: \"Label color\",\n            icon: \"label\",\n            description: `Theme color of data labels.`,\n            type: \"string\",\n            defaultValue: undefined\n        },\n        maxContentWidth: {\n            label: \"Content width\",\n            icon: \"space_bar\",\n            description: `Space reserved for displayed values.`,\n            type: \"string\",\n            defaultValue: \"240px\"\n        },\n        responsive: {\n            label: \"Responsive\",\n            icon: \"repartition\",\n            description: `Display values below labels if there's little space`,\n            type: \"boolean\",\n            defaultValue: true\n        },\n        showFieldDescriptions: {\n            label: \"Descriptions\",\n            icon: \"description\",\n            description: `Whether and where to display descriptions.`,\n            type: \"boolean\",\n            defaultValue: true\n        },\n        showFieldIcons: {\n            label: \"Icons\",\n            icon: \"category\",\n            description: `Display icons for data fields.`,\n            type: \"boolean\",\n            defaultValue: true\n        }\n    }\n};\n","import { InspectorConfig } from \"../models/inspector-config.model\";\nimport { Provider, ValueProvider } from \"@angular/core\";\nimport { DEFAULT_INSPECTOR_CONFIG, inspectorDefaultConfig } from \"../constants\";\n\nexport function provideDefaultInspectorConfig(payload: Partial<InspectorConfig>): Provider {\n\n    const resolvedConfig: InspectorConfig = {\n        ...inspectorDefaultConfig,\n        ...payload\n    };\n\n    return {\n        provide: DEFAULT_INSPECTOR_CONFIG,\n        useValue: resolvedConfig\n    } as ValueProvider;\n\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { InspectorConfig } from \"../inspector/models\";\nimport { Many } from \"data-modeling\";\n\nexport interface ThemeSwitcherState {\n    readonly useDarkMode: boolean;\n    readonly useCompactTheme: boolean;\n    /**\n     * Components\n     */\n    readonly inspector?: InspectorConfig;\n}\n\nexport interface ThemeSwitcherConfig {\n    readonly darkThemeClassName: string;\n    readonly isDarkModeActiveLocalStorageKey?: string;\n\n    readonly compactThemeClassName: string;\n    readonly components: Many<string>;\n}\n\nexport const defaultThemeSwitcherConfig: ThemeSwitcherConfig = {\n    darkThemeClassName: \"dark-theme\",\n    isDarkModeActiveLocalStorageKey: \"isDarkModeActive\",\n    compactThemeClassName: \"compact-theme\",\n    components: []\n};\n\nexport const THEME_SWITCHER_CONFIG = new InjectionToken<ThemeSwitcherConfig>(\"ThemeSwitcherConfig\");\n\nexport const themeSwitcherStoreFeature = \"ThemeSwitcher\";\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { ThemeSwitcherState, themeSwitcherStoreFeature } from \"./models\";\n\nexport const themeSwitcherFeatureSelector = createFeatureSelector<ThemeSwitcherState>(\n    themeSwitcherStoreFeature\n);\n\nexport const isDarkModeActiveSelector = createSelector(\n    themeSwitcherFeatureSelector, x => x.useDarkMode\n);\n\nexport const isDarkModeActive = isDarkModeActiveSelector;\nexport const isCompactThemeActive = createSelector(\n    themeSwitcherFeatureSelector, x => x.useCompactTheme\n);\n\nexport const getCurrentInspectorConfig = createSelector(\n    themeSwitcherFeatureSelector, x => x.inspector\n);\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { InspectorConfig } from \"../models/inspector-config.model\";\nimport { DEFAULT_INSPECTOR_CONFIG, inspectorDefaultConfig } from \"../constants\";\nimport { map } from \"rxjs/operators\";\nimport { notNullOrUndefined } from \"../../utils/null-checking.functions\";\nimport { THEME_SWITCHER_CONFIG, ThemeSwitcherConfig, ThemeSwitcherState } from \"../../theme-switcher/models\";\nimport { Store } from \"@ngrx/store\";\nimport { getCurrentInspectorConfig } from \"../../theme-switcher/selectors\";\n\n@Injectable()\nexport class InspectorService {\n\n    readonly config$ = new BehaviorSubject<InspectorConfig>(inspectorDefaultConfig);\n\n    readonly fieldLabelThemeColor$ = this.config$.pipe(map(x => x.fieldLabelThemeColor));\n    readonly maxContentWidth$ = this.config$.pipe(map(x => x.maxContentWidth));\n    readonly responsive$ = this.config$.pipe(map(x => x.responsive));\n    readonly showFieldDescriptions$ = this.config$.pipe(map(x => x.showFieldDescriptions));\n    readonly showFieldIcons$ = this.config$.pipe(map(x => x.showFieldIcons));\n\n    constructor(\n        @Optional()\n        @Inject(DEFAULT_INSPECTOR_CONFIG)\n        private readonly payload: InspectorConfig,\n        @Optional()\n        @Inject(THEME_SWITCHER_CONFIG)\n        private readonly themeSwitcherConfig: ThemeSwitcherConfig,\n        private readonly store: Store<ThemeSwitcherState>\n    ) {\n        if (notNullOrUndefined(payload)) this.config$.next(payload);\n\n        if (themeSwitcherConfig?.components.includes(\"inspector\")) {\n            this.store.select(getCurrentInspectorConfig).subscribe(this.config$);\n        }\n    }\n\n    updateConfig(payload: Partial<InspectorConfig>) {\n        this.config$.next({\n            ...this.config$.value,\n            ...payload\n        });\n    }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { AttributeMetadata } from \"data-modeling\";\nimport { combineLatest } from \"rxjs\";\nimport { observeAttribute$ } from \"../../utils/observe-input\";\nimport { map } from \"rxjs/operators\";\nimport { notNullOrUndefined } from \"../../utils/null-checking.functions\";\nimport { ThemePalette } from \"@angular/material/core\";\nimport { InspectorService } from \"../services/inspector.service\";\n\nexport function toOwnOrParentSettings<T>(payload: [T, T]) {\n    const ownSettings = payload[0];\n    const otherSettings = payload[1];\n\n    if (notNullOrUndefined(ownSettings)) return ownSettings;\n    return otherSettings;\n}\n\n@Component({\n    selector: \"dgp-inspector-item\",\n    template: `\n        <div [class.--responsive]=\"responsive$ | async\"\n          class=\"inspector-item-content\">\n          <div class=\"info\"\n            [matTooltip]=\"description || metadata?.description\"\n            matTooltipPosition=\"left\"\n            [matTooltipDisabled]=\"hasHoverDescription$ | async | negate\">\n            @if (showIcon$ | async) {\n              <mat-icon\n                [color]=\"labelThemeColor$ | async\">\n                {{matIconName || metadata?.icon}}\n              </mat-icon>\n            }\n            <div class=\"label\"\n              [class.dgp-cl--primary]=\"(labelThemeColor$ | async) === 'primary'\"\n              [class.dgp-cl--accent]=\"(labelThemeColor$ | async) === 'accent'\"\n              [class.dgp-cl--warn]=\"(labelThemeColor$ | async) === 'warn'\">\n              {{ label || metadata?.label }}\n              @if (required || metadata?.isRequired) {\n                <span\n                class=\"dgp-cl--accent\">*</span>\n              }\n            </div>\n          </div>\n          <dgp-spacer></dgp-spacer>\n          <div class=\"content\"\n            [class.content-icon-margin]=\"showIcon$ | async\"\n            [style.max-width]=\"maxContentWidth$ | async\">\n            <ng-content></ng-content>\n          </div>\n        </div>\n        \n        @if (hasPermanentDescription$ | async) {\n          <p\n            class=\"description\"\n            [class.description-icon-margin]=\"showIcon$ | async\">\n            {{description || metadata?.description}}\n          </p>\n        }\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n        }\n\n        .inspector-item-content {\n            height: auto !important;\n            min-height: 32px;\n            display: flex !important;\n            align-items: center;\n        }\n\n        .info {\n            display: flex;\n            height: 32px;\n            align-items: center;\n            min-width: 96px;\n        }\n\n        mat-icon {\n            margin-right: 8px;\n            opacity: 0.7;\n        }\n\n        .label {\n            flex-shrink: 0;\n        }\n\n        .content {\n            display: flex;\n            flex-grow: 1;\n            width: 100%;\n        }\n\n        .content-icon-margin {\n            margin-left: 28px;\n        }\n\n        .description {\n            margin-right: 8px;\n            margin-top: 0;\n            margin-bottom: 0;\n            font-size: smaller;\n            opacity: 0.7;\n            margin-left: 16px;\n        }\n\n        .description-icon-margin {\n            margin-left: 44px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class InspectorItemComponent {\n\n    @Input()\n    maxContentWidth: string;\n\n    @Input()\n    metadata: AttributeMetadata<any>;\n    readonly metadata$ = observeAttribute$(this as InspectorItemComponent, \"metadata\");\n\n    @Input()\n    label: string;\n\n    @Input()\n    description: string;\n    readonly description$ = observeAttribute$(this as InspectorItemComponent, \"description\");\n    readonly metadataDescription$ = this.metadata$.pipe(map(x => x?.description));\n\n    @Input()\n    matIconName: string;\n\n    @Input()\n    required: boolean;\n\n    @Input()\n    responsive: boolean;\n\n    @Input()\n    labelThemeColor: ThemePalette;\n\n    @Input()\n    showIcon: boolean;\n\n    @Input()\n    showDescription: boolean | \"onHover\";\n\n    readonly responsive$ = combineLatest([\n        observeAttribute$(this as InspectorItemComponent, \"responsive\"),\n        this.service.responsive$\n    ]).pipe(map(toOwnOrParentSettings));\n\n    readonly showDescription$ = combineLatest([\n        observeAttribute$(this as InspectorItemComponent, \"showDescription\"),\n        this.service.showFieldDescriptions$\n    ]).pipe(map(toOwnOrParentSettings));\n\n    readonly showIcon$ = combineLatest([\n        observeAttribute$(this as InspectorItemComponent, \"showIcon\"),\n        this.service.showFieldIcons$\n    ]).pipe(map(toOwnOrParentSettings));\n\n    readonly hasHoverDescription$ = combineLatest([\n        this.description$,\n        this.metadataDescription$,\n        this.showDescription$\n    ]).pipe(\n        map(combination => {\n            const description = combination[0];\n            const metadataDescription = combination[1];\n            const showDescription = combination[2];\n\n            return (description || metadataDescription) && showDescription && showDescription === \"onHover\";\n        })\n    );\n\n    readonly hasPermanentDescription$ = combineLatest([\n        this.description$,\n        this.metadataDescription$,\n        this.showDescription$\n    ]).pipe(\n        map(combination => {\n            const description = combination[0];\n            const metadataDescription = combination[1];\n            const showDescription = combination[2];\n\n            return (description || metadataDescription) && showDescription && showDescription !== \"onHover\";\n        })\n    );\n\n    readonly maxContentWidth$ = combineLatest([\n        observeAttribute$(this as InspectorItemComponent, \"maxContentWidth\"),\n        this.service.maxContentWidth$\n    ]).pipe(map(toOwnOrParentSettings));\n\n    readonly labelThemeColor$ = combineLatest([\n        observeAttribute$(this as InspectorItemComponent, \"labelThemeColor\"),\n        this.service.fieldLabelThemeColor$\n    ]).pipe(map(toOwnOrParentSettings));\n\n\n    constructor(\n        private readonly service: InspectorService\n    ) {\n    }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { AttributeMetadata } from \"data-modeling\";\nimport { ExpansionTogglePosition } from \"../../details/models\";\n\n@Component({\n    selector: \"dgp-inspector-section\",\n    template: `\n        <dgp-details [expandable]=\"expandable\"\n                     [expanded]=\"expanded\"\n                     (expandedChange)=\"updateExpanded($event)\"\n                     [togglePosition]=\"togglePosition\">\n\n            <ng-container summary>\n                  <span class=\"label\">\n                    {{ label || metadata?.label }}\n                    </span>\n                <mat-icon style=\"margin-left: 8px;\"\n                          class=\"section-icon mat-icon--small\">\n                    {{matIconName || metadata?.icon}}\n                </mat-icon>\n                <dgp-spacer></dgp-spacer>\n                <ng-content select=\"[actions]\"></ng-content>\n            </ng-container>\n\n            <ng-content></ng-content>\n        </dgp-details>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n        }\n\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class InspectorSectionComponent {\n\n    @Input()\n    matIconName: string;\n\n    @Input()\n    label: string;\n\n    @Input()\n    expanded = true;\n\n    @Input()\n    expandable = true;\n\n    @Input()\n    togglePosition: ExpansionTogglePosition = \"end\";\n\n    @Input()\n    metadata: AttributeMetadata<any>;\n\n    @Output()\n    readonly expandedChange = new EventEmitter<boolean>();\n\n    updateExpanded(expanded: boolean) {\n        if (expanded === this.expanded) return;\n\n        this.expanded = expanded;\n        this.expandedChange.emit(this.expanded);\n    }\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { observeAttribute$ } from \"../../utils/observe-input\";\nimport { InspectorConfig } from \"../models/inspector-config.model\";\nimport { ThemePalette } from \"@angular/material/core\";\nimport { InspectorService } from \"../services/inspector.service\";\nimport { filter } from \"rxjs/operators\";\n\n@Component({\n    selector: \"dgp-inspector\",\n    template: `\n        <mat-list>\n            <ng-content></ng-content>\n        </mat-list>\n    `,\n    styles: [`\n        :host {\n            padding: 0;\n            overflow: auto;\n            flex-shrink: 0;\n        }\n\n        /* TODO(mdc-migration): The following rule targets internal classes of list that may no longer apply for the MDC version. */\n        mat-list {\n            padding: 0;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        InspectorService\n    ],\n    standalone: false\n})\nexport class InspectorComponent implements InspectorConfig {\n\n    @Input()\n    fieldLabelThemeColor: ThemePalette;\n\n    @Input()\n    maxContentWidth: string;\n\n    @Input()\n    showFieldDescriptions: boolean | \"onHover\";\n\n    @Input()\n    showFieldIcons: boolean;\n\n    @Input()\n    responsive: boolean;\n\n    private readonly fieldLabelThemeColor$ = observeAttribute$(this as InspectorComponent, \"fieldLabelThemeColor\");\n    private readonly maxContentWidth$ = observeAttribute$(this as InspectorComponent, \"maxContentWidth\");\n    private readonly responsive$ = observeAttribute$(this as InspectorComponent, \"responsive\");\n    private readonly showFieldDescriptions$ = observeAttribute$(this as InspectorComponent, \"showFieldDescriptions\");\n    private readonly showFieldIcons$ = observeAttribute$(this as InspectorComponent, \"showFieldIcons\");\n\n    constructor(\n        private readonly service: InspectorService\n    ) {\n        this.fieldLabelThemeColor$.pipe(filter(x => x !== undefined)).subscribe(fieldLabelThemeColor => {\n            this.service.updateConfig({fieldLabelThemeColor});\n        });\n\n        this.maxContentWidth$.pipe(filter(x => x !== undefined)).subscribe(maxContentWidth => {\n            this.service.updateConfig({maxContentWidth});\n        });\n\n        this.responsive$.pipe(filter(x => x !== undefined)).subscribe(responsive => {\n            this.service.updateConfig({responsive});\n        });\n\n        this.showFieldDescriptions$.pipe(filter(x => x !== undefined)).subscribe(showFieldDescriptions => {\n            this.service.updateConfig({showFieldDescriptions});\n        });\n\n        this.showFieldIcons$.pipe(filter(x => x !== undefined)).subscribe(showFieldIcons => {\n            this.service.updateConfig({showFieldIcons});\n        });\n    }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { DgpNegatePipe } from \"./negate.pipe\";\n\n@NgModule({\n    declarations: [\n        DgpNegatePipe\n    ],\n    exports: [\n        DgpNegatePipe\n    ]\n})\nexport class DgpNegatePipeModule {\n}\n","import { CommonModule } from \"@angular/common\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DgpSpacerModule } from \"../spacer/spacer.module\";\nimport { InspectorItemComponent } from \"./components/inspector-item.component\";\nimport { InspectorSectionComponent } from \"./components/inspector-section.component\";\nimport { InspectorComponent } from \"./components/inspector.component\";\nimport { DgpExpansionToggleModule } from \"../expansion-toggle/expansion-toggle.module\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { DgpNegatePipeModule } from \"../negate/negate-pipe.module\";\nimport { InspectorConfig } from \"./models\";\nimport { provideDefaultInspectorConfig } from \"./functions\";\nimport { DgpDetailsModule } from \"../details/details.module\";\n\nconst components = [\n    InspectorComponent,\n    InspectorItemComponent,\n    InspectorSectionComponent\n];\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatListModule,\n        DgpSpacerModule,\n        MatIconModule,\n        DgpExpansionToggleModule,\n        MatTooltipModule,\n        DgpNegatePipeModule,\n        DgpDetailsModule\n    ],\n    declarations: [\n        ...components\n    ],\n    exports: [\n        ...components\n    ]\n})\nexport class DgpInspectorModule {\n\n    static forRoot(payload: Partial<InspectorConfig>): ModuleWithProviders<DgpInspectorModule> {\n        return {\n            ngModule: DgpInspectorModule,\n            providers: [\n                provideDefaultInspectorConfig(payload)\n            ]\n        };\n    }\n\n}\n","import { DgpActionShortcutDirective } from \"./action-shortcut.directive\";\n\nexport const directives = [\n    DgpActionShortcutDirective\n];\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { directives } from \"./directives/directives\";\nimport { defaultShortcutConfig, provideShortcutConfig, ShortcutConfig } from \"./models\";\n\n@NgModule({\n    declarations: [\n        ...directives\n    ],\n    exports: [\n        ...directives\n    ]\n})\nexport class DgpShortcutModule {\n\n    static forRoot(config: ShortcutConfig = defaultShortcutConfig): ModuleWithProviders<DgpShortcutModule> {\n        return {\n            ngModule: DgpShortcutModule,\n            providers: [provideShortcutConfig(config)]\n        };\n    }\n\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { PdfViewerComponent } from \"./components/pdf-viewer.component\";\nimport { PngViewerComponent } from \"./components/png-viewer.component\";\nimport { FileViewerComponent } from \"./components/file-viewer.component\";\nimport { FallbackFileViewerComponent } from \"./components/fallback-file-viewer.component\";\nimport { FileItemListComponent } from \"./components/list/file-item-list.component\";\nimport { JpgViewerComponent } from \"./components/jpg-viewer.component\";\nimport { SvgViewerComponent } from \"./components/svg-viewer.component\";\nimport { PlatformModule } from \"@angular/cdk/platform\";\nimport { DgpEmptyStateModule } from \"../empty-state/empty-state.module\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { RouterModule } from \"@angular/router\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DgpSpacerModule } from \"../spacer/spacer.module\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { FILE_VIEWER_CONFIG, FileTypeViewerMap, FileViewerConfig } from \"./models\";\nimport { DynamicFileViewerComponent } from \"./components/dynamic-file-viewer.component\";\nimport { SafePipeModule } from \"../safe/safe-pipe.module\";\nimport { DgpActionContextModule } from \"../action-context/action-context.module\";\nimport { DgpInspectorModule } from \"../inspector/inspector.module\";\nimport { DgpShortcutModule } from \"../shortcuts/shortcuts.module\";\nimport { RemoveCurrentFileItemActionComponent } from \"./components/list/remove-current-file-item-action.component\";\nimport { DgpNegatePipeModule } from \"../negate/negate-pipe.module\";\nimport { DownloadCurrentFileItemComponent } from \"./components/list/download-current-file-item.component\";\nimport { FileItemListItemComponent } from \"./components/list/file-item-list-item.component\";\n\n// TODO: Add bmp\n\nexport const defaultFileTypeViewerMap: FileTypeViewerMap = {};\n\nexport const defaultFileViewerConfig: FileViewerConfig = {\n    fileTypeViewerMap: defaultFileTypeViewerMap\n};\n\n@NgModule({\n    imports: [\n        PlatformModule,\n        DgpEmptyStateModule,\n        MatListModule,\n        RouterModule,\n        CommonModule,\n        MatTooltipModule,\n        MatIconModule,\n        DgpSpacerModule,\n        MatButtonModule,\n        MatMenuModule,\n        SafePipeModule,\n        DgpActionContextModule,\n        DgpInspectorModule,\n        DgpShortcutModule,\n        DgpNegatePipeModule\n    ],\n    declarations: [\n        PdfViewerComponent,\n        JpgViewerComponent,\n        PngViewerComponent,\n        SvgViewerComponent,\n        FileViewerComponent,\n        FallbackFileViewerComponent,\n        FileItemListComponent,\n        DynamicFileViewerComponent,\n        RemoveCurrentFileItemActionComponent,\n        DownloadCurrentFileItemComponent,\n        FileItemListItemComponent\n    ],\n    exports: [\n        PdfViewerComponent,\n        JpgViewerComponent,\n        PngViewerComponent,\n        SvgViewerComponent,\n        FileViewerComponent,\n        FallbackFileViewerComponent,\n        FileItemListComponent,\n        DynamicFileViewerComponent,\n    ],\n    providers: [{\n        provide: FILE_VIEWER_CONFIG,\n        useValue: defaultFileViewerConfig\n    }]\n})\nexport class DgpFileViewerModule {\n\n    static forRoot(config = defaultFileViewerConfig): ModuleWithProviders<DgpFileViewerModule> {\n        return {\n            ngModule: DgpFileViewerModule,\n            providers: [{\n                provide: FILE_VIEWER_CONFIG,\n                useValue: config\n            }]\n        };\n    }\n\n}\n","import { Directive, ElementRef } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { openFileManager } from \"../actions\";\n\n@Directive({\n    selector: \"[dgpFileDragListener]\",\n    standalone: false\n})\nexport class DragFileListenerDirective {\n\n    constructor(\n        private readonly store: Store<any>,\n        private readonly elementRef: ElementRef\n    ) {\n\n        function dragOverHandler(e) {\n            e.preventDefault();\n            store.dispatch(openFileManager({}));\n        }\n\n        this.elementRef.nativeElement.addEventListener(\"dragover\", dragOverHandler);\n\n    }\n\n}\n","import { Directive, Inject, OnDestroy } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { openFileManager } from \"../actions\";\nimport { fromEvent, Subscription } from \"rxjs\";\nimport { filter, first, switchMap, tap } from \"rxjs/operators\";\nimport { isFileManagerOpen } from \"../selectors\";\nimport { FILE_UPLOAD_CONFIG, FileUploadConfig } from \"../models\";\n\n@Directive({\n    selector: \"[dgpOpenFileManagerViaShortKey]\",\n    standalone: false\n})\nexport class OpenFileManagerViaShortKeyDirective implements OnDestroy {\n\n    private readonly keyPressSubscription: Subscription;\n\n    constructor(\n        private readonly store: Store<any>,\n        @Inject(FILE_UPLOAD_CONFIG)\n        private readonly moduleConfig: FileUploadConfig\n    ) {\n\n        this.keyPressSubscription = fromEvent(document, \"keydown\")\n            .pipe(\n                filter(this.moduleConfig.openFileManagerShortKeyFilter),\n                switchMap(() => this.store.select(isFileManagerOpen)\n                    .pipe(first())\n                    .toPromise()),\n                filter(x => !x),\n                tap(() => this.store.dispatch(openFileManager({})))\n            )\n            .subscribe();\n\n    }\n\n    ngOnDestroy(): void {\n        if (!this.keyPressSubscription.closed) {\n            this.keyPressSubscription.unsubscribe();\n        }\n    }\n\n}\n","import { Observable } from \"rxjs\";\n\nexport enum DrawerMode {\n    Side = \"side\",\n    Over = \"over\"\n}\n\nexport interface IsDrawerOpenInfo {\n    readonly isDrawerOpen: boolean;\n}\n\nexport interface IsDrawerOpenInfoProperty extends IsDrawerOpenInfo {\n    readonly isDrawerOpenChange: Observable<boolean>;\n}\n\nexport interface DrawerLayout extends IsDrawerOpenInfo {\n    readonly drawerMode: DrawerMode;\n}\n\nexport enum DrawerLayoutMenuTogglePosition {\n    /**\n     * Places the toggle to the right of the menu and centers it vertically.\n     */\n    RightToMenuAndVerticallyCentered = \"rightToMenuAndVerticallyCentered\",\n    /**\n     * Removes the default toggle so the user can place the component elsewhere\n     */\n    Custom = \"custom\"\n}\n","import { defaultFileUploadConfig, FileUploadEntities, FileUploadState, FileUploadStoreFeature } from \"./models\";\nimport { createEntityStore } from \"entity-store\";\nimport { ActionReducerMap, createReducer, on } from \"@ngrx/store\";\nimport { closeFileManager, hideDropTarget, openFileManagerOverlay, setConfig, setIsFileDrawerOpen, showDropTarget } from \"./actions\";\nimport { DrawerMode } from \"../drawer-layout/models\";\n\nexport const fileUploadEntityStore = createEntityStore<FileUploadEntities, FileUploadStoreFeature>({\n    storeFeature: \"FileUpload\",\n    entityTypes: [\n        \"directory\",\n        \"fileItem\"\n    ]\n});\n\nexport const fileUploadReducer: ActionReducerMap<FileUploadState> = {\n    ...fileUploadEntityStore.reducers,\n    isFileManagerOpen: createReducer(false,\n        on(openFileManagerOverlay, () => true),\n        on(closeFileManager, () => false),\n    ),\n    isDropTargetVisible: createReducer(false,\n        on(showDropTarget, () => true),\n        on(hideDropTarget, () => false),\n    ),\n    initialConfig: createReducer(defaultFileUploadConfig,\n        on(setConfig, (state, action) => action.config)\n    ),\n    fileDrawerLayout: createReducer({isDrawerOpen: true, drawerMode: DrawerMode.Side},\n        on(setIsFileDrawerOpen, (state, action) => {\n            return {\n                ...state,\n                isDrawerOpen: action.isDrawerOpen\n            };\n        })\n    ),\n};\n\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnDestroy, Output } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { FileUploadState } from \"../models\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { isAddFilesDisabled } from \"../selectors\";\nimport { hideDropTarget, showDropTarget } from \"../actions\";\nimport { getFileItemsFromFileList } from \"../functions\";\nimport { FileItem } from \"../../file-viewer/models\";\nimport { Many } from \"data-modeling\";\n\n@Component({\n    selector: \"dgp-file-drop-zone\",\n    template: `\n        <dgp-empty-state title=\"Drop file here\"\n                         matIconName=\"get_app\">\n            Drop one or more files into this zone to upload them.\n            <br>\n            You can preview them afterward.\n            <br>\n            <button mat-button\n                    [disabled]=\"disabled\"\n                    (click)=\"filePicker.click()\"\n                    style=\"display: flex; max-width: 480px; width: 100%; justify-content: center; margin-top: 16px;\"\n                    matTooltip=\"Click to choose files\"\n                    dgpActionShortcut\n                    shortcutKey=\"p\"\n                    [requireShift]=\"true\"\n                    [requireCtrl]=\"true\"\n                    [requireAlt]=\"true\">\n                <mat-icon style=\"margin-right: 4px;\">open_in_new</mat-icon>\n                Choose file via picker\n            </button>\n\n            <input hidden\n                   multiple\n                   (change)=\"onFileSelected($event)\"\n                   type=\"file\"\n                   #filePicker>\n\n        </dgp-empty-state>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n        }\n\n        dgp-empty-state {\n            border: 2px dashed white;\n            max-height: 100%;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class FileDropZoneComponent extends DgpContainer<FileUploadState> implements AfterViewInit, OnDestroy {\n\n    @Input()\n    disabled = false;\n\n    @Output()\n    readonly filesAdded = new EventEmitter<Many<FileItem>>();\n\n    readonly dragEnterHandler = (e: DragEvent) => {\n        e.preventDefault();\n        this.dispatch(showDropTarget());\n    };\n\n    readonly dragLeaveHandler = (e: DragEvent) => {\n        e.preventDefault();\n        this.dispatch(hideDropTarget());\n    };\n\n    readonly dragOverHandler = (e: DragEvent) => {\n        e.preventDefault();\n    };\n\n    readonly dropHandler = (e: DragEvent) => {\n        e.preventDefault();\n\n        const fileItems = getFileItemsFromFileList(e.dataTransfer.files);\n        this.filesAdded.emit(fileItems);\n    };\n\n    constructor(\n        protected readonly store: Store<FileUploadState>,\n        private readonly elementRef: ElementRef\n    ) {\n        super(store);\n    }\n\n    ngAfterViewInit(): void {\n        this.elementRef.nativeElement.addEventListener(\"dragenter\", this.dragEnterHandler);\n        this.elementRef.nativeElement.addEventListener(\"dragleave\", this.dragLeaveHandler);\n        this.elementRef.nativeElement.addEventListener(\"drop\", this.dropHandler);\n        this.elementRef.nativeElement.addEventListener(\"dragover\", this.dragOverHandler);\n    }\n\n    ngOnDestroy(): void {\n        this.elementRef.nativeElement.removeEventListener(\"dragenter\", this.dragEnterHandler);\n        this.elementRef.nativeElement.removeEventListener(\"dragleave\", this.dragLeaveHandler);\n        this.elementRef.nativeElement.removeEventListener(\"drop\", this.dropHandler);\n        this.elementRef.nativeElement.removeEventListener(\"dragover\", this.dragOverHandler);\n    }\n\n    onFileSelected(e) {\n        const fileItems = getFileItemsFromFileList(e.target.files);\n        this.filesAdded.emit(fileItems);\n    }\n\n}\n","import { Component } from \"@angular/core\";\nimport { FileUploadState } from \"../models\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { isAddFilesDisabled } from \"../selectors\";\nimport { addFilesViaDrop } from \"../actions\";\nimport { FileItem } from \"../../file-viewer/models\";\nimport { Many } from \"data-modeling\";\n\n@Component({\n    selector: \"dgp-current-file-drop-zone\",\n    template: `\n        <dgp-file-drop-zone [disabled]=\"isAddFilesDisabled$ | async\"\n                            (filesAdded)=\"addFiles($event)\"></dgp-file-drop-zone>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n        }\n    `],\n    standalone: false\n})\nexport class CurrentFileDropZoneComponent extends DgpContainer<FileUploadState> {\n\n    readonly isAddFilesDisabled$ = this.select(isAddFilesDisabled);\n\n    addFiles(fileItems: Many<FileItem>) {\n        this.dispatch(addFilesViaDrop({fileItems}));\n    }\n\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { DgpShortcutModule } from \"../shortcuts/shortcuts.module\";\nimport { ActionShortcut } from \"../shortcuts/models\";\nimport { IsDrawerOpenInfoProperty } from \"./models\";\n\n@Component({\n    selector: \"dgp-drawer-layout-menu-toggle\",\n    template: `\n        <button mat-icon-button\n                (click)=\"toggleDrawer()\"\n                matTooltip=\"Toggle menu drawer\"\n                dgpActionShortcut\n                [shortcutKey]=\"shortcutKey\"\n                [requireAlt]=\"requireAlt\"\n                [requireCtrl]=\"requireCtrl\"\n                [requireShift]=\"requireShift\">\n            @if (isDrawerOpen) {\n                <mat-icon>\n                    arrow_back\n                </mat-icon>\n            } @else {\n                <mat-icon>\n                    arrow_forward\n                </mat-icon>\n            }\n        </button>\n    `,\n    imports: [\n        MatIcon,\n        MatIconButton,\n        MatTooltip,\n        DgpShortcutModule\n    ]\n})\nexport class DgpDrawerLayoutMenuToggleComponent implements ActionShortcut, IsDrawerOpenInfoProperty {\n\n    @Output()\n    readonly isDrawerOpenChange = new EventEmitter<boolean>();\n\n    @Input()\n    isDrawerOpen: boolean;\n\n    @Input()\n    shortcutKey = \"t\";\n\n    @Input()\n    requireAlt = true;\n\n    @Input()\n    requireCtrl = true;\n\n    @Input()\n    requireShift = true;\n\n    toggleDrawer() {\n        this.isDrawerOpenChange.emit(!this.isDrawerOpen);\n    }\n}\n\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { DgpDrawerLayoutMenuToggleComponent } from \"../../drawer-layout/drawer-layout-menu-toggle.component\";\nimport { AsyncPipe } from \"@angular/common\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { isFileManagerMenuDrawerOpen } from \"../selectors\";\nimport { setIsFileDrawerOpen } from \"../actions\";\n\n@Component({\n    selector: \"dgp-file-manager-menu-toggle\",\n    template: `\n        <dgp-drawer-layout-menu-toggle [isDrawerOpen]=\"isFileManagerMenuDrawerOpen$ | async\"\n                                       (isDrawerOpenChange)=\"setIsFileDrawerOpen($event)\"/>\n    `,\n    styles: [`\n\n    `],\n    imports: [\n        DgpDrawerLayoutMenuToggleComponent,\n        AsyncPipe\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DgpFileManagerMenuToggle extends DgpContainer<FileUploadState> {\n\n    readonly isFileManagerMenuDrawerOpen$ = this.select(isFileManagerMenuDrawerOpen);\n\n    setIsFileDrawerOpen(isDrawerOpen: boolean) {\n        this.dispatch(setIsFileDrawerOpen({isDrawerOpen}));\n    }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-close-dialog-button\",\n    template: `\n        <button mat-icon-button\n                mat-dialog-close\n                matTooltip=\"Close dialog\">\n            <mat-icon>close</mat-icon>\n        </button>\n    `,\n    standalone: false\n})\nexport class CloseDialogButtonComponent {\n\n}\n","import { Component, Inject } from \"@angular/core\";\nimport { FILE_UPLOAD_CONFIG, FileUploadConfig } from \"../models\";\nimport { MatDialogRef } from \"@angular/material/dialog\";\n\n@Component({\n    selector: \"dgp-maximize-dialog-button\",\n    template: `\n        @if (!isMaximized) {\n          <button\n            mat-icon-button\n            (click)=\"maximize()\"\n            matTooltip=\"Maximize\"\n            dgpActionShortcut\n            shortcutKey=\"M\"\n            [requireShift]=\"true\">\n            <mat-icon>crop_din</mat-icon>\n          </button>\n        }\n        @if (isMaximized) {\n          <button\n            mat-icon-button\n            (click)=\"minimize()\"\n            matTooltip=\"Minimize\"\n            dgpActionShortcut\n            shortcutKey=\"M\"\n            [requireShift]=\"true\">\n            <mat-icon>filter_none</mat-icon>\n          </button>\n        }\n        `,\n    standalone: false\n})\nexport class MaximizeDialogButtonComponent {\n\n    isMaximized: boolean;\n\n    constructor(\n        private readonly dialogRef: MatDialogRef<any>,\n        @Inject(FILE_UPLOAD_CONFIG)\n        private readonly moduleConfig: FileUploadConfig\n    ) {\n    }\n\n    maximize() {\n        this.isMaximized = true;\n        this.dialogRef.addPanelClass(this.moduleConfig.maximizedClass);\n    }\n\n    minimize() {\n        this.dialogRef.removePanelClass(this.moduleConfig.maximizedClass);\n        this.isMaximized = false;\n    }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-file-manager-dialog-header\",\n    template: `\n        <dgp-file-manager-menu-toggle/>\n        <dgp-spacer></dgp-spacer>\n        <dgp-maximize-dialog-button></dgp-maximize-dialog-button>\n        <dgp-close-dialog-button></dgp-close-dialog-button>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            align-items: center;\n        }\n    `],\n    standalone: false\n})\nexport class FileManagerDialogHeaderComponent {\n\n}\n","import { Component } from \"@angular/core\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { DgpShortcutModule } from \"../../shortcuts/shortcuts.module\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { DgpNegatePipeModule } from \"../../negate/negate-pipe.module\";\nimport { AsyncPipe } from \"@angular/common\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { canSelectPreviousFile } from \"../selectors\";\nimport { selectPreviousFile } from \"../actions\";\n\n@Component({\n    selector: \"dgp-select-previous-file-item-action\",\n    template: `\n        <button mat-icon-button\n                matTooltip=\"Select previous file\"\n                dgpActionShortcut\n                shortcutKey=\"ArrowLeft\"\n                [requireShift]=\"true\"\n                [requireCtrl]=\"true\"\n                [requireAlt]=\"true\"\n                (click)=\"selectPreviousFile()\"\n                [disabled]=\"canSelectPreviousFile$ | async | negate\">\n            <mat-icon>chevron_left</mat-icon>\n        </button>\n    `,\n    imports: [\n        MatIconButton,\n        MatTooltip,\n        DgpShortcutModule,\n        MatIcon,\n        DgpNegatePipeModule,\n        AsyncPipe\n    ]\n})\nexport class DgpSelectPreviousFileItemActionComponent extends DgpContainer<FileUploadState> {\n\n    readonly canSelectPreviousFile$ = this.select(canSelectPreviousFile);\n\n    selectPreviousFile() {\n        this.dispatch(selectPreviousFile());\n    }\n}\n","import { Component } from \"@angular/core\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { DgpShortcutModule } from \"../../shortcuts/shortcuts.module\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { DgpNegatePipeModule } from \"../../negate/negate-pipe.module\";\nimport { AsyncPipe } from \"@angular/common\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { canSelectNextFile } from \"../selectors\";\nimport { selectNextFile } from \"../actions\";\n\n@Component({\n    selector: \"dgp-select-next-file-item-action\",\n    template: `\n        <button mat-icon-button\n                matTooltip=\"Select next file\"\n                dgpActionShortcut\n                shortcutKey=\"ArrowRight\"\n                [requireShift]=\"true\"\n                [requireCtrl]=\"true\"\n                [requireAlt]=\"true\"\n                (click)=\"selectNextFile()\"\n                [disabled]=\"canSelectNextFile$ | async | negate\">\n            <mat-icon>chevron_right</mat-icon>\n        </button>\n    `,\n    imports: [\n        MatIconButton,\n        MatTooltip,\n        DgpShortcutModule,\n        MatIcon,\n        DgpNegatePipeModule,\n        AsyncPipe\n    ]\n})\nexport class DgpSelectNextFileItemActionComponent extends DgpContainer<FileUploadState> {\n\n    readonly canSelectNextFile$ = this.select(canSelectNextFile);\n\n    selectNextFile() {\n        this.dispatch(selectNextFile());\n    }\n}\n","import { Component } from \"@angular/core\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { getSelectedFileItem, hasMoreThanOneFile } from \"../selectors\";\n\n@Component({\n    selector: \"dgp-current-file-viewer\",\n    template: `\n        <dgp-file-viewer [fileItem]=\"selectedFileItem$ | async\"></dgp-file-viewer>\n        @if (hasMoreThanOneFile$ | async) {\n            <dgp-select-previous-file-item-action />\n            <dgp-select-next-file-item-action />\n        }\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            width: 100%;\n            height: 100%;\n            position: relative;\n        }\n\n        dgp-select-previous-file-item-action {\n            position: absolute;\n            align-self: center;\n            left: 0;\n        }\n\n        dgp-select-next-file-item-action {\n            position: absolute;\n            align-self: center;\n            right: 0;\n        }\n    `],\n    standalone: false\n})\nexport class CurrentFileViewerComponent extends DgpContainer<FileUploadState> {\n    readonly selectedFileItem$ = this.select(getSelectedFileItem);\n    readonly hasMoreThanOneFile$ = this.select(hasMoreThanOneFile);\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent } from \"@angular/material/sidenav\";\nimport { DgpDrawerLayoutMenuToggleComponent } from \"./drawer-layout-menu-toggle.component\";\nimport { DrawerLayout, DrawerLayoutMenuTogglePosition, DrawerMode, IsDrawerOpenInfoProperty } from \"./models\";\n\n@Component({\n    selector: \"dgp-drawer-layout\",\n    template: `\n        <mat-drawer-container class=\"page-menu-drawer-container\">\n\n            <mat-drawer [mode]=\"drawerMode\"\n                        [opened]=\"isDrawerOpen\"\n                        (closed)=\"closeMenuDrawer()\"\n                        class=\"page-menu-drawer mat-elevation-z4\">\n\n                <ng-content select=\"[dgp-drawer-layout-menu]\"></ng-content>\n\n            </mat-drawer>\n\n            <mat-drawer-content class=\"page-menu-drawer-content\">\n\n                <div class=\"page-menu-drawer-toggle-container\">\n\n                    @if (menuTogglePosition === togglePositionEnum.RightToMenuAndVerticallyCentered) {\n                        <dgp-drawer-layout-menu-toggle [isDrawerOpen]=\"isDrawerOpen\"\n                                                       (isDrawerOpenChange)=\"updateIsDrawerOpen($event)\"/>\n                    }\n\n\n                </div>\n\n                <ng-content></ng-content>\n\n            </mat-drawer-content>\n\n        </mat-drawer-container>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            overflow: auto;\n            flex-grow: 1;\n        }\n\n        .page-menu-drawer-container {\n            display: flex;\n            flex-grow: 1;\n            overflow: inherit;\n        }\n\n        .page-menu-drawer {\n            width: 360px;\n        }\n\n        .page-menu-drawer-content {\n            overflow: auto;\n            flex-grow: 1;\n            display: flex;\n            position: relative;\n        }\n\n        .page-menu-drawer-toggle-container {\n            display: flex;\n            align-items: center;\n            top: 0;\n            bottom: 0;\n            position: absolute;\n        }\n\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatDrawerContainer,\n        MatDrawer,\n        MatDrawerContent,\n        DgpDrawerLayoutMenuToggleComponent\n    ]\n})\nexport class DgpDrawerLayoutComponent implements DrawerLayout, IsDrawerOpenInfoProperty {\n\n    readonly togglePositionEnum = DrawerLayoutMenuTogglePosition;\n\n    @Input()\n    menuTogglePosition: DrawerLayoutMenuTogglePosition = DrawerLayoutMenuTogglePosition.RightToMenuAndVerticallyCentered;\n\n    @Input()\n    drawerMode: DrawerMode;\n\n    @Input()\n    isDrawerOpen: boolean;\n\n    @Output()\n    readonly isDrawerOpenChange = new EventEmitter<boolean>();\n\n    closeMenuDrawer() {\n        this.isDrawerOpenChange.emit(false);\n    }\n\n     updateIsDrawerOpen(isDrawerOpen: boolean) {\n        this.isDrawerOpen = isDrawerOpen;\n        this.isDrawerOpenChange.emit(isDrawerOpen);\n    }\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { DgpDrawerLayoutComponent } from \"../../drawer-layout/drawer-layout.component\";\nimport { AsyncPipe } from \"@angular/common\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { isFileManagerMenuDrawerOpen } from \"../selectors\";\nimport { setIsFileDrawerOpen } from \"../actions\";\nimport { DrawerLayoutMenuTogglePosition, DrawerMode } from \"../../drawer-layout/models\";\n\n@Component({\n    selector: \"dgp-file-manager-drawer-layout\",\n    template: `\n        <dgp-drawer-layout [menuTogglePosition]=\"togglePositionEnum.Custom\"\n                           [isDrawerOpen]=\"isFileManagerMenuDrawerOpen$ | async\"\n                           (isDrawerOpenChange)=\"setIsFileDrawerOpen($event)\"\n                           [drawerMode]=\"drawerModeEnum.Side\">\n            <ng-container dgp-drawer-layout-menu>\n                <ng-content select=\"[dgp-file-manager-file-menu]\"></ng-content>\n            </ng-container>\n            <ng-content></ng-content>\n        </dgp-drawer-layout>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            overflow: auto;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        DgpDrawerLayoutComponent,\n        AsyncPipe\n    ]\n})\nexport class DgpFileManagerDrawerLayout extends DgpContainer<FileUploadState> {\n\n    readonly togglePositionEnum = DrawerLayoutMenuTogglePosition;\n    readonly drawerModeEnum = DrawerMode;\n    readonly isFileManagerMenuDrawerOpen$ = this.select(isFileManagerMenuDrawerOpen);\n\n    setIsFileDrawerOpen(isDrawerOpen: boolean) {\n        this.dispatch(setIsFileDrawerOpen({isDrawerOpen}));\n    }\n\n}\n","import { Component } from \"@angular/core\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { isAddFilesDisabled } from \"../selectors\";\nimport { getFileItemsFromFileList } from \"../functions\";\nimport { addFilesViaDrop } from \"../actions\";\n\n@Component({\n    selector: \"dgp-current-add-file-list-item\",\n    template: `\n        @if (isAddFilesDisabled$ | async | negate) {\n          <mat-action-list>\n            <mat-list-item (click)=\"filePicker.click()\"\n              matTooltip=\"Click to choose files\"\n              dgpActionShortcut\n              shortcutKey=\"p\"\n              [requireShift]=\"true\"\n              [requireCtrl]=\"true\"\n              [requireAlt]=\"true\">\n              <mat-icon matListItemIcon>\n                open_in_new\n              </mat-icon>\n              <div matListItemTitle>\n                Choose file via picker\n              </div>\n              <input hidden\n                multiple\n                (change)=\"onFileSelected($event)\"\n                type=\"file\"\n                #filePicker>\n              </mat-list-item>\n            </mat-action-list>\n          }\n        `,\n    standalone: false\n})\nexport class CurrentAddFileListItemComponent extends DgpContainer<FileUploadState> {\n    readonly isAddFilesDisabled$ = this.select(isAddFilesDisabled);\n\n    onFileSelected(e) {\n        const fileItems = getFileItemsFromFileList(e.target.files);\n        this.dispatch(addFilesViaDrop({fileItems}));\n    }\n}\n","import { Component } from \"@angular/core\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { getFileItemListModel, isRemoveFilesDisabled } from \"../selectors\";\n\n@Component({\n    selector: \"dgp-current-file-item-list\",\n    template: `\n        <dgp-file-item-list [model]=\"fileItemListModel$ | async\"\n                            [disabled]=\"isRemoveFilesDisabled$ | async\"></dgp-file-item-list>\n        <dgp-spacer></dgp-spacer>\n        <dgp-current-add-file-list-item></dgp-current-add-file-list-item>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n        }\n    `],\n    standalone: false\n})\nexport class CurrentFileItemListComponent extends DgpContainer<FileUploadState> {\n\n    readonly fileItemListModel$ = this.select(getFileItemListModel);\n    readonly isRemoveFilesDisabled$ = this.select(isRemoveFilesDisabled);\n\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-current-list-file-viewer\",\n    template: `\n        <dgp-file-manager-drawer-layout>\n            <dgp-current-file-item-list dgp-file-manager-file-menu></dgp-current-file-item-list>\n            <dgp-current-file-viewer></dgp-current-file-viewer>\n        </dgp-file-manager-drawer-layout>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            overflow: auto;\n        }\n    `],\n    standalone: false\n})\nexport class CurrentListFileViewerComponent {\n\n}\n","import { Component, } from \"@angular/core\";\nimport { FileUploadState } from \"../models\";\nimport { canOpenFileDrawer, isDropTargetVisible } from \"../selectors\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\n\n@Component({\n    selector: \"dgp-file-manager\",\n    template: `\n        <mat-dialog-content>\n          @if (isDropTargetVisible$ | async) {\n            <dgp-current-file-drop-zone\n            ></dgp-current-file-drop-zone>\n          } @else {\n            @if (canOpenFileDrawer$ | async) {\n              <dgp-file-manager-dialog-header></dgp-file-manager-dialog-header>\n              <dgp-current-list-file-viewer></dgp-current-list-file-viewer>\n            } @else {\n              <dgp-current-file-viewer></dgp-current-file-viewer>\n            }\n          }\n        \n        \n        \n        </mat-dialog-content>\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            width: 100%;\n            height: 100%;\n        }\n\n        mat-dialog-content {\n            display: flex;\n            flex-direction: column;\n            max-height: initial;\n        }\n    `],\n    standalone: false\n})\nexport class FileManagerComponent extends DgpContainer<FileUploadState> {\n    readonly isDropTargetVisible$ = this.select(isDropTargetVisible);\n    readonly canOpenFileDrawer$ = this.select(canOpenFileDrawer);\n}\n","import { FileItemId } from \"./models\";\nimport { fileUploadEntityStore } from \"../file-upload/store\";\n\nexport function selectFileItem(payload: FileItemId) {\n    return fileUploadEntityStore.actions.composeEntityActions({\n        select: {\n            fileItem: [payload.fileItemId]\n        }\n    });\n}\n","import { FileSystem } from \"./file-system.model\";\nimport { fileUploadEntityStore } from \"./store\";\nimport { createKVSFromArray } from \"entity-store\";\n\nexport function cacheFileSystem(payload: FileSystem) {\n    return fileUploadEntityStore.actions.composeEntityActions({\n        set: {\n            fileItem: createKVSFromArray(payload.fileItems, x => x.fileItemId),\n            directory: createKVSFromArray(payload.directories || [], x => x.directoryId),\n        },\n        select: {\n            fileItem: payload.selectedFileItemId\n                ? [payload.selectedFileItemId]\n                : []\n        }\n    });\n}\n","import { FileItem } from \"../file-viewer/models\";\n\nexport function openFileItemInNewTab(payload: FileItem) {\n    const a = document.createElement(\"a\");\n    a.href = payload.url;\n    a.target = \"_blank\";\n    a.click();\n}\n","import { ModelMetadata } from \"data-modeling\";\nimport { Directory } from \"../../file-viewer/models\";\n\nexport const directoryMetadata: ModelMetadata<Directory> = {\n    id: x => x.directoryId\n};\n","import { ModelMetadata } from \"data-modeling\";\nimport { Directory, FileItem } from \"../../file-viewer/models\";\n\nexport const fileItemMetadata: ModelMetadata<FileItem> = {\n    id: x => x.fileItemId\n};\n","import { Many } from \"data-modeling\";\n\nexport function getListItemNeighbor<T>(payload: {\n    readonly collection: Many<T>;\n    readonly item: T;\n    readonly neighbor: \"previous\" | \"next\";\n}): T {\n    const collection = payload.collection;\n    const item = payload.item;\n    const neighbor = payload.neighbor;\n\n    const index = collection.indexOf(item);\n\n    let neighborIndex: number;\n\n    switch (neighbor) {\n        case \"previous\":\n            neighborIndex = index - 1;\n            break;\n        case \"next\":\n            neighborIndex = index + 1;\n            break;\n    }\n\n    return collection[neighborIndex];\n}\n","import { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport {\n    addFilesViaDrop,\n    closeFileManager,\n    downloadFile,\n    openFileManagerOverlay,\n    removeFile,\n    selectNextFile,\n    selectPreviousFile,\n    setConfig\n} from \"./actions\";\nimport { Store } from \"@ngrx/store\";\nimport { first, map, switchMap, tap, withLatestFrom } from \"rxjs/operators\";\nimport { FileManagerComponent } from \"./containers/file-manager.component\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { fileUploadEntityStore } from \"./store\";\nimport { createKVSFromArray } from \"entity-store\";\nimport { FILE_UPLOAD_CONFIG, FileUploadConfig, FileUploadState } from \"./models\";\nimport { getAllDirectories, getAllFileItems, getSelectedFileItem } from \"./selectors\";\nimport { withoutDispatch } from \"../utils/without-dispatch.constant\";\nimport { selectFileItem } from \"../file-viewer/select-file-item.action\";\nimport { DgpContainer } from \"../utils/container.component-base\";\nimport { FileSystem } from \"./file-system.model\";\nimport { cacheFileSystem } from \"./cache-file-system.action\";\nimport { openFileItemInNewTab } from \"./open-file-item-in-new-tab.function\";\nimport { directoryMetadata } from \"./constants/directory-metadata.constant\";\nimport { fileItemMetadata } from \"./constants/file-item-metadata.constant\";\nimport { selectActionContext } from \"../action-context/actions/select-action-context.action\";\nimport { deselectActionContext } from \"../action-context/actions/deselect-action-context.action\";\nimport { toFileItemActionContext } from \"./functions\";\nimport { getListItemNeighbor } from \"../utils/get-list-item-neighbor.function\";\n\n@Injectable()\nexport class FileUploadEffects extends DgpContainer<FileUploadState> {\n\n    readonly openFileManagerOverlay$ = createEffect(() => this.actions$.pipe(\n        ofType(openFileManagerOverlay),\n        withLatestFrom(this.select(getAllFileItems)),\n        tap(x => {\n            const action = x[0];\n            const fileItems = x[1];\n\n            if (action.fileItems) {\n                this.dispatch(cacheFileSystem(action as FileSystem));\n\n                if (action.selectedFileItemId) {\n                    const fileItem = action.fileItems.find(x1 => x1.fileItemId === action.selectedFileItemId);\n                    const actionContext = toFileItemActionContext(fileItem);\n\n                    this.dispatch(selectActionContext({\n                        actionContext\n                    }));\n                } else if (action.fileItems.length > 0) {\n                    const fileItem = action.fileItems[0];\n                    const actionContext = toFileItemActionContext(fileItem);\n                    this.dispatch(selectActionContext({\n                        actionContext\n                    }));\n                } else {\n                    this.dispatch(deselectActionContext({}));\n                }\n            } else if (fileItems?.length > 0) {\n                /**\n                 * Select first item\n                 */\n                const fileItem = fileItems[0];\n                const actionContext = toFileItemActionContext(fileItem);\n                this.dispatch(selectActionContext({\n                    actionContext\n                }));\n            }\n\n\n            if (action.config) {\n                this.dispatch(setConfig({config: action.config}));\n            }\n        }),\n        switchMap(x => this.matDialog.open(\n            FileManagerComponent,\n            x[0].config\n                ? x[0].config.fileManagerMatDialogConfig\n                : this.config.fileManagerMatDialogConfig\n        ).afterClosed()),\n        map(() => closeFileManager())\n    ));\n\n    readonly addFilesViaDrop$ = createEffect(() => this.actions$.pipe(\n        ofType(addFilesViaDrop),\n        switchMap(action => {\n            return this.select(getAllDirectories).pipe(\n                first(),\n                map(directories => {\n                    if (directories.length > 0) {\n\n                        const directory = directories[0];\n\n                        this.dispatch(selectFileItem({\n                            fileItemId: action.fileItems[0].fileItemId\n                        }));\n\n                        const fileItem = action.fileItems[0];\n                        const actionContext = toFileItemActionContext(fileItem);\n\n                        this.dispatch(selectActionContext({\n                            actionContext\n                        }));\n\n\n                        return fileUploadEntityStore.actions.composeEntityActions({\n                            add: {\n                                fileItem: createKVSFromArray(action.fileItems, fileItemMetadata.id)\n                            },\n                            update: {\n                                directory: {\n                                    [directory.directoryId]: {\n                                        fileItemIds: directory.fileItemIds.concat(\n                                            action.fileItems.map(x => x.fileItemId)\n                                        )\n                                    }\n                                }\n                            }\n                        });\n\n                    } else {\n\n                        this.dispatch(selectFileItem({\n                            fileItemId: action.fileItems[0].fileItemId\n                        }));\n\n                        const fileItem = action.fileItems[0];\n                        const actionContext = toFileItemActionContext(fileItem);\n\n                        this.dispatch(selectActionContext({\n                            actionContext\n                        }));\n\n                        return fileUploadEntityStore.actions.composeEntityActions({\n                            add: {\n                                fileItem: createKVSFromArray(action.fileItems, fileItemMetadata.id),\n                                directory: {\n                                    [\"Files\"]: {\n                                        directoryId: \"Files\",\n                                        label: \"Files\",\n                                        fileItemIds: action.fileItems.map(x => x.fileItemId)\n                                    }\n                                }\n                            }\n                        });\n\n                    }\n                })\n            );\n        })\n    ));\n\n\n    readonly removeFile$ = createEffect(() => this.actions$.pipe(\n        ofType(removeFile),\n        switchMap(action => this.select(getAllDirectories).pipe(\n            first(),\n            map(directories => {\n                const updatedDirectories = directories.map(directory => {\n                    return {\n                        ...directory,\n                        fileItemIds: directory.fileItemIds.filter(x => x !== action.fileItem.fileItemId)\n                    };\n                });\n                return fileUploadEntityStore.actions.composeEntityActions({\n                    remove: {\n                        fileItem: [action.fileItem.fileItemId]\n                    },\n                    update: {\n                        directory: createKVSFromArray(updatedDirectories, directoryMetadata.id)\n                    }\n                });\n            })\n        ))\n    ));\n\n    readonly downloadFile$ = createEffect(() => this.actions$.pipe(\n        ofType(downloadFile),\n        tap(x => openFileItemInNewTab(x.fileItem))\n    ), withoutDispatch);\n\n    readonly selectPreviousFile$ = createEffect(() => this.actions$.pipe(\n        ofType(selectPreviousFile),\n        withLatestFrom(this.select(getSelectedFileItem), this.select(getAllFileItems)),\n        map(x => {\n            const selected = x[1];\n            const all = x[2];\n\n            const item = getListItemNeighbor({\n                neighbor: \"previous\",\n                collection: all,\n                item: selected\n            });\n\n            return selectActionContext({\n                actionContext: toFileItemActionContext(item)\n            });\n        })\n    ));\n\n    readonly selectNextFile$ = createEffect(() => this.actions$.pipe(\n        ofType(selectNextFile),\n        withLatestFrom(this.select(getSelectedFileItem), this.select(getAllFileItems)),\n        map(x => {\n            const selected = x[1];\n            const all = x[2];\n\n            const item = getListItemNeighbor({\n                neighbor: \"next\",\n                collection: all,\n                item: selected\n            });\n\n            return selectActionContext({\n                actionContext: toFileItemActionContext(item)\n            });\n        })\n    ));\n\n    constructor(\n        private readonly actions$: Actions,\n        protected readonly store: Store<FileUploadState>,\n        private readonly matDialog: MatDialog,\n        @Inject(FILE_UPLOAD_CONFIG)\n        private readonly config: FileUploadConfig\n    ) {\n        super(store);\n\n        this.dispatch(setConfig({config}));\n    }\n\n}\n\n","export interface RequestState {\n    readonly pendingRequests: number;\n}\n\nexport interface RequestStoreState {\n    readonly requests: RequestState;\n}\n\nexport const requestStoreFeature = \"Requests\";\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { requestStoreFeature, RequestStoreState } from \"./models\";\n\nexport const requestStateSelector = createFeatureSelector<RequestStoreState>(\n    requestStoreFeature\n);\n\nexport const hasPendingRequests = createSelector(\n    requestStateSelector,\n    x => x.requests.pendingRequests > 0\n);\n\nexport const hasPendingRequestsSelector = createSelector(hasPendingRequests, x => x);\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { RequestState } from \"../../../request-store/models\";\nimport { hasPendingRequestsSelector } from \"../../../request-store/selectors\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\n\n@Component({\n    selector: \"dgp-page-header\",\n    template: `\n        <mat-toolbar color=\"primary\"\n          class=\"toolbar\">\n          <div class=\"progress-bar-container\">\n            @if (hasPendingRequests$ | async) {\n              <mat-progress-bar\n                color=\"accent\"\n              mode=\"query\"></mat-progress-bar>\n            }\n          </div>\n          <ng-content></ng-content>\n        </mat-toolbar>\n        `,\n    styles: [`\n        .toolbar {\n            position: relative;\n        }\n\n        .progress-bar-container {\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class PageHeaderComponent extends DgpContainer<RequestState> {\n\n    readonly hasPendingRequests$ = this.select(hasPendingRequestsSelector);\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { PageHeaderComponent } from \"./page-header.component\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatToolbarModule } from \"@angular/material/toolbar\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatToolbarModule,\n        MatProgressBarModule\n    ],\n    declarations: [\n        PageHeaderComponent\n    ],\n    exports: [\n        PageHeaderComponent\n    ],\n    providers: []\n})\nexport class DgpPageHeaderModule {\n}\n","import { createAction, props } from \"@ngrx/store\";\nimport { HamburgerMenuMode, PageMenuMode } from \"./models\";\n\n// hamburger menu\n\nexport const setHamburgerMenuState = createAction(\"[HamburgerShell] SetHamburgerMenuState\", props<{\n    readonly isHamburgerMenuOpen: boolean;\n    readonly hamburgerMenuMode: HamburgerMenuMode;\n}>());\n\nexport const toggleHamburgerMenu = createAction(\"[HamburgerShell] ToggleHamburgerMenu\");\n\nexport const closeHamburgerMenu = createAction(\"[HamburgerShell] CloseHamburgerMenu\");\n\n// list-details page\n\nexport const setListDetailsPageState = createAction(\"[HamburgerShell] SetListDetailsPageState\", props<{\n    readonly isPageMenuOpen: boolean;\n    readonly pageMenuMode: PageMenuMode;\n}>());\n\nexport const toggleListDetailsPageMenu = createAction(\"[HamburgerShell] ToggleListDetailsPageMenu\");\n\nexport const closeListDetailsMenu = createAction(\"[HamburgerShell] CloseListDetailsPageMenu\");\n","import { InjectionToken, ValueProvider } from \"@angular/core\";\n\nimport { Breakpoints } from \"@angular/cdk/layout\";\nimport { DrawerMode } from \"../drawer-layout/models\";\n\nexport enum HamburgerShellMode {\n    Responsive,\n    Overlay,\n    SideNav\n}\n\nexport enum ListDetailsPageMode {\n    Responsive,\n    Overlay,\n    SideNav\n}\n\nexport interface HamburgerShellConfig {\n    readonly hamburgerShellMode: HamburgerShellMode;\n    // Relevant for responsive mode\n    readonly hamburgerMenuBreakpoints?: ReadonlyArray<string>;\n\n    readonly listDetailsPageMode: ListDetailsPageMode;\n    // Relevant for responsive mode\n    readonly listDetailsPageMenuBreakpoints?: ReadonlyArray<string>;\n}\n\nexport const responsiveHamburgerShellConfig: HamburgerShellConfig = {\n    hamburgerShellMode: HamburgerShellMode.Responsive,\n\n    hamburgerMenuBreakpoints: [\n        Breakpoints.XLarge\n    ],\n\n    listDetailsPageMode: ListDetailsPageMode.Responsive,\n\n    listDetailsPageMenuBreakpoints: [\n        Breakpoints.Large,\n        Breakpoints.XLarge\n    ]\n};\n\nexport const sideNavHamburgerShellConfig: HamburgerShellConfig = {\n    hamburgerShellMode: HamburgerShellMode.SideNav,\n    listDetailsPageMode: ListDetailsPageMode.SideNav\n};\n\nexport const overlayHamburgerShellConfig: HamburgerShellConfig = {\n    hamburgerShellMode: HamburgerShellMode.Overlay,\n    listDetailsPageMode: ListDetailsPageMode.Overlay\n};\n\nexport const defaultHamburgerShellConfig = responsiveHamburgerShellConfig;\n\n\nexport const HAMBURGER_SHELL_CONFIG = new InjectionToken<HamburgerShellConfig>(\"HamburgerShellConfig\");\n\n\nexport interface HamburgerShellConfigProvider extends ValueProvider {\n    provide: typeof HAMBURGER_SHELL_CONFIG;\n}\n\nexport const sideNavHamburgerShellConfigProvider: HamburgerShellConfigProvider = {\n    provide: HAMBURGER_SHELL_CONFIG,\n    useValue: sideNavHamburgerShellConfig\n};\n\nexport const overlayHamburgerShellConfigProvider: HamburgerShellConfigProvider = {\n    provide: HAMBURGER_SHELL_CONFIG,\n    useValue: overlayHamburgerShellConfig\n};\n\nexport const defaultHamburgerShellConfigProvider: HamburgerShellConfigProvider = {\n    provide: HAMBURGER_SHELL_CONFIG,\n    useValue: defaultHamburgerShellConfig\n};\n\nexport type HamburgerMenuMode = \"side\" | \"over\";\nexport type PageMenuMode = DrawerMode;\n\nexport interface HamburgerShellState {\n    readonly isHamburgerMenuOpen: boolean;\n    readonly hamburgerMenuMode: HamburgerMenuMode;\n\n    readonly isPageMenuOpen: boolean;\n    readonly pageMenuMode: PageMenuMode;\n\n    // TODO: Add states for pages with a key\n}\n\nexport const hamburgerShellStoreFeature = \"HamburgerShell\";\n\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { HamburgerShellState, hamburgerShellStoreFeature } from \"./models\";\n\nexport const hamburgerShellFeatureSelector = createFeatureSelector<HamburgerShellState>(\n    hamburgerShellStoreFeature\n);\n\nexport const hamburgerMenuModeSelector = createSelector(\n    hamburgerShellFeatureSelector, x => x.hamburgerMenuMode\n);\n\nexport const isHamburgerMenuOpenSelector = createSelector(\n    hamburgerShellFeatureSelector, x => x.isHamburgerMenuOpen\n);\n\nexport const pageMenuModeSelector = createSelector(\n    hamburgerShellFeatureSelector, x => x.pageMenuMode\n);\n\nexport const isPageMenuOpenSelector = createSelector(\n    hamburgerShellFeatureSelector, x => x.isPageMenuOpen\n);\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { closeListDetailsMenu } from \"../../actions\";\nimport { isPageMenuOpenSelector, pageMenuModeSelector } from \"../../selectors\";\nimport { HamburgerShellState } from \"../../models\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\nimport { DrawerLayoutMenuTogglePosition } from \"../../../drawer-layout/models\";\n\n@Component({\n    selector: \"dgp-list-details-page\",\n    template: `\n        <dgp-drawer-layout [drawerMode]=\"pageMenuDrawerMode$ | async\"\n                           [isDrawerOpen]=\"isPageMenuDrawerOpen$ | async\"\n                           (isDrawerOpenChange)=\"closePageMenuDrawer($event)\"\n                           [menuTogglePosition]=\"menuTogglePosition\">\n\n            <ng-container dgp-drawer-layout-menu>\n                <ng-content select=\"[dgp-list-details-page-menu]\"></ng-content>\n            </ng-container>\n\n            <ng-content></ng-content>\n\n        </dgp-drawer-layout>\n\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            overflow: auto;\n            flex-grow: 1;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class ListDetailsPageComponent extends DgpContainer<HamburgerShellState> {\n\n    @Input()\n    menuTogglePosition: DrawerLayoutMenuTogglePosition = DrawerLayoutMenuTogglePosition.RightToMenuAndVerticallyCentered;\n\n    readonly pageMenuDrawerMode$ = this.select(pageMenuModeSelector);\n    readonly isPageMenuDrawerOpen$ = this.select(isPageMenuOpenSelector);\n\n    closePageMenuDrawer(isOpen: boolean): void {\n        if (isOpen) return;\n        this.dispatch(closeListDetailsMenu());\n    }\n\n}\n\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-list-details-page-content\",\n    template: `<ng-content></ng-content>`,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            max-width: 800px;\n            width: 100%;\n            padding: 32px;\n            justify-self: center;\n            margin-right: auto;\n            margin-left: auto;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})export class ListDetailsPageContentComponent {\n\n}\n","import { Component } from \"@angular/core\";\nimport { MatIconButton } from \"@angular/material/button\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { AsyncPipe } from \"@angular/common\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\nimport { HamburgerShellState } from \"../../models\";\nimport { isPageMenuOpenSelector } from \"../../selectors\";\nimport { toggleListDetailsPageMenu } from \"../../actions\";\n\n@Component({\n    selector: \"dgp-list-details-page-menu-toggle\",\n    template: `\n        <button mat-icon-button\n                (click)=\"togglePageMenuDrawer()\"\n                matTooltip=\"Toggle menu drawer\">\n            @if (isPageMenuDrawerOpen$ | async) {\n                <mat-icon>\n                    arrow_back\n                </mat-icon>\n            } @else {\n                <mat-icon>\n                    arrow_forward\n                </mat-icon>\n            }\n        </button>\n    `,\n    imports: [\n        MatIconButton,\n        MatIcon,\n        MatTooltip,\n        AsyncPipe\n    ]\n})\nexport class DgpListDetailsPageMenuToggleComponent extends DgpContainer<HamburgerShellState> {\n\n    readonly isPageMenuDrawerOpen$ = this.select(isPageMenuOpenSelector);\n\n    togglePageMenuDrawer(): void {\n        this.dispatch(toggleListDetailsPageMenu());\n    }\n}\n","import { NgModule } from \"@angular/core\";\nimport { ListDetailsPageComponent } from \"./list-details-page.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatSidenavModule } from \"@angular/material/sidenav\";\nimport { ListDetailsPageContentComponent } from \"./list-details-page-content.component\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { DgpListDetailsPageMenuToggleComponent } from \"./dgp-list-details-page-menu-toggle.component\";\nimport { DgpDrawerLayoutComponent } from \"../../../drawer-layout/drawer-layout.component\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatIconModule,\n        MatSidenavModule,\n        MatTooltipModule,\n        DgpListDetailsPageMenuToggleComponent,\n        DgpDrawerLayoutComponent\n    ],\n    declarations: [\n        ListDetailsPageContentComponent,\n        ListDetailsPageComponent\n    ],\n    exports: [\n        ListDetailsPageContentComponent,\n        ListDetailsPageComponent\n    ]\n})\nexport class DgpListDetailsPageModule {\n}\n","import { CloseDialogButtonComponent } from \"./close-dialog-button.component\";\nimport { MaximizeDialogButtonComponent } from \"./maximize-dialog-button.component\";\n\nexport const components = [\n    CloseDialogButtonComponent,\n    MaximizeDialogButtonComponent\n];\n","import { FileManagerComponent } from \"./file-manager.component\";\nimport { CurrentFileDropZoneComponent } from \"./current-file-drop-zone.component\";\nimport { FileDropZoneComponent } from \"./file-drop-zone.component\";\nimport { CurrentFileItemListComponent } from \"./current-file-item-list.component\";\nimport { CurrentAddFileListItemComponent } from \"./current-add-file-list-item.component\";\nimport { FileManagerDialogHeaderComponent } from \"./file-manager-dialog-header.component\";\nimport { CurrentFileViewerComponent } from \"./current-file-viewer.component\";\nimport { CurrentListFileViewerComponent } from \"./current-list-file-viewer.component\";\n\nexport const containers = [\n    FileManagerComponent,\n    CurrentFileDropZoneComponent,\n    FileDropZoneComponent,\n    CurrentFileItemListComponent,\n    CurrentAddFileListItemComponent,\n    FileManagerDialogHeaderComponent,\n    CurrentFileViewerComponent,\n    CurrentListFileViewerComponent\n];\n","import { DragFileListenerDirective } from \"./drag-file-listener.directive\";\nimport { OpenFileManagerViaShortKeyDirective } from \"./open-file-manager-via-short-key.directive\";\n\nexport const directives = [\n    DragFileListenerDirective,\n    OpenFileManagerViaShortKeyDirective,\n];\n","import { FactoryProvider, InjectionToken, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { FileUploadEffects } from \"./file-upload.effects\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { DgpPageHeaderModule } from \"../hamburger-shell/components/page-header/page-header.module\";\nimport { DgpListDetailsPageModule } from \"../hamburger-shell/components/list-details-page/list-details-page.module\";\nimport { StoreModule } from \"@ngrx/store\";\nimport { defaultFileUploadConfig, FILE_UPLOAD_CONFIG, FileUploadState, fileUploadStoreFeature } from \"./models\";\nimport { fileUploadReducer } from \"./store\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DgpSpacerModule } from \"../spacer/spacer.module\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { DgpEmptyStateModule } from \"../empty-state/empty-state.module\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { DgpFileViewerModule } from \"../file-viewer/file-viewer.module\";\nimport { DgpShortcutModule } from \"../shortcuts/shortcuts.module\";\nimport { components } from \"./components/components\";\nimport { DgpNegatePipeModule } from \"../negate/negate-pipe.module\";\nimport { containers } from \"./containers/containers\";\nimport { directives } from \"./directives/directives\";\nimport {\n    DgpListDetailsPageMenuToggleComponent\n} from \"../hamburger-shell/components/list-details-page/dgp-list-details-page-menu-toggle.component\";\nimport { DgpSelectPreviousFileItemActionComponent } from \"./containers/select-previous-file-item-action.component\";\nimport { DgpSelectNextFileItemActionComponent } from \"./containers/select-next-file-item-action.component\";\nimport { DgpDrawerLayoutComponent } from \"../drawer-layout/drawer-layout.component\";\nimport { DgpDrawerLayoutMenuToggleComponent } from \"../drawer-layout/drawer-layout-menu-toggle.component\";\n\nimport { DgpFileManagerDrawerLayout } from \"./containers/file-manager-drawer-layout.component\";\n\nimport { DgpFileManagerMenuToggle } from \"./containers/file-manager-menu-toggle.component\";\n\nexport const FILE_UPLOAD_REDUCER = new InjectionToken<FileUploadState>(\"hamburgerShellReducer\");\n\nexport function fileUploadReducerFactory() {\n    return fileUploadReducer;\n}\n\nexport const fileUploadReducerProvider: FactoryProvider = {\n    provide: FILE_UPLOAD_REDUCER,\n    useFactory: fileUploadReducerFactory\n};\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatDialogModule,\n        StoreModule.forFeature(fileUploadStoreFeature, FILE_UPLOAD_REDUCER),\n        EffectsModule.forFeature([\n            FileUploadEffects\n        ]),\n        DgpPageHeaderModule,\n        DgpListDetailsPageModule,\n        MatListModule,\n        RouterModule,\n        MatIconModule,\n        DgpSpacerModule,\n        MatButtonModule,\n        MatMenuModule,\n        DgpEmptyStateModule,\n        MatTooltipModule,\n        DgpFileViewerModule,\n        DgpShortcutModule,\n        DgpNegatePipeModule,\n        DgpListDetailsPageMenuToggleComponent,\n        DgpSelectPreviousFileItemActionComponent,\n        DgpSelectNextFileItemActionComponent,\n        DgpDrawerLayoutComponent,\n        DgpDrawerLayoutMenuToggleComponent,\n        DgpFileManagerDrawerLayout,\n        DgpFileManagerMenuToggle\n    ],\n    declarations: [\n        ...containers,\n        ...components,\n        ...directives\n    ],\n    exports: [\n        ...directives\n    ],\n    providers: [\n        fileUploadReducerProvider, {\n            provide: FILE_UPLOAD_CONFIG,\n            useValue: defaultFileUploadConfig\n        }\n    ]\n})\nexport class DgpFileUploadModule {\n\n    static forRoot(config = defaultFileUploadConfig): ModuleWithProviders<DgpFileUploadModule> {\n        return {\n            ngModule: DgpFileUploadModule,\n            providers: [{\n                provide: FILE_UPLOAD_CONFIG,\n                useValue: config\n            }]\n        };\n    }\n\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { closeHamburgerMenu } from \"../actions\";\nimport { hamburgerMenuModeSelector, isHamburgerMenuOpenSelector } from \"../selectors\";\nimport { hasPendingRequestsSelector } from \"../../request-store/selectors\";\nimport { HamburgerShellState } from \"../models\";\n\n@Component({\n    selector: \"dgp-hamburger-shell\",\n    template: `\n        <mat-drawer-container class=\"hamburger-menu-drawer-container\">\n        \n          <mat-drawer [mode]=\"hamburgerMenuMode$ | async\"\n            [opened]=\"isHamburgerMenuOpen$ | async\"\n            class=\"hamburger-menu-drawer mat-elevation-z4\"\n            (closed)=\"closeHamburgerMenu()\">\n        \n            <div class=\"progress-bar-container\">\n              @if (hasPendingRequests$ | async) {\n                <mat-progress-bar\n                  color=\"accent\"\n                mode=\"query\"></mat-progress-bar>\n              }\n            </div>\n        \n            <ng-content select=\"[dgp-hamburger-menu]\"></ng-content>\n        \n          </mat-drawer>\n        \n          <mat-drawer-content class=\"hamburger-menu-drawer-content\">\n        \n            <ng-content></ng-content>\n        \n          </mat-drawer-content>\n        \n        </mat-drawer-container>\n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            overflow: auto;\n        }\n\n        .hamburger-menu-drawer-container {\n            flex-grow: 1;\n            display: flex !important;\n        }\n\n        .hamburger-menu-drawer {\n            width: 240px;\n        }\n\n        .progress-bar-container {\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n        }\n\n        .hamburger-menu-drawer-content {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            height: auto;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class HamburgerShellComponent {\n\n    readonly hasPendingRequests$ = this.store.select(hasPendingRequestsSelector);\n    readonly isHamburgerMenuOpen$ = this.store.select(isHamburgerMenuOpenSelector);\n    readonly hamburgerMenuMode$ = this.store.select(hamburgerMenuModeSelector);\n\n    constructor(\n        private readonly store: Store<HamburgerShellState>\n    ) {\n    }\n\n    closeHamburgerMenu(): void {\n        this.store.dispatch(closeHamburgerMenu());\n    }\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { toggleHamburgerMenu } from \"../../actions\";\nimport { HamburgerShellState } from \"../../models\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\n\n@Component({\n    selector: \"dgp-hamburger-menu-toggle\",\n    template: `\n        <button mat-icon-button\n                (click)=\"toggleHamburgerMenu()\"\n                matTooltip=\"Toggle menu\"\n                dgpActionShortcut\n                shortcutKey=\"h\">\n            <mat-icon>menu</mat-icon>\n        </button>\n    `,\n    styles: [`\n        :host {\n            margin-right: 8px;\n            display: flex;\n            align-items: center;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class HamburgerMenuToggleComponent extends DgpContainer<HamburgerShellState> {\n\n    toggleHamburgerMenu(): void {\n        this.dispatch(toggleHamburgerMenu());\n    }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { HamburgerMenuToggleComponent } from \"./hamburger-menu-toggle.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DgpShortcutModule } from \"../../../shortcuts/shortcuts.module\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatIconModule,\n        DgpShortcutModule,\n        MatTooltipModule\n    ],\n    declarations: [\n        HamburgerMenuToggleComponent\n    ],\n    exports: [\n        HamburgerMenuToggleComponent\n    ]\n})\nexport class DgpHamburgerMenuToggleModule {\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-hamburger-menu\",\n    template: `<ng-content></ng-content>`,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            height: 100%;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class HamburgerMenuComponent {\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-hamburger-menu-header\",\n    template: `\n        <mat-toolbar color=\"primary\"\n                     class=\"hamburger-menu__header\">\n            <ng-content></ng-content>\n        </mat-toolbar>\n    `,\n    styles: [`\n    \n   `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class HamburgerMenuHeaderComponent {\n\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-hamburger-menu-entries\",\n    template: `\n        <mat-nav-list>\n            <ng-content></ng-content>\n        </mat-nav-list>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            overflow: auto;\n            flex-grow: 1;\n        }\n\n        mat-nav-list {\n            flex-grow: 1;\n        }\n    `],\n    standalone: false\n})\nexport class HamburgerMenuEntriesComponent {\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-hamburger-menu-entry\",\n    template: `\n        @if (isNonEmptyRoute()) {\n          <a\n            mat-list-item\n            [routerLink]=\"route\"\n            [routerLinkActive]=\"'dgp-list-item--selected'\"\n            [class.disabled]=\"disabled\"\n            [attr.tabindex]=\"disabled ? -1 : 0\">\n            <mat-icon matListItemIcon>{{ matIconName }}</mat-icon>\n            {{ label }}\n          </a>\n        } @else {\n          <a mat-list-item\n            class=\"disabled\"\n            tabindex=\"-1\">\n            <mat-icon matListItemIcon>{{ matIconName }}</mat-icon>\n            {{ label }}\n          </a>\n        }\n        \n        `,\n    styles: [`\n        :host {\n            display: flex;\n            width: 100%;\n        }\n\n        .disabled {\n            pointer-events: none;\n            color: gray !important;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class HamburgerMenuEntryComponent {\n\n    @Input()\n    matIconName: string;\n\n    @Input()\n    label: string;\n\n    @Input()\n    route: any;\n\n    @Input()\n    disabled: any;\n\n    isNonEmptyRoute() {\n        return this.route && this.route.length !== 0;\n    }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { HamburgerMenuComponent } from \"./hamburger-menu.component\";\nimport { HamburgerMenuHeaderComponent } from \"./hamburger-menu-header.component\";\nimport { MatToolbarModule } from \"@angular/material/toolbar\";\nimport { HamburgerMenuEntriesComponent } from \"./hamburger-menu-entries.component\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { HamburgerMenuEntryComponent } from \"./hamburger-menu-entry.component\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n    imports: [\n        MatToolbarModule,\n        MatListModule,\n        RouterModule,\n        MatIconModule,\n        CommonModule\n    ],\n    declarations: [\n        HamburgerMenuComponent,\n        HamburgerMenuHeaderComponent,\n        HamburgerMenuEntriesComponent,\n        HamburgerMenuEntryComponent\n    ],\n    exports: [\n        HamburgerMenuComponent,\n        HamburgerMenuHeaderComponent,\n        HamburgerMenuEntriesComponent,\n        HamburgerMenuEntryComponent\n    ]\n})\nexport class DgpHamburgerMenuModule {\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { Actions, createEffect } from \"@ngrx/effects\";\nimport { debounceTime, filter, map, switchMap } from \"rxjs/operators\";\nimport { BreakpointObserver } from \"@angular/cdk/layout\";\nimport { setHamburgerMenuState, setListDetailsPageState } from \"./actions\";\nimport {\n    HamburgerShellConfig, HamburgerShellMode, ListDetailsPageMode,\n    HamburgerShellState, HAMBURGER_SHELL_CONFIG\n} from \"./models\";\nimport { Store } from \"@ngrx/store\";\nimport { of } from \"rxjs\";\nimport { DrawerMode } from \"../drawer-layout/models\";\n\n@Injectable()\nexport class HamburgerShellEffects {\n\n\n    readonly setHamburgerMenuState$ = createEffect(() => of(this.hamburgerShellConfig.hamburgerShellMode)\n        .pipe(\n            filter(x => x === HamburgerShellMode.Responsive),\n            switchMap(() => {\n                return this.breakpointObserver.observe(\n                    this.hamburgerShellConfig.hamburgerMenuBreakpoints as string[]\n                );\n            }),\n            debounceTime(50),\n            map(result => {\n                const isHamburgerMenuOpen = result.matches;\n                const hamburgerMenuMode = isHamburgerMenuOpen ? \"side\" : \"over\";\n\n                return setHamburgerMenuState({\n                    isHamburgerMenuOpen,\n                    hamburgerMenuMode\n                });\n\n            })\n        ));\n\n\n    readonly setListDetailsPageLayout$ = createEffect(() => of(this.hamburgerShellConfig.listDetailsPageMode)\n        .pipe(\n            filter(x => x === ListDetailsPageMode.Responsive),\n            switchMap(() => {\n                return this.breakpointObserver.observe(\n                    this.hamburgerShellConfig.listDetailsPageMenuBreakpoints as string[]\n                );\n            }),\n            debounceTime(50),\n            map(result => {\n\n                const isPageMenuOpen = result.matches;\n                const pageMenuMode = isPageMenuOpen ? DrawerMode.Side : DrawerMode.Over;\n\n                return setListDetailsPageState({\n                    isPageMenuOpen,\n                    pageMenuMode\n                });\n\n            })\n        ));\n\n    constructor(\n        private readonly actions: Actions,\n        private readonly store: Store<HamburgerShellState>,\n        private readonly breakpointObserver: BreakpointObserver,\n        @Inject(HAMBURGER_SHELL_CONFIG)\n        private readonly hamburgerShellConfig: HamburgerShellConfig\n    ) {\n        if (hamburgerShellConfig.hamburgerShellMode === HamburgerShellMode.SideNav) {\n            this.store.dispatch(setHamburgerMenuState({\n                isHamburgerMenuOpen: true,\n                hamburgerMenuMode: \"side\"\n            }));\n        } else if (hamburgerShellConfig.hamburgerShellMode === HamburgerShellMode.Overlay) {\n            this.store.dispatch(setHamburgerMenuState({\n                isHamburgerMenuOpen: false,\n                hamburgerMenuMode: \"over\"\n            }));\n        }\n\n        if (hamburgerShellConfig.listDetailsPageMode === ListDetailsPageMode.SideNav) {\n            this.store.dispatch(setListDetailsPageState({\n                isPageMenuOpen: true,\n                pageMenuMode: DrawerMode.Side\n            }));\n        } else if (hamburgerShellConfig.listDetailsPageMode === ListDetailsPageMode.Overlay) {\n            this.store.dispatch(setListDetailsPageState({\n                isPageMenuOpen: false,\n                pageMenuMode: DrawerMode.Over\n            }));\n        }\n    }\n\n}\n","import {\n    closeHamburgerMenu,\n    closeListDetailsMenu,\n    setHamburgerMenuState,\n    setListDetailsPageState,\n    toggleHamburgerMenu,\n    toggleListDetailsPageMenu\n} from \"./actions\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { HamburgerShellState } from \"./models\";\nimport { DrawerMode } from \"../drawer-layout/models\";\n\nexport const initialHamburgerShellState: HamburgerShellState = {\n    hamburgerMenuMode: \"side\",\n    isHamburgerMenuOpen: true,\n    pageMenuMode: DrawerMode.Side,\n    isPageMenuOpen: true\n};\n\nexport const hamburgerShellReducer = createReducer(initialHamburgerShellState,\n    on(setHamburgerMenuState, ((state, action) => {\n        return {\n            ...state,\n            hamburgerMenuMode: action.hamburgerMenuMode,\n            isHamburgerMenuOpen: action.isHamburgerMenuOpen\n        };\n    })),\n    on(toggleHamburgerMenu, ((state) => {\n        return {\n            ...state,\n            isHamburgerMenuOpen: !state.isHamburgerMenuOpen\n        };\n    })),\n    on(closeHamburgerMenu, ((state) => {\n        return {\n            ...state,\n            isHamburgerMenuOpen: false\n        };\n    })),\n    on(setListDetailsPageState, ((state, action) => {\n        return {\n            ...state,\n            pageMenuMode: action.pageMenuMode,\n            isPageMenuOpen: action.isPageMenuOpen,\n        };\n    })),\n    on(toggleListDetailsPageMenu, ((state) => {\n        return {\n            ...state,\n            isPageMenuOpen: !state.isPageMenuOpen\n        };\n    })),\n    on(closeListDetailsMenu, ((state) => {\n        return {\n            ...state,\n            isPageMenuOpen: false\n        };\n    }))\n);\n","import { ModuleWithProviders, NgModule, InjectionToken, FactoryProvider } from \"@angular/core\";\nimport { StoreModule, ActionReducer } from \"@ngrx/store\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { LayoutModule } from \"@angular/cdk/layout\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { defaultHamburgerShellConfigProvider, HamburgerShellConfigProvider, HamburgerShellState } from \"./models\";\nimport { hamburgerShellStoreFeature } from \"./models\";\nimport { HamburgerShellComponent } from \"./components/hamburger-shell.component\";\nimport { HamburgerShellEffects } from \"./effects\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatSidenavModule } from \"@angular/material/sidenav\";\nimport { hamburgerShellReducer } from \"./reducers\";\n\nexport const HAMBURGER_SHELL_REDUCER = new InjectionToken<ActionReducer<HamburgerShellState>>(\"hamburgerShellReducer\");\n\nexport function hamburgerShellReducerFactory() {\n    return hamburgerShellReducer;\n}\n\nexport const hamburgerShellReducerProvider: FactoryProvider = {\n    provide: HAMBURGER_SHELL_REDUCER,\n    useFactory: hamburgerShellReducerFactory\n};\n\n\n@NgModule({\n    imports: [\n        LayoutModule,\n        CommonModule,\n        FormsModule,\n        MatButtonModule,\n        MatIconModule,\n        MatProgressBarModule,\n        MatSidenavModule,\n        StoreModule.forFeature(\n            hamburgerShellStoreFeature,\n            HAMBURGER_SHELL_REDUCER\n        ),\n        EffectsModule.forFeature([\n            HamburgerShellEffects\n        ]),\n        RouterModule\n    ],\n    providers: [\n        hamburgerShellReducerProvider\n    ],\n    declarations: [\n        HamburgerShellComponent\n    ],\n    exports: [\n        HamburgerShellComponent\n    ]\n})\nexport class DgpHamburgerShellModule {\n\n    static forRoot(\n        configProvider: HamburgerShellConfigProvider = defaultHamburgerShellConfigProvider\n    ): ModuleWithProviders<DgpHamburgerShellModule> {\n        return {\n            ngModule: DgpHamburgerShellModule,\n            providers: [\n                configProvider\n            ]\n        };\n    }\n\n}\n","import { createAction, props } from \"@ngrx/store\";\n\nexport const hotReload = createAction( \"[HMR] Reload\", props<{ readonly payload: any }>());\n","import {ActionReducer} from \"@ngrx/store\";\nimport { hotReload } from \"./hmr.actions\";\n\n/**\n * Generate a reducer to set the root state in dev mode for HMR\n */\nexport function hmrReducer(x: ActionReducer<any>): ActionReducer<any> {\n\n  return (state: any, action: typeof hotReload) => {\n    if (action.type === \"[HMR] Reload\") {\n      return (action as any).payload;\n    }\n    return x(state, action);\n  };\n\n}\n","import { ApplicationRef } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { hotReload } from \"./hmr.actions\";\nimport { createNewHosts, removeNgStyles } from \"@angularclass/hmr\";\nimport { take } from \"rxjs/operators\";\n\nexport class DgpNgApp {\n\n    constructor(public readonly appRef: ApplicationRef,\n                protected readonly ngrxStore: Store<any>) {\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    hmrOnInit(store: any) {\n        if (!store || !store.rootState) {\n            return;\n        }\n        if (store.rootState) {\n            this.ngrxStore.dispatch(hotReload({ payload: store.rootState }));\n        }\n\n        Object.keys(store)\n            .forEach(prop => delete store[prop]);\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    hmrOnDestroy(store: any) {\n        const cmpLocation = this.appRef.components.map(cmp => cmp.location.nativeElement);\n\n        store.disposeOldHosts = createNewHosts(cmpLocation);\n\n        this.ngrxStore\n            .pipe(take(1))\n            .subscribe(s => store.rootState = s);\n\n        let queryResults = document.querySelectorAll(\".cdk-overlay-container\");\n        queryResults.forEach(x => {\n            x.parentNode.removeChild(x);\n        });\n\n        queryResults = document.querySelectorAll(\".cdk-visually-hidden\");\n        queryResults.forEach(x => {\n            x.parentNode.removeChild(x);\n        });\n\n        removeNgStyles();\n    }\n\n    //noinspection JSUnusedGlobalSymbols\n    hmrAfterDestroy(store: any) {\n        store.disposeOldHosts();\n        delete store.disposeOldHosts;\n    }\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { combineLatest } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { ModelValidationResult } from \"data-modeling/src/lib/models\";\nimport { AttributeMetadata, validateAttribute } from \"data-modeling\";\nimport { DgpView } from \"../../utils/view\";\nimport { observeAttribute$ } from \"../../utils/observe-input\";\n\n@Component({\n    selector: \"dgp-input-error-info\",\n    template: `\n        @if (hasErrors$ | async) {\n          <div\n            class=\"host\">\n            <mat-icon color=\"warn\"\n              class=\"error-indicator\">warning\n            </mat-icon>\n            {{firstErrorMessage$ | async}}\n          </div>\n        }\n        \n        `,\n    styles: [`\n        .host {\n            display: inline-flex;\n            margin-left: 58px;\n            margin-right: 58px;\n            font-size: smaller;\n            opacity: 0.7;\n        }\n\n        .error-indicator {\n            font-size: 18px;\n            width: 20px;\n            height: 20px;\n            margin-top: 0;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            margin-right: 4px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpInputErrorInfoComponent extends DgpView<any> {\n\n    @Input()\n    metadata: AttributeMetadata<any>;\n    readonly metadata$ = observeAttribute$(this as DgpInputErrorInfoComponent, \"metadata\");\n\n    readonly validationResult$ = combineLatest([\n        this.model$,\n        this.metadata$\n    ]).pipe(\n        map(combination => {\n\n            const model = combination[0];\n            const metadata = combination[1];\n\n            if (!metadata) return {isValid: true} as ModelValidationResult;\n\n            return validateAttribute({\n                attributeMetadata: metadata,\n                value: model,\n                attributePath: metadata.label,\n                modelId: \"\",\n                modelType: \"\"\n            });\n        })\n    );\n\n    readonly hasErrors$ = this.validationResult$.pipe(map(x => !x.isValid));\n    readonly firstErrorMessage$ = this.validationResult$.pipe(map(x => x.errors?.length > 0 ? x.errors[0].message : null));\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { DgpView } from \"../../utils/view\";\nimport { AttributeMetadata } from \"data-modeling\";\nimport { map } from \"rxjs/operators\";\nimport { notNullOrUndefined } from \"../../utils/null-checking.functions\";\nimport { observeAttribute$ } from \"../../utils/observe-input\";\n\n@Component({\n    selector: \"dgp-input-length-info\",\n    template: `\n        @if (hasMax$ | async) {\n          {{model?.length || 0}}/{{metadata.max}}\n        }`,\n    styles: [`\n        :host {\n            font-size: smaller;\n            opacity: 0.7;\n            margin-left: 8px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpInputLengthInfoComponent extends DgpView<string> {\n    @Input()\n    metadata: AttributeMetadata<string>;\n    readonly metadata$ = observeAttribute$(this as DgpInputLengthInfoComponent, \"metadata\");\n\n    readonly hasMax$ = this.metadata$.pipe(map(x => x && notNullOrUndefined(x.max)));\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { AttributeMetadata } from \"data-modeling\";\nimport { DgpView } from \"../../utils/view\";\n\n@Component({\n    selector: \"dgp-input-hint\",\n    template: `\n        <dgp-spacer></dgp-spacer>\n        \n        @if (metadata?.type === 'string') {\n          <dgp-input-length-info\n            [model]=\"model\"\n          [metadata]=\"metadata\"></dgp-input-length-info>\n        }\n        `,\n    styles: [`\n        :host {\n            display: flex;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpInputHintComponent extends DgpView<any> {\n\n    @Input()\n    metadata: AttributeMetadata<any>;\n\n}\n\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { DgpView } from \"../../utils/view\";\nimport { AttributeMetadata } from \"data-modeling\";\nimport { InspectorConfig } from \"../../inspector/models/inspector-config.model\";\nimport { ThemePalette } from \"@angular/material/core\";\n\n@Component({\n    selector: \"dgp-input-field\",\n    template: `\n        <dgp-inspector [fieldLabelThemeColor]=\"fieldLabelThemeColor\"\n                       [showFieldIcons]=\"showFieldIcons\"\n                       [maxContentWidth]=\"maxContentWidth\"\n                       [responsive]=\"responsive\"\n                       [showFieldDescriptions]=\"showFieldDescriptions\">\n            <dgp-inspector-item [metadata]=\"metadata\">\n                <div class=\"input-with-hint\">\n                    <ng-content></ng-content>\n                    <dgp-input-hint [model]=\"model\"\n                                    [metadata]=\"metadata\"></dgp-input-hint>\n                </div>\n            </dgp-inspector-item>\n\n            <dgp-input-error-info [model]=\"model\"\n                                  [metadata]=\"metadata\"></dgp-input-error-info>\n\n        </dgp-inspector>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            padding: 0;\n            overflow: auto;\n        }\n\n        .input-with-hint {\n            display: flex;\n            flex-direction: column;\n            max-width: 320px;\n            width: 100%;\n        }\n\n\n        /* TODO(mdc-migration): The following rule targets internal classes of list that may no longer apply for the MDC version. */\n        mat-list {\n            padding: 0;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpInputFieldComponent extends DgpView<any> implements InspectorConfig {\n\n    @Input()\n    metadata: AttributeMetadata<any>;\n\n    @Input()\n    fieldLabelThemeColor: ThemePalette;\n\n    @Input()\n    maxContentWidth: string;\n\n    @Input()\n    showFieldDescriptions: boolean | \"onHover\";\n\n    @Input()\n    showFieldIcons: boolean;\n\n    @Input()\n    responsive: boolean;\n\n\n}\n","import { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges } from \"@angular/core\";\nimport { AttributeMetadata } from \"data-modeling\";\nimport { notNullOrUndefined } from \"../../utils/null-checking.functions\";\n\n@Directive({\n    selector: \"[dgpInputMetadata]\",\n    standalone: false\n})\nexport class DgpInputMetadataDirective implements OnChanges {\n\n    @Input()\n    metadata: AttributeMetadata<any>;\n\n    constructor(private readonly elementRef: ElementRef<HTMLInputElement>,\n                private readonly renderer: Renderer2) {\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.metadata) {\n\n            if (notNullOrUndefined(this.metadata)) {\n\n                if (this.metadata.type === \"string\") {\n\n                    if (notNullOrUndefined(this.metadata.max)) {\n                        this.renderer.setAttribute(\n                            this.elementRef.nativeElement,\n                            \"maxLength\",\n                            this.metadata.max.toString()\n                        );\n                    }\n\n                    if (notNullOrUndefined(this.metadata.min)) {\n                        this.renderer.setAttribute(\n                            this.elementRef.nativeElement,\n                            \"minLength\",\n                            this.metadata.min.toString()\n                        );\n                    }\n\n                }\n\n                if (this.metadata.type === \"number\") {\n                    if (notNullOrUndefined(this.metadata.max)) {\n                        this.renderer.setAttribute(\n                            this.elementRef.nativeElement,\n                            \"max\",\n                            this.metadata.max.toString()\n                        );\n                    }\n\n                    if (notNullOrUndefined(this.metadata.min)) {\n                        this.renderer.setAttribute(\n                            this.elementRef.nativeElement,\n                            \"min\",\n                            this.metadata.min.toString()\n                        );\n                    }\n\n                    if (notNullOrUndefined(this.metadata.step)) {\n                        this.renderer.setAttribute(\n                            this.elementRef.nativeElement,\n                            \"step\",\n                            this.metadata.step.toString()\n                        );\n                    }\n                }\n\n            }\n\n        }\n\n    }\n\n}\n","import { DgpInputHintComponent } from \"./input-hint.component\";\nimport { DgpInputLengthInfoComponent } from \"./input-length-info.component\";\nimport { DgpInputErrorInfoComponent } from \"./input-error-info.component\";\nimport { DgpInputFieldComponent } from \"./input-field.component\";\n\nexport const components = [\n    DgpInputErrorInfoComponent,\n    DgpInputFieldComponent,\n    DgpInputHintComponent,\n    DgpInputLengthInfoComponent\n];\n","import { DgpInputMetadataDirective } from \"./input-metadata.directive\";\n\nexport const directives = [\n    DgpInputMetadataDirective\n];\n","import { NgModule } from \"@angular/core\";\nimport { components } from \"./components/components\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\nimport { DgpSpacerModule } from \"../spacer/spacer.module\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { directives } from \"./directives/directives\";\nimport { DgpInspectorModule } from \"../inspector/inspector.module\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        MatSlideToggleModule,\n        DgpSpacerModule,\n        MatIconModule,\n        DgpInspectorModule\n    ],\n    declarations: [\n        ...components,\n        ...directives\n    ],\n    exports: [\n        ...components,\n        ...directives\n    ]\n})\nexport class DgpInputFieldModule {\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { DgpModelEditorComponentBase } from \"../../utils/model-editor.component-base\";\nimport { InspectorConfig } from \"../../inspector/models\";\nimport { ThemePalette } from \"@angular/material/core\";\nimport { map } from \"rxjs/operators\";\nimport { notNullOrUndefined } from \"../../utils/null-checking.functions\";\nimport { inspectorConfigMetadata } from \"../../inspector/constants\";\n\n@Component({\n    selector: \"dgp-inspector-config-form\",\n    template: `\n        @if (model) {\n          <dgp-inspector\n            [fieldLabelThemeColor]=\"model.fieldLabelThemeColor\"\n            [maxContentWidth]=\"model.maxContentWidth\"\n            [responsive]=\"model.responsive\"\n            [showFieldDescriptions]=\"model.showFieldDescriptions\"\n            [showFieldIcons]=\"model.showFieldIcons\">\n            <dgp-inspector-section label=\"General\">\n              <dgp-inspector-item [metadata]=\"inspectorConfigMetadata.attributes.responsive\">\n                <mat-form-field>\n                  <mat-select [ngModel]=\"model.responsive\"\n                    (ngModelChange)=\"updateResponsive($event)\">\n                    <mat-option [value]=\"false\">No</mat-option>\n                    <mat-option [value]=\"true\">Yes</mat-option>\n                  </mat-select>\n                </mat-form-field>\n              </dgp-inspector-item>\n            </dgp-inspector-section>\n            <dgp-inspector-section label=\"Fields\">\n              <dgp-inspector-item [metadata]=\"inspectorConfigMetadata.attributes.showFieldDescriptions\">\n                <mat-form-field>\n                  <mat-select [ngModel]=\"model.showFieldDescriptions\"\n                    (ngModelChange)=\"updateShowFieldDescription($event)\">\n                    <mat-option [value]=\"false\">No</mat-option>\n                    <mat-option [value]=\"true\">Yes</mat-option>\n                    <mat-option [value]=\"'onHover'\">On hover</mat-option>\n                  </mat-select>\n                </mat-form-field>\n              </dgp-inspector-item>\n              <dgp-inspector-item [metadata]=\"inspectorConfigMetadata.attributes.showFieldIcons\">\n                <mat-form-field>\n                  <mat-select [ngModel]=\"model.showFieldIcons\"\n                    (ngModelChange)=\"updateShowFieldIcons($event)\">\n                    <mat-option [value]=\"false\">No</mat-option>\n                    <mat-option [value]=\"true\">Yes</mat-option>\n                  </mat-select>\n                </mat-form-field>\n              </dgp-inspector-item>\n              <dgp-inspector-item [metadata]=\"inspectorConfigMetadata.attributes.fieldLabelThemeColor\">\n                <mat-form-field>\n                  <mat-select [ngModel]=\"model.fieldLabelThemeColor\"\n                    (ngModelChange)=\"updateFieldLabelThemeColor($event)\">\n                    <mat-option [value]=\"null\"></mat-option>\n                    <mat-option [value]=\"'primary'\">Primary</mat-option>\n                    <mat-option [value]=\"'accent'\">Accent</mat-option>\n                    <mat-option [value]=\"'warn'\">Warn</mat-option>\n                  </mat-select>\n                </mat-form-field>\n              </dgp-inspector-item>\n              <dgp-inspector-item [metadata]=\"inspectorConfigMetadata.attributes.maxContentWidth\">\n                <dgp-spacer></dgp-spacer>\n                <mat-slider [ngModel]=\"maxContentWidth$ | async\"\n                  (ngModelChange)=\"updateMaxContentWidth($event)\"\n                  [min]=\"160\"\n                  [max]=\"480\"\n                  [step]=\"1\"\n                style=\"width: 160px;\"><input matSliderThumb /></mat-slider>\n              </dgp-inspector-item>\n            </dgp-inspector-section>\n          </dgp-inspector>\n        }\n        `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpInspectorConfigFormComponent extends DgpModelEditorComponentBase<InspectorConfig> {\n\n    readonly inspectorConfigMetadata = inspectorConfigMetadata;\n\n    readonly maxContentWidth$ = this.model$.pipe(\n        map(model => {\n            if (!model) return null;\n            return +model.maxContentWidth.replace(\"px\", \"\");\n        })\n    );\n\n    updateShowFieldDescription(showFieldDescriptions: boolean | \"onHover\") {\n        this.updateModel({showFieldDescriptions});\n    }\n\n    updateResponsive(responsive: boolean) {\n        this.updateModel({responsive});\n    }\n\n    updateShowFieldIcons(showFieldIcons: boolean) {\n        this.updateModel({showFieldIcons});\n    }\n\n    updateFieldLabelThemeColor(fieldLabelThemeColor: ThemePalette) {\n        this.updateModel({fieldLabelThemeColor});\n    }\n\n    updateMaxContentWidth(maxContentWidth: number) {\n        let maxContentWidthString: string;\n\n        if (notNullOrUndefined(maxContentWidth)) maxContentWidthString = maxContentWidth + \"px\";\n\n        this.updateModel({maxContentWidth: maxContentWidthString});\n    }\n\n}\n","import { createAction, props } from \"@ngrx/store\";\nimport { InspectorConfig } from \"../inspector/models\";\n\nexport const toggleDarkMode = createAction(\"[ThemeSwitcher] ToggleDarkMode\");\nexport const setIsDarkModeActive = createAction(\"[ThemeSwitcher] SetIsDarkModeActive\", props<{ readonly isDarkModeActive: boolean }>());\nexport const updateCurrentInspectorConfig = createAction(\n    \"[ThemeSwitcher] UpdateCurrentInspectorConfig\",\n    props<{\n        readonly inspectorConfig?: InspectorConfig;\n    }>()\n);\nexport const toggleCompactTheme = createAction(\"[ThemeSwitcher] ToggleCompactTheme\");\nexport const setIsCompactThemeActive = createAction(\"[ThemeSwitcher] SetIsCompactThemeActive\", props<{\n    readonly useCompactTheme: boolean\n}>());\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { ThemeSwitcherState } from \"../../theme-switcher/models\";\nimport { getCurrentInspectorConfig } from \"../../theme-switcher/selectors\";\nimport { updateCurrentInspectorConfig } from \"../../theme-switcher/actions\";\nimport { InspectorConfig } from \"../../inspector/models\";\n\n@Component({\n    selector: \"dgp-inspector-config\",\n    template: `\n        <dgp-inspector-config-form [model]=\"inspectorConfig$ | async\"\n                                   (modelChange)=\"updateInspectorConfig($event)\"></dgp-inspector-config-form>\n    `,\n    styles: [`\n\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpInspectorConfigComponent extends DgpContainer<ThemeSwitcherState> {\n    readonly inspectorConfig$ = this.select(getCurrentInspectorConfig);\n\n    updateInspectorConfig(inspectorConfig: InspectorConfig) {\n        this.dispatch(updateCurrentInspectorConfig({inspectorConfig}));\n    }\n}\n","import { DgpInspectorConfigFormComponent } from \"./inspector-config-form.component\";\n\nexport const components = [\n    DgpInspectorConfigFormComponent\n];\n","import { DgpInspectorConfigComponent } from \"./inspector-config.component\";\n\nexport const containers = [\n    DgpInspectorConfigComponent\n];\n","import { NgModule } from \"@angular/core\";\nimport { components } from \"./components/components\";\nimport { DgpInspectorModule } from \"../inspector/inspector.module\";\nimport { AsyncPipe, NgIf } from \"@angular/common\";\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { containers } from \"./containers/containers\";\nimport { MatSliderModule } from \"@angular/material/slider\";\nimport { DgpSpacerModule } from \"../spacer/spacer.module\";\n\n@NgModule({\n    imports: [\n        DgpInspectorModule,\n        NgIf,\n        MatSlideToggleModule,\n        FormsModule,\n        MatFormFieldModule,\n        MatSelectModule,\n        AsyncPipe,\n        MatInputModule,\n        MatSliderModule,\n        DgpSpacerModule\n    ],\n    declarations: [\n        ...components,\n        ...containers\n    ],\n    exports: [\n        ...components,\n        ...containers\n    ]\n})\nexport class DgpInspectorConfigModule {\n}\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n    selector: \"[dgpLazyRenderedContent], [dgp-lazy-rendered-content]\",\n    standalone: false\n})\nexport class DgpLazyRenderedContentDirective {\n\n}\n\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n    selector: \"[dgpLazyRenderedPlaceholder], [dgp-lazy-rendered-placeholder]\",\n    standalone: false\n})\nexport class DgpLazyRenderedPlaceholderDirective {\n\n}\n","import equal from 'fast-deep-equal';\nimport { distinctUntilChanged } from \"rxjs/operators\";\nimport { getHashCode } from \"./get-hash-code.function\";\n\nexport function distinctUntilHashChanged<T>() {\n    return distinctUntilChanged((x: T, y: T) => getHashCode(x) === getHashCode(y));\n}\n\n\nexport function distinctUntilDeepChanged<T>() {\n  return distinctUntilChanged<T>((prev, curr) => {\n    if (prev === curr) return true;\n\n    return equal(prev, curr);\n  }); \n}","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    EmbeddedViewRef,\n    Input,\n    OnDestroy,\n    TemplateRef\n} from \"@angular/core\";\nimport { DgpLazyRenderedContentDirective } from \"../directives/dgp-lazy-rendered-content.directive\";\nimport { DgpLazyRenderedPlaceholderDirective } from \"../directives/dgp-lazy-rendered-placeholder.directive\";\nimport { observeAttribute$ } from \"../../utils/observe-input\";\nimport { distinctUntilHashChanged } from \"../../utils/distinct-until-hash-changed.function\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { notNullOrUndefined } from \"../../utils/null-checking.functions\";\nimport { debounceTime, filter } from \"rxjs/operators\";\n\nexport enum LazyRenderedContentDisplayStrategy {\n    WhileInView = \"whileInView\"\n}\n\n@Component({\n    selector: \"dgp-lazy-rendered\",\n    template: `\n        <ng-content></ng-content>\n        <ng-container *ngTemplateOutlet=\"currentTemplateRef\"></ng-container>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-shrink: 0;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpLazyRenderedComponent implements AfterViewInit, OnDestroy {\n\n    private showContentSubscription: Subscription;\n    private saveLastHeightSubscription: Subscription;\n    private intersectionObserver: IntersectionObserver;\n    private lastSavedHeight: number;\n\n    @ContentChild(DgpLazyRenderedContentDirective, {\n        read: TemplateRef\n    }) contentTemplateRef: TemplateRef<any>;\n\n    @ContentChild(DgpLazyRenderedPlaceholderDirective, {\n        read: TemplateRef\n    }) placeholderTemplateRef: TemplateRef<any>;\n\n    currentTemplateRef: TemplateRef<any>;\n    /**\n     * default: parent element\n     */\n    @Input()\n    displayRegionSelector: string;\n\n    showContent = false;\n\n    @Input()\n    contentDisplayStrategy = LazyRenderedContentDisplayStrategy.WhileInView;\n\n    private readonly showContent$ = observeAttribute$(\n        this as DgpLazyRenderedComponent, \"showContent\"\n    );\n\n    private readonly heightScheduler = new Subject<void>();\n\n    constructor(\n        private readonly elRef: ElementRef<HTMLElement>,\n        private readonly cd: ChangeDetectorRef\n    ) {\n    }\n\n    ngAfterViewInit(): void {\n        this.checkIntersectionWithDisplayRegion();\n\n        this.showContentSubscription = this.showContent$.pipe(\n            distinctUntilHashChanged()\n        ).subscribe(showContent => {\n            if (showContent) {\n                this.lastSavedHeight = null;\n                this.elRef.nativeElement.style.height = null;\n                this.currentTemplateRef = this.contentTemplateRef;\n            } else {\n                if (notNullOrUndefined(this.lastSavedHeight)) {\n                    this.elRef.nativeElement.style.height = this.lastSavedHeight + \"px\";\n                }\n                this.currentTemplateRef = this.placeholderTemplateRef;\n            }\n            this.cd.markForCheck();\n            if (showContent) {\n                this.heightScheduler.next();\n            }\n        });\n\n        this.saveLastHeightSubscription = this.heightScheduler.pipe(\n            debounceTime(250),\n            filter(() => this.showContent)\n        ).subscribe(() => {\n            this.lastSavedHeight = this.elRef.nativeElement.getBoundingClientRect().height;\n        });\n\n    }\n\n    ngOnDestroy(): void {\n        if (this.showContentSubscription && !this.showContentSubscription.closed) {\n            this.showContentSubscription.unsubscribe();\n        }\n        if (this.saveLastHeightSubscription && !this.saveLastHeightSubscription.closed) {\n            this.saveLastHeightSubscription.unsubscribe();\n        }\n        this.intersectionObserver?.disconnect();\n    }\n\n    private checkIntersectionWithDisplayRegion() {\n\n        let displayRegion: Element;\n        if (this.displayRegionSelector) {\n            displayRegion = document.querySelector(this.displayRegionSelector);\n        } else {\n            displayRegion = this.elRef.nativeElement.parentElement;\n        }\n\n        // TODO: Make this an input\n        const options: IntersectionObserverInit = {\n            root: displayRegion,\n            rootMargin: \"240px 0px 0px 0px\",\n            threshold: 0\n        };\n\n        this.intersectionObserver = new IntersectionObserver(entries => {\n            entries.forEach(entry => {\n\n                // TODO\n                this.showContent = entry.isIntersecting;\n\n            });\n        }, options);\n\n        const target = this.elRef.nativeElement;\n        this.intersectionObserver.observe(target);\n    }\n\n}\n","import { DgpLazyRenderedComponent } from \"./lazy-rendered.component\";\n\nexport const components = [\n    DgpLazyRenderedComponent\n];\n","import { DgpLazyRenderedContentDirective } from \"./dgp-lazy-rendered-content.directive\";\nimport { DgpLazyRenderedPlaceholderDirective } from \"./dgp-lazy-rendered-placeholder.directive\";\n\nexport const directives = [\n    DgpLazyRenderedContentDirective,\n    DgpLazyRenderedPlaceholderDirective\n];\n","import { NgModule } from \"@angular/core\";\nimport { components } from \"./components/components\";\nimport { directives } from \"./directives/directives\";\nimport { DialogModule } from \"@angular/cdk/dialog\";\nimport { NgTemplateOutlet } from \"@angular/common\";\n\n@NgModule({\n    imports: [\n        DialogModule,\n        NgTemplateOutlet\n    ],\n    declarations: [\n        ...components,\n        ...directives\n    ],\n    exports: [\n        ...components,\n        ...directives\n    ],\n    providers: []\n})\nexport class DgpLazyRenderedModule {\n}\n","import { Action, createAction, props } from \"@ngrx/store\";\nimport { LogEntry } from \"./models\";\n\nexport interface LogErrorPayload {\n    readonly title: string;\n    readonly error?: any;\n}\n\nexport const logError = createAction(\"[Log] LogError\", props<{\n    readonly payload: LogErrorPayload;\n}>());\n\nexport const addLogEntry = createAction(\"[Log] AddLogEntry\", props<{ readonly logEntry: LogEntry }>());\n\nexport const logErrorActionType = logError.type;\n\nexport class LogErrorAction implements Action {\n    readonly type = logErrorActionType;\n\n    constructor(public readonly payload: LogErrorPayload) {\n    }\n}\n","import { EntityStateMap } from \"entity-store\";\n\nexport enum Severity {\n    Error\n}\n\nexport interface LogEntry {\n    readonly timeStamp: number;\n    readonly title: string;\n    readonly content?: any;\n    readonly severity: Severity;\n}\n\nexport interface LogStoreSchema {\n    readonly logEntry: LogEntry;\n}\n\nexport interface LogState extends EntityStateMap<LogStoreSchema> {\n}\n\nexport type LogStoreFeature = \"LogStore\";\nexport const logStoreFeature: LogStoreFeature = \"LogStore\";\n","import { createEntityStore } from \"entity-store\";\nimport { LogStoreFeature, LogStoreSchema } from \"./models\";\n\nexport const logStore = createEntityStore<LogStoreSchema, LogStoreFeature>({\n    entityTypes: [\n        \"logEntry\"\n    ],\n    storeFeature: \"LogStore\"\n});\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { getAll } from \"entity-store\";\nimport { LogState, logStoreFeature } from \"./models\";\nimport { logStore } from \"./reducers\";\n\nexport const logFeatureSelector = createFeatureSelector<LogState>(logStoreFeature);\n\nexport const getLogEntryState = createSelector(\n    logFeatureSelector,\n    x => x.logEntry\n);\n\nexport const getAllLogEntries = createSelector(\n    getLogEntryState, x => {\n        const entries = getAll(x);\n        entries.sort((a, b) => {\n            return b.timeStamp - a.timeStamp;\n        });\n        return entries;\n    });\n\nexport const hasLogEntries = createSelector(\n    getAllLogEntries, x => x && x.length > 0\n);\n\nexport const getSelectedLogEntry = createSelector(\n    logFeatureSelector, logStore.selectors.logEntry.getFirstSelected\n);\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { LogEntry, Severity } from \"../models\";\n\n@Component({\n    selector: \"dgp-log-entry-details\",\n    template: `\n        @if (logEntry) {\n          <div class=\"header\">\n            @if (logEntry.severity === severityEnum.Error) {\n              <mat-icon class=\"header__icon\"\n                >\n                error\n              </mat-icon>\n            }\n            <div class=\"header__title-container\">\n              <h1 class=\"header__title mat-h1\">\n                {{ logEntry.title }}\n              </h1>\n              <div class=\"header__subtitle\">\n                {{ logEntry.timeStamp | date:'medium' }}\n              </div>\n            </div>\n          </div>\n          <mat-divider class=\"vertical-separator\"></mat-divider>\n          <div class=\"content\">\n            <h2 class=\"content__heading mat-h2\">\n              Severity\n            </h2>\n            <div class=\"content__body\">\n              @if (logEntry.severity === severityEnum.Error) {\n                Error\n              }\n            </div>\n            <h2 class=\"content__heading mat-h2\">\n              Content\n            </h2>\n            @if (logEntry.content) {\n              <div class=\"content__body\"\n                >\n                @if (isHtml(logEntry)) {\n                  <div [innerHTML]=\"logEntry.content | safe:'html'\"></div>\n                } @else {\n                  {{ logEntry.content | json }}\n                }\n              </div>\n            } @else {\n              <div class=\"content__placeholder\">\n                This log entry doesn't contain additional content.\n              </div>\n            }\n          </div>\n        } @else {\n          <dgp-empty-state title=\"No entry selected\"\n            matIconName=\"error\">\n            Pick one from the list to the left.\n          </dgp-empty-state>\n        }\n        \n        \n        \n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            overflow: auto;\n            word-break: break-word;\n        }\n\n        .header {\n            display: flex;\n            align-items: center;\n        }\n\n        .header__icon {\n            font-size: 40px;\n            width: 40px;\n            height: 40px;\n            margin-left: 16px;\n            margin-right: 16px;\n        }\n\n        .header__title-container {\n            flex-grow: 1;\n        }\n\n        .header__title {\n            margin-top: 8px;\n            margin-bottom: 8px;\n        }\n\n        .header__subtitle {\n            display: flex;\n        }\n\n        .content {\n        }\n\n        .content__heading {\n            margin-top: 8px;\n            margin-bottom: 8px;\n        }\n\n        .content__body {\n\n        }\n\n        .content__placeholder {\n\n        }\n\n        .vertical-separator {\n            margin-top: 16px;\n            margin-bottom: 16px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class LogEntryDetailsComponent {\n\n    readonly severityEnum = Severity;\n\n    @Input()\n    logEntry: LogEntry;\n\n    isApiError(): boolean {\n        if (this.logEntry.content?.hasOwnProperty(\"status\")) {\n            return true;\n        }\n\n        return false;\n    }\n\n    isHtml(logEntry: LogEntry) {\n        return typeof logEntry.content === \"string\" && logEntry.content?.startsWith(\"<html\");\n    }\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { Severity, LogState } from \"../models\";\nimport { getAllLogEntries, hasLogEntries } from \"../selectors\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\n\n@Component({\n    selector: \"dgp-log-entry-list\",\n    template: `\n        @if (hasLogEntries$ | async) {\n          <mat-nav-list>\n            <h3 mat-subheader>Entries</h3>\n            @for (logEntry of logEntries$ | async; track logEntry) {\n              <a mat-list-item\n                [routerLink]=\"['/logEntries', logEntry.timeStamp.toString()]\">\n                @if (logEntry.severity === severityEnum.Error) {\n                  <mat-icon matListItemIcon\n                    >\n                    error\n                  </mat-icon>\n                }\n                <div matListItemTitle>\n                  {{ logEntry.title }}\n                </div>\n                <div matListItemLine>\n                  {{ logEntry.timeStamp | date:'medium' }}\n                </div>\n              </a>\n            }\n          </mat-nav-list>\n        } @else {\n          <dgp-empty-state matIconName=\"error\"\n            title=\"No entries available\">\n          </dgp-empty-state>\n        }\n        \n        `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-grow: 1;\n            flex-direction: column;\n            height: 100%;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class LogEntryListComponent extends DgpContainer<LogState> {\n\n    readonly severityEnum = Severity;\n\n    readonly logEntries$ = this.select(getAllLogEntries);\n    readonly hasLogEntries$ = this.select(hasLogEntries);\n\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { Store } from \"@ngrx/store\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { getSelectedLogEntry } from \"../selectors\";\nimport { LogState } from \"../models\";\nimport { logStore } from \"../reducers\";\nimport { filter } from \"rxjs/operators\";\n\n@Component({\n    selector: \"dgp-log-page\",\n    template: `\n        <dgp-page-header>\n            <dgp-hamburger-menu-toggle></dgp-hamburger-menu-toggle>\n            Log\n        </dgp-page-header>\n\n        <dgp-list-details-page>\n\n            <ng-container dgp-list-details-page-menu>\n                <dgp-log-entry-list></dgp-log-entry-list>\n            </ng-container>\n\n            <dgp-list-details-page-content>\n                <dgp-log-entry-details [logEntry]=\"logEntry$ | async\"></dgp-log-entry-details>\n            </dgp-list-details-page-content>\n\n        </dgp-list-details-page>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class LogPageComponent {\n\n    readonly logEntry$ = this.store.select(getSelectedLogEntry);\n\n    constructor(\n        private readonly store: Store<LogState>,\n        private readonly activatedRoute: ActivatedRoute\n    ) {\n        activatedRoute.params\n            .pipe(filter(params => params.logEntryId))\n            .subscribe(params => this.store.dispatch(\n                logStore.actions.composeEntityActions({\n                    select: {\n                        logEntry: [params.logEntryId]\n                    }\n                })\n            ));\n    }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { defaultIfEmpty, map, switchMap } from \"rxjs/operators\";\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\nimport { Router } from \"@angular/router\";\nimport { addLogEntry, logError } from \"./actions\";\nimport { LogEntry, Severity } from \"./models\";\nimport { logStore } from \"./reducers\";\n\n@Injectable()\nexport class LogEffects {\n\n    \n    readonly logError$ = createEffect(() => this.actions$.pipe(\n        ofType(logError),\n        map(action => {\n\n            const logEntry: LogEntry = {\n                timeStamp: new Date().valueOf(),\n                title: action.payload.title,\n                content: action.payload.error,\n                severity: Severity.Error\n            };\n\n            return addLogEntry({logEntry});\n\n        })\n    ));\n\n    \n    readonly addLogEntry$ = createEffect(() => this.actions$.pipe(\n        ofType(addLogEntry),\n        map(action => logStore.actions.composeEntityActions({\n            add: {\n                logEntry: {\n                    [action.logEntry.timeStamp.toString()]: action.logEntry\n                }\n            }\n        }))\n    ));\n\n    \n    readonly showErrorSnack$ = createEffect(() => this.actions$.pipe(\n        ofType(addLogEntry),\n        switchMap(action => this.matSnackbar.open(action.logEntry.title, \"Show log\", {\n            duration: 5000\n        })\n            .onAction()\n            .pipe(\n                map(() => this.router.navigate([\"/logEntries\", action.logEntry.timeStamp.toString()])),\n                defaultIfEmpty(null)\n            ))\n    ), {\n        dispatch: false\n    });\n\n    constructor(\n        private readonly actions$: Actions,\n        private readonly matSnackbar: MatSnackBar,\n        private readonly router: Router\n    ) {\n    }\n\n}\n","import { FactoryProvider, InjectionToken, NgModule } from \"@angular/core\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { StoreModule } from \"@ngrx/store\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RouterModule } from \"@angular/router\";\nimport { DgpEmptyStateModule } from \"../empty-state/empty-state.module\";\nimport { logStore } from \"./reducers\";\nimport { LogPageComponent } from \"./components/log-page.component\";\nimport { LogEntryListComponent } from \"./components/log-entry-list.component\";\nimport { LogEntryDetailsComponent } from \"./components/log-entry-details.component\";\nimport { logStoreFeature } from \"./models\";\nimport { LogEffects } from \"./effects\";\nimport { DgpHamburgerMenuToggleModule } from \"../hamburger-shell/components/hamburger-menu-toggle/hamburger-menu-toggle.module\";\nimport { DgpListDetailsPageModule } from \"../hamburger-shell/components/list-details-page/list-details-page.module\";\nimport { DgpPageHeaderModule } from \"../hamburger-shell/components/page-header/page-header.module\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\nimport { SafePipeModule } from \"../safe/safe-pipe.module\";\n\nexport const LOG_STORE_REDUCER = new InjectionToken<typeof logStore.reducers>(\"LogStoreReducer\");\n\nexport function createLogStoreReducer() {\n    return logStore.reducers;\n}\n\nexport const logStoreReducerProvider: FactoryProvider = {\n    provide: LOG_STORE_REDUCER,\n    useFactory: createLogStoreReducer\n};\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n\n        StoreModule.forFeature(logStoreFeature, LOG_STORE_REDUCER),\n        EffectsModule.forFeature([\n            LogEffects\n        ]),\n\n        RouterModule.forChild([{\n            path: \"logEntries\",\n            component: LogPageComponent,\n        }, {\n            path: \"logEntries/:logEntryId\",\n            component: LogPageComponent,\n        }]),\n\n        MatDividerModule,\n        MatIconModule,\n        MatListModule,\n        MatSnackBarModule,\n\n        DgpHamburgerMenuToggleModule,\n        DgpPageHeaderModule,\n        DgpListDetailsPageModule,\n        DgpEmptyStateModule,\n        SafePipeModule\n    ],\n    declarations: [\n        LogEntryDetailsComponent,\n        LogEntryListComponent,\n        LogPageComponent\n    ],\n    providers: [\n        logStoreReducerProvider\n    ]\n})\nexport class DgpLogModule {\n}\n","import { Action, createAction, props } from \"@ngrx/store\";\nimport { Observable } from \"rxjs\";\n\nexport const scheduleRequestActionType = \"[ScheduleRequest] ScheduleRequestAction\";\n\nexport interface ScheduleRequestActionPayload<T> {\n    /**\n     * The request to be processed.\n     *\n     * Observables are converted into promises\n     */\n    request$: Promise<T> | Observable<T>;\n}\n\nexport class ScheduleRequestAction<T> implements Action {\n    readonly type = scheduleRequestActionType;\n\n    constructor(public readonly payload: ScheduleRequestActionPayload<T>) {\n    }\n}\n\nexport const scheduleRequest = createAction(\n    scheduleRequestActionType,\n    props<ScheduleRequestActionPayload<any>>()\n);\n\nexport const registerRequestActionType = \"[Request] Register\";\n\nexport const registerRequest = createAction(registerRequestActionType);\n\nexport const unregisterRequestActionType = \"[Request] Unregister\";\n\nexport const unregisterRequest = createAction(unregisterRequestActionType);\n\nexport const resetRequestsActionType = \"[Request] Reset\";\n\nexport const resetRequests = createAction(resetRequestsActionType);\n","import { Observable, Observer, from, empty } from \"rxjs\";\nimport { tap, defaultIfEmpty, first, catchError } from \"rxjs/operators\";\n\nexport interface ObserveRequestPayload<T> {\n    readonly request$: Promise<T> | Observable<T>;\n    readonly observer: Observer<T>;\n}\n\n/**\n * Observes a promise or observable based\n * request\n *\n * Allows intercepting value and error events\n * with a custom observer\n */\nexport function observeRequest<T>(payload: ObserveRequestPayload<T>): Promise<T> {\n\n    const request = payload.request$;\n\n    let obs$: Observable<any>;\n\n    if (request instanceof Promise) {\n        obs$ = from(request as Promise<any>);\n    } else {\n        obs$ = request as Observable<any>;\n    }\n\n    let interceptedObs$ = obs$;\n\n    interceptedObs$ = interceptedObs$.pipe(\n        tap(payload.observer),\n        catchError((err, caught) => {\n            return empty();\n        }),\n        defaultIfEmpty(null)\n    );\n\n    return interceptedObs$.pipe(\n        first()\n    ).toPromise();\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observer } from \"rxjs\";\nimport { Store } from \"@ngrx/store\";\nimport { createEffect, ofType } from \"@ngrx/effects\";\nimport { concatMap } from \"rxjs/operators\";\nimport { Actions } from \"@ngrx/effects\";\nimport {\n    registerRequest, scheduleRequest, unregisterRequest,\n} from \"./actions\";\nimport { RequestStoreState } from \"./models\";\nimport { observeRequest } from \"./functions\";\n\n@Injectable()\nexport class RequestEffects {\n\n    /**\n     * A request-processing queue that processes requests\n     * in the order they arrive and keeps track of how\n     * many requests are currently running\n     */\n    \n    scheduleRequest$ = createEffect(() => this.actions$\n        .pipe(\n            ofType(scheduleRequest),\n            concatMap(action => {\n\n                    return observeRequest({\n                        request$: action.request$,\n                        observer: this.getRequestObserver()\n                    });\n\n                }\n            )\n        ), {\n        dispatch: false\n    });\n\n    private getRequestObserver(): Observer<any> {\n        this.store.dispatch(registerRequest());\n\n        let isAlreadyUnregistered = false;\n\n        const onObserved = () => {\n            if (!isAlreadyUnregistered) {\n                isAlreadyUnregistered = true;\n                this.store.dispatch(unregisterRequest());\n            }\n        };\n\n        return {\n            next: onObserved,\n            error: () => {\n                onObserved();\n            },\n            complete: onObserved\n        };\n    }\n\n    constructor(\n        private readonly actions$: Actions,\n        private readonly store: Store<RequestStoreState>\n    ) {\n    }\n\n}\n","import { ActionReducerMap, createReducer, on } from \"@ngrx/store\";\nimport { RequestStoreState } from \"./models\";\nimport { registerRequest, resetRequests, unregisterRequest } from \"./actions\";\n\nexport const requestReducer = createReducer({pendingRequests: 0},\n    on(registerRequest, state => {\n        return {\n            pendingRequests: state.pendingRequests + 1\n        };\n    }),\n    on(unregisterRequest, state => {\n        return {\n            pendingRequests: state.pendingRequests - 1\n        };\n    }),\n    on(resetRequests, () => {\n        return {\n            pendingRequests: 0\n        };\n    })\n);\n\nexport const requestStoreReducer: ActionReducerMap<RequestStoreState> = {\n    requests: requestReducer\n};\n","import { FactoryProvider, InjectionToken, NgModule } from \"@angular/core\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { StoreModule } from \"@ngrx/store\";\nimport { requestStoreFeature, RequestStoreState } from \"./models\";\nimport { RequestEffects } from \"./effects\";\nimport { requestStoreReducer } from \"./reducers\";\n\nexport const REQUEST_STORE_REDUCER = new InjectionToken<RequestStoreState>(\"RequestStoreReducer\");\n\nexport function requestStoreReducerFactory() {\n    return requestStoreReducer;\n}\n\nexport const requestStoreReducerProvider: FactoryProvider = {\n    provide: REQUEST_STORE_REDUCER,\n    useFactory: requestStoreReducerFactory\n};\n\n\n@NgModule({\n    imports: [\n        StoreModule.forFeature(requestStoreFeature, REQUEST_STORE_REDUCER),\n\n        EffectsModule.forFeature([\n            RequestEffects\n        ])\n    ],\n    providers: [\n        requestStoreReducerProvider\n    ]\n})\nexport class DgpRequestStoreModule {\n}\n","import { ElementRef } from \"@angular/core\";\nimport { Size } from \"../models/size.model\";\n\nexport function getInitialSize(payload: HTMLElement): Size {\n    return {\n        height: payload.clientHeight,\n        width: payload.clientWidth\n    } as Size;\n}\n\nexport function getInitialSizeFromElRef(payload: ElementRef<HTMLElement>): Size {\n    return getInitialSize(payload.nativeElement);\n}\n","import { Subject, Subscription } from \"rxjs\";\nimport { Size } from \"../models/size.model\";\nimport { debounceTime, startWith } from \"rxjs/operators\";\nimport { getInitialSize } from \"../functions/get-initial-size-from-el-ref.function\";\n\nexport interface ResizeSensorConfig {\n    readonly stableTime: number;\n}\n\nexport const defaultResizeSensorConfig: ResizeSensorConfig = {\n    stableTime: 250\n};\n\nexport class ResizeSensor {\n\n    private readonly resizeActionScheduler = new Subject<Size>();\n\n    private resizeObserver: ResizeObserver;\n    private resizeSubscription: Subscription;\n\n    private config = defaultResizeSensorConfig;\n\n    constructor(\n        private readonly element: HTMLElement,\n        private readonly callback: (size: Size) => void\n    ) {\n    }\n\n    configure(payload: ResizeSensorConfig) {\n        this.config = payload;\n    }\n\n    connect() {\n        this.resizeSubscription = this.resizeActionScheduler.pipe(\n            startWith(getInitialSize(this.element)),\n            debounceTime(this.config.stableTime)\n        ).subscribe(x => this.callback(x));\n\n        this.initResizeSensor();\n    }\n\n    disconnect() {\n        this.resizeObserver.disconnect();\n    }\n\n    private initResizeSensor() {\n\n        this.resizeObserver = new ResizeObserver(entries => {\n            const firstItem = entries[0];\n            this.scheduleResizeAction({\n                width: firstItem.contentRect.width,\n                height: firstItem.contentRect.height,\n            });\n        });\n\n        this.resizeObserver.observe(this.element);\n    }\n\n    protected scheduleResizeAction(size: Size): void {\n        this.resizeActionScheduler.next(size);\n    }\n\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output } from \"@angular/core\";\nimport { Size } from \"../models/size.model\";\nimport { ResizeSensor, ResizeSensorConfig } from \"../services/resize-sensor.service\";\n\n@Directive({\n    selector: \"[dgpResizeSensor]\",\n    standalone: false\n})\nexport class DgpResizeSensorDirective implements AfterViewInit, OnDestroy, ResizeSensorConfig {\n\n    private sensor: ResizeSensor;\n\n    @Input()\n    stableTime = 250;\n\n    @Output()\n    readonly sizeChanged = new EventEmitter<Size>();\n\n    constructor(\n        private readonly elRef: ElementRef,\n        private readonly ngZone: NgZone\n    ) {\n    }\n\n    ngAfterViewInit(): void {\n        this.sensor = new ResizeSensor(this.elRef.nativeElement, x => {\n            this.ngZone.run(() => this.sizeChanged.next(x));\n        });\n        this.sensor.configure({\n            stableTime: this.stableTime\n        });\n        this.sensor.connect();\n    }\n\n    ngOnDestroy(): void {\n\n        if (this.sensor) {\n            this.sensor.disconnect();\n        }\n    }\n\n}\n","import { DgpResizeSensorDirective } from \"./resize-sensor.directive\";\n\nexport const directives = [\n    DgpResizeSensorDirective\n];\n","import { NgModule } from \"@angular/core\";\nimport { directives } from \"./directives/directives\";\n\n@NgModule({\n    declarations: [\n        ...directives\n    ],\n    exports: [\n        ...directives\n    ]\n})\nexport class DgpResizeSensorModule {\n}\n","import { createAction, props } from \"@ngrx/store\";\n\nexport const showLoadingSpinner = createAction(\"[RoutingOverlay] ShowSpinner\", props<{ readonly showSpinner: boolean }>());\n","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-routing-overlay\",\n    template: `\n        <mat-progress-spinner mode='indeterminate'\n                              diameter='48'\n                              color=\"accent\"\n                              strokeWidth=\"3\"></mat-progress-spinner>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            flex-grow: 1;\n            height: 100%;\n        }\n\n        mat-progress-spinner {\n            opacity: 0.67;\n        }\n    `],\n    standalone: false\n})\nexport class RoutingOverlayComponent {\n}\n","import { Injectable } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { distinctUntilKeyChanged, filter, map, switchMap, tap } from \"rxjs/operators\";\nimport { of, timer } from \"rxjs\";\nimport { ActivationStart, NavigationCancel, NavigationEnd, NavigationError, Router } from \"@angular/router\";\nimport { MatDialog, MatDialogRef } from \"@angular/material/dialog\";\nimport { showLoadingSpinner } from \"./actions\";\nimport { RoutingOverlayComponent } from \"./components/routing-overlay.component\";\nimport { isNullOrUndefined } from \"../utils/null-checking.functions\";\n\n@Injectable()\nexport class RoutingOverlayEffects {\n\n    private dialogRef: MatDialogRef<any>;\n\n\n    readonly observeRouteEvents$ = createEffect(() => this.router.events.pipe(\n        map(event => {\n            if (event instanceof ActivationStart) {\n                return showLoadingSpinner({showSpinner: true});\n            }\n            if (event instanceof NavigationEnd\n                || event instanceof NavigationCancel\n                || event instanceof NavigationError) {\n                return showLoadingSpinner({showSpinner: false});\n            }\n            return null;\n\n        }),\n        filter(event => !isNullOrUndefined(event))\n    ));\n\n\n    readonly showLoadingSpinner$ = createEffect(() => this.actions$.pipe(\n        ofType(showLoadingSpinner),\n        distinctUntilKeyChanged(\"showSpinner\"),\n        switchMap(action => {\n            if (action.showSpinner) {\n                return timer(500).pipe(\n                    tap(() => {\n                        this.dialogRef = this.matDialog.open(RoutingOverlayComponent, {\n                            disableClose: true,\n                            hasBackdrop: true,\n                            panelClass: \"dgp-routing-overlay-dialog-panel\",\n                            backdropClass: \"dgp-routing-overlay-backdrop\"\n                        });\n                    })\n                );\n            } else {\n                return of(null).pipe(\n                    tap(() => {\n                        if (!isNullOrUndefined(this.dialogRef)) {\n                            this.dialogRef.close();\n                        }\n                    })\n                );\n            }\n        })\n    ), {\n        dispatch: false\n    });\n\n    constructor(\n        private readonly actions$: Actions,\n        private readonly router: Router,\n        private readonly matDialog: MatDialog\n    ) {\n    }\n\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { RoutingOverlayComponent } from \"./components/routing-overlay.component\";\nimport { RoutingOverlayEffects } from \"./effects\";\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\n\n@NgModule({\n    imports: [\n        MatDialogModule,\n        MatProgressBarModule,\n        EffectsModule.forFeature([\n            RoutingOverlayEffects\n        ]),\n        MatProgressSpinnerModule\n    ],\n    declarations: [\n        RoutingOverlayComponent\n    ]\n})\nexport class DgpRoutingOverlayModule {\n}\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n    selector: \"[dgpTableCellEditor]\",\n    standalone: false\n})\nexport class DgpTableCelLEditorDirective {\n\n}\n","import { ChangeDetectionStrategy, Component, Inject, TemplateRef } from \"@angular/core\";\nimport { MAT_DIALOG_DATA } from \"@angular/material/dialog\";\n\n@Component({\n    selector: \"dgp-table-cell-editor\",\n    template: `\n        <mat-dialog-content>\n            <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n        </mat-dialog-content>\n    `,\n    styles: [`\n        mat-dialog-content {\n            padding: 0 !important;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class DgpTableCellEditorComponent {\n\n    constructor(\n        @Inject(MAT_DIALOG_DATA) readonly template: TemplateRef<any>\n    ) {\n    }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { MatDialogRef } from \"@angular/material/dialog\";\n\n@Injectable({\n    providedIn: \"root\"\n})\nexport class DgpTableCellEditorService {\n\n    private currentEditor: MatDialogRef<any>;\n\n    cacheCurrentEditor(editor: MatDialogRef<any>) {\n        this.currentEditor = editor;\n    }\n\n    closeCurrentEditor() {\n        if (!this.currentEditor) {\n            console.warn(\"DgpTableCellEditorService.closeCurrentEditor has been called but no editor is currently open.\");\n        } else {\n            this.currentEditor.close();\n            this.currentEditor = null;\n        }\n\n    }\n\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    TemplateRef,\n    ViewChild\n} from \"@angular/core\";\nimport { MatDialog, MatDialogConfig, MatDialogRef } from \"@angular/material/dialog\";\nimport { DgpTableCelLEditorDirective } from \"../directives/table-cell-editor.directive\";\nimport { computeTriggerElementSizes, getDialogPositionFromTriggerElementSizes } from \"../functions\";\nimport { DgpTableCellEditorService } from \"../service/table-cell-editor.service\";\nimport { DgpTableCellEditorComponent } from \"./table-cell-editor.component\";\n\n@Component({\n    selector: \"dgp-table-cell\",\n    template: `\n\n        <button #triggerButton\n                mat-button\n                [disabled]=\"disabled\"\n                (click)=\"openCellEditorDialog()\"\n                class=\"mat-mdc-table-cell-editor-trigger-button\">\n            <ng-content></ng-content>\n        </button>\n\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-grow: 1;\n        }\n\n        .mat-mdc-table-cell-editor-trigger-button {\n            flex-grow: 1;\n            justify-content: flex-start;\n            padding: initial;\n            display: flex;\n            font-weight: initial;\n        }\n\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class DgpTableCellComponent {\n\n    @Input()\n    editDialogConfig: MatDialogConfig = {\n        width: \"240px\"\n    };\n\n    @Output()\n    readonly editorOpened = new EventEmitter();\n\n    @Output()\n    readonly editorClosed = new EventEmitter();\n\n    @Input()\n    disabled: boolean;\n\n    @Input()\n    scrollParentSelector: string;\n\n    @ContentChild(DgpTableCelLEditorDirective, {\n        read: TemplateRef\n    })\n    editorTemplate: TemplateRef<any>;\n\n    @ViewChild(\"triggerButton\", {\n        read: ElementRef\n    }) buttonElRef: ElementRef;\n\n    private dialogRef: MatDialogRef<any>;\n\n    constructor(\n        private readonly matDialog: MatDialog,\n        private readonly service: DgpTableCellEditorService\n    ) {\n    }\n\n    async openCellEditorDialog() {\n\n        this.editorOpened.emit();\n\n        const triggerButtonElement = this.buttonElRef.nativeElement as HTMLElement;\n        const configureDialogWidth = +this.editDialogConfig.width.replace(\"px\", \"\");\n        const tableCellBoundingRect = this.buttonElRef.nativeElement.getBoundingClientRect() as ClientRect;\n\n        const tableCellEditorSizes = computeTriggerElementSizes({\n            triggerElementBoundingRect: tableCellBoundingRect, triggerButtonElement, window\n        });\n\n        const position = getDialogPositionFromTriggerElementSizes({\n            triggerElementSizes: tableCellEditorSizes, configureDialogWidth, triggerButtonElement\n        });\n\n        this.dialogRef = this.matDialog.open(DgpTableCellEditorComponent, {\n            ...this.editDialogConfig,\n            position,\n            backdropClass: \"mat-dialog-no-backdrop\",\n            data: this.editorTemplate\n        });\n        this.service.cacheCurrentEditor(this.dialogRef);\n\n        await this.dialogRef.afterClosed().toPromise();\n\n        this.dialogRef = null;\n        this.editorClosed.emit();\n    }\n\n    closeCellEditorDialog() {\n        if (this.dialogRef) {\n            this.dialogRef.close();\n        }\n    }\n\n}\n","import { Directive, HostListener, Input } from \"@angular/core\";\nimport { DgpTableCellEditorService } from \"../service/table-cell-editor.service\";\n\n@Directive({\n    selector: \"[dgpCloseTableCellEditor]\",\n    standalone: false\n})\nexport class DgpCloseTableCellEditorDirective {\n\n    @Input()\n    disabled: boolean;\n\n    constructor(\n        private readonly service: DgpTableCellEditorService\n    ) {\n    }\n\n    @HostListener(\"click\")\n    closeDialog() {\n        if (this.disabled) return;\n\n        this.service.closeCurrentEditor();\n    }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { DgpTableCelLEditorDirective } from \"./directives/table-cell-editor.directive\";\nimport { DgpTableCellComponent } from \"./components/table-cell.component\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { DgpCloseTableCellEditorDirective } from \"./directives/close-table-cell-editor.directive\";\nimport { DgpTableCellEditorComponent } from \"./components/table-cell-editor.component\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatDialogModule\n    ],\n    declarations: [\n        DgpTableCellComponent,\n        DgpTableCelLEditorDirective,\n        DgpCloseTableCellEditorDirective,\n        DgpTableCellEditorComponent\n    ],\n    exports: [\n        DgpTableCellComponent,\n        DgpTableCelLEditorDirective,\n        DgpCloseTableCellEditorDirective,\n        DgpTableCellEditorComponent\n    ]\n})\nexport class DgpTableCellModule {\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { isCompactThemeActive } from \"../selectors\";\nimport { ThemeSwitcherState } from \"../models\";\nimport { toggleCompactTheme } from \"../actions\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\n\n@Component({\n    selector: \"dgp-compact-theme-toggle\",\n    template: `\n        <mat-slide-toggle [ngModel]=\"isCompactThemeActive$ | async\"\n                          (ngModelChange)=\"toggleCompactTheme()\">\n            Use compact theme\n        </mat-slide-toggle>\n    `,\n    styles: [`\n        :host {\n            margin-left: 16px;\n            margin-right: 16px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class CompactThemeToggleComponent extends DgpContainer<ThemeSwitcherState> {\n\n    readonly isCompactThemeActive$ = this.select(isCompactThemeActive);\n\n    toggleCompactTheme() {\n        this.dispatch(toggleCompactTheme());\n    }\n}\n","import { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { isDarkModeActive } from \"../selectors\";\nimport { ThemeSwitcherState } from \"../models\";\nimport { toggleDarkMode } from \"../actions\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\n\n@Component({\n    selector: \"dgp-dark-mode-toggle\",\n    template: `\n        <mat-slide-toggle [ngModel]=\"useDarkMode$ | async\"\n                          (ngModelChange)=\"toggleDarkMode()\">\n            Use dark mode\n        </mat-slide-toggle>\n    `,\n    styles: [`\n        :host {\n            margin-left: 16px;\n            margin-right: 16px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class DarkModeToggleComponent extends DgpContainer<ThemeSwitcherState> {\n\n    readonly useDarkMode$ = this.select(isDarkModeActive);\n\n    toggleDarkMode() {\n        this.dispatch(toggleDarkMode());\n    }\n}\n","import { AfterViewInit, Directive, ElementRef, Inject, Renderer2 } from \"@angular/core\";\nimport { THEME_SWITCHER_CONFIG, ThemeSwitcherConfig } from \"../models\";\nimport { OverlayContainer } from \"@angular/cdk/overlay\";\n\n@Directive({\n    selector: \"[dgpCompactThemeHost]\",\n    standalone: false\n})\nexport class DgpCompactThemeHostDirective implements AfterViewInit {\n\n    constructor(\n        private readonly elRef: ElementRef,\n        private readonly renderer: Renderer2,\n        @Inject(THEME_SWITCHER_CONFIG)\n        private readonly config: ThemeSwitcherConfig,\n        private readonly overlayContainer: OverlayContainer\n    ) {\n    }\n\n    ngAfterViewInit(): void {\n        this.renderer.addClass(this.elRef.nativeElement, this.config.compactThemeClassName);\n        this.overlayContainer.getContainerElement()\n            .classList\n            .add(this.config.compactThemeClassName);\n    }\n}\n","import { Directive, ElementRef, Inject, Renderer2 } from \"@angular/core\";\nimport { select, Store } from \"@ngrx/store\";\nimport { OverlayContainer } from \"@angular/cdk/overlay\";\nimport { THEME_SWITCHER_CONFIG, ThemeSwitcherConfig, ThemeSwitcherState } from \"../models\";\nimport { isCompactThemeActive, isDarkModeActiveSelector } from \"../selectors\";\n\n@Directive({\n    selector: \"[dgpThemeHost]\",\n    standalone: false\n})\nexport class ThemeHostDirective {\n\n    constructor(\n        private readonly elRef: ElementRef,\n        private readonly renderer: Renderer2,\n        private readonly store: Store<ThemeSwitcherState>,\n        @Inject(THEME_SWITCHER_CONFIG)\n        private readonly config: ThemeSwitcherConfig,\n        private readonly overlayContainer: OverlayContainer\n    ) {\n        this.overlayContainer.getContainerElement().setAttribute(\"dgpThemeHost\", \"\");\n\n        this.store.pipe(\n            select(isDarkModeActiveSelector)\n        )\n            .subscribe(isDarkModeActive => {\n\n                if (isDarkModeActive) {\n                    this.renderer.addClass(elRef.nativeElement, this.config.darkThemeClassName);\n                    this.overlayContainer.getContainerElement()\n                        .classList\n                        .add(this.config.darkThemeClassName);\n                } else {\n                    this.renderer.removeClass(elRef.nativeElement, this.config.darkThemeClassName);\n                    this.overlayContainer.getContainerElement()\n                        .classList\n                        .remove(this.config.darkThemeClassName);\n                }\n\n            });\n\n        this.store.pipe(\n            select(isCompactThemeActive)\n        )\n            .subscribe(useCompactTheme => {\n\n                if (useCompactTheme) {\n                    this.renderer.addClass(elRef.nativeElement, this.config.compactThemeClassName);\n                    this.overlayContainer.getContainerElement()\n                        .classList\n                        .add(this.config.compactThemeClassName);\n                } else {\n                    this.renderer.removeClass(elRef.nativeElement, this.config.compactThemeClassName);\n                    this.overlayContainer.getContainerElement()\n                        .classList\n                        .remove(this.config.compactThemeClassName);\n                }\n\n            });\n\n\n    }\n\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { filter, first, skip, switchMap, tap } from \"rxjs/operators\";\nimport { select, Store } from \"@ngrx/store\";\nimport { toggleCompactTheme, toggleDarkMode } from \"./actions\";\nimport { getCurrentInspectorConfig, isCompactThemeActive, isDarkModeActiveSelector } from \"./selectors\";\nimport { THEME_SWITCHER_CONFIG, ThemeSwitcherConfig, ThemeSwitcherState } from \"./models\";\nimport { withoutDispatch } from \"../utils/without-dispatch.constant\";\nimport { DgpContainer } from \"../utils/container.component-base\";\nimport { distinctUntilHashChanged } from \"../utils/distinct-until-hash-changed.function\";\nimport { of } from \"rxjs\";\n\n@Injectable()\nexport class ThemeSwitcherEffects extends DgpContainer<ThemeSwitcherState> {\n\n    readonly toggleDarkMode$ = createEffect(() => this.actions$.pipe(\n        ofType(toggleDarkMode),\n        switchMap(() => {\n\n            return this.store.pipe(\n                select(isDarkModeActiveSelector),\n                first(),\n                tap(isDarkModeActive => {\n                    localStorage.setItem(this.themeSwitcherConfig.isDarkModeActiveLocalStorageKey, JSON.stringify(isDarkModeActive));\n                })\n            );\n\n        })\n    ), withoutDispatch);\n\n    readonly toggleCompactTheme$ = createEffect(() => this.actions$.pipe(\n        ofType(toggleCompactTheme),\n        switchMap(() => {\n\n            return this.store.pipe(\n                select(isCompactThemeActive),\n                first(),\n                tap(useCompactTheme => {\n                    localStorage.setItem(\"useCompactTheme\", JSON.stringify(useCompactTheme));\n                })\n            );\n\n        })\n    ), withoutDispatch);\n\n    readonly updateCurrentInspectorConfig$ = createEffect(() => of(this.themeSwitcherConfig).pipe(\n        filter(x => x.components.includes(\"inspector\")),\n        switchMap(() => this.select(getCurrentInspectorConfig).pipe(\n            skip(1),\n            distinctUntilHashChanged(),\n            tap(inspectorConfig => {\n                localStorage.setItem(\"dgpInspectorConfig\", JSON.stringify(inspectorConfig));\n            })\n        ))\n    ), withoutDispatch);\n\n    constructor(\n        private readonly actions$: Actions,\n        protected readonly store: Store<ThemeSwitcherState>,\n        @Inject(THEME_SWITCHER_CONFIG)\n        private readonly themeSwitcherConfig: ThemeSwitcherConfig\n    ) {\n        super(store);\n    }\n\n}\n","import { createReducer, on } from \"@ngrx/store\";\nimport { setIsCompactThemeActive, setIsDarkModeActive, toggleCompactTheme, toggleDarkMode, updateCurrentInspectorConfig } from \"./actions\";\nimport { ThemeSwitcherState } from \"./models\";\nimport { inspectorDefaultConfig } from \"../inspector/constants\";\n\nexport const initialThemeSwitcherState: ThemeSwitcherState = {\n    useDarkMode: true,\n    useCompactTheme: false,\n    inspector: inspectorDefaultConfig\n};\n\nexport const themeSwitcherReducer = createReducer(initialThemeSwitcherState,\n    on(setIsDarkModeActive, (state, action) => {\n        return {\n            ...state,\n            useDarkMode: action.isDarkModeActive\n        };\n    }),\n    on(toggleDarkMode, (state) => {\n        return {\n            ...state,\n            useDarkMode: !state.useDarkMode\n        };\n    }),\n    on(setIsCompactThemeActive, (state, action) => {\n        return {\n            ...state,\n            useCompactTheme: action.useCompactTheme\n        };\n    }),\n    on(toggleCompactTheme, (state) => {\n        return {\n            ...state,\n            useCompactTheme: !state.useCompactTheme\n        };\n    }),\n    on(updateCurrentInspectorConfig, (state, action) => {\n        return {\n            ...state,\n            inspector: {\n                ...state.inspector,\n                ...action.inspectorConfig\n            }\n        };\n    })\n);\n","import { FactoryProvider, Inject, InjectionToken, ModuleWithProviders, NgModule, ValueProvider } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ActionReducer, Store, StoreModule } from \"@ngrx/store\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ThemeSwitcherEffects } from \"./effects\";\nimport { themeSwitcherReducer } from \"./reducers\";\nimport { ThemeHostDirective } from \"./directives/theme-host.directive\";\nimport { DarkModeToggleComponent } from \"./components/dark-mode-toggle.component\";\nimport {\n    defaultThemeSwitcherConfig,\n    THEME_SWITCHER_CONFIG,\n    ThemeSwitcherConfig,\n    ThemeSwitcherState,\n    themeSwitcherStoreFeature\n} from \"./models\";\nimport { setIsCompactThemeActive, setIsDarkModeActive, updateCurrentInspectorConfig } from \"./actions\";\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\nimport { notNullOrUndefined } from \"../utils/null-checking.functions\";\nimport { DgpCompactThemeHostDirective } from \"./directives/compact-theme-host.directive\";\nimport { CompactThemeToggleComponent } from \"./components/compact-theme-toggle.component\";\n\nexport const THEME_SWITCHER_REDUCER = new InjectionToken<ActionReducer<ThemeSwitcherState>>(\"ThemeSwitcherReducer\");\n\nexport function themeSwitcherReducerFactory() {\n    return themeSwitcherReducer;\n}\n\nexport const themeSwitcherReducerProvider: FactoryProvider = {\n    provide: THEME_SWITCHER_REDUCER,\n    useFactory: themeSwitcherReducerFactory\n};\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        OverlayModule,\n\n        MatSlideToggleModule,\n\n        StoreModule.forFeature(themeSwitcherStoreFeature, THEME_SWITCHER_REDUCER),\n        EffectsModule.forFeature([\n            ThemeSwitcherEffects\n        ])\n    ],\n    declarations: [\n        DarkModeToggleComponent,\n        ThemeHostDirective,\n        DgpCompactThemeHostDirective,\n        CompactThemeToggleComponent\n    ],\n    exports: [\n        DarkModeToggleComponent,\n        ThemeHostDirective,\n        DgpCompactThemeHostDirective,\n        CompactThemeToggleComponent\n    ],\n    providers: [\n        themeSwitcherReducerProvider\n    ]\n})\nexport class DgpThemeSwitcherModule {\n\n    static forRoot(config: Partial<ThemeSwitcherConfig> = defaultThemeSwitcherConfig): ModuleWithProviders<DgpThemeSwitcherModule> {\n\n        config = {\n            ...defaultThemeSwitcherConfig,\n            ...config,\n        };\n\n        return {\n            ngModule: DgpThemeSwitcherModule,\n            providers: [{\n                provide: THEME_SWITCHER_CONFIG,\n                useValue: config as ThemeSwitcherConfig\n            } as ValueProvider]\n        };\n    }\n\n    constructor(\n        private readonly store: Store<ThemeSwitcherState>,\n        @Inject(THEME_SWITCHER_CONFIG)\n        private readonly themeSwitcherConfig: ThemeSwitcherConfig\n    ) {\n        const isDarkModeActiveJSON = localStorage.getItem(themeSwitcherConfig.isDarkModeActiveLocalStorageKey);\n        if (notNullOrUndefined(isDarkModeActiveJSON)) {\n            const isDarkModeActive = JSON.parse(isDarkModeActiveJSON);\n            this.store.dispatch(setIsDarkModeActive({isDarkModeActive}));\n        }\n\n        const useCompactThemeJSON = localStorage.getItem(\"useCompactTheme\");\n        if (notNullOrUndefined(useCompactThemeJSON)) {\n            const useCompactTheme = JSON.parse(useCompactThemeJSON);\n            this.store.dispatch(setIsCompactThemeActive({useCompactTheme}));\n        }\n\n        if (themeSwitcherConfig.components.includes(\"inspector\")) {\n            const dgpInspectorConfigJSON = localStorage.getItem(\"dgpInspectorConfig\");\n            if (notNullOrUndefined(dgpInspectorConfigJSON)) {\n                const inspectorConfig = JSON.parse(dgpInspectorConfigJSON);\n                this.store.dispatch(updateCurrentInspectorConfig({inspectorConfig}));\n            }\n        }\n\n    }\n\n\n}\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\n\n@Component({\n    selector: \"dgp-tile\",\n    template: `\n        @if (route) {\n          <a\n            [routerLink]=\"route\"\n            class=\"container\"\n            matRipple>\n            <mat-card appearance=\"outlined\"\n              class=\"tile-card\">\n              <mat-card-content class=\"description\">\n                <mat-icon class=\"icon dgp-bg--primary\">{{ matIconName }}</mat-icon>\n                <div class=\"label\">\n                  {{ label }}\n                </div>\n                <mat-divider class=\"divider\"></mat-divider>\n                <div class=\"description__text\">\n                  {{ description }}\n                </div>\n              </mat-card-content>\n            </mat-card>\n          </a>\n        }\n        \n        @if (externalLink) {\n          <a\n            [attr.href]=\"externalLink\"\n            target=\"_blank\"\n            class=\"container\">\n            <mat-card appearance=\"outlined\" matRipple\n              class=\"tile-card\">\n              <mat-card-content class=\"description\">\n                <mat-icon class=\"icon dgp-bg--primary\">{{ matIconName }}</mat-icon>\n                <div class=\"label\">\n                  {{ label }}\n                </div>\n                <mat-divider class=\"divider\"></mat-divider>\n                <div class=\"description__text\">\n                  {{ description }}\n                </div>\n              </mat-card-content>\n            </mat-card>\n          </a>\n        }\n        `,\n    styles: [`\n        .container {\n            display: flex;\n            flex-direction: column;\n            max-height: 224px;\n            min-height: 224px;\n            height: 100%;\n            max-width: 224px;\n            min-width: 224px;\n            width: 100%;\n            text-decoration: inherit;\n            margin: 8px;\n            color: inherit;\n        }\n\n        .tile-card {\n            flex-grow: 1;\n        }\n\n        .description {\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n            height: 100%;\n        }\n\n        .icon {\n            font-size: 40px;\n            height: 64px;\n            width: 64px;\n            color: white !important;\n            border-radius: 32px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            margin-bottom: 16px;\n        }\n\n        .label {\n            font-size: larger;\n        }\n\n        .divider {\n            position: relative !important;\n            margin-top: 16px;\n            margin-bottom: 16px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class TileComponent {\n\n    @Input()\n    externalLink: string;\n\n    @Input()\n    route: string;\n\n    @Input()\n    matIconName: string;\n\n    @Input()\n    label: string;\n\n    @Input()\n    description: string;\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { TileComponent } from \"./tile.component\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatDividerModule } from \"@angular/material/divider\";\nimport { CommonModule } from \"@angular/common\";\n\n@NgModule({\n    imports: [\n        RouterModule,\n        MatCardModule,\n        MatRippleModule,\n        MatIconModule,\n        MatDividerModule,\n        CommonModule\n    ],\n    declarations: [\n        TileComponent\n    ],\n    exports: [\n        TileComponent\n    ]\n})\nexport class DgpTileModule {\n}\n","import { getHashCode } from \"./get-hash-code.function\";\n\nexport function areEqualByHashCode<T>(a: T, b: T): boolean {\n    return getHashCode(a) === getHashCode(b);\n}\n","import {Store} from \"@ngrx/store\";\nimport {Selector} from \"entity-store\";\nimport {filterNotNullOrUndefined} from \"./filter-not-null-or-undefined.function\";\nimport {distinctUntilHashChanged} from \"./distinct-until-hash-changed.function\";\n\nexport function createOnChangeEffect$<TState, TObserved>(payload: {\n    readonly store: Store<TState>;\n    readonly observedSelector: Selector<TState, TObserved>;\n}) {\n\n    return payload.store.select(payload.observedSelector).pipe(\n        filterNotNullOrUndefined(),\n        distinctUntilHashChanged(),\n    );\n\n}\n","import {RuntimeChecks} from \"@ngrx/store\";\n\nexport const defaultRuntimeChecks: RuntimeChecks = {\n    strictStateSerializability: false,\n    strictStateImmutability: false,\n    strictActionWithinNgZone: false,\n    strictActionSerializability: false,\n    strictActionImmutability: false\n};\n","import { Selector } from \"entity-store\";\nimport { DgpContainer } from \"./container.component-base\";\nimport { createOnChangeEffect$ } from \"./create-on-change-effect$.function\";\nimport { Directive } from \"@angular/core\";\n\n@Directive()\nexport abstract class DgpEffectsBase<TState> extends DgpContainer<TState> {\n\n    protected createOnChangeEffect$<TObserved>(payload: {\n        readonly observedSelector: Selector<TState, TObserved>;\n    }) {\n        return createOnChangeEffect$({\n            store: this.store,\n            ...payload\n        });\n    }\n\n}\n","import {filter} from \"rxjs/operators\";\n\nexport function filterEmpty<T extends ReadonlyArray<TItem>, TItem>() {\n    return filter<T>(x => x.length !== 0);\n}\n","import * as _ from \"lodash\";\nimport { Matrix } from \"data-modeling\";\n\nexport function flattenMatrix<T>(matrix: Matrix<T>): ReadonlyArray<T> {\n    return _.flatten(matrix);\n}\n\n","export function negate(payload: any): boolean {\n    return !payload;\n}\n","import {map} from \"rxjs/operators\";\nimport {negate} from \"./negate.function\";\n\nexport function negateMap<TModel>() {\n    return map<TModel, boolean>(negate);\n}\n","import { Directive } from \"@angular/core\";\nimport { DgpModelEditorComponentBase } from \"./model-editor.component-base\";\nimport { Store } from \"@ngrx/store\";\nimport { Action, Selector } from \"entity-store\";\nimport { notNullOrUndefined } from \"./null-checking.functions\";\nimport { of } from \"rxjs\";\n\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class DgpHybridComponentBase<TModel, TState> extends DgpModelEditorComponentBase<TModel> {\n\n    constructor(\n        protected readonly store: Store<TState>\n    ) {\n        super();\n    }\n\n    readonly select = <TV>(x: Selector<TState, TV>) => this.store.select<TV>(x);\n\n    readonly dispatch = (x: Action) => this.store.dispatch(x);\n\n}\n\n\n/**\n * @deprecated This should not be used anymore. See DgpHybridComponentBase instead\n */\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class HybridComponentBase<TModel, TState, TData> extends DgpHybridComponentBase<TModel, TState> {\n\n    // tslint:disable-next-line:member-ordering\n    readonly data$ = notNullOrUndefined(this.getData) ? this.select(this.getData()) : of(null);\n\n    abstract getData?(): Selector<TState, TData>;\n}\n\n","import { composeEntityActions, EntityTypeMap } from \"entity-store\";\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from \"@angular/router\";\nimport { Store } from \"@ngrx/store\";\n\nexport interface SelectEntityViaRouteResolverConfig<TEntityTypeMap extends EntityTypeMap, TStoreFeature = null> {\n    readonly getNewEntitySurrogateKeyFromRoute: (route: ActivatedRouteSnapshot) => Promise<string>;\n    readonly getOldEntitySurrogateKeyFromStore: () => Promise<string>;\n    readonly entityName: keyof TEntityTypeMap;\n    readonly storeFeature?: TStoreFeature;\n}\n\nexport abstract class DgpSelectEntityViaRouteResolver<TEntityTypeMap extends EntityTypeMap, TStoreFeature = null>  {\n\n    protected constructor(\n        protected readonly store: Store<any>,\n        private readonly config: SelectEntityViaRouteResolverConfig<TEntityTypeMap, TStoreFeature>\n    ) {\n    }\n\n    async resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void> {\n\n        const newSelectionIdFromRoute = await this.config.getNewEntitySurrogateKeyFromRoute(route);\n        const oldSelectionIdFromStore = await this.config.getOldEntitySurrogateKeyFromStore();\n\n        if (!oldSelectionIdFromStore && !newSelectionIdFromRoute) {\n            return;\n        }\n\n        if (oldSelectionIdFromStore === newSelectionIdFromRoute) {\n            return;\n        }\n\n        this.store.dispatch(\n            composeEntityActions({\n                select: {\n                    [this.config.entityName]: [newSelectionIdFromRoute]\n                },\n                storeFeature: this.config.storeFeature\n            })\n        );\n\n    }\n\n}\n\n","import {notNullOrUndefined} from \"./null-checking.functions\";\n\nexport function resolveOverridableValue<TValue>(payload: {\n    readonly computedValue: TValue;\n    readonly overriddenValue?: TValue;\n}): TValue {\n    return notNullOrUndefined(payload.overriddenValue)\n        ? payload.overriddenValue\n        : payload.computedValue;\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from \"@angular/router\";\nimport { DgpContainer } from \"./container.component-base\";\nimport { Directive } from \"@angular/core\";\n\n@Directive()\nexport abstract class DgpResolverBase<TState> extends DgpContainer<TState>  {\n\n    abstract resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<void>;\n\n}\n","import { Matrix } from \"data-modeling\";\n\nexport function parseStringMatrixAsNumberMatrix(payload: Matrix<string>): Matrix<number> {\n    return payload.map(line => line.map(entry => +entry.replace(\",\", \".\")));\n}\n","export enum Magnitude {\n    Femto = -15 as any,\n    Piko = -12 as any,\n    Nano = -9 as any,\n    Mikro = -6 as any,\n    Milli = -3 as any,\n    None = 0 as any,\n    Kilo = 3 as any,\n    Mega = 6 as any,\n    Giga = 9 as any,\n    Tera = 12 as any,\n    Peta = 15 as any\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\n@Injectable({\n    providedIn: \"root\"\n})\nexport class HttpSSEApiClient {\n\n    getStream$<T>(url: string, processor: (data: string) => T, eventSourceInitDict?: EventSourceInit): Observable<T> {\n        return new Observable<T>(observer => {\n            const source = new EventSource(url, eventSourceInitDict);\n\n            source.onmessage = x => {\n                const result = processor(x.data);\n                observer.next(result);\n            };\n\n            source.onerror = x => observer.error(x);\n\n            return () => source.close();\n        });\n    }\n\n}\n","import {notNullOrUndefined} from \"./null-checking.functions\";\n\nexport function there(payload: any) {\n    return notNullOrUndefined(payload);\n}\n","import { ModelMetadata } from \"data-modeling\";\nimport { notNullOrUndefined } from \"./null-checking.functions\";\n\nexport function getDefaultValue<TModel extends object>(payload: ModelMetadata<TModel, any>): TModel {\n    const result = {};\n\n    Object.keys(payload.attributes).forEach(attributeKey => {\n        if (notNullOrUndefined(payload.attributes[attributeKey].defaultValue)) {\n            result[attributeKey] = payload.attributes[attributeKey].defaultValue;\n        }\n    });\n\n    return result as TModel;\n}\n","/**\n * source: https://stackoverflow.com/questions/1960473/get-all-unique-values-in-a-javascript-array-remove-duplicates\n */\nexport function byUnique<T>(value: T, index: number, self: T[]) {\n    return self.indexOf(value) === index;\n}\n","export const matrixToMany = <T>(prev: T[], current: T[]): T[] => {\n    if (!prev) prev = [];\n    prev = prev.concat(current);\n    return prev;\n};\n","import { BehaviorSubject } from \"rxjs\";\nimport { debounceTime } from \"rxjs/operators\";\n\nexport async function waitForStableDOM$(htmlNode: Node, config = {\n    stableTime: 250\n}): Promise<void> {\n\n    return new Promise((resolve, reject) => {\n\n        const subject = new BehaviorSubject<void>(null);\n\n        const init: MutationObserverInit = {attributes: true, childList: true, subtree: true};\n\n        const callback: MutationCallback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                subject.next();\n            }\n        };\n        const obs = new MutationObserver(callback);\n\n        subject.pipe(\n            debounceTime(config.stableTime)\n        ).subscribe(() => {\n            obs.disconnect();\n            resolve();\n        });\n\n        obs.observe(htmlNode, init);\n\n    });\n\n}\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n    selector: \"[dgpVirtualListItem]\",\n    standalone: false\n})\nexport class VirtualListItemDirective {}\n","import {\n    Component,\n    ChangeDetectionStrategy,\n    Input,\n    TemplateRef,\n    ContentChild,\n    Renderer2,\n    AfterViewInit, ElementRef\n} from \"@angular/core\";\nimport { VirtualListItemDirective } from \"../directives/virtual-list-item.directive\";\n\n@Component({\n    selector: \"dgp-virtual-list-panel\",\n    template: `\n        <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\"\n                                     style=\"height: 100%; width:100%;\">\n            <ng-container *cdkVirtualFor=\"let item of items\">\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n            </ng-container>\n        </cdk-virtual-scroll-viewport>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\n\nexport class VirtualListPanelComponent implements AfterViewInit {\n\n    @Input()\n    itemSize = 48;\n\n    @Input()\n    items: ReadonlyArray<any>;\n\n    @ContentChild(VirtualListItemDirective, { read: TemplateRef })\n    itemTemplate: TemplateRef<any>;\n\n    constructor(\n        private readonly elementRef: ElementRef,\n        private readonly renderer: Renderer2\n    ) {\n    }\n\n    ngAfterViewInit(): void {\n        const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);\n        this.renderer.setStyle(parentNode, \"flex-grow\", 1);\n        this.renderer.setStyle(parentNode, \"overflow\", \"auto\");\n        this.renderer.setStyle(parentNode, \"height\", \"100%\");\n    }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\nimport { VirtualListItemDirective } from \"./directives/virtual-list-item.directive\";\nimport { VirtualListPanelComponent } from \"./components/virtual-list-panel.component\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ScrollingModule\n    ],\n    declarations: [\n        VirtualListPanelComponent,\n        VirtualListItemDirective\n    ],\n    exports: [\n        VirtualListPanelComponent,\n        VirtualListItemDirective\n    ]\n})\nexport class DgpVirtualListPanelModule {\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { ActionReducerMap, StoreModule } from \"@ngrx/store\";\nimport { EffectsModule } from \"@ngrx/effects\";\nimport { DgpHamburgerShellModule } from \"./hamburger-shell/hamburger-shell.module\";\nimport { DgpRequestStoreModule } from \"./request-store/request-store.module\";\nimport { DgpRoutingOverlayModule } from \"./routing-overlay/routing-overlay.module\";\nimport { DgpThemeSwitcherModule } from \"./theme-switcher/theme-switcher.module\";\nimport { hmrReducer } from \"./hmr/hmr.reducer\";\nimport { DgpLogModule } from \"./log/log.module\";\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport { DgpHamburgerMenuModule } from \"./hamburger-shell/components/hamburger-menu/hamburger-menu.module\";\nimport { defaultThemeSwitcherConfig } from \"./theme-switcher/models\";\n\nexport interface DgpNgAppConfig<TAppState> {\n    readonly appReducer: ActionReducerMap<TAppState>;\n}\n\nexport const APP_REDUCER = new InjectionToken<ActionReducerMap<any>>(\"AppReducer\");\n\n@NgModule({\n    imports: [\n\n        BrowserModule,\n        BrowserAnimationsModule,\n\n\n        StoreModule.forRoot(APP_REDUCER, {\n            metaReducers: [hmrReducer]\n        }),\n        EffectsModule.forRoot([]),\n\n        DgpHamburgerShellModule.forRoot(),\n        DgpThemeSwitcherModule.forRoot({\n            ...defaultThemeSwitcherConfig,\n            components: [/*\"inspector\"*/]\n        }),\n        DgpHamburgerMenuModule,\n        DgpLogModule,\n        DgpRequestStoreModule,\n        DgpRoutingOverlayModule\n    ],\n    exports: [\n        DgpHamburgerShellModule,\n        DgpThemeSwitcherModule,\n        DgpHamburgerMenuModule\n    ]\n})\nexport class DgpNgAppModule {\n\n    static forRoot<TAppState>(config: DgpNgAppConfig<TAppState>): ModuleWithProviders<DgpNgAppModule> {\n\n        return {\n            ngModule: DgpNgAppModule,\n            providers: [{\n                provide: APP_REDUCER,\n                useValue: config.appReducer\n            }]\n        };\n    }\n\n}\n","/*\n * Public API Surface of dgp-ng-app\n */\n\n// action context\n\nexport { FirstArg } from \"./utils/first-arg.model\";\nimport { negateMap } from \"./utils/negate-map.function\";\n\nexport { DgpActionContextModule } from \"./action-context/action-context.module\";\nexport { deselectActionContext } from \"./action-context/actions/deselect-action-context.action\";\nexport { selectActionContext } from \"./action-context/actions/select-action-context.action\";\nexport { actionContextStoreFeature } from \"./action-context/constants/action-context-store-feature.constant\";\nexport { emptyActionContext } from \"./action-context/constants/empty-action-context.constant\";\nexport { emptyActionContextState } from \"./action-context/constants/empty-action-context-state.constant\";\nexport { DgpActionContextDirective } from \"./action-context/directives/action-context.directive\";\nexport { ActionContextState } from \"./action-context/models/action-context-state.model\";\nexport { ActionContextStoreFeature } from \"./action-context/models/action-context-store-feature.model\";\nexport { actionContextReducer } from \"./action-context/reducers/action-context.reducer\";\nexport { actionContextFeatureSelector } from \"./action-context/selectors/action-context-feature.selector\";\nexport { isAnyActionContextSelected } from \"./action-context/selectors/is-any-action-context-selected.selector\";\nexport { isActionContextSelected } from \"./action-context/selectors/is-action-context-selected.selector\";\nexport { getSelectedActionContext } from \"./action-context/selectors/get-selected-action-context.selector\";\nexport { getSelectedActionContextKey } from \"./action-context/selectors/get-selected-action-context-key.selector\";\nexport { getSelectedActionContextLabel } from \"./action-context/selectors/get-selected-action-context-label.selector\";\nexport { getSelectedActionContextType } from \"./action-context/selectors/get-selected-action-context-type.selector\";\nexport { getSelectedActionContextValue } from \"./action-context/selectors/get-selected-action-context-value.selector\";\n\n// authentication\nexport { authenticateUser } from \"./authentication/actions\";\nexport {\n    AuthenticationApiClient, AuthenticationApiClientProvider\n} from \"./authentication/api-clients/authentication.api-client\";\nexport { AuthenticationGuard } from \"./authentication/guards/authentication.guard\";\nexport { AuthenticationState, authenticationStoreFeature } from \"./authentication/models\";\nexport {\n    getAuthenticatedUserSelector, getIsAuthenticatedSelector, getAuthenticatedUser, isAuthenticated, isInitialized\n} from \"./authentication/selectors\";\nexport * from \"./authentication/services/authentication.service\";\nexport { authenticationReducer, initialAuthenticationState } from \"./authentication/reducers\";\nexport { InitializationService, InitializationServiceProvider } from \"./authentication/services/initialization.service\";\nexport { DgpAuthenticationModule, AuthenticationModuleSettings } from \"./authentication/authentication.module\";\n\n// broadcast\nexport {\n    setBroadcastChannelDataId, SetBroadcastChannelDataIdAction, SetOwnBroadcastRoleAction\n} from \"./broadcast/actions\";\nexport { NoPeonGuard } from \"./broadcast/guards/no-peon.guard\";\nexport { createGuid } from \"./broadcast/functions/create-guid.function\";\nexport { BROADCAST_CONFIG } from \"./broadcast/constants/broadcast-config-injection-token.constant\";\nexport {\n    defaultBroadcastRoleDisplayConfig\n} from \"./broadcast/constants/default-broadcast-role-display-config.constant\";\nexport { defaultBroadcastConfig } from \"./broadcast/constants/default-broadcast-config.model\";\nexport { heartbeatBroadcastChannelId } from \"./broadcast/constants/heartbeat-broadcast-channel-id.constant\";\nexport { actionBroadcastChannelId } from \"./broadcast/constants/action-broadcast-channel-id.constant\";\nexport * from \"./broadcast/models\";\nexport {\n    BroadcastState, broadcastStoreFeature, broadcastStoreFeatureSelector, getOwnBroadcastRoleSelector,\n    broadcastReducer\n} from \"./broadcast/store\";\nexport { DgpBroadcastStoreModule, BROADCAST_REDUCER, broadcastReducerProvider } from \"./broadcast/broadcast-store.module\";\n\n// confirm-dialog\nexport {\n    DgpConfirmDialogComponent, RemovalDialogButtonConfig, cancelButtonConfig, confirmButtonConfig\n} from \"./confirm-dialog/containers/confirm-dialog.component\";\nexport { DgpConfirmDialogModule } from \"./confirm-dialog/confirm-dialog.module\";\n\n// dialog-menu\nexport { DgpDialogMenuComponent } from \"./dialog-menu/components/dialog-menu.component\";\nexport { DgpDialogMenuTriggerDirective } from \"./dialog-menu/directives/dialog-menu-trigger.directive\";\nexport { DgpDialogMenuService } from \"./dialog-menu/services/dialog-menu.service\";\nexport { DgpDialogMenuModule } from \"./dialog-menu/dialog-menu.module\";\n\n// details\nexport * from \"./details/models\";\nexport { DgpDetailsComponent } from \"./details/components/details.component\";\nexport { DgpDetailsModule } from \"./details/details.module\";\n\n// page-header-context-actions\nexport {\n    DgpPageHeaderContextActionsComponent\n} from \"./context-action-slot/containers/page-header-context-actions.component\";\nexport { DgpPageHeaderContextActionsModule } from \"./context-action-slot/page-header-context-actions.module\";\n\n// empty-state\nexport { EmptyStateComponent } from \"./empty-state/components/empty-state.component\";\nexport { DgpEmptyStateModule } from \"./empty-state/empty-state.module\";\n\n// expansion-toggle\nexport { DgpExpansionToggleComponent } from \"./expansion-toggle/components/expansion-toggle.component\";\nexport { DgpExpansionToggleModule } from \"./expansion-toggle/expansion-toggle.module\";\n\n// file-upload\nexport * from \"./file-viewer/models\";\nexport * from \"./file-viewer/functions\";\nexport * from \"./file-viewer/components/fallback-file-viewer.component\";\nexport * from \"./file-viewer/components/list/file-item-list.component\";\nexport * from \"./file-viewer/components/file-viewer.component-base\";\nexport * from \"./file-viewer/components/file-viewer.component\";\nexport * from \"./file-viewer/components/dynamic-file-viewer.component\";\nexport * from \"./file-viewer/components/jpg-viewer.component\";\nexport * from \"./file-viewer/components/pdf-viewer.component\";\nexport * from \"./file-viewer/components/png-viewer.component\";\nexport * from \"./file-viewer/components/svg-viewer.component\";\nexport * from \"./file-viewer/file-viewer.module\";\n\n// file-upload\nexport * from \"./file-upload/actions\";\nexport * from \"./file-upload/directives/drag-file-listener.directive\";\nexport * from \"./file-upload/directives/open-file-manager-via-short-key.directive\";\nexport * from \"./file-upload/functions\";\nexport * from \"./file-upload/models\";\nexport * from \"./file-upload/selectors\";\nexport { fileUploadEntityStore } from \"./file-upload/store\";\nexport { DgpFileUploadModule } from \"./file-upload/file-upload.module\";\n\n// hamburger-shell\nexport * from \"./hamburger-shell/actions\";\nexport * from \"./hamburger-shell/components/hamburger-shell.component\";\nexport * from \"./hamburger-shell/components/hamburger-menu-toggle/hamburger-menu-toggle.component\";\nexport * from \"./hamburger-shell/components/hamburger-menu-toggle/hamburger-menu-toggle.module\";\nexport * from \"./hamburger-shell/components/list-details-page/list-details-page-content.component\";\nexport * from \"./hamburger-shell/components/list-details-page/list-details-page.component\";\nexport * from \"./hamburger-shell/components/list-details-page/list-details-page.module\";\nexport * from \"./hamburger-shell/components/page-header/page-header.component\";\nexport * from \"./hamburger-shell/components/page-header/page-header.module\";\nexport { DgpHamburgerMenuModule } from \"./hamburger-shell/components/hamburger-menu/hamburger-menu.module\";\nexport { HamburgerMenuComponent } from \"./hamburger-shell/components/hamburger-menu/hamburger-menu.component\";\nexport {\n    HamburgerMenuHeaderComponent\n} from \"./hamburger-shell/components/hamburger-menu/hamburger-menu-header.component\";\nexport {\n    HamburgerMenuEntriesComponent\n} from \"./hamburger-shell/components/hamburger-menu/hamburger-menu-entries.component\";\nexport {\n    HamburgerMenuEntryComponent\n} from \"./hamburger-shell/components/hamburger-menu/hamburger-menu-entry.component\";\nexport * from \"./hamburger-shell/models\";\nexport {\n    hamburgerMenuModeSelector,\n    hamburgerShellFeatureSelector,\n    isHamburgerMenuOpenSelector,\n    isPageMenuOpenSelector,\n    pageMenuModeSelector\n} from \"./hamburger-shell/selectors\";\nexport { DgpHamburgerShellModule } from \"./hamburger-shell/hamburger-shell.module\";\n\n// hmr\nexport { hotReload } from \"./hmr/hmr.actions\";\nexport { hmrReducer } from \"./hmr/hmr.reducer\";\nexport { DgpNgApp } from \"./hmr/hmr-app\";\n\n// input\nexport { DgpInputErrorInfoComponent } from \"./input/components/input-error-info.component\";\nexport { DgpInputFieldComponent } from \"./input/components/input-field.component\";\nexport { DgpInputHintComponent } from \"./input/components/input-hint.component\";\nexport { DgpInputLengthInfoComponent } from \"./input/components/input-length-info.component\";\nexport { DgpInputMetadataDirective } from \"./input/directives/input-metadata.directive\";\nexport { DgpInputFieldModule } from \"./input/input-field.module\";\n\n// inspector\nexport * from \"./inspector/models\";\nexport * from \"./inspector/constants\";\nexport * from \"./inspector/functions\";\nexport { InspectorComponent } from \"./inspector/components/inspector.component\";\nexport { InspectorItemComponent } from \"./inspector/components/inspector-item.component\";\nexport { InspectorSectionComponent } from \"./inspector/components/inspector-section.component\";\nexport { InspectorService } from \"./inspector/services/inspector.service\";\nexport { DgpInspectorModule } from \"./inspector/inspector.module\";\n\n// inspector-config\nexport { DgpInspectorConfigFormComponent } from \"./inspector-config/components/inspector-config-form.component\";\nexport { DgpInspectorConfigComponent } from \"./inspector-config/containers/inspector-config.component\";\nexport { DgpInspectorConfigModule } from \"./inspector-config/inspector-config.module\";\n\n// lazy-rendered\nexport { DgpLazyRenderedModule } from \"./lazy-rendered/lazy-rendered.module\";\nexport { DgpLazyRenderedComponent } from \"./lazy-rendered/components/lazy-rendered.component\";\nexport { DgpLazyRenderedContentDirective } from \"./lazy-rendered/directives/dgp-lazy-rendered-content.directive\";\nexport { DgpLazyRenderedPlaceholderDirective } from \"./lazy-rendered/directives/dgp-lazy-rendered-placeholder.directive\";\n\n// log\nexport { addLogEntry, logError, LogErrorAction, logErrorActionType } from \"./log/actions\";\nexport { LogEntry, Severity } from \"./log/models\";\nexport { LogState, logStoreFeature } from \"./log/models\";\nexport { DgpLogModule } from \"./log/log.module\";\n\n// negate\nexport { DgpNegatePipe } from \"./negate/negate.pipe\";\nexport { DgpNegatePipeModule } from \"./negate/negate-pipe.module\";\n\n// request-store\nexport { requestStoreFeature } from \"./request-store/models\";\nexport { RequestState } from \"./request-store/models\";\nexport {\n    ScheduleRequestAction, scheduleRequest, scheduleRequestActionType\n} from \"./request-store/actions\";\nexport {\n    hasPendingRequestsSelector, hasPendingRequests, requestStateSelector\n} from \"./request-store/selectors\";\nexport { DgpRequestStoreModule } from \"./request-store/request-store.module\";\n\n// resize-sensor\nexport { DgpResizeSensorDirective } from \"./resize-sensor/directives/resize-sensor.directive\";\nexport { DgpResizeSensorModule } from \"./resize-sensor/resize-sensor.module\";\n\n// routing-overlay\nexport { showLoadingSpinner } from \"./routing-overlay/actions\";\nexport { DgpRoutingOverlayModule } from \"./routing-overlay/routing-overlay.module\";\n\n// safe pipe\nexport { SafePipe } from \"./safe/safe.pipe\";\nexport { SafePipeModule } from \"./safe/safe-pipe.module\";\n\n// shortcuts\nexport * from \"./shortcuts/models\";\nexport { DgpActionShortcutDirective } from \"./shortcuts/directives/action-shortcut.directive\";\nexport { DgpShortcutModule } from \"./shortcuts/shortcuts.module\";\n\n// spacer\nexport { SpacerComponent } from \"./spacer/components/spacer.component\";\nexport { DgpSpacerModule } from \"./spacer/spacer.module\";\n\n// table-cell\nexport { DgpTableCellComponent } from \"./table-cell-editor/components/table-cell.component\";\nexport { DgpTableCellEditorComponent } from \"./table-cell-editor/components/table-cell-editor.component\";\nexport { DgpTableCelLEditorDirective } from \"./table-cell-editor/directives/table-cell-editor.directive\";\nexport { DgpCloseTableCellEditorDirective } from \"./table-cell-editor/directives/close-table-cell-editor.directive\";\nexport { DgpTableCellEditorService } from \"./table-cell-editor/service/table-cell-editor.service\";\nexport { DgpTableCellModule } from \"./table-cell-editor/table-cell.module\";\n\n// theme-switcher\nexport { setIsDarkModeActive, toggleDarkMode, toggleCompactTheme } from \"./theme-switcher/actions\";\nexport { CompactThemeToggleComponent } from \"./theme-switcher/components/compact-theme-toggle.component\";\nexport { DarkModeToggleComponent } from \"./theme-switcher/components/dark-mode-toggle.component\";\nexport { DgpCompactThemeHostDirective } from \"./theme-switcher/directives/compact-theme-host.directive\";\nexport { ThemeHostDirective } from \"./theme-switcher/directives/theme-host.directive\";\nexport { ThemeSwitcherConfig, ThemeSwitcherState, themeSwitcherStoreFeature } from \"./theme-switcher/models\";\nexport {\n    themeSwitcherFeatureSelector, isDarkModeActiveSelector, isDarkModeActive,\n    isCompactThemeActive,\n} from \"./theme-switcher/selectors\";\nexport { DgpThemeSwitcherModule } from \"./theme-switcher/theme-switcher.module\";\n\n// tile\nexport { TileComponent } from \"./tile/tile.component\";\nexport { DgpTileModule } from \"./tile/tile.module\";\n\n// utils\nexport { AppFeature } from \"./utils/app-feature.model\";\nexport { areEqualByHashCode } from \"./utils/are-equal-by-hash-code.function\";\nexport { createOnChangeEffect$ } from \"./utils/create-on-change-effect$.function\";\nexport { defaultRuntimeChecks } from \"./utils/default-runtime-checks\";\nexport { distinctUntilHashChanged, distinctUntilDeepChanged } from \"./utils/distinct-until-hash-changed.function\";\nexport { DgpDisabledBase } from \"./utils/dgp-disabled-base.directive\";\nexport { DgpEffectsBase } from \"./utils/effects-base\";\nexport { filterEmpty } from \"./utils/filter-empty.function\";\nexport { filterNotNullOrUndefined } from \"./utils/filter-not-null-or-undefined.function\";\nexport { flattenMatrix } from \"./utils/flatten-matrix.function\";\nexport { getHashCode } from \"./utils/get-hash-code.function\";\nexport { negate } from \"./utils/negate.function\";\nexport { negateMap } from \"./utils/negate-map.function\";\nexport { DgpContainer } from \"./utils/container.component-base\";\nexport { DgpHybridComponentBase, HybridComponentBase } from \"./utils/hybrid.component-base\";\nexport { DgpModelEditorComponentBase } from \"./utils/model-editor.component-base\";\nexport * from \"./utils/observe-input\";\nexport {\n    DgpSelectEntityViaRouteResolver, SelectEntityViaRouteResolverConfig\n} from \"./utils/select-entity-via-route.resolver-base\";\nexport { nullOrUndefined, isNullOrUndefined, notNullOrUndefined } from \"./utils/null-checking.functions\";\nexport { Point } from \"./utils/point.model\";\nexport { resolveOverridableValue } from \"./utils/resolve-overridable-value.function\";\nexport { DgpResolverBase } from \"./utils/resolver-base\";\nexport { parseStringMatrixAsNumberMatrix } from \"./utils/parse-string-matrix-as-number-matrix.function\";\nexport { Magnitude } from \"./utils/magnitude.model\";\nexport { HttpSSEApiClient } from \"./utils/http-sse.api-client\";\nexport { firstAsPromise } from \"./utils/first-as-promise\";\nexport { there } from \"./utils/there.function\";\nexport { DgpViewComponentBase } from \"./utils/view.component-base\";\nexport { DgpView } from \"./utils/view\";\nexport { getDefaultValue } from \"./utils/get-default-value.function\";\nexport { byUnique } from \"./utils/by-unique.function\";\nexport { matrixToMany } from \"./utils/matrix-to-many.constant\";\nexport { ofNull } from \"./utils/of-null.function\";\nexport { withoutDispatch } from \"./utils/without-dispatch.constant\";\nexport { waitForStableDOM$ } from \"./utils/wait-for-stable-DOM$.function\";\n\n// virtual-list panel\nexport { VirtualListItemDirective } from \"./virtual-list-panel/directives/virtual-list-item.directive\";\nexport { VirtualListPanelComponent } from \"./virtual-list-panel/components/virtual-list-panel.component\";\nexport { DgpVirtualListPanelModule } from \"./virtual-list-panel/virtual-list-panel.module\";\n\nexport * from \"./dgp-ng-app.module\";\nexport { Size } from \"./resize-sensor/models/size.model\";\nexport { ResizeSensor, defaultResizeSensorConfig, ResizeSensorConfig } from \"./resize-sensor/services/resize-sensor.service\";\nexport { selectFileItem } from \"./file-viewer/select-file-item.action\";\nexport {\n    DgpListDetailsPageMenuToggleComponent\n} from \"./hamburger-shell/components/list-details-page/dgp-list-details-page-menu-toggle.component\";\nexport { DgpDrawerLayoutMenuToggleComponent } from \"./drawer-layout/drawer-layout-menu-toggle.component\";\nexport { DgpDrawerLayoutComponent } from \"./drawer-layout/drawer-layout.component\";\nexport { DrawerLayoutMenuTogglePosition } from \"./drawer-layout/models\";\nexport { DrawerLayout } from \"./drawer-layout/models\";\nexport { DrawerMode } from \"./drawer-layout/models\";\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["directives","i2.AuthenticationApiClient","i1","i2","i3","i2.DgpDialogMenuService","components","i1.DgpDialogMenuComponent","i2.DgpDialogMenuTriggerDirective","i1.DgpExpansionToggleComponent","i1.DgpDetailsComponent","i1.EmptyStateContentComponent","i2.EmptyStateIconComponent","i3.EmptyStateTitleComponent","i2.EmptyStateComponent","i3.SafePipe","i4.DgpActionShortcutDirective","i5","i6.DgpNegatePipe","i3.DgpActionContextDirective","i2.SpacerComponent","i3.RemoveCurrentFileItemActionComponent","i4.DownloadCurrentFileItemComponent","i5.FileItemListItemComponent","i2.FallbackFileViewerComponent","i2.SafePipe","i1.PdfViewerComponent","i2.JpgViewerComponent","i3.PngViewerComponent","i4.SvgViewerComponent","i5.FallbackFileViewerComponent","i6.DynamicFileViewerComponent","i1.InspectorService","i4","i1.SpacerComponent","i3.DgpDetailsComponent","i1.DgpActionShortcutDirective","i4.EmptyStateComponent","i6.DgpActionShortcutDirective","i1.FileDropZoneComponent","i5.DgpActionShortcutDirective","i2.DgpFileManagerMenuToggle","i3.CloseDialogButtonComponent","i4.MaximizeDialogButtonComponent","i2.DgpNegatePipe","i1.FileViewerComponent","i2.DgpSelectPreviousFileItemActionComponent","i3.DgpSelectNextFileItemActionComponent","i2.FileItemListComponent","i3.CurrentAddFileListItemComponent","i1.DgpFileManagerDrawerLayout","i2.CurrentFileItemListComponent","i3.CurrentFileViewerComponent","i2.CurrentFileDropZoneComponent","i3.FileManagerDialogHeaderComponent","i4.CurrentFileViewerComponent","i5.CurrentListFileViewerComponent","i6","i1.DgpDrawerLayoutComponent","containers","i11.DragFileListenerDirective","i12.OpenFileManagerViaShortKeyDirective","i3.DgpActionShortcutDirective","i2.DgpInputLengthInfoComponent","i1.InspectorComponent","i2.InspectorItemComponent","i3.DgpInputErrorInfoComponent","i4.DgpInputHintComponent","i1.DgpInputErrorInfoComponent","i2.DgpInputFieldComponent","i3.DgpInputHintComponent","i4.DgpInputLengthInfoComponent","i5.DgpInputMetadataDirective","i3.InspectorSectionComponent","i8.SpacerComponent","i9","i1.DgpInspectorConfigFormComponent","i2.DgpInspectorConfigComponent","i1.DgpLazyRenderedComponent","i2.DgpLazyRenderedContentDirective","i3.DgpLazyRenderedPlaceholderDirective","i3.EmptyStateComponent","i5.SafePipe","i3.HamburgerMenuToggleComponent","i4.PageHeaderComponent","i5.ListDetailsPageContentComponent","i6.ListDetailsPageComponent","i7.LogEntryDetailsComponent","i8.LogEntryListComponent","i1.DgpResizeSensorDirective","i2.DgpTableCellEditorService","i1.DgpTableCellEditorService"],"mappings":"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"}