{"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/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/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/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/current-file-viewer.component.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/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/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/components/list-details-page/list-details-page-content.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/functions.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/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\n            if (isNullOrUndefined(actionContextKey)) return false;\n\n            return selectedActionContextKey === actionContextKey;\n        }\n    );\n}\n","import {isNullOrUndefined} from \"./null-checking.functions\";\n\n/**\n * Source: https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript\n */\nexport function getHashCode(object: any): number {\n    let hash = 0;\n    if (isNullOrUndefined(object)) return hash;\n\n    const serializedObject = JSON.stringify(object);\n\n    if (serializedObject.length === 0) return hash;\n\n    for (let i = 0; i < serializedObject.length; i++) {\n        const char = serializedObject.charCodeAt(i);\n        // tslint:disable-next-line:no-bitwise\n        hash = ((hash << 5) - hash) + char;\n        // tslint:disable-next-line:no-bitwise\n        hash = hash & hash; // Convert to 32bit integer\n    }\n    return hash;\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})\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 { APP_INITIALIZER, FactoryProvider } 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: FactoryProvider = {\n    provide: APP_INITIALIZER,\n    useFactory: appInitializer,\n    deps: [\n        AuthenticationService,\n        InitializationService,\n        Store\n    ],\n    multi: true\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    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/src/models\";\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})\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 { 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                <ng-container *ngIf=\"model\">expand_more</ng-container>\n                <ng-container *ngIf=\"!model\">navigate_next</ng-container>\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})\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                <ng-container *ngIf=\"togglePosition === 'start'\">\n                    <dgp-expansion-toggle *ngIf=\"expandable\"\n                                          [model]=\"expanded\"\n                                          (modelChange)=\"updateExpanded($event)\"></dgp-expansion-toggle>\n                </ng-container>\n                <div class=\"summary-content\">\n                    {{ summary }}\n                    <ng-content select=\"[summary]\"></ng-content>\n                </div>\n                <ng-container *ngIf=\"togglePosition === 'end'\">\n                    <dgp-expansion-toggle *ngIf=\"expandable\"\n                                          [model]=\"expanded\"\n                                          (modelChange)=\"updateExpanded($event)\"></dgp-expansion-toggle>\n                </ng-container>\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})\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})\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        <div *ngIf=\"isAnyActionContextSelected$ | async\"\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            <mat-toolbar *ngIf=\"currentActionContextLabel$ | async as label\"\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        </div>\n    `\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})\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})\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})\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        <dgp-empty-state-icon *ngIf=\"matIconName\">\n            {{ matIconName }}\n        </dgp-empty-state-icon>\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})\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\";\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","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})\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            <a *ngIf=\"!isTridentOrEdge; else ieFallback\"\n               class=\"download-link\"\n               [href]=\"fileItem.url | safe:'url'\"\n               target=\"_blank\">\n                Download it here\n            </a>\n\n            <ng-template #ieFallback>\n                <a class=\"download-link\"\n                   href=\"javascript:;\"\n                   (click)=\"downloadFileInTridentOrEdge()\">\n                    Download it here\n                </a>\n            </ng-template>\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})\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\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}\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 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);\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; }>());\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 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 { ActionShortcutConfig, defaultShortcutConfig, SHORTCUT_CONFIG, ShortcutConfig, TriggerEvent } from \"../models\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\n\n@Directive({selector: \"[dgpActionShortcut]\"})\nexport class DgpActionShortcutDirective extends DgpDisabledBase implements OnInit, OnDestroy, ActionShortcutConfig {\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})\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})\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})\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})\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            <ng-container *ngFor=\"let directory of model.directories\">\n\n                <dgp-file-item-list-item\n                    *ngFor=\"let fileItemId of directory.fileItemIds\"\n                    [model]=\"model.fileItemKVS[fileItemId]\"></dgp-file-item-list-item>\n\n            </ng-container>\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})\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        <ng-container *ngIf=\"platform.FIREFOX || platform.BLINK || platform.EDGE; else fallback\">\n\n            <ng-container *ngIf=\"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            </ng-container>\n\n            <ng-container *ngIf=\"platform.EDGE\">\n                <div [innerHTML]=\"edgeHTML | safe:'html'\"\n                     class=\"edge-helper\"></div>\n            </ng-container>\n\n        </ng-container>\n\n        <ng-template #fallback>\n            <dgp-fallback-file-viewer [fileItem]=\"fileItem\"></dgp-fallback-file-viewer>\n        </ng-template>\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})\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        <img *ngIf=\"!isTrident; else fallback\"\n             [src]=\"fileItem.url | safe:'url'\"\n             class=\"image\"\n             alt=\"{{ fileItem.fileName }}\">\n        <ng-template #fallback>\n            <div class=\"trident-container\">\n                <img [src]=\"fileItem.url | safe:'url'\"\n                     class=\"trident-image\"\n                     alt=\"{{ fileItem.fileName }}\">\n            </div>\n        </ng-template>\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})\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        <img *ngIf=\"!isTrident; else fallback\"\n             [src]=\"fileItem.url | safe:'url'\"\n             class=\"image\"\n             alt=\"{{ fileItem.fileName }}\">\n        <ng-template #fallback>\n            <div class=\"trident-container\">\n                <img [src]=\"fileItem.url | safe:'url'\"\n                     class=\"trident-image\"\n                     alt=\"{{ fileItem.fileName }}\">\n            </div>\n        </ng-template>\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})\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        <img *ngIf=\"!isTrident; else fallback\"\n             [src]=\"fileItem.url | safe:'url'\"\n             class=\"image\"\n             alt=\"{{ fileItem.fileName }}\">\n        <ng-template #fallback>\n            <div class=\"trident-container\">\n                <img [src]=\"fileItem.url | safe:'url'\"\n                     class=\"trident-image\"\n                     alt=\"{{ fileItem.fileName }}\">\n            </div>\n        </ng-template>\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})\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})\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        <ng-container *ngIf=\"isKnownFileType; else dynamicViewer\">\n            <ng-container [ngSwitch]=\"fileItem.extension\">\n                <dgp-jpg-viewer *ngSwitchCase=\"'jpg'\"\n                                [fileItem]=\"fileItem\"></dgp-jpg-viewer>\n                <dgp-pdf-viewer *ngSwitchCase=\"'pdf'\"\n                                [fileItem]=\"fileItem\"></dgp-pdf-viewer>\n                <dgp-png-viewer *ngSwitchCase=\"'png'\"\n                                [fileItem]=\"fileItem\"></dgp-png-viewer>\n                <dgp-svg-viewer *ngSwitchCase=\"'svg'\"\n                                [fileItem]=\"fileItem\"></dgp-svg-viewer>\n                <dgp-fallback-file-viewer *ngSwitchDefault\n                                          [fileItem]=\"fileItem\"></dgp-fallback-file-viewer>\n            </ng-container>\n        </ng-container>\n\n        <ng-template #dynamicViewer>\n            <dgp-dynamic-file-viewer [fileItem]=\"fileItem\"></dgp-dynamic-file-viewer>\n        </ng-template>\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})\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 compactThemeClassName: string;\n    readonly components: Many<string>;\n}\n\nexport const defaultThemeSwitcherConfig: ThemeSwitcherConfig = {\n    darkThemeClassName: \"dark-theme\",\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                <mat-icon *ngIf=\"showIcon$ | async\"\n                          [color]=\"labelThemeColor$ | async\">\n                    {{matIconName || metadata?.icon}}\n                </mat-icon>\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                    <span *ngIf=\"required || metadata?.isRequired\"\n                          class=\"dgp-cl--accent\">*</span>\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        <p *ngIf=\"hasPermanentDescription$ | async\"\n           class=\"description\"\n           [class.description-icon-margin]=\"showIcon$ | async\">\n            {{description || metadata?.description}}\n        </p>\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})\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})\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})\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})\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})\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 { defaultFileUploadConfig, FileUploadEntities, FileUploadState, FileUploadStoreFeature } from \"./models\";\nimport { createEntityStore } from \"entity-store\";\nimport { ActionReducerMap } from \"@ngrx/store\";\nimport { closeFileManager, hideDropTarget, openFileManagerOverlay, setConfig, showDropTarget } from \"./actions\";\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: (state = false, action) => {\n\n        switch (action.type) {\n            case openFileManagerOverlay.type:\n                return true;\n            case closeFileManager.type:\n                return false;\n            default:\n                return state;\n        }\n\n    },\n    isDropTargetVisible: (state = false, action) => {\n\n        switch (action.type) {\n            case showDropTarget.type:\n                return true;\n            case hideDropTarget.type:\n                return false;\n            default:\n                return state;\n        }\n\n    },\n    initialConfig: (state = defaultFileUploadConfig, action) => {\n        if (action.type === setConfig.type) {\n            return (action as any).config;\n        } else {\n            return state;\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                <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})\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})\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 } 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})\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        <button *ngIf=\"!isMaximized\"\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        <button *ngIf=\"isMaximized\"\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})\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-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})\nexport class FileManagerDialogHeaderComponent {\n\n}\n","import { Component } from \"@angular/core\";\nimport { DgpContainer } from \"../../utils/container.component-base\";\nimport { FileUploadState } from \"../models\";\nimport { getSelectedFileItem } from \"../selectors\";\n\n@Component({\n    selector: \"dgp-current-file-viewer\",\n    template: `\n        <dgp-file-viewer [fileItem]=\"selectedFileItem$ | async\"></dgp-file-viewer>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            width: 100%;\n            height: 100%;\n        }\n    `]\n})\nexport class CurrentFileViewerComponent extends DgpContainer<FileUploadState> {\n    readonly selectedFileItem$ = this.select(getSelectedFileItem);\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\";\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 = \"side\" | \"over\";\n\nexport interface HamburgerShellState {\n    readonly isHamburgerMenuOpen: boolean;\n    readonly hamburgerMenuMode: HamburgerMenuMode;\n\n    readonly isPageMenuOpen: boolean;\n    readonly pageMenuMode: PageMenuMode;\n}\n\nexport const hamburgerShellStoreFeature = \"HamburgerShell\";\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { hamburgerShellStoreFeature, HamburgerShellState } 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 { Component, ChangeDetectionStrategy } from \"@angular/core\";\nimport { closeListDetailsMenu, toggleListDetailsPageMenu } from \"../../actions\";\nimport { isPageMenuOpenSelector, pageMenuModeSelector } from \"../../selectors\";\nimport { HamburgerShellState } from \"../../models\";\nimport { DgpContainer } from \"../../../utils/container.component-base\";\n\n@Component({\n    selector: \"dgp-list-details-page\",\n    template: `\n        <mat-drawer-container class=\"page-menu-drawer-container\">\n\n            <mat-drawer [mode]=\"pageMenuDrawerMode$ | async\"\n                        [opened]=\"isPageMenuDrawerOpen$ | async\"\n                        (closed)=\"closePageMenuDrawer()\"\n                        class=\"page-menu-drawer mat-elevation-z4\">\n\n                <ng-content select=\"[dgp-list-details-page-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                    <button mat-icon-button\n                            (click)=\"togglePageMenuDrawer()\"\n                            matTooltip=\"Toggle menu drawer\">\n                        <mat-icon *ngIf=\"isPageMenuDrawerOpen$ | async; else closedIcon\">\n                            arrow_back\n                        </mat-icon>\n                        <ng-template #closedIcon>\n                            <mat-icon>arrow_forward</mat-icon>\n                        </ng-template>\n                    </button>\n\n                </div>\n\n                <ng-content></ng-content>\n\n            </mat-drawer-content>\n\n        </mat-drawer-container>\n\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})\n\nexport class ListDetailsPageComponent extends DgpContainer<HamburgerShellState> {\n\n    readonly pageMenuDrawerMode$ = this.select(pageMenuModeSelector);\n    readonly isPageMenuDrawerOpen$ = this.select(isPageMenuOpenSelector);\n\n    closePageMenuDrawer(): void {\n        this.dispatch(closeListDetailsMenu());\n    }\n\n    togglePageMenuDrawer(): void {\n        this.dispatch(toggleListDetailsPageMenu());\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        <mat-action-list *ngIf=\"isAddFilesDisabled$ | async | negate\">\n            <mat-list-item (click)=\"filePicker.click()\">\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})\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})\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-list-details-page>\n            <dgp-current-file-item-list dgp-list-details-page-menu></dgp-current-file-item-list>\n            <dgp-current-file-viewer></dgp-current-file-viewer>\n        </dgp-list-details-page>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n            flex-direction: column;\n            flex-grow: 1;\n            overflow: auto;\n        }\n    `]\n})\nexport class CurrentListFileViewerComponent {\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        <dgp-current-file-drop-zone\n            *ngIf=\"isDropTargetVisible$ | async; else fileViewer\"></dgp-current-file-drop-zone>\n\n        <ng-template #fileViewer>\n            <ng-container *ngIf=\"canOpenFileDrawer$ | async; else singleFileViewer\">\n                <dgp-file-manager-dialog-header></dgp-file-manager-dialog-header>\n                <dgp-current-list-file-viewer></dgp-current-list-file-viewer>\n            </ng-container>\n        </ng-template>\n\n        <ng-template #singleFileViewer>\n            <dgp-current-file-viewer></dgp-current-file-viewer>\n        </ng-template>\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})\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 { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { addFilesViaDrop, closeFileManager, downloadFile, openFileManagerOverlay, removeFile, setConfig } from \"./actions\";\nimport { Store } from \"@ngrx/store\";\nimport { first, map, switchMap, tap } 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 } 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\";\n\n@Injectable()\nexport class FileUploadEffects extends DgpContainer<FileUploadState> {\n\n    readonly openFileManagerOverlay$ = createEffect(() => this.actions$.pipe(\n        ofType(openFileManagerOverlay),\n        tap(action => {\n            if (action.fileItems) {\n                this.dispatch(cacheFileSystem(action as FileSystem));\n\n                if (action.selectedFileItemId) {\n                    this.dispatch(selectActionContext({\n                        actionContext: {\n                            key: undefined,\n                            label: undefined,\n                            type: \"fileItem\",\n                            value: action.fileItems.find(x => x.fileItemId === action.selectedFileItemId)\n                        }\n                    }));\n                } else {\n                    this.dispatch(deselectActionContext({}));\n                }\n            }\n\n\n            if (action.config) {\n                this.dispatch(setConfig({config: action.config}));\n            }\n        }),\n        switchMap(action => this.matDialog.open(\n            FileManagerComponent,\n            action.config\n                ? action.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\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                        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    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                <mat-progress-bar *ngIf=\"hasPendingRequests$ | async\"\n                                  color=\"accent\"\n                                  mode=\"query\"></mat-progress-bar>\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})\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 { 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})export class ListDetailsPageContentComponent {\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\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatIconModule,\n        MatSidenavModule,\n        MatTooltipModule\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\";\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    ],\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                    <mat-progress-bar *ngIf=\"hasPendingRequests$ | async\"\n                                      color=\"accent\"\n                                      mode=\"query\"></mat-progress-bar>\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})\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})\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})\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})\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})\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        <a *ngIf=\"isNonEmptyRoute(); else emptyRoute\"\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\n        <ng-template #emptyRoute>\n            <a mat-list-item\n               class=\"disabled\"\n               tabindex=\"-1\">\n                <mat-icon matListItemIcon>{{ matIconName }}</mat-icon>\n                {{ label }}\n            </a>\n        </ng-template>\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})\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\";\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 ? \"side\" : \"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: \"side\"\n            }));\n        } else if (hamburgerShellConfig.listDetailsPageMode === ListDetailsPageMode.Overlay) {\n            this.store.dispatch(setListDetailsPageState({\n                isPageMenuOpen: false,\n                pageMenuMode: \"over\"\n            }));\n        }\n    }\n\n}\n","import {\n    closeHamburgerMenu, closeListDetailsMenu, setHamburgerMenuState, setListDetailsPageState,\n    toggleHamburgerMenu, toggleListDetailsPageMenu\n} from \"./actions\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { HamburgerShellState } from \"./models\";\n\nexport const initialHamburgerShellState: HamburgerShellState = {\n    hamburgerMenuMode: \"side\",\n    isHamburgerMenuOpen: true,\n    pageMenuMode: \"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        <div *ngIf=\"hasErrors$ | async\"\n             class=\"host\">\n\n            <mat-icon color=\"warn\"\n                      class=\"error-indicator\">warning\n            </mat-icon>\n\n            {{firstErrorMessage$ | async}}\n        </div>\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})\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        <ng-container *ngIf=\"hasMax$ | async\">\n            {{model?.length || 0}}/{{metadata.max}}\n        </ng-container>`,\n    styles: [`\n        :host {\n            font-size: smaller;\n            opacity: 0.7;\n            margin-left: 8px;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush,\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        <dgp-input-length-info *ngIf=\"metadata?.type === 'string'\"\n                               [model]=\"model\"\n                               [metadata]=\"metadata\"></dgp-input-length-info>\n    `,\n    styles: [`\n        :host {\n            display: flex;\n        }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush\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})\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({selector: \"[dgpInputMetadata]\"})\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        <dgp-inspector *ngIf=\"model\"\n                       [fieldLabelThemeColor]=\"model.fieldLabelThemeColor\"\n                       [maxContentWidth]=\"model.maxContentWidth\"\n                       [responsive]=\"model.responsive\"\n                       [showFieldDescriptions]=\"model.showFieldDescriptions\"\n                       [showFieldIcons]=\"model.showFieldIcons\">\n\n            <dgp-inspector-section label=\"General\">\n\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\n            </dgp-inspector-section>\n\n            <dgp-inspector-section label=\"Fields\">\n\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\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\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\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\n            </dgp-inspector-section>\n\n        </dgp-inspector>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush\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})\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({selector: \"[dgpLazyRenderedContent], [dgp-lazy-rendered-content]\"})\nexport class DgpLazyRenderedContentDirective {\n\n}\n\n","import { Directive } from \"@angular/core\";\n\n@Directive({selector: \"[dgpLazyRenderedPlaceholder], [dgp-lazy-rendered-placeholder]\"})\nexport class DgpLazyRenderedPlaceholderDirective {\n\n}\n","import {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","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})\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        <ng-container *ngIf=\"logEntry; else noLogEntryTemplate\">\n\n            <div class=\"header\">\n                <mat-icon class=\"header__icon\"\n                          *ngIf=\"logEntry.severity === severityEnum.Error\">\n                    error\n                </mat-icon>\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\n                    </div>\n                </div>\n            </div>\n\n            <mat-divider class=\"vertical-separator\"></mat-divider>\n\n            <div class=\"content\">\n                <h2 class=\"content__heading mat-h2\">\n                    Severity\n                </h2>\n                <div class=\"content__body\">\n                    <ng-container *ngIf=\"logEntry.severity === severityEnum.Error\">\n                        Error\n                    </ng-container>\n                </div>\n                <h2 class=\"content__heading mat-h2\">\n                    Content\n                </h2>\n                <div class=\"content__body\"\n                     *ngIf=\"logEntry.content; else noContentTemplate\">\n                    <ng-container *ngIf=\"isHtml(logEntry); else defaultApiErrorTemplate\">\n                        <div [innerHTML]=\"logEntry.content | safe:'html'\"></div>\n                    </ng-container>\n                    <ng-template #defaultApiErrorTemplate>\n                        {{ logEntry.content | json }}\n                    </ng-template>\n                </div>\n                <ng-template #noContentTemplate>\n                    <div class=\"content__placeholder\">\n                        This log entry doesn't contain additional content.\n                    </div>\n                </ng-template>\n            </div>\n\n        </ng-container>\n\n        <ng-template #noLogEntryTemplate>\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        </ng-template>\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})\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        <mat-nav-list *ngIf=\"hasLogEntries$ | async; else emptyState\">\n            <h3 mat-subheader>Entries</h3>\n            <a mat-list-item\n               *ngFor=\"let logEntry of logEntries$ | async\"\n               [routerLink]=\"['/logEntries', logEntry.timeStamp.toString()]\">\n                <mat-icon matListItemIcon\n                          *ngIf=\"logEntry.severity === severityEnum.Error\">\n                    error\n                </mat-icon>\n                <div matListItemTitle>\n                    {{ logEntry.title }}\n                </div>\n                <div matListItemLine>\n                    {{ logEntry.timeStamp | date:'medium' }}\n                </div>\n            </a>\n        </mat-nav-list>\n\n        <ng-template #emptyState>\n            <dgp-empty-state matIconName=\"error\"\n                             title=\"No entries available\">\n\n            </dgp-empty-state>\n        </ng-template>\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})\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})\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})\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})\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({selector: \"[dgpTableCellEditor]\"})\nexport class DgpTableCelLEditorDirective {\n\n}\n","import { DialogPosition } from \"@angular/material/dialog\";\nimport { TableCellEditorSizes } from \"./models\";\n\nexport function computeTableCellEditorSizes(payload: {\n    readonly tableCellBoundingRect: ClientRect;\n    readonly window: Window;\n    readonly triggerButtonElement: HTMLElement;\n}): TableCellEditorSizes {\n\n    return {\n        offsetTop: (payload.tableCellBoundingRect.top + payload.triggerButtonElement.offsetHeight),\n        offsetLeft: payload.tableCellBoundingRect.left,\n        offsetRight: payload.tableCellBoundingRect.right,\n        availableSpace: {\n            left: payload.tableCellBoundingRect.left,\n            right: payload.window.innerWidth - (payload.tableCellBoundingRect.left),\n            bottom: payload.window.innerHeight - (payload.tableCellBoundingRect.top + payload.triggerButtonElement.offsetHeight),\n            top: payload.tableCellBoundingRect.top\n        }\n    };\n\n}\n\nexport function getDialogPositionFromTableCellEditorSizes(payload: {\n    readonly tableCellEditorSizes: TableCellEditorSizes;\n    readonly triggerButtonElement: HTMLElement;\n    readonly configureDialogWidth: number;\n}): DialogPosition {\n\n    let result: DialogPosition = {\n        top: payload.tableCellEditorSizes.offsetTop + \"px\",\n        left: payload.tableCellEditorSizes.offsetLeft + \"px\",\n        bottom: null,\n        right: null\n    };\n\n\n    if (payload.tableCellEditorSizes.availableSpace.right < payload.configureDialogWidth\n        && payload.tableCellEditorSizes.availableSpace.left >= payload.configureDialogWidth) {\n        result = {\n            ...result,\n            left: (payload.tableCellEditorSizes.offsetRight - payload.configureDialogWidth) + \"px\"\n        };\n    }\n\n    if (payload.tableCellEditorSizes.availableSpace.bottom < 240\n        && payload.tableCellEditorSizes.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 { 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})\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 { computeTableCellEditorSizes, getDialogPositionFromTableCellEditorSizes } 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})\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 = computeTableCellEditorSizes({\n            tableCellBoundingRect, triggerButtonElement, window\n        });\n\n        const position = getDialogPositionFromTableCellEditorSizes({\n            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({selector: \"[dgpCloseTableCellEditor]\"})\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})\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})\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({selector: \"[dgpCompactThemeHost]\"})\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})\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(\"isDarkModeActive\", 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            ...config,\n            ...defaultThemeSwitcherConfig\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(\"isDarkModeActive\");\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        <a *ngIf=\"route\"\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\n        </a>\n\n        <a *ngIf=\"externalLink\"\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\n        </a>\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})\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 {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})\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})\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// 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 { createOnChangeEffect$ } from \"./utils/create-on-change-effect$.function\";\nexport { defaultRuntimeChecks } from \"./utils/default-runtime-checks\";\nexport { distinctUntilHashChanged } 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\";\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["directives","i2.AuthenticationApiClient","i1","i2","i3","i1.DgpExpansionToggleComponent","components","i1.DgpDetailsComponent","i2.EmptyStateContentComponent","i3.EmptyStateIconComponent","i4.EmptyStateTitleComponent","i2.EmptyStateComponent","i4.SafePipe","i4.DgpActionShortcutDirective","i5","i6.DgpNegatePipe","i3.DgpActionContextDirective","i4","i3.SpacerComponent","i4.RemoveCurrentFileItemActionComponent","i5.DownloadCurrentFileItemComponent","i6.FileItemListItemComponent","i3.FallbackFileViewerComponent","i3.SafePipe","i2.PdfViewerComponent","i3.JpgViewerComponent","i4.PngViewerComponent","i5.SvgViewerComponent","i6.FallbackFileViewerComponent","i7.DynamicFileViewerComponent","i1.InspectorService","i1.SpacerComponent","i3.DgpDetailsComponent","i1.DgpActionShortcutDirective","i4.EmptyStateComponent","i1.FileDropZoneComponent","i6.DgpActionShortcutDirective","i2.CloseDialogButtonComponent","i3.MaximizeDialogButtonComponent","i1.FileViewerComponent","i4.DgpNegatePipe","i2.FileItemListComponent","i3.CurrentAddFileListItemComponent","i1.ListDetailsPageComponent","i2.CurrentFileItemListComponent","i3.CurrentFileViewerComponent","i2.CurrentFileDropZoneComponent","i3.FileManagerDialogHeaderComponent","i4.CurrentFileViewerComponent","i5.CurrentListFileViewerComponent","containers","i11.DragFileListenerDirective","i12.OpenFileManagerViaShortKeyDirective","i3.DgpActionShortcutDirective","i2.SpacerComponent","i3.DgpInputLengthInfoComponent","i1.InspectorComponent","i2.InspectorItemComponent","i3.DgpInputErrorInfoComponent","i4.DgpInputHintComponent","i1.DgpInputErrorInfoComponent","i2.DgpInputFieldComponent","i3.DgpInputHintComponent","i4.DgpInputLengthInfoComponent","i5.DgpInputMetadataDirective","i3.InspectorSectionComponent","i10.SpacerComponent","i1.DgpInspectorConfigFormComponent","i2.DgpInspectorConfigComponent","i1.DgpLazyRenderedComponent","i2.DgpLazyRenderedContentDirective","i3.DgpLazyRenderedPlaceholderDirective","i5.SafePipe","i5.EmptyStateComponent","i3.HamburgerMenuToggleComponent","i4.PageHeaderComponent","i5.ListDetailsPageContentComponent","i6.ListDetailsPageComponent","i7.LogEntryDetailsComponent","i8.LogEntryListComponent","i9","i1.DgpResizeSensorDirective","i2.DgpTableCellEditorService","i1.DgpTableCellEditorService","i6"],"mappings":"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"}